在區塊鏈技術中,共識至少可以包含兩層語義:效率慢1、完成交易定序;
2、對最新狀態達 成共識。
對於採用賬戶模型的區塊鏈來說,交易中只包含事件,狀態是在交易執行完之後生 成。為了實現對最新狀態的共識,常用的辦法是:共識節點在打包區塊之前執行完區塊中的所有交易,將計算出的最新狀態儲存到待打包的區塊的塊頭中。包含最新狀態的區塊達成 共識後,區塊中的交易完成了定序,同時最新狀態亦完成了共識。任何其它共識節點可以重放區塊中的交易驗證狀態的正確性。 [0003] 然而,這種處理方法制約了共識演算法的交易處理能力。例如,當高度為h的區塊b (h)達成共識後,高度為h+1的共識節點(也稱為leader節點)打包並執行b(h+1)後才能廣播 b(h+1),其它共識節點收到b(h+1)後必須再執行b(h+1)以驗證其正確性。在整個共識過程 中,這兩次序列的區塊執行過程(先執行交易,再共識結果)拖慢了共識效率。
區塊鏈共識與執行的並行處理方法
批量交易打包,並對打包得到的乙個交易集合進行共識。在大成共識後,將已經定序的交易集合新增到頂設緩衝佇列。依次執行所述預設緩衝佇列中每個交易集合內的交易。在所述任意交易集合內的交易全部執行完成後,將已經被執行的交易集合的執行結果作為最新狀態返回。區塊鏈共識與執行並行處理裝置
共識模組:用於批量打包交易,並對打包得到的乙個交易集合進行共識。在達成共識後,將已經定序的交易集合新增到執行模組的預設緩衝佇列。執行模組:用於依次執行所述預設緩衝佇列中每個交易集合內的交易。用於在交易集合內的交易全部執行完成後,將已經被執行的交易集合的執行結果作為最新狀態返回給所述共識模組。
目前存在的一種改進辦法是: 排序節點在打包區塊的時候,並不直接立即執行該區塊中的交易,而是先對該區塊進行共識,待大成共識後,共識節點才執行該區塊生成新狀態。下乙個高度的排序節點將新狀態攜帶在下乙個區塊中進行共識。這種辦法省掉了一次區塊執行過程,代價是增加的乙個區塊的確認時間。當然,從更加微觀的角度來分析,這種改進方案,發現任何乙個共識節點的共識模組和執行模組在整個共識過程中都是序列的。這就意味著針對多個共識節點,當任意共識節點的共識模組在對區塊進行共識時候,執行模組始終是空閒的。
為了解決共識與執行序列處理二導致的共識效率較低的問題,便提出了並行方案,主要核心事項在於解耦交易定序與狀態共識。4.1 交易流程
批量打包交易,並對打包得到的乙個交易集合進行共識。將接收到的交易批量打包,形成乙個交易集合。對該交易集合中的交易進行共識。注:摘自 杭州秘猿科技****的專利 《區塊鏈共識與執行的並行處理方法、裝置和 電子裝置》,只做個人學習使用。達成共識後,將已定序的交易集合新增到預設緩衝佇列。預設緩衝佇列可以是乙個快取空間,主要用於快取已定序的交易集合。在達成共識之後,將已經定序的乙個個交易集合一次新增到預設緩衝佇列中,以等待依次被執行。
依次執行所述預設緩衝佇列中每個交易集合內的交易。
在所述任意交易集合內的交易全部執行完成後,將已經被執行的交易集合的執行結果作為最新狀態返回。
每執行完成乙個交易集合中的所有交易,就將被執行的交易集合傳送給共識模組。以便在排序節點打包交易的時候獲取到最新狀態參與共識。
由此可見,在乙個區塊被處理時候,實現交易共識與執行的並行處理。以及在相鄰區塊的交易共識與執行的並行處理,保證在整個共識過程中,交易共識與執行始終在執行,切存在並行處理的情況,從而提高共識效率。
區塊鏈共識與挖礦
什麼是共識呢?在乙個區塊鏈網路中,不斷的會有新的交易產生,這些交易都需要記錄和儲存下來,打包成區塊,不斷新增到區塊鏈上。那麼這麼重要的交易資訊,到底是由哪個節點來記錄呢?記賬是一件很重要但也很簡單的事情,每個人都可以做,顯然最終會存在眾多大同小異的賬本,但我們只需要其中的乙個賬本就夠了。這時候就需要...
區塊鏈的共識問題
四位將軍商討攻打拜占庭的時機,他們中任意三人達成一致,就可以獲勝。由於他們相互缺乏信任,不能共處一室,只能通過書信向其他將軍發表看法,比如,在第一輪通訊中,可能出現4位將軍都不一樣的情況。那麼,要如何協調,讓大家的攻打時機一致呢?在這樣的情況下,如果是40人,或者更多人,如何協調呢?問題的本質是如何...
區塊鏈的共識演算法
鏈客,專為開發者而生,有問必答!共同演算法11 是經過特殊節點的投票,在短時間內完成對買賣的承認,假如利益不相干的若干個節點達到共同,我們就認定全網對此也能達到共同。公式演算法的分類 工作量證明 生成要加入到區塊鏈中的一筆新的買賣是必須滿足的要求,根據工作量證明組織構建的區塊鏈網路中。節點是經過計算...