Fabric1.0 交易流程 原

這篇文章詳細介紹fabric的交易流程,以圖片加文字的形式呈現。

Fabric 1.0交易流程

fabric中的所有交易都是通過chaincode執行 在這裏插入圖片描述 1.應用程序客戶端通過SDK調用證書服務(CA)服務,進行註冊和登記,並獲取身份證書。

2.應用程序客戶端通過SDK創建好交易提案(Proposal),交易提案把帶有本次交易要調用的合約標識、合約方法和參數信息以及客戶端簽名等信息發送給背書(Endorser)節點。

3.背書(Endorser)節點收到交易提案(Proposal)後,開始進行驗證,驗證的內容如下:

  • 交易預案是完好的
  • 該預案以前沒有提交過(防止重放攻擊)
  • 攜帶的簽名是合法的
  • 交易發起者是否滿足區塊鏈寫策略, 即ACL 權限檢查

滿足以上要求後,背書節點把’交易預案’作爲輸入參數,調用chaincode中的函數,chaincode根據當前的賬本狀態計算出一個’交易結果’,該結果包括返回值,讀寫集。此時,區塊鏈賬本並不會被更新。’交易結果’在被簽名後與一個是/否的背書結果一同返回,稱之爲’預案回覆’。

4.應用程序客戶端收到背書(Endorser)節點返回的信息後,判斷提案結果是否一致,以及是否收到足夠多的背書節點返回的結果(參照指定的背書策略執行),如果沒有足夠的背書,則中止處理,這個交易就會被捨棄。否則,將交易提案、模擬交易結果和背書信息打包組成一個交易並簽名發給Orderer節點(一個排序服務)。

5.Orderer節點對來自客戶端(SDK)的交易信息進行共識排序,分通道對’交易消息’按時間排序,並按通道將交易打包成塊,發送給提交(Committer)節點。

6.提交(Committer)節點收到區塊後,會對區塊中的每筆交易進行校驗,檢查交易依賴的輸入輸出是否符合當前區塊鏈的狀態,驗證背書策略是否滿足,驗證完成後將區塊追加到本地的區塊鏈,更新賬本,並修改世界狀態。具體過程如下:

  • 運行驗證邏輯(VSCC檢查背書策略)
  • 在區塊中指明哪些交易是有效和無效的。
  • 在內存或文件系統上把區塊加入區塊鏈
  • 將區塊內的有效交易寫入狀態數據庫。
  • 發出Event消息,使得客戶端通過SDK監聽知道哪些交易是有效的或無效的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章