區(qū)塊鏈筆記-番外算法Snowflake to Avalanche(一)

今天我們來學(xué)習(xí)一下一個(gè)新的共識算法,他較以往有非常大的改變。雪崩算法如果在數(shù)學(xué)上可以給出更好地安全性證明以及活性證明,它可能在接下來一段時(shí)間大放異彩。

在 2018 年 5 月紐約舉行的 Token Summit III 上,康奈爾教授埃米·岡·瑟勒(Emin Gun Sirer)發(fā)布了一個(gè)新型的區(qū)塊鏈共識協(xié)議,它是由一組算法組成的家族,聲稱它是公式算法的重大突破和創(chuàng)新,這個(gè)算法家族集成了經(jīng)典的 Non-Byzanting 共識算法和 Nakamoto 共識算法(即 POW) 兩者的特點(diǎn)。用他們的話來說就是,簡單而又強(qiáng)大無比。

亞穩(wěn)態(tài)機(jī)制:

算法提出了一種基于亞穩(wěn)態(tài)機(jī)制(metastable)的共識協(xié)議族。所謂亞穩(wěn)態(tài),是指系統(tǒng)在某段時(shí)間內(nèi)處于穩(wěn)定狀態(tài),但在另外一段時(shí)間內(nèi)可能是不穩(wěn)定的。穩(wěn)態(tài)代表了系統(tǒng)的最低能量點(diǎn),而亞穩(wěn)態(tài)則是一個(gè)局部的而非全局的最低能量點(diǎn)。以下圖中的小球?yàn)槔?,如果用比較小的力推小球,則會停留在位置1這個(gè)亞穩(wěn)態(tài)上,而如果用比較大的力推,則會進(jìn)入位置3這個(gè)真正的穩(wěn)態(tài)上。

圖 亞wen態(tài)示意圖

那么這個(gè)新的共識協(xié)議族有什么特點(diǎn)呢?

綠色(Green):消耗很少能源

安靜(Quiescent):沒有交易時(shí)不需要工作(出塊)

高效(Efficient):節(jié)點(diǎn)交互復(fù)雜度O(knlogn) ~ O(kn)

如何實(shí)現(xiàn)以上目標(biāo)?主要依賴以下幾種措施:

并行共識模型:不使用單一復(fù)制狀態(tài)機(jī)(RSM)模型,每個(gè)節(jié)點(diǎn)維護(hù)自己的RSM(可以互相轉(zhuǎn)移所有權(quán)),系統(tǒng)對有關(guān)聯(lián)的交易只維護(hù)偏序(partial order)

反復(fù)隨機(jī)采樣:引導(dǎo)誠實(shí)節(jié)點(diǎn)產(chǎn)生相同輸出

亞穩(wěn)態(tài)決策:亞穩(wěn)態(tài)決策可以使得一個(gè)大網(wǎng)絡(luò)快速推進(jìn)到一個(gè)不可逆的狀態(tài)(雖然不能100%保證)

既然是共識協(xié)議,必然繞不過安全性和活性的證明。我們先看一下這兩個(gè)特性的定義:

安全性(Safety):nothing bad happens

活性(Liveness):something good eventually happens

該論文證明,文中提出的算法可以提供強(qiáng)概率安全性保證,并且保證誠實(shí)節(jié)點(diǎn)的活性。所謂“強(qiáng)概率安全保證”,是指共識被逆轉(zhuǎn)的可能性小到可以被忽略(甚至小于哈希沖突的概率),實(shí)際上POW提供的也是強(qiáng)概率安全性保證。

另外,文中的理論分析是基于同步系統(tǒng)假設(shè),而實(shí)驗(yàn)過程則是在部分同步系統(tǒng)中完成的,實(shí)驗(yàn)結(jié)果和理論分析基本吻合。

雪泥算法SLUSH:


圖 雪泥算法實(shí)現(xiàn)過程

為了算法的通用性,這里是以顏色沖突為例:R表示紅色,B表示藍(lán)色,⊥表示沒有顏色(初始狀態(tài))。

初始狀態(tài):沒有顏色(⊥)

收到交易:染成交易中指定的顏色,同時(shí)發(fā)起查詢

查詢:在網(wǎng)絡(luò)中隨機(jī)選取k個(gè)節(jié)點(diǎn),如果規(guī)定時(shí)間內(nèi)沒有收到k個(gè)回復(fù),再多選一些節(jié)點(diǎn),直到收到k個(gè)回復(fù)為止

收到查詢:如果沒有染色,染成查詢中指定的顏色,并回復(fù)該顏色,同時(shí)自己也發(fā)起查詢。否則直接回復(fù)自己當(dāng)前的顏色

決策:收到k個(gè)回復(fù)后,如果某種顏色所占比例超過閾值α(0.5~1),則把自己染成那種顏色。然后繼續(xù)進(jìn)入下一輪查詢,一共查詢m輪,決定最終結(jié)果

可以證明,隨著節(jié)點(diǎn)數(shù)n的增長,m呈對數(shù)級增長,因此可以有效控制通信量。

Slush算法是一種非拜占庭容錯(BFT)算法,但卻是后面三種BFT算法的基石。

下面總結(jié)一下這個(gè)協(xié)議的特點(diǎn):

(1)簡單狀態(tài)(simple state)

