謝謝大家不斷的為這篇文章點贊。從 3 月份開始專注于區(qū)塊鏈開發(fā),那時國內(nèi)基本沒有區(qū)塊鏈的相關(guān)內(nèi)容,科學(xué)上網(wǎng)還是必備技能,一點一點積累和開拓吧。現(xiàn)在國內(nèi)有很多的各種鏈,大大小小的組織和會議,應(yīng)該有很多的『新人』在做區(qū)塊鏈了,我后面會為每一幅圖解加一些文字解釋,希望可以幫助到大家。如果有不對的地方大家也可以留言。
1. fabric-ca.png
有兩種方式與 Fabric CA 服務(wù)端交互:通過 Fabric CA 客戶端,或者 Fabric SDK,所有與 Fabric CA 的交互都是通過 REST APIs 來實現(xiàn)的。REST APIs 的 swagger 說明文檔見 fabric-ca/swagger/swagger-fabric-ca.json
swagger/swagger-fabric-ca.json APIs 的文檔.
Fabric CA 客戶端或者 SDK 可能會連接到 Fabric CA 集群中某一個 Fabric CA 服務(wù)端,這一部分可以通過上圖右上部分獲得更好的理解??蛻舳诉B接的是一個 HA 代理節(jié)點,這個 HA 代理節(jié)點為 Fabric CA 集群作負載均衡。所有的 Fabric CA 服務(wù)端共享同一個數(shù)據(jù)庫。數(shù)據(jù)庫用來保存用戶和證書信息。如果配置了 LDAP,那么用戶信息將會保存在 LDAP 中,而不是數(shù)據(jù)庫中。
2. fabric-ca 運行時流程圖.png
3. 兩個不同的chaincode并行進行背書和共識處理的過程.png
4. transaction flow.png 這張圖在文檔中已經(jīng)做了修改請看 圖36
該流程圖對應(yīng)的交易處理步驟如下:
1、Client發(fā)起交易,這個場景下的Client是通過Submitting Peer代理和其他Peer以及交易共識排序系統(tǒng)交互的,Client的接入合法性可由Submitting Peer來控制。主要看系統(tǒng)是如何設(shè)計的;
2、Submitting Peer按照背書策略,繼續(xù)發(fā)送交易給其他節(jié)點(Endorsing Peer),模擬執(zhí)行智能合約(Chain Code),暫存合約執(zhí)行結(jié)果(Key-Value讀寫集),但執(zhí)行結(jié)果不會真正更新到本地賬本和Key-Value 狀態(tài)數(shù)據(jù)庫中;
3、Endorsing Peer驗證交易簽名,驗證讀寫集版本依賴關(guān)系是否有效,并將結(jié)果發(fā)送給Submitting Peer;
4、Submitting Peer收集Endorsing Peer的簽名的執(zhí)行結(jié)果和交易數(shù)據(jù),發(fā)送到共識排序服務(wù)(Consensus Service,又稱Ordering Service);
5、共識排序系統(tǒng)按特定的共識算法將多筆交易排序打包成區(qū)塊,并將區(qū)塊遞交給同一通道內(nèi)的全部Peer;
6、接收到區(qū)塊的全部Peer檢查驗證區(qū)塊里的每一筆交易,比對模擬執(zhí)行讀寫集結(jié)果,根據(jù)比對結(jié)果設(shè)置交易是否生效,設(shè)定好標(biāo)記,并更新本地賬本和狀態(tài)數(shù)據(jù)庫,這時,交易才真正反映到區(qū)塊鏈上;
7、補充一個步驟,圖中沒有畫出來,Submitting Peer需將交易是否執(zhí)行成功等信息反饋給Client,或者Client可以通過調(diào)用SDK接收Fabric“事件”(event)得知交易執(zhí)行結(jié)果。