簡述Hyperledger Fabric的工作流程

2021-09-25 01:34:17 字數 2751 閱讀 6094

說起來也是很巧合的一件事情,去年暑假自己乙個人在宿舍學習hyperledger fabric的相關東西,後來因為各種原因就放棄這個方向開始跟著老師做一些cv方面的工作,現在竟然又開始看區塊鏈的相關東西。

去年開始學習區塊鏈的時候很多東西還沒有掌握,比如pki、密碼學,計算機網路當時也學得迷迷糊糊的,因此當時廢了很大力氣,記得關於pki證書那塊自己就折騰了好久才算明白。當時還寫了十來篇部落格記錄所學的東西,現在也很久沒有回頭看了,不知道其中存在多少錯誤。

大三這一年又學習了pki和密碼學這些課程,感慨當時或許不應該進入這個領域,自己走了很多彎路。轉念一想其實也不是壞事,摸索中自己也學到了許多東西,算是有得有失吧。

前幾天導師給了幾篇**讓看,其中一篇是《blurring the lines between blockchains and database systems: the case of hyperledger fabric》,昨天看完之後豁然開朗,尤其是**中hyperledger fabric的工作流程這部分。當然中間的部分也很精彩易讀,演算法部分都給了詳細的例子講解,並沒有感到什麼困難很快就讀完了。由此想起來前幾天在看的sbft,那篇真是讀不動=_=||

fabric是乙個permissioned blockchain system,也就是整個區塊鏈網路的每乙個peer都可以及時知道其他peer的存在。多個peer可以組成organization,在organization內,peers之間互相信任,每乙個peer都維護乙份ledger的副本,ledger包含有效和無效的transaction,除此之外peer還以狀態資料庫的形式維護乙個當前狀態。除了peer外,還有乙個重要的角色是ordering service,用來給transaction排序。

fabric基本的流程包括四個階段,分別是模擬(simulate)排序(order)驗證(validata)提交(commit),如下圖所示:

如其名字所說的一樣,這一階段只是模擬進行交易,並不真正更新ledger

client發起交易請求,請求被傳送至endorsersendorsement peer,這些peer是根據endorsement policy選出來的),endorsers根據當前本地的ledger狀態並行模擬進行這些交易,雖然不改變ledger狀態,但是會產生乙個read set和乙個write set記錄這個交易的影響,模擬完成後,endorserread setwrite set進行簽名並將其一起返回給client

如果client收到的read setwrite set是一致的(可能存在惡意endorser或者智慧型合約存在不確定的演算法導致出現不一致),那麼client就會生成乙個真正的交易請求,包含read setwrite set和對應的簽名,並將這個請求傳送給ordering service

ordering service對來自client的交易進行排序,需要注意的是這裡並不檢查交易的內容,預設按照交易到達的順序進行排序(這種簡單的排序可能導致大量的交易衝突,降低效能,如果按某一特定的順序排序可以極大的較少交易衝突,提高吞吐量,這也是這篇**提出的最重要的工作,這裡就不細說)。

ordering service將交易排序後打包成block,傳送給網路中的peers,這裡不保證所有的peer同時收到這個block,但保證收到的block的順序是一致的(使用gossip協議)。

peer收到block後,就開始驗證階段。

驗證階段主要包括兩個檢查:

兩次檢查都通過的話就可以進入commit階段了。

peerblock新增到鏈上,注意這裡是所有的交易(有效的和無效的)都加進來了。然後根據有效的交易改變當前的ledger狀態。

其實**附錄中還有乙個詳細的例子來說明hyperledger fabric的工作流程,真的是很良心的一篇**了,推薦還不太理解的同學去**中看一下那個交易的例子~

ps:本篇部落格收錄進了專欄【超級賬本原始碼解析】,更多關於超級賬本的內容可以去專欄查閱~

簡述mysql應用 MYSQL使用簡述

您可能感興趣的話題 mssql 一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後提示你輸密碼,如果剛安裝好mysql,超級使用者root是沒有密碼的,故直接回車即可進入到mysql中了,mysq...

PerformanceCounter簡述及用法

一 performancecounter簡述 1 簡單介紹 表示 windows nt 效能計數器元件 命名空間 system.diagnostics 程式集 system 在 system.dll 中 2 建構函式 只介紹本文要用到的 performancecounter string,strin...

簡述資料結構 超簡述演算法

程式由儲存資料的結構和解決問題的演算法組成,在計算機的世界裡,結構和演算法存在 相輔相成 的關係。程式根據演算法選擇最合適的儲存結構,演算法依賴儲存結構,選擇最優的策略處理資料,達到占用空間少 計算時間少的目的。打個比方,遇到乙個實際問題,需要解決兩個事情 1 如何將資料儲存在計算機中 2 用什麼方...