☞ ░ 前往老猿Python博文目錄 ░
在Hyperledger Fabric區塊鏈中,有背書節點進行背書,Hyperledger Fabric 使用背書策略來定義哪些節點需要執行交易。
Hyperledger Fabric在區塊鏈交易方面采取了一個新穎的思路,將智能 合約的執行與賬本的更新分開使它可以提高交易吞吐量,支持更細粒度 的隱私控制,實現更靈活強大的智能合約。而這些特性得以實現的一個 關鍵因素就是在交易加入賬本之前進行顯式地交易背書。
1、背書
背書”這個詞源來自銀行票據業務,傳統意義上的背書是指請具有一定公信力的人在票據背面簽字以表達對信用的加強和支持,就是讓別人提供信譽以及影響力進行支持,讓被背書(endorsed)人或者事物提升可信度,更加具有公信力。需要注意的是背書不是擔保,而是證明或聲明的意思。
老猿認為在區塊鏈中背書可以理解為承擔背書任務的節點為區塊鏈交易進行交易信息驗證,對驗證通過的交易聲明此交易合法的過程和機制。
並不是所有區塊鏈都采用了背書機制,比特幣和以太坊等公有鏈一般都不采用背書機制,聯盟鏈中Hyperledger Fabric采用了背書機制。
2、背書節點(endorsement、endorsor)
在區塊鏈中承擔背書任務的節點即是背書節點。背書節點必須通過有效證書的預期信息的有效簽名來證明其合法性。
3、背書策略
背書策略(endorsement policy)可以理解為是對交易進行背書必須滿足的條件,即要得到背書成功的結論,必須滿足背書策略中給出的條件。
區塊鏈節點有預先指定的背書策略集,這些背書的條件判斷在鏈碼(Chaincode)中實現,所有的交易都必須依據背書策略進行交易,因為只有經過背書處理的交易才是合法、被認可的交易。因此背書策略也可以說就是用來指導被選中的節點(背書節點)如何決策交易是否正確的條件。
由於背書策略是鏈碼,只要能進行鏈碼開發的語言都可以進行背書策略的開發,同一區塊鏈中的鏈碼可以使用多種語言進行開發。
一些背書策略樣例:
- 節點A、B、C和F都需要對類型為T的交易進行背書
- 通道中的大部分節點必須對類型為U的交易進行背書
- A、B、C、D、E、F、G中的至少3個節點必須對類型為V的交易進行背書
4、背書驗證過程
Fabric交易需要首先通過節點的背書,然后再進行交易排序,最后才利用有序交易進行賬本的更新。下面是Fabric背書策略驗證過程:
- 發起交易的時候,發起端應用一般調用SDK指定交易提議發給一個或多個背書節點進行背書驗證,接收提議的背書節點在SDK的交易提議請求中指定,如果未指定,則會將交易提議請求發送給加入該通道的所有節點,發送后客戶端應用等待背書節點的返回
- 背書節點收到提議后,首先進行一些檢查和簽名的驗證,包括用客戶端(SDK)的公鑰驗證它的簽名、核實客戶端是否可以在該channel進行操作、交易是否已被提交、交易提議組織是否正確。驗證通過后模擬執行chaincode(不會將結果寫入到賬本里),生成一個提議結果,並對結果進行背書,即在結果中添加數字簽名並利用私鑰對結果進行簽名
- 客戶端(SDK)收到足夠多(背書策略要求)的背書節點的結果后,表示這個交易已經正確背書,然后將交易提議、模擬結果和背書信息打包發給orderer排序節點;如果客戶端沒有收集到足夠多的背書節點反饋的背書信息,這個交易就會被舍棄
- Orderer節點對來自客戶端(SDK)的信息進行排序,並創建區塊,然后在通道channel上進行廣播;
- channel上的peer節點接收到交易區塊后,驗證背書策略是否滿足,然后更新賬本,至此,背書策略的驗證過程完成。
參考:
1、《Fabric背書策略相關概念與背書驗證過程》
2、《Fabric交易背書原理及流程》
3、《區塊鏈原理之交易背書基本流程(二) 》
關於老猿的付費專欄
老猿的付費專欄《使用PyQt開發圖形界面Python應用》專門介紹基於Python的PyQt圖形界面開發基礎教程,付費專欄《moviepy音視頻開發專欄》詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,兩個專欄加起來只需要19.9元,都適合有一定Python基礎但無相關專利知識的小白讀者學習。這2個收費專欄都有對應免費專欄,只是收費專欄的文章介紹更具體、內容更深入、案例更多。
付費專欄文章目錄:《moviepy音視頻開發專欄文章目錄》、《使用PyQt開發圖形界面Python應用專欄目錄》。
關於Moviepy音視頻開發的內容,請大家參考《Python音視頻剪輯庫MoviePy1.0.3中文教程導覽及可執行工具下載》的導覽式介紹。
對於缺乏Python基礎的同仁,可以通過老猿的免費專欄《專欄:Python基礎教程目錄》從零開始學習Python。
如果有興趣也願意支持老猿的讀者,歡迎購買付費專欄