Elastico演算法詳解(二)

2021-10-09 11:26:40 字數 1892 閱讀 9924

②委員會設定

elastico演算法的乙個精妙之處就在於,開始用pow演算法驗證身份,組成多個委員會,在委員會內部由於節點數量少,因此可以採用bft演算法對交易達成共識。當委員會建立成功後,委員會中的每乙個節點都要與其他節點建立點對點連線,elastico演算法通過將最初通過身份驗證進入系統的c個節點組成乙個目錄委員會,其他後進入的節點聯絡目錄委員會,獲取它的peer節點的資訊並與之建立連線的方式,將通訊複雜度從o(n^2)降到o(nc);

具體步驟:

節點通過pow方式驗證身份進入系統,檢查當前系統中目錄委員會成員個數,若小於c個,則該節點將自己加入目錄委員會,並向全網廣播身份;若不少於c個,則該節點會將自己的身份資訊發給所有目錄委員會成員,注意:每乙個節點觀察到的目錄委員會成員可能不同,只需將最先看到的c個成員當作目錄委員會成員即可。

目錄委員會成員接收到節點的身份資訊後,根據節點id的後s位將其匹配到對應的委員會中,若該委員會成員數不足c個,則將該節點加入委員會中。最終所有的委員會滿員後,目錄委員會成員會將每乙個普通委員會成員列表傳送給該委員會中的每乙個成員。其中目錄委員會c個成員中允許最多存在c/3

c/3c/

3個惡意成員,這些惡意成員可以不傳送正確目錄資訊,也可以傳送錯誤目錄資訊,因此其他節點最少收到2c/

32c/3

2c/3

個正確的委員會成員列表。將其作並集處理,建立乙個至少包含c個成員的view

③委員會內部共識

委員會建立並設定成功後,每乙個委員會成員要建立乙個至少包含c個成員的view,這個view最多包含3c/

23c/2

3c/2

個成員(由於bft演算法最多可容納1/3作惡節點,c個誠實節點所佔的比例為2/3,因此最多包含3c/2個節點),包含c/2個作惡節點。委員會成員開始驗證交易的有效性,若交易正確,則對其簽名。當交易集合收到c/2

+1

c/2+1

c/2+

1個簽名後(至少收到乙個誠實節點的簽名)即驗證通過,將該交易集合傳送至最終委員會。

④最終共識廣播

這裡提到乙個最終委員會的概念,最終委員會是隨機選中的普通委員會,最終委員會中的每個成員驗證從各個普通委員會接受到的值是否被至少c/2

+1

c/2+1

c/2+

1個成員簽名,若驗證成功,則將交易打包成區塊,上鏈。網路中的其他成員可以驗證該區塊是否被c/2+1個簽名來驗證區塊的有效性。

⑤產生epoch隨機源

首先,最終委員會的每個成員選擇乙個r位的隨機字串r

ir_i

ri​,將該字串計算雜湊值h(r

i)

h(r_i)

h(ri​)

,將該雜湊值傳送給最終委員會的其他成員,接著委員會的成員們就這個雜湊值集合s達成一致並向全網廣播這個雜湊值集合。注意:集合中必須包含至少2c/

32c/3

2c/3

個雜湊值。

接下來,每乙個最終委員會成員全網廣播它選中的隨機字串r

ir_i

ri​,網路中的其他節點會收到來自最終委員會成員最少2c/3,最多3c/2條r

ir_i

ri​–h(r

i)

h(r_i)

h(ri​)

對,丟棄不匹配的r

ir_i

ri​–h(r

i)

h(r_i)

h(ri​)

對,在餘下的匹配的r

ir_i

ri​–h(r

i)

h(r_i)

h(ri​)

對中隨機挑出c/2

+1

c/2+1

c/2+

1個進行異或操作,得到epoch隨機源。

得到的這個epochrandomness作為下乙個epoch中身份認證的關鍵,在當前epoch結束後向網路中的節點發布。

Elastico演算法總結

elastico演算法創新點總結 採用分片技術,將網路和交易分片,使得隨著節點數目的增加,可實現近似線性的吞吐量,提高了交易量上限 同時避免了跨分片通訊,降低通訊複雜度。巧妙的將pow bft演算法結合 pow演算法生成節點身份 bft演算法驗證交易的有效性 提高共識效率。缺陷 第三步委員會共識中,...

Boyer Moore演算法詳解(二)

日期 2013年5月 3日 但是,它並不是效率最高的演算法,實際採用並不多。各種文字編輯器的 查詢 功能 ctrl f 大多採用boyer moore演算法。boyer moore演算法不僅效率高,而且構思巧妙,容易理解。1977年,德克薩斯大學的robert s.boyer教授和j strothe...

Prim演算法 二 之 C 詳解

本章是普里姆演算法的c 實現。目錄 1.普里姆演算法介紹 2.普里姆演算法 3.普里姆演算法的 說明 4.普里姆演算法的原始碼 普里姆 prim 演算法,是用來求加權連通圖的最小生成樹的演算法。基本思想 對於圖g而言,v是所有頂點的集合 現在,設定兩個新的集合u和t,其中u用於存放g的最小生成樹中的...