區塊鏈時代的拜占庭容錯:Tendermint(二)

原文題目:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》git

原文做者:Ethan Buchman算法

翻譯:饒雲坤數據庫

校對:傅曉波promise

本文爲節選緩存

如下爲正文:安全

 

本章闡述Tendermint共識算法和用於原子廣播( atomic broadcast)的相關區塊鏈。拜占庭容錯共識問題將被詳細討論,而且Tendermint共識的一個正式說明將以π-calculus的形式給出。Tendermint區塊鏈已經被非正式地證實爲知足原子廣播。未來咱們將以進程演進的方式來描述完整的區塊鏈協議,並證實相關特性。網絡

 

Tendermint綜述

Tendermint是區塊鏈範式中的一個安全的狀態機複製算法。其算法形態爲BFT-ABC,而且附加責任制,便於驗證拜占庭節點的不誠實行爲。數據結構

Tendermint算法給每一個區塊賦予一個增量索引或者高度(height),在某一高度中只存在一個有效的區塊,區塊鏈從高度爲0的創世紀塊開始,由一個驗證者集合投票產生下一個區塊,其中每個驗證者由各自的公鑰標識。每個驗證者須要維護一份完整的複製狀態的拷貝。在投票產生某一高度的區塊的過程當中,在正式提交(commit)某一高度的區塊以前,至少須要通過一輪(round)投票(vote)來達成共識。每一輪都會經過round robin的方法產生一個提議者(proposer),該提議者在當輪以廣播的形式提出一個提議(proposal),提議通過驗證者的集體投票,來決定是否最終提交該區塊或者進入下一輪。在提議的區塊真正被提交(commit)以前,驗證者們須要進行兩輪投票(pre-vote & pre-commit), 經過一個簡單的鎖機制用來阻止少於總數1/3的拜占庭節點攻擊。因爲Tendermint網絡的不一樣時性(asynchrony),當拜占庭節點超過總數的1/3,網絡存在癱瘓的可能性。app

注意到,tendermint的多輪投票機制的核心是共識算法。每個區塊包含一些元數據(metadata),稱做區塊頭(header)。區塊頭裏包含本區塊的高度,提議時間,本區塊全部交易的梅克爾根哈希值。異步

 

共識

共識算法能夠大體分爲如下幾部分:

•  提議(Proposals):在每一輪(round)中,新區塊的提議者必須是有效的,而且告訴(gossiped)其餘驗證者。若是在必定時間內沒有收到當輪提議(proposal),當前提議者將被後面的提議者接替。

•  投票(Votes):兩階段的投票基於優化的拜占庭容錯。它們分別被稱做預投票(pre-vote)和預提交(pre-commit)。對於同一個區塊同一輪若是存在超過2/3的預提交(pre-commit)則對應產生一個提交(commit)。 
•   鎖(Locks):在拜占庭節點數少於節點總數的1/3的狀況下,Tendermint中的鎖機制能夠確保沒有兩個驗證者在同一高度提交(commit)了兩個不一樣的區塊。鎖機制確保了在當前高度驗證者的下一輪預投票或者預提交依賴於這一輪的預投票或者預提交。

爲了應對單個拜占庭故障節點,Tendermint網絡至少須要包括4個驗證者。每一個驗證者擁有一對非對稱密鑰,其中私鑰用來進行數字簽名,公鑰用來標識本身的身份ID。驗證者們從公共的初始狀態開始,初始狀態包含了一份驗證者列表。全部的提議和投票都須要各自的私鑰簽名,便於其餘驗證者進行公鑰驗證。

驗證人在發起提議(proposal)步驟以後,當且僅當收到其它驗證人超過三分之二(+2/3)的投票後纔會進一步推動流程。虛線箭頭表示進入下一個區塊高度共識流程的原子廣播。

共識開始於第0輪,第一個提議者(proposer)是區塊鏈頭裏驗證者列表裏的第一個驗證者。每一輪最終要麼完成了一個提交(commit),要麼直接進入當前高度的下一輪,每一輪都會產生一個新的提議者。

與其餘選舉(leader election )算法不一樣,Tendermint每一輪都會產生一個新的提議者(proposer),驗證者投票決定是否進入下一輪,這與接受提議的流程相似。

