您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Fabric交易背書過程的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Hyperledger Fabric和其他許多區塊鏈的關鍵區別之一,就在于Fabric區塊鏈的交易執行過程:Fabric交易需要首先通過節點的背書,然后再進行交易排序,最后才利用有序交易進行賬本的更新。本文將介紹Hyperledger Fabric所采用的執行-排序-驗證這一三步交易模型的工作原理,以及引入背書環節對Hyperledger Fabric區塊鏈性能的有益作用。
在其他區塊鏈平臺中,交易生命周期基本由如下環節構成:
排序:交易有序加入賬本,然后擴散到所有節點
執行:交易在所有節點上按順序依次執行并更新賬本
為了讓所有節點保持一致的狀態,交易必須確定性執行,也就是說,無論何時何地,同樣的交易必須產生同樣的結果。這一要求對智能合約形成了很強的約束,也是智能合約通常需要使用領域特定語言(DSL)來開發的原因之一,因此使用像Java或Go這樣的通用開發語言基本上無法保證確定性。
在Hyperledger Fabric中,交易的聲明周期則有所不同:
執行:交易(通過智能合約)以任意順序執行,甚至可以并行執行
排序:當足夠數量的節點對交易結果達成一致,該交易就會 被加入賬本并擴散給所有節點。
驗證:每個節點驗證并按順序執行交易,從而更新賬本
首先需要注意的一點是,交易的執行和對賬本的實際更新被拆分為兩個環節,這一拆分帶來一些有益的作用:
所有節點都需要更新賬本,因此所有節點都需要執行驗證步驟。 但并不是所有的節點都需要執行智能合約。Hyperledger Fabric 使用背書策略來定義哪些節點需要執行交易。這意味著指定的 鏈碼(智能合約)不必開放給所有的節點 —— 那些不在背書策略中 的節點不需要由訪問鏈碼的權限。
交易可以在被排序之前先執行。這是的節點可以并行執行交易, 從而提高系統的吞吐量
在Fabric的三步交易模型中,在交易被添加到賬本之前,其鏈碼 執行結果是顯式達成一致的,其他區塊鏈的兩步交易模型使用 確定性的鏈碼,本身就隱含了節點之間就智能合約的執行結果 達成一致。顯式達成一致可以讓Fabric使用非確定性的鏈碼, 這也是為什么我們可以使用Go、Java和Node.js編寫Fabric鏈碼 的原因。
Hyperledger Fabric允許用戶自己定義鏈碼執行的策略。這些背書策略定義了在交易被加入賬本之前,哪些節點需要就交易結果達成一致。Fabric提供了一個小型的DSL來定義背書策略。下面展示了一些背書策略樣例:
節點A、B、C和F都需要對類型為T的交易進行背書
通道中的大部分節點必須對類型為U的交易進行背書
A、B、C、D、E、F、G中的至少3個節點必須對類型為V的交易進行背書
背書策略并不保證正確的鏈碼安裝在正確的節點上。然而,背書和安裝鏈碼的確存在類似的機制,我們將在后續教程中介紹這一點。
到目前為止,我們都是松散地使用交易(transaction)這一術語。在排序-執行模型中,鏈碼執行和賬本更新被合二為一 —— 交易。在Fabric中,這兩個概念是分開的,因此交易本身也被拆分。
Fabric從交易提議(Transaction Proposal)開始。這是一個用來觸發鏈碼執行的數據包。交易提議被發送給用于背書的節點。背書節點執行鏈碼,如果成功的話就生成一個實際的賬本交易。背書節點簽名建議并返回交易提議的響應,這是執行-排序-驗證模型中的執行步驟。
一旦交易提議的創建者收到足夠的可以滿足背書策略的簽名,它就可以將交易(以及簽名)提交以便添加到賬本中,這就是排序步驟。
Hyperledger Fabric在區塊鏈交易方面采取了一個新穎的思路,將智能合約的執行與賬本的更新分開使它可以提高交易吞吐量,支持更細粒度的隱私控制,實現更靈活強大的智能合約。而這些特性得以實現的一個關鍵因素就是在交易加入賬本之前進行顯式地交易背書。
感謝各位的閱讀!關于“Fabric交易背書過程的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。