節(jié)點(diǎn)是 memoryless 的,在每一輪 query 之間,除了 color,不保存其他任何狀態(tài)。

**(2)小樣本(small sample) **

不像其他共識算法,每輪必須向所有節(jié)點(diǎn)發(fā)出請求。Slush 只需要向一個(gè)很?。ǔA?k)的隨機(jī)樣本集發(fā)出 query。

(3)反復(fù)抽樣(repeated sampling)

通過反復(fù)抽樣,可以放大隨機(jī)擾動。比如,即使初始狀態(tài)是一個(gè) 50/50 的對等分裂狀態(tài)(收到了兩種沖突的 color 響應(yīng) ,且他們數(shù)量相同),抽樣過程中的隨機(jī)擾動(perturbation) 也會導(dǎo)致一種 color 會獲得輕微的優(yōu)勢,然而協(xié)議通過反復(fù)的抽樣可以不斷放大這種優(yōu)勢。

(4)抽樣輪數(shù)或時(shí)間期限(用 m 表示)

如果 m 足夠大,Slush 算法可以保證所有節(jié)點(diǎn)都有同等的機(jī)會被染色(colorized),每個(gè)節(jié)點(diǎn)每輪通信都會有一個(gè)常量的,可以預(yù)測的通信消耗。m 會隨著 n 變大。 m 是指輪數(shù)或時(shí)間限制。 如果 Slush 被用在有 Byzantine 節(jié)點(diǎn)的網(wǎng)絡(luò)中,那么由于 adversary 節(jié)點(diǎn)可以故意把自己翻轉(zhuǎn)(flip)成一個(gè)與主流 color 不一樣的 color 來打亂平衡,使得整個(gè)網(wǎng)絡(luò)的安全性大大降低。 因此,我們把 Slush 協(xié)議作為 BFT 協(xié)議的原始狀態(tài),它不能提供完整的 BFT 保證。

雪花算法Snowflake:

Slush算法是無狀態(tài)記憶的(memoryless),節(jié)點(diǎn)不保存和其他節(jié)點(diǎn)的交互歷史。

Snowflake算法在該基礎(chǔ)上,為每個(gè)節(jié)點(diǎn)增加了一個(gè)查詢計(jì)數(shù)器,用于累積該節(jié)點(diǎn)對當(dāng)前顏色的信任度。如果連續(xù)β輪都選擇該顏色,則接受該顏色。


圖 雪花算法實(shí)現(xiàn)

具體修改的部分:

每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)計(jì)數(shù)器

每次顏色發(fā)生變化時(shí),將該計(jì)數(shù)器清零

每次查詢成功(收到αk個(gè)回復(fù)),并且顏色不變時(shí),計(jì)數(shù)器加一

Snowflake 對 Slush 的改進(jìn)非常簡單,下面也做個(gè)總結(jié):

(1)每個(gè)節(jié)點(diǎn)維護(hù)一個(gè) counter 變量 。

(2)每當(dāng) color 進(jìn)行改變,節(jié)點(diǎn)都會把 counter 值重置為 0。

(3)一旦 query 得到的響應(yīng)結(jié)果中包含同一 color 的數(shù)量 ≥ αk,那么該節(jié)點(diǎn)就會把 counter 加 1。

當(dāng) Snowflake 選擇了一個(gè)合適的 β 參數(shù),和一個(gè)理想的 ε 安全系數(shù),就可以同時(shí)保證 Safty 和 Liveness。

論文在后面還介紹了一個(gè) phase-shift 點(diǎn),correct node 更傾向與做出一個(gè)決定而不是維持在一個(gè) bivalent 狀態(tài)。 并且,還會有一個(gè)叫做 point-of-no-return 的時(shí)間點(diǎn),Byzantine node 在 phase-shift 之后失去控制,而 Correct node 則在 point-of-no-return 點(diǎn)之后開始 commit color。


(要出差,回來繼續(xù))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章介紹一個(gè)最新的區(qū)塊鏈共識算法,它于 2018 年 5 月首次發(fā)布,是由一組共識協(xié)議構(gòu)成的一個(gè)共識家族。相比...
    juniway閱讀 812評論 0 6
  • 其實(shí),我總是聽別人說我很幸運(yùn),可是,我似乎并不是很喜歡這個(gè)詞,總感覺這個(gè)詞也是再否定我的努力。我,是不是很奇怪呢 ...
    懵萌懵萌i閱讀 223評論 1 1
  • 元旦剛放假回來,2018年1月2日,新的第二天,天氣也別樣的好。宣威市龍?zhí)兜没晷∮行碌拇笈e動呢!他們有什...
    宣威018吳桂芳閱讀 721評論 13 9
  • 基本操作員 一個(gè)運(yùn)營商是一個(gè)特殊的符號,或者你使用來檢查,更改或合并值的短語。例如,加法運(yùn)算符(+)添加兩個(gè)數(shù)字,...
    Fuuqiu閱讀 310評論 0 0
  • 團(tuán)團(tuán)圓圓的臉,和老版電視劇《紅樓夢》里的薛寶釵一樣珠圓玉潤,有著富貴恬然的夫人氣質(zhì)。黛眉輕掃,眼...
    城門下閱讀 2,789評論 2 10

友情鏈接更多精彩內(nèi)容