1. 客戶端節點構造好交易提案,提交到背書節點。提交提案的順序沒有要求
2. 背書節點接收到提案,模擬交易並簽名
首先會做一些驗證,比如:交易提案的格式是否正確,交易是否被重複提交,提案簽名是否正確,是否有許可權提交提案。
驗證通過,會提交到 chaincode隔離模擬執行,將結果返回到客戶端。
3.返回執行結果
客戶端會對訊息進行驗證,如果驗證通過,才會進行後續操作。
如果是查詢交易,就沒有對賬本產生狀態的影響,客戶端拿到返回值,作為下一步業務邏輯的判斷依據。
如果是寫的交易,客戶端就要收集到足夠的背書結果,然後將交易提案,背書結果,再加上自己的簽名合起來,組成一個交易,將其傳送給 orderer節點。
4.提交交易(模擬執行結果+簽名)
如果客戶端提交了背書結果不一致的交易,排序節點也不會發現,因為排序節點並不讀取交易的內容,只是負責接收網路中的交易,然後對其進行排序。
5.交易排序並結塊
按照指定的排序規則進行排序,並生成區塊
6.廣播區塊
將區塊廣播給其他組織的主節點
7.儲存區塊更新交易
主節點接收到區塊以後,會在記賬的過程中去驗證該筆交易是否有效,如果無效的話,會被標記處無效交易。該無效交易並不會被丟棄,只是不會更新到世界狀態,所以無效交易只會浪費磁碟空間。
8.同步交易
在組織內部區塊同步,通過gossip協議
9.儲存區塊更新交易
在記賬節點儲存區塊,更新交易
本作品採用《CC 協議》,轉載必須註明作者和本文連結