說起來也是很巧合的一件事情,去年暑假自己乙個人在宿舍學習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
發起交易請求,請求被傳送至endorsers
(endorsement peer
,這些peer
是根據endorsement policy
選出來的),endorsers
根據當前本地的ledger狀態
並行模擬進行這些交易,雖然不改變ledger狀態,但是會產生乙個read set
和乙個write set
記錄這個交易的影響,模擬完成後,endorser
對read set
和write set
進行簽名並將其一起返回給client
。
如果client
收到的read set
和write set
是一致的(可能存在惡意endorser或者智慧型合約存在不確定的演算法導致出現不一致),那麼client
就會生成乙個真正的交易請求,包含read set
、write set
和對應的簽名,並將這個請求傳送給ordering service
。
ordering service
對來自client
的交易進行排序,需要注意的是這裡並不檢查交易的內容,預設按照交易到達的順序進行排序(這種簡單的排序可能導致大量的交易衝突,降低效能,如果按某一特定的順序排序可以極大的較少交易衝突,提高吞吐量,這也是這篇**提出的最重要的工作,這裡就不細說)。
ordering service
將交易排序後打包成block
,傳送給網路中的peers
,這裡不保證所有的peer
同時收到這個block
,但保證收到的block
的順序是一致的(使用gossip協議
)。
當peer
收到block
後,就開始驗證階段。
驗證階段主要包括兩個檢查:
兩次檢查都通過的話就可以進入commit
階段了。
peer
將block
新增到鏈上,注意這裡是所有的交易(有效的和無效的)都加進來了。然後根據有效的交易改變當前的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 用什麼方...