fabric 简单理解
參考:fabric實(shí)戰(zhàn)
執(zhí)行過程:
1.客戶端或sdk調(diào)用api把調(diào)用請求發(fā)送到所有的背書節(jié)點(diǎn)
2.背書節(jié)點(diǎn)模擬交易執(zhí)行,看看有沒有問題,沒有問題就給調(diào)用的客戶端或sdk返回讀寫集,并對其簽名。
3.sdk收到足夠的簽名(背書)后,把讀寫集/交易發(fā)給排序節(jié)點(diǎn),排序節(jié)點(diǎn)進(jìn)行排序后繼續(xù)轉(zhuǎn)發(fā)給所有記賬節(jié)點(diǎn)(包括之前的背書節(jié)點(diǎn),從記賬節(jié)點(diǎn)之中選出幾個(gè)作為背書節(jié)點(diǎn))。需要說明的是排序節(jié)點(diǎn)為防止單點(diǎn)掉線,也是多個(gè)節(jié)點(diǎn)組成,他們有共識機(jī)制保持同步,比如kafca機(jī)制。
4.所有節(jié)點(diǎn)對交易進(jìn)行驗(yàn)證,驗(yàn)證通過后記賬,也就是修改狀態(tài)。
為什么需要區(qū)塊鏈?
假設(shè)我有100萬的償還能力,現(xiàn)在我去貸款公司A貸款100萬,銀行A進(jìn)行調(diào)查后發(fā)現(xiàn)我的財(cái)產(chǎn)、公司、地產(chǎn)等相關(guān)信息后,得出我有100萬的償還能力,于是就把100萬貸給了我。接著我又去貸款公司B貸款100萬,貸款公司B調(diào)查得出我有100萬的償還能力,于是把100萬貸給了我。然后我又去貸款公司C…。最后我無力償還選擇跑路,貸款公司A、B、C吃了大虧。這是因?yàn)锳BC之間的信息不流通,或者對流通的數(shù)據(jù)互相不信任。這也是篇p2p公司暴雷的原因。因此ABC之間需要建立區(qū)塊鏈解決這個(gè)痛點(diǎn),每個(gè)公司設(shè)立一個(gè)或者多個(gè)節(jié)點(diǎn),組成聯(lián)盟鏈。
搭建區(qū)塊鏈的需求:
如何使用:
1.下載docker
2.下載鏈碼
3.下載sdk包調(diào)用鏈碼
4.編寫智能合約,智能合約至少要實(shí)現(xiàn)兩個(gè)函數(shù),Init函數(shù)和Invoke函數(shù),Init函數(shù)是發(fā)布合約時(shí)的初始化函數(shù),類似于以太坊的構(gòu)造函數(shù),Invoke函數(shù)是調(diào)用其它方法的函數(shù),比如寫了一個(gè)合約方法A,需要通過調(diào)用Invoke方法去調(diào)用A,也就是把A的函數(shù)名、參數(shù)作為Invoke函數(shù)的參數(shù)。
運(yùn)行時(shí)需要配置:
配置節(jié)點(diǎn)信息,有多少個(gè)節(jié)點(diǎn),誰時(shí)排序節(jié)點(diǎn),誰是記賬節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的域名、端口。
配置組織信息,組織的公私鑰存儲位置,它有哪些節(jié)點(diǎn)。
問題:
總結(jié)
以上是生活随笔為你收集整理的fabric 简单理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis之使用JSONObject
- 下一篇: ERC721关于NFT的学习和理解