每輪的開始對同步有弱的依賴性。每一輪開始期間,存在一個用來計時的本地同步時鐘,若是驗證者在TimeoutPropose時間內沒有收到提議,驗證者將參與投票來決定是否跳過當前提交者。TimeoutPropose會隨着輪數的增長而增長。

每輪收到提議之後,進入徹底異步模式。以後驗證者的每個網絡決定須要獲得2/3驗證者以上的贊成。這樣下降了對同步時鐘的依賴或者網絡的延遲。可是這也意味着若是得不到1/3以上驗證者的響應,整個網絡將癱瘓。

簡言之,每輪,開始提議弱同步,以後投票徹底異步。

爲了加強Tendermint共識網絡的安全性,引入了少許的鎖定規則(locking rules)來迫使驗證者自證其投票的合法性。儘管咱們不須要實時廣播他們的合法證實,可是咱們確實指望驗證者們保存相關數據。這樣當網絡被拜占庭故障節點癱瘓時,其能夠存留爲相關證據。這個問責機制確保在網絡故障(例如PBFT)的時候Tendermint具備一個更健壯的擔保(guarantees)。

驗證者使用一組不一樣的消息(messages)來管理區塊鏈,應用程序狀態,p2p網絡和共識。其中,核心的共識算法包含兩類消息:

ProposalMsg: 對應某一高度及某一輪數的區塊的提議(proposal),該提議已經由提議者簽名 

VoteMsg: 對某一提議的簽名投票

 

1、提議 

每輪開始於一個提議(proposal),提議者從內存池(Mempool)選取一批交易進而構成了一個區塊,該區塊隨後被嵌套在ProposalMsg中,最後提議者廣播(broadcast)ProposalMsg。若是這個提議者是拜占庭節點,他可能向不一樣的驗證者廣播不一樣的ProposalMsg。

提議者經過一個簡單而且相對固定的的roubd robin輪流坐莊,因此每一輪只有一個有效且被全部驗證者公認的提議者。若是驗證者收到了以前更低輪次的提議或者提議來自於非法的提議者,該提議將被拒絕。

提議者的輪流坐莊對於拜占庭容錯是必要的。好比,對於raft算法,若是選舉出來的leader是拜占庭,而且leader與其餘節點網絡鏈接狀態良好,該leader能夠徹底控制整個網絡,網絡節點的安全和正常運轉將無從獲得保障。Tendermint經過投票和鎖的機制(voting and locking mechanisms )確保了系統的安全性。若是一個提議者在限定時間內沒有處理任何交易,排在其後的提議者將會接替他。更有趣的是驗證者能經過治理模塊投票來移出或者替換拜占庭驗證者。

 

2、投票 

一旦驗證者從網絡中收到了一份完整的提議(proposal ),他對該提議進行預投票(pre-vote)簽名,而且廣播到網絡中。若是驗證者在ProposalTimeout時間內沒有接收到一個有效的提議,其對該提議的預投票爲空(nil)。

在存在拜占庭節點的異步環境中,單階投票,即每一個驗證者對每一個提議只投一次,不能足以確保整個系統的安全。本質上,由於驗證者可能作出一些不誠實的行爲,而且消息的到達時間沒有任何保障,一個不誠實的驗證者能夠與其餘驗證者進行協做來提交(commit)一個區塊,然而其餘沒有看到這個提交區塊的驗證者進入了新的一輪,並提交(commit)了一個不一樣的區塊。

一個單階的投票容許驗證者互相溝通他們知道的關於該提議的信息。可是爲了容忍拜占庭故障,他們也須要互相告訴對方他們本身瞭解到的其餘驗證者聲稱瞭解到的關於該提交的信息。換句話說,二階段提交確保了足夠的驗證者見證了第一階段的結果。

對於某個區塊的非空預投票是爲網絡提交(commit)區塊已作好準備的投票。空預投票是爲網絡直接進入下一輪的投票。在理想的一輪中,超過2/3的驗證者爲該提議進行了預投票。在任意一輪中,區塊具備的超過2/3的預投票被稱做一個波爾卡(polka)。超過2/3的空預投票成爲空波爾卡(nil-polka)。

當一個驗證者收到了一個波爾卡(polka),他接受到了一個信號,即網絡準備提交該區塊,做爲一個驗證者簽名而且廣播預提交(pre-commit)的背書。有時,因爲網絡的不一樣時性,驗證者可能沒有收到對應的波爾卡或者波爾卡根本就不存在。在這種狀況下,驗證者沒有對應的波爾卡爲這個預提交背書,此時預提交爲空。也就是說,在沒有收到波爾卡背書的狀況下,簽名一個預提交被看做是一個惡意行爲。

