Hyperledger Fabric的一次交易的旅程

上周小結(jié)

從上周的Hyperledger Fabric構(gòu)架簡述之二 節(jié)點(diǎn),我們知道關(guān)于節(jié)點(diǎn)的基礎(chǔ)。

  • 節(jié)點(diǎn)是 chaincode, Blockchain Ledger的載體。
  • 一個節(jié)點(diǎn)可以包含多個 Blockchain Ledger, 而一個 Blockchain Ledger為多個 chaincode提供服務(wù)。
  • 每個節(jié)點(diǎn)上都有一個默認(rèn)的 system chaincodes

這一周,我們繼續(xù)一起了解應(yīng)用與節(jié)點(diǎn)的關(guān)系。以及他們是怎么完成一次交易,并且把交易廣播出去的。

一次交易的旅程

一個外部應(yīng)用,比如安卓上的一個應(yīng)用,可以通過 Hyperledger Fabric Software Development Kit (SDK) 里面提供的 APIs 來連接節(jié)點(diǎn),觸發(fā) chaincode,生成交易,通過 ordered(排隊,排序) 之后,被廣播到網(wǎng)絡(luò)其他節(jié)點(diǎn)上。

從一個應(yīng)用的角度:

  • 通過API鏈接節(jié)點(diǎn)
  • 嘗試激活智能合約
  • 收到節(jié)點(diǎn)的回復(fù)(在回復(fù)之前,節(jié)點(diǎn)會激活請求的智能合約,智能合約生產(chǎn)指令,更新回復(fù))
  • 把收到的回復(fù),提交給排序節(jié)點(diǎn)(排序節(jié)點(diǎn)會做相關(guān)確認(rèn),然后把這次交易的信息排隊到廣播隊列中)
  • 收到節(jié)點(diǎn)以及更新的回復(fù)

從一個節(jié)點(diǎn)的角度:

  • 是有能力在確認(rèn)相關(guān)信息之后,獨(dú)立執(zhí)行智能合約的。因?yàn)樗枰男畔⒃谶@個節(jié)點(diǎn)的本地都有備份。
  • 雖然可以獨(dú)立執(zhí)行智能合約,但是不能獨(dú)立的把執(zhí)行結(jié)果廣播出去

交易過程概圖

參與方

  • A :收購蘿卜
  • B :出售蘿卜
  • peerA:代表A
  • peerB:代表B

假設(shè)

  • 我們的聯(lián)盟網(wǎng)絡(luò)已經(jīng)建成,而且參與方已經(jīng)通過相關(guān)資格認(rèn)證機(jī)構(gòu),注冊,并且有相關(guān)材料證明其身份。

The application user has registered and enrolled with the organization’s certificate authority (CA) and received back necessary cryptographic material, which is used to authenticate to the network.

  • 包含了代表蘿卜市場的一對key和value的智能合約已經(jīng)在聯(lián)盟網(wǎng)絡(luò)里配置好了。

  • 智能合約的邏輯里面,包含了交易的步驟以及一個蘿卜的價格。并且在背書協(xié)議里面,包含了必須雙方提出背書。

交易步驟

  • A想發(fā)出購買蘿卜的請求。因?yàn)樾枰p方背書,所以A同應(yīng)用,把這請求同時發(fā)給了,peerA和peerB。
  • SDK生成請求。這個請求可以執(zhí)行一個智能合約,從而可以讀寫(比如加入一對新的代表蘿卜市場的key和value)賬本。
  • SDK將交易打包為正確的格式,并用用戶的加密憑證為此交易提議生成唯一的簽名。
  • 背書節(jié)點(diǎn),如果簽名驗(yàn)證成功,就執(zhí)行請求
主要驗(yàn)證:
?請求的格式是否正確
?這個請求在之前已經(jīng)被執(zhí)行過
?簽名是否有效
?請求提出者,在權(quán)限上是否符合此次請求的內(nèi)容。
  • 背書節(jié)點(diǎn),執(zhí)行請求,生成結(jié)果。此時賬本還沒有做任何的更新。和背書節(jié)點(diǎn)的簽名一起,返回給請求者。

圖片來源

圖片來自官方網(wǎng)站

相關(guān)鏈接

Transaction Flow

Ledger

Peers

Hyperledger的Composer和Fabric到底是什么關(guān)系?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容