Fabric 1.0交易流程

本文首發於深刻淺出區塊鏈社區
原文連接:Fabric1.0 交易流程原文已更新,請讀者前往原文閱讀數據庫

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

Fabric 1.0交易流程

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

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

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

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

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

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

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

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

  • 運行驗證邏輯(VSCC檢查背書策略)
  • 在區塊中指明哪些交易是有效和無效的。
  • 在內存或文件系統上把區塊加入區塊鏈
  • 將區塊內的有效交易寫入狀態數據庫。
  • 發出Event消息,使得客戶端經過SDK監聽知道哪些交易是有效的或無效的。
相關文章
相關標籤/搜索