預提交(pre-commit)是關於提交(commit)一個塊的投票。空預提交則投票進入到下一輪。若是驗證者收到2/3以上驗證者的預提交,則其在本地提交該塊,計算結果狀態,並移動到下一高度的第0輪。若是驗證者接收到超過2/3的空預提交,則投票進入下一輪。

 

3、鎖 

多輪投票的安全問題是棘手的,必須避免同一高度不一樣輪數分別提交兩個不一樣區塊的情形。在Tendermint中,這個問題能夠經過鎖機制(locking mechanism)獲得解決。鎖機制的大體定位在波爾卡附近。本質上,預提交必須有一個波爾卡爲其背書,驗證者被鎖定在其最近預提交(pre-commit)的區塊上。

鎖定規則:

· 預投票鎖(Prevote-the-Lock):驗證者只能預投票(pre-vote)他們被鎖定的區塊。這樣就阻止驗證者在上一輪中預提交(pre-commit)一個區塊,以後又預投票了下一輪的另外一個區塊。

· 波爾卡解鎖(Unlock-on-Polka ):驗證者只有在看到更高一輪(相對於其當前被鎖定區塊的輪數)的波爾卡以後才能釋放該鎖。這樣就容許驗證者解鎖,若是他們預提交了某個區塊,可是這個區塊網絡的剩餘節點不想提交,這樣就保護了整個網絡的運轉,而且這樣作並無損害網絡安全性。

簡單來講,驗證者能夠被看做鎖在任意高度-1輪的nil-block上,因此波爾卡解鎖意味着驗證者不能預提交一個新高度的區塊直到他們看見一個波爾卡。

這些規則能夠以例子的形式被更直觀的理解。考慮4個驗證者,A,B,C,D,假設有一個第R輪關於blockX的提議。如今假設blockX已經有一個波爾卡,可是A看不見它,預提交(pre-commit)爲空,然而其餘人對blockX進行了預提交。進一步假設只有D看見了全部的預提交,然而其餘人並無看見D的預提交(他們只看見他們的預提交和A的空預提交)。D如今將要提交(commit)這個區塊,然而其餘人進入到R+1輪。因爲任何驗證者均可能是新的提議者,若是他們提議並投票了一個新的區塊blockY,他們可能提交這個區塊。但是D已經提交了bockX,所以損害了系統的安全性。注意,這裏並無任何拜占庭行爲,僅僅是不一樣時性。

(爲了便於讀者理解,譯者補充此表格,下同)

鎖定解決了這個問題經過強迫驗證者粘附在他們預提交(pre-commit)的區塊上,由於其餘的驗證者可能居於這個預提交進行了提交(如上例中的D)。本質上,在任何一個節點一旦存在超過2/3預提交(pre-commit),整個網絡被鎖定在這個區塊上,也就是說在下一輪中沒法產生一個不一樣塊的波爾卡。這是預投票鎖的直接動機。

固然這裏必須有相應的解鎖方式。假設在某一輪中,A和B預提交(pre-commit)了blockX,與此同時C和D的預提交爲空。所以全部的驗證者進入到下一輪,預提議(pre-vote)blockY。假設A是拜占庭,爲blockY也進行了預投票(不考慮其被鎖在blockX上),致使了一個波爾卡。假設B並無看見這個波爾卡,預提交爲空,此時A下線,C,D預提交bolckY。他們進入到下一輪,可是B仍然被鎖定在blockX上,C和D被鎖定在blockY上。這時由於A下線了,他們將永遠得不到一個波爾卡。所以即便在拜占庭節點少於1/3的狀況下,這裏網絡的正常運轉仍然受到了影響。

解鎖的條件是1個波爾卡。一旦B看見了blockY的波爾卡(用來爲C和D的關於blockY的預提交背書),他應當可以解鎖並預提交(pre-commit)blockY。這是波爾卡解鎖的動機,其容許驗證者在看見更高輪數波爾卡的時候解鎖而且提交對應的新區塊。

 

區塊鏈

