本文首發於深刻淺出區塊鏈社區
原文連接:Fabric1.0 交易流程原文已更新,請讀者前往原文閱讀數據庫
這篇文章詳細介紹fabric的交易流程,以圖片加文字的形式呈現。函數
fabric中的全部交易都是經過chaincode執行
1.應用程序客戶端經過SDK調用證書服務(CA)服務,進行註冊和登記,並獲取身份證書。區塊鏈
2.應用程序客戶端經過SDK建立好交易提案(Proposal),交易提案把帶有本次交易要調用的合約標識、合約方法和參數信息以及客戶端簽名等信息發送給背書(Endorser)節點。spa
3.背書(Endorser)節點收到交易提案(Proposal)後,開始進行驗證,驗證的內容以下:code
知足以上要求後,背書節點把’交易預案’做爲輸入參數,調用chaincode中的函數,chaincode根據當前的帳本狀態計算出一個’交易結果’,該結果包括返回值,讀寫集。此時,區塊鏈帳本並不會被更新。’交易結果’在被簽名後與一個是/否的背書結果一同返回,稱之爲’預案回覆’。排序
4.應用程序客戶端收到背書(Endorser)節點返回的信息後,判斷提案結果是否一致,以及是否收到足夠多的背書節點返回的結果(參照指定的背書策略執行),若是沒有足夠的背書,則停止處理,這個交易就會被捨棄。不然,將交易提案、模擬交易結果和背書信息打包組成一個交易並簽名發給Orderer節點(一個排序服務)。圖片
5.Orderer節點對來自客戶端(SDK)的交易信息進行共識排序,分通道對’交易消息’按時間排序,並按通道將交易打包成塊,發送給提交(Committer)節點。內存
6.提交(Committer)節點收到區塊後,會對區塊中的每筆交易進行校驗,檢查交易依賴的輸入輸出是否符合當前區塊鏈的狀態,驗證背書策略是否知足,驗證完成後將區塊追加到本地的區塊鏈,更新帳本,並修改世界狀態。具體過程以下:rem