权益证明协议中的拜占庭容错
如果您遵循以太坊基金會的Casper研究,您將會聽到許多術(shù)語,如“異步安全性”和“異步時(shí)序模型中的容錯閾值”。我想概述基礎(chǔ)拜占庭容錯理論中的重要概念因此您可以在今天有關(guān)證券占用空間中最激動人心的工作中獲得更多背景。
在學(xué)術(shù)文獻(xiàn)中談到分布式共識算法時(shí),我們使用了一個(gè)基本模型,該模型假設(shè)了一些關(guān)于時(shí)間的屬性(“該信息到達(dá)需要多長時(shí)間?”)以及一些關(guān)于故障類型的屬性(“節(jié)點(diǎn)在協(xié)議中做錯了什么?“)。 我們這樣做,所以我們可以非常精確地描述我們正在討論的事物的類型,因此我們可以反過來創(chuàng)建正在調(diào)查的算法的各種保證的正式證明。 這些正式的證明是有用的,所以我們可以說服我們自己和其他人,我們認(rèn)為將發(fā)生的事情將實(shí)際發(fā)生。 計(jì)算機(jī)可能進(jìn)入的狀態(tài)數(shù)量,更不用說它們中的許多狀態(tài)的網(wǎng)絡(luò),如此龐大以至于在構(gòu)建真正的冷卻系統(tǒng)的系統(tǒng)時(shí),使用數(shù)學(xué)中的一些漂亮工具是非常有幫助的。
協(xié)議中的安全性和活力
讓我們快速回顧協(xié)議是什么,所以我們都有相同的上下文。 然后,我們可以談?wù)摶钴S性和安全性,以及當(dāng)這些事情中的任何一個(gè)都有“失敗”或“錯誤”(通常是同義詞,btw)時(shí)它的意思。 我們可以像一場比賽一樣思考一個(gè)協(xié)議 - 有一套球員和一些規(guī)則。 這些規(guī)則決定了玩家應(yīng)該如何回應(yīng)游戲中的各種事件。 這個(gè)“要做的事情”通常會導(dǎo)致玩家改變他們所擁有的一些數(shù)據(jù),比如迄今為止的最高分。 如果我們的共識協(xié)議運(yùn)作良好,那么遵循所有規(guī)則的所有參與者意味著在任何給定時(shí)間,每個(gè)參與者對于他們的本地狀態(tài)將具有相同的價(jià)值。 在分散式協(xié)議中,這種結(jié)果變得非常重要,在這種協(xié)議中,你通常會在互聯(lián)網(wǎng)上有一群陌生人正在試圖對這個(gè)世界的本質(zhì)做出最好的猜測。
活力是指我們的共識算法不能“卡住”,這意味著只要足夠的節(jié)點(diǎn)(“參與者”)仍在參與,就可以達(dá)成共識。 “活躍性失敗”是指我們從某種狀態(tài)開始(如創(chuàng)世區(qū)塊),然后運(yùn)行協(xié)議處理消息,我們從同行中看到“脫線”并相應(yīng)更新我們對全球狀態(tài)的本地觀點(diǎn) - 然后被“卡住”。 這里意味著您的計(jì)算機(jī)可能會高興地等待更多的消息,但實(shí)際上沒有任何人(或某些子集在某些情況下)可以向您發(fā)送消息,讓您繼續(xù)計(jì)算全局狀態(tài)。 你認(rèn)為這就像玩hopskotch,除非你在卡牌7和8之間卡住(可能永遠(yuǎn)!)跳中。
安全性是一個(gè)重要的一致性屬性,它意味著一旦節(jié)點(diǎn)決定了某個(gè)共識值(根據(jù)協(xié)議),那么該決定也將在該組參與者中的所有節(jié)點(diǎn)上做出。 更簡單一點(diǎn),如果你沒有安全,那么你就沒有達(dá)成共識。 如果我們一半人認(rèn)為當(dāng)前狀態(tài)是數(shù)字“1000”,但另一半認(rèn)為它是“1234”,我們的協(xié)議就會失敗。 一個(gè)重要的細(xì)節(jié)是節(jié)點(diǎn)可以避免產(chǎn)生共識值 - 也許他們需要更多的時(shí)間來從他們已經(jīng)看到的所有消息中找出共識狀態(tài) - 但是如果一個(gè)節(jié)點(diǎn)正確地遵循一個(gè)安全協(xié)議,那么它只會一旦確定每個(gè)遵守規(guī)則的人都做了相同的事情,就要承諾具體的價(jià)值。
計(jì)時(shí)模型
通常使用的三種主要類型的時(shí)序模型是同步模型,異步模型和部分同步模型。 這些模型中的每一個(gè)模型都會對在給定一輪協(xié)議執(zhí)行過程中節(jié)點(diǎn)之間交換消息之間可能發(fā)生的時(shí)間長度(“延遲”)做出一些保證。 這種分類很重要,因?yàn)樵诜植际皆O(shè)置中,單個(gè)節(jié)點(diǎn)無法區(qū)分發(fā)生故障的對等節(jié)點(diǎn)和需要很長時(shí)間響應(yīng)的對等節(jié)點(diǎn)。 考慮到這個(gè)事實(shí)是設(shè)計(jì)分布式共識的魯棒算法的核心。
舉一個(gè)更熟悉的例子,讓我們想象我們坐在一張桌子上,你的朋友正在玩一個(gè)電話游戲。 一個(gè)玩家開始向下一個(gè)玩家耳語,然后我們?nèi)紘雷酉蚺赃叺耐婕叶Z。 最后的最后一名球員展示了他們聽到的每個(gè)人的單詞,每個(gè)球員都可以將他們的單詞與起始單詞進(jìn)行比較。 笑通常隨之而來。 實(shí)際上,我們可以在這里區(qū)分兩種類型的延遲:1)玩家一旦聽到該單詞就會向下一個(gè)玩家耳語; 2)單詞從玩家到玩家的時(shí)間。 第一種延遲對我們的分布式計(jì)算環(huán)境非常重要 - 想象一下由于本地代碼中存在錯誤而導(dǎo)致無限循環(huán)的“領(lǐng)導(dǎo)者”節(jié)點(diǎn),并且永遠(yuǎn)不會“傳遞火炬”,從而使組中的“追隨者”可以繼續(xù)在沒有失敗的領(lǐng)導(dǎo)者的情況下形成共識 - 然而,第二種延遲通常會得到更多的分析,因?yàn)樗ǔR越^對的方式占主導(dǎo)地位(也許是因?yàn)樽髡哒J(rèn)為我們可以編寫無缺陷的代碼?)。 要在電話游戲中傳遞信息,你只需要向鄰居耳語,這似乎并不需要很長時(shí)間。 在分布式計(jì)算環(huán)境中,您可能試圖聯(lián)系世界另一端的計(jì)算機(jī),此時(shí)傳輸消息所需的時(shí)間開始累計(jì)。 現(xiàn)在讓我們看看每個(gè)時(shí)序模型。
在同步模型中,在節(jié)點(diǎn)發(fā)送消息和確定接收節(jié)點(diǎn)聽到消息之間的時(shí)間內(nèi),有一些最大值(“上限”)T. 對于節(jié)點(diǎn)之間速度的相對差異,你也有一個(gè)上限P(所以你可以考慮處理器速度慢的機(jī)器)。 我們可以想象一些理想化的環(huán)境,我們只有少數(shù)幾臺電腦(可能都在同一個(gè)房間內(nèi))與完全可靠的鏈接交換消息。 在這種情況下,我們希望現(xiàn)代機(jī)器能夠在不到一秒鐘的時(shí)間內(nèi)發(fā)送消息; 這個(gè)數(shù)值就是我們的T.由于我們使用了現(xiàn)代化的機(jī)器,讓我們假設(shè)所有的處理器都是直接來自晶圓廠,那么我們將在相同的節(jié)點(diǎn)間有一定的容差。 我們的P值。
在異步模型中,我們刪除T和P的上界。消息可以花費(fèi)任意長的時(shí)間到達(dá)對等點(diǎn),并且每個(gè)節(jié)點(diǎn)可以花費(fèi)任意時(shí)間響應(yīng)。 當(dāng)我們說任意的,我們包括“無限”,這意味著它發(fā)生一些事件需要永遠(yuǎn)。 這種模式非常重要,因?yàn)樗梢愿鼫?zhǔn)確地捕獲公共互聯(lián)網(wǎng),網(wǎng)絡(luò)上的節(jié)點(diǎn)(包括中間路由器)發(fā)生故障,并且信息一直被丟棄。
部分同步模型在兩者的混合中存在:對于T和P存在上限,但協(xié)議設(shè)計(jì)者不知道它們,并且任務(wù)正在設(shè)計(jì)依據(jù)這個(gè)事實(shí)仍然達(dá)成共識的機(jī)制。 在實(shí)踐中,考慮到現(xiàn)代網(wǎng)絡(luò)/機(jī)器的實(shí)際特性(消息通常到達(dá)目的地),協(xié)議實(shí)現(xiàn)者可以實(shí)現(xiàn)類似于這種模型的系統(tǒng),并使用諸如超時(shí)之類的策略來指示節(jié)點(diǎn)何時(shí)應(yīng)該重試發(fā)送消息。 傳統(tǒng)的BFT文獻(xiàn)(例如Paxos和較新的Raft)有幾種類型的算法利用了這種見解。
這在卡斯帕的應(yīng)用有多少
所有上述背景都與卡斯帕相關(guān),因?yàn)樗荚诔蔀橐蕴粎^(qū)塊鏈的分散協(xié)商一致協(xié)議。 我們不僅有典型的問題類別 - 錯誤的節(jié)點(diǎn)和多斑點(diǎn)的網(wǎng)絡(luò) - 我們現(xiàn)在也有實(shí)際的激勵措施,使節(jié)點(diǎn)行為失常。 對卡斯帕共識的成功攻擊可能允許某人執(zhí)行雙重支出攻擊或我喜歡稱之為索羅斯攻擊的攻擊 (參見喬治索羅斯和黑色星期三),攻擊者在短時(shí)間內(nèi)攻擊ETH,然后在Twitter時(shí)激發(fā)大規(guī)模的恐慌拋售開始傳播以太坊達(dá)成共識失敗的消息。
關(guān)于分散化背景下的共識細(xì)節(jié)還有很多需要說明的內(nèi)容,并且考慮到加密貨幣涉及的經(jīng)濟(jì)誘因,攻擊空間更大。 我建議從這里開始深入探索: https : //blog.cosmos.network/understanding-the-basics-of-a-proof-of-stake-security-model-de3b3e160710 ,如果你想從消防隊(duì)員那里喝酒可以加入https://ethresear.ch/的研究。
https://hackernoon.com/byzantine-fault-tolerance-in-proof-of-stake-protocols-ab9746521b24
總結(jié)
以上是生活随笔為你收集整理的权益证明协议中的拜占庭容错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】权益证明的设计理念
- 下一篇: Cold-Staking | TPoS