Tendermint對交易按批或塊進行處理。區塊之間經過加密哈哈希算法鏈成一個完整的區塊鏈。區塊鏈包括通過排序的交易日誌和驗證者提交的相關證據。

 

1、爲何是區塊? 

共識算法一次提交若干個交易(transactions)。正如在第二章提到的那樣。從分批原子廣播(batched atomic broadcast)的角度來看待這個問題,對應兩個主要的優化,其給了咱們更多的吞吐量和容錯能力:

·  帶寬優化:由於每一次提交(commit)須要驗證者之間的兩輪通信,以塊爲單位交易的批處理,平攤了提交的成本在該區塊中的全部交易上。

·  完整性優化:區塊的哈希鏈造成了一個不可篡改的數據結構,跟git倉庫很像,具有歷史任意點的子狀態認證檢查的能力。

區塊也引發了另一個效應,看上去更微妙,可是可能更重要。他們增長了單個交易的最小延遲到區塊的最小延遲,對於Tendermint來講在數百毫秒到數秒量級。傳統的序列化數據庫系統提供了提交延遲在毫秒到數百毫秒量級。他們的低延遲是由於這些數據庫不是拜占庭容錯的,只須要一輪通信而不是兩輪和來自於1/2而不是2/3節點的響應。然而,與其餘具備快速提交時間(commit times)的選舉算法不一樣,Tendermint提供了一個更常規的脈衝(pulse ),在節點故障和網絡不一樣時方面對整個網絡的狀態具備更好的響應度。

脈衝在通信自治系統一致性方面的角色如今並不明朗,可是由此引起的延遲在金融市場中是具備前景的。

 

2、區塊的結構 

區塊的目的是打包一批交易,而且連接到前面一個塊。連接包含兩種形式:前面一個區塊的哈希和前面區塊的預提交的集合,其也被稱做LastCommit。所以一個區塊由三部分構成:區塊頭,交易列表和Lastcommit。

 

安全性

這裏咱們簡要的證實一下Tendermint知足原子廣播。原子廣播被定義爲知足如下條件:

· 有效性(validity) - 若是一個正確的進程廣播m,它最終成功傳達了m

· 一致性(agreement) - 若是一個正確的進程成功傳達了m,全部最終全部的進程成功傳達m

· 完整性(integrity) - m只傳遞一次,而且是以廣播的形式被髮送者發送出去

· 總的順序(total order) - 若是正確的進程p和q分別傳遞出m和m',p傳達m在m'以前,那麼q傳達m在m'以前

注意到, 若是把m看做一個區塊,Tendermint並不知足有效性,由於並不能保證提議的區塊最會會被提交,由於驗證者可能進入到新的一輪,並提交一個不一樣的區塊。

若是咱們把m看做某一區塊裏的一批交易,那麼咱們可以知足有效性經過驗證者從新提議同一批交易直至交易最終被提交。

爲了知足完整性的第一部分,咱們必須引入額外的規則來禁止一個合法的驗證者提議或者預提交一個區塊,其中這個區塊包含的這批交易已經被提交過。幸運的是,交易能夠被梅克爾根索引,在提議和預提交之前能夠進行相關的查找來濾除已經提交的交易。

或者咱們能夠把m當成一個交易(transaction),經過引入內存池的持久屬性,能夠知足有效性,即,交易能夠駐留在內存池中直到它被提交。然而爲了知足完整性的第一部分,咱們必須依賴應用程序狀態(application state)來制定一些針對交易的規則,這樣一個給定的交易只能進行一次。例如,能夠經過基於帳戶的序列號,正如在以太坊中的那樣。或者保存一份未使用資源的列表,每個資源只能被使用一次,正如在比特幣中使用的那樣。由於有多種方法,Tendermint自己並不保證消息只傳達一次,可是容許應用開發者來指定相關特性。完整性的第二部分顯而易見,由於只有正確的提議者提議的區塊中的交易才能被提交。

爲了證實Tendermint知足「總的順序」,咱們引入了一個新的特性,狀態機安全性(state machine safety),而且能夠證實知足狀態機安全性的協議一定知足「一致性」和「總的順序」。所謂的狀態機安全是指若是一個正確的驗證者在高度H提交了一個區塊,沒有其餘的驗證者在同一高度提交一個不一樣的區塊。考慮到全部的消息最終被接收,這個馬上暗示了一致性,由於若是一個正確的驗證者在高度H提交了一個區塊B,包含了交易m,全部其餘的正確的驗證者不能提交其餘的區塊,所以最終提交了區塊B,傳達了消息m。

如今,咱們須要證實狀態機安全知足「總的順序」,而且Tendermint知足狀態機安全。爲了證實前者,考慮兩個消息m和m'分別由驗證者p和q發出。狀態機安全確保p發出消息m在高度Hm當且僅當q發出消息m在高度Hm,而且p發出消息m'在高度Hm'當且僅當q發出消息m'在高度Hm'。不失通常性,由於高度是嚴格遞增的,假設Hm<Hm'。那麼咱們有p發出消息m在m'以前當且僅當q發出消息m在m'以前,這偏偏就是「總的順序"的定義。

最後,爲了證實當拜占庭節點少於1/3的時候,Tendermint知足狀態機安全,咱們採用反證法。假設Tendermint並不知足狀態機安全,容許在某一高度提交多個區塊。那麼咱們能夠證實至少須要1/3的拜占庭節點,與假設矛盾。

考慮一個有效的驗證者在高度H和輪數R提交了一個區塊B。提交一個區塊意味着驗證者在第R輪收到了關於區塊B的超過2/3的預提交。假設另外一個區塊C在高度H提交。咱們有兩個選項:要麼在第R輪提交要麼在S輪提交(S>R)。

若是區塊C在第R輪提交,那麼超過2/3的驗證者必須爲該區塊預提交,那麼意味着至少1/3的驗證者在第R輪同時對區塊B和C進行了預提交,那麼顯然這些同時節點是拜占庭節點。假設區塊C在S輪提交。由於超過2/3對B區塊進行了預提交,他們在S輪也將被鎖定在區塊B上,所以他們必須對B進行預投票。爲了對區塊C進行預提交,他們必須接收到關於區塊C的波爾卡,所以須要關於區塊C的超過2/3的預投票。然而,超過2/3的驗證者已經被鎖定在區塊B上。節點爲了收到區塊C的波爾卡至少須要網絡中1/3的驗證者違背鎖機制,這部分節點顯然是拜占庭節點。所以,爲了違背狀態機安全,至少須要1/3的拜占庭驗證者。即若網絡中的拜占庭節點少於總數的1/3,Tendermint知足狀態機安全性。

綜上,Tendermint知足原子廣播。

在將來的工做中,咱們會提供關於Tendermint的安全性的更正式的證實。

 

責任制

一個具備問責制的拜占庭容錯算法可以在存在安全隱患時標識全部的拜占庭驗證者。傳統的拜占庭容錯算法並沒與這個特性,對應地也沒有任何相應的保證。固然,問責制僅能適用在拜占庭節點在1/3到2/3的狀況。若是超過2/3的節點是拜占庭,他們可以徹底佔據協議,此時沒法保證一個合法的驗證者能夠收到任何拜占庭節點違法的證據。

進一步,問責制是在異步網絡環境下最終性的盡力而爲,在這樣的網絡環境中着安全問題,關鍵消息(critical messages)的延遲使得在探測到安全問題之後纔可能發現拜占庭驗證者。事實上,若是正確的進程(correct processes)能夠接受拜占庭行爲的相關證據(evidence),可是在他們可以通信以前不可逆地失敗了(fail irreversibly),可能使得問責制永久失效( Permanently compromised),儘管實際上這種情形能夠經過高級備份策略來克服。

經過枚舉安全問題的各類隱患,拜占庭驗證者是能夠識別的,這樣協議是具備問責制的。與其它競選相關的協議相比,Tendermint的簡潔給予了其更簡單的分析方法。

在Tendermint存在兩類安全隱患,每一種都是可問責的。第一種,拜占庭提議者在單輪中產生兩個衝突的提議,而且拜占庭驗證者同時對這兩個提議進行投票(vote)。第二種,一些驗證者在單輪已經提交(commit)以後,拜占庭驗證者違反鎖機制(locking rules),導致其餘驗證者在隨後的輪數提交一個不一樣的區塊。注意到,若拜占庭驗證者少於2/3,只經過違反解鎖機制的方法是沒法引起安全性問題的,同時超過1/3的節點必須違背波爾卡鎖機制,由於每個提交(commot)須要有一個波爾卡爲其背書。

在存在提議或者投票衝突的狀況下,同時接受衝突的提議或者投票,能夠根據這些提議或投票的簽名來辨別這些拜占庭節點。

在違反鎖定機制(locking rules)的狀況下,伴隨着相應的安全性問題,有效的驗證者必須廣播在當前高度看到的全部投票,這樣證據能夠被收集起來。少於2/3的正確驗證者在全部致使兩個區塊被同時提交的投票中集體隱匿。此時在這些投票中,若是沒有1/3或者更多的驗證者簽名衝突的投票,那麼存在1/3或者更多的驗證者違反了鎖定機制。

若是預投票( pre-vote )或者預提交( pre-commit)影響了一個提交,它必定會被一個合法的驗證者看見。所以,經過蒐集全部的投票,經過匹配每個預投票和最近的預提交,能夠探測到違反鎖機制的行爲(violations of Prevotethe-Lock )。

相似的,經過匹配預提交(pre-commit )和爲其背書的波卡爾卡(polka),能夠探測到違反解鎖機制的行爲(violations of Unlock-on-Polka )。注意到這就意味着若是拜占庭驗證者能夠在看見波爾卡以前預提交(pre-commit),而且若是相應的波爾卡最終發生的話,拜占庭驗證者將逃脫責任制。然而,若是每個預提交有波爾卡背書的話,這些安全隱患就不存在。

目前的設計提供了問責制,伴隨着後危機廣播協議(post-crisis broadcast protocol),可是其可以用來提升實時的問責制。也就是說,一旦提交被改變,相應的預提交,爲預提交背書的預投都會發生改變,這樣一直回退到創世紀塊。經過上面的方式,若是發生安全問題,沒有背書的投票能夠當即被探測到。

 

故障和可用性

做爲一個拜占庭共識容錯算法,Tendermint能夠容忍拜占庭故障節點到(但不包括)節點總數的1/3。這就意味着節點可能會崩潰,發送不一樣和衝突的消息到不一樣的節點,拒絕中繼消息或者表現異常,安全或者運轉存在問題。

協議中有兩個地方咱們能夠經過使用本地時鐘的超時特性,爲不一樣時性作一些優化:在接收到2/3或者更多預投票(pre-votes)以後(不針對單個區塊或者nil)和在收到2/3或更多預提交(pre-commit)之後(不針對單個區塊或者nil)。在每一中情形中,咱們能夠睡眠一段時間用來給延遲的投票一個被接受的機會,所以減小在新的一輪沒有提交區塊的可能性。時鐘不須要在驗證者之間同步,由於驗證者在觀測到2/3或更多的投票時會重置各自的時間。

若是1/3或者更多的驗證者崩潰,網絡癱瘓,由於任何共識進展須要2/3以上驗證者的投票。網絡仍然能夠讀取數據,可是沒有新的區塊的提交。只要驗證者從新上線,他們可以從以前的投票狀態開始。共識狀態機應該配置一個預寫式日誌(write-ahead log),這樣從新上線的的驗證者能夠快速回退到以前機器崩潰時的位置,確保沒有違反規則。

若是1/3或者更多的驗證者是拜占庭,他們可以以多種方式損害系統的安全性。例如,在同一輪提交兩個塊,而且投票提交這兩個區塊或者經過經過違反鎖定機制在同一高度不一樣輪提交兩個不一樣的區塊。在每一種情形中,有清晰的證據顯示哪些驗證者是拜占庭節點。在第一個例子中,他們在同一輪簽名兩個不一樣的提議,違反規則。在第二個例子中,他們鎖定在r-1輪在第r輪提交了一個不一樣的區塊,違反了鎖定機制。

當使用經濟和治理組件來激勵和管理共識,這些額外的責任制保證是具備決定性的。

 

結論

Tendermint自己是弱同步,拜占庭容錯,狀態機複製協議,擁有優化的拜占庭容錯和額外的責任制來保證當超過拜占庭容錯假設上限時的情形。協議採用round robin的提議者產生方法,用一樣的機制跳過一個提議者。多輪投票之間的安全性經過鎖機制獲得了保障。

 

本章是關於協議的表述,存在許多有待進一步討論的重要細節,例如塊之間有效的通信(efficient gossiping of blocks),緩存交易,驗證者集合的改變和應用邏輯的接口。這些重要的話題將在隨後的章節獲得進一步的解釋。

相關文章
相關標籤/搜索