為什么不從頭開始簡單地創(chuàng)建一個新系統(tǒng),而是費勁的在1.0上修改出2.0?
以太坊技術(shù)應(yīng)用大會今天在北京舉行,V神、以太坊基金會核心成員、以太坊DAPP開發(fā)者等重量級嘉賓云集,此次大會以以太坊2.0為主要議題。
大眾也普遍關(guān)注以太坊2.0的進展,此次大會V神發(fā)表了名為“以太坊2.0之跨分片交易”的演講。
討論以太坊 2.0 路線圖、研究提案及其發(fā)展現(xiàn)狀的文章已經(jīng)很多了,然而有關(guān)以太坊 2.0 內(nèi)部運行背后的設(shè)計原則和不變量的文章卻不多。
作者簡介:Raul Jordan,Raul Jordan 是 Prysmatic Labs 聯(lián)合創(chuàng)始人,也兼任 zk Capital 合伙人,畢業(yè)于哈佛,區(qū)塊鏈工程師、以太坊開發(fā)者,專注于 Prysmatic Labs 分片技術(shù)開發(fā)。
很多文章都在討論以太坊2.0的路線圖、研究方案和現(xiàn)狀。然而,關(guān)于其內(nèi)部工作背后的設(shè)計原則和不變量的公開寫作并不多。對于這種協(xié)調(diào)多年的努力來說,擁有一套明確的不變量,對其成功至關(guān)重要,并且,這會使得執(zhí)行者思考以太坊哲學(xué)的一面。
本文將解釋其中一些設(shè)計決策、背景以及它們對協(xié)議未來的重要性。
一、歷史
自從以太坊網(wǎng)絡(luò)誕生以來,試圖將以太坊從PoW轉(zhuǎn)換為PoS,是一個重大的進展。Vitalik Buterin當時正在探索一種可行的解決方案,以防不成熟PoS的缺陷,并提供比PoW更大的安全保障。
尤其是,他和以太坊研究小組設(shè)計了一種稱為slasher的的機制,來懲罰PoS中惡意行為者并削減其全部抵押(Buterin 2014)。
數(shù)學(xué)家Vlad Zamfir隨后加入了該項目,2014年的大部分工作都集中在解決所謂的PoS的遠程攻擊。
當攻擊者可以從頭開始創(chuàng)建一個比當前規(guī)范區(qū)塊鏈更長的全鏈,以便在新的規(guī)范狀態(tài)下說服網(wǎng)絡(luò)中的其他人時,遠程攻擊就會發(fā)生。
這幾乎不可能在PoW中執(zhí)行,因為它需要大量的復(fù)合計算能力。然而,PoS不依賴于計算能力,因此在這種攻擊下會崩潰(Zamfir 2014)。
Vitalik和Vlad都贊同:除了“嚴格阻止客戶同步比某個檢查點更早的鏈”之外,沒有可行的遠程攻擊解決方案(Buterin 2015)。
這意味著,不需從創(chuàng)世區(qū)塊同步鏈,網(wǎng)絡(luò)中的新節(jié)點只需要從最近的“檢查點”同步網(wǎng)絡(luò)中最終確定的其他節(jié)點。
也就是說,當新節(jié)點加入網(wǎng)絡(luò)時,舊節(jié)點存在固有信任。這種現(xiàn)象后來被稱為PoS的弱主觀性。當新節(jié)點加入時,對于“最終確定的”、“不可逆轉(zhuǎn)的”區(qū)塊在網(wǎng)絡(luò)中的參與者之間存在主觀信任(Buterin 2018)。
在此期間,來自以太坊基金會的Vitalik和Virgil Griffith致力于在ArXiV上發(fā)布Casper PoS白皮書的初始版本(Buterin和Griffith 2015)。
2014-2017年,是一段很長的時期,它標志著以太坊試圖在目前運行的PoW鏈上覆蓋基于PoS的終結(jié)系統(tǒng)。與此同時,人們正努力實現(xiàn)狀態(tài)分片,以作為分區(qū)方案以擴展以太坊區(qū)塊鏈。
然而,在2018年,當這兩項舉措被結(jié)合在一起,并且在3月份的臺北標志性研究會議之后,以太坊研究團隊提議將Casper PoS 與分片合并為一項名為Ethereum Serenity的計劃,也稱為作為以太坊2.0。
二、為什么選擇ETH 2.0?
本文要解釋核心問題背后的設(shè)計理由:“ 為什么要使用以太坊2.0?”。
當然,對現(xiàn)有系統(tǒng)的共識協(xié)議和數(shù)據(jù)完整性進行徹底檢查,并不是通過硬分叉就可以輕松完成的—-從頭開始簡單地創(chuàng)建一個新系統(tǒng)并完全放棄以太坊1.0不是更容易嗎?
構(gòu)建ETH 2.0 時,我們面臨的一個難題是,需要讓社區(qū)了解這一挑戰(zhàn),并清楚地了解過渡到ETH 2.0 背后的巨大利益和需求。
在理解這種范式轉(zhuǎn)變帶來的巨大責(zé)任的同時,沒有比現(xiàn)在更好的時間來構(gòu)建ETH 2.0 。無論喜歡與否,加密行業(yè)仍然處于起步階段,我們今天做出的決定,將對加速增長和這些年的采用多年的產(chǎn)生復(fù)合的效果。
向PoS的遷移,已經(jīng)等待了足夠長的時間,以太坊應(yīng)用程序的可擴展性也是如此。沒有比現(xiàn)在更好的時間來構(gòu)建ETH 2.0 了,團隊已經(jīng)做好了準備。
三、挑戰(zhàn)未來
缺乏經(jīng)驗的Layer 1 擴展可能會帶來巨大的安全花費:將區(qū)分鏈分片防止全球交易驗證,就像當前比特幣和以太坊鏈所做的那樣。
關(guān)鍵問題是:如何在不犧牲去中心化或安全性的同時,獲得可擴展性?許多競爭鏈旨在尋求中心化路線作為解決這一問題的手段。
以太坊選擇不同的方法:將網(wǎng)絡(luò)狀態(tài)劃分為1024個分片,這些分片表現(xiàn)為一組同質(zhì)的區(qū)塊鏈,每個區(qū)塊鏈由稱為信標鏈(beacon chain)的單個根鏈協(xié)調(diào)。信標鏈在完整的Casper PoS上運行,沒有委托也沒有中心化投票權(quán)。
在這種方法中,每個節(jié)點僅負責(zé)整個網(wǎng)絡(luò)中發(fā)生的一部分交易,并且許多塊可以并行發(fā)生,從而線性地增加整體網(wǎng)絡(luò)吞吐量。
此解決方案旨在回答以下問題:
如果交易未被全局驗證,網(wǎng)絡(luò)的安全配置文件會如何變化?如何在防止卡特爾形成的同時,選擇驗證參與者?如何設(shè)計激勵措施,以最大化數(shù)據(jù)可用性和鼓勵積極參與?
經(jīng)過多年的研究、探索以及對取舍的理解,以太坊尋求PoS作為其共識算法。如前所述,獎勵是確定性的,驗證實體在協(xié)議中具有相同的待遇、參與委員會的概率相同、同樣獲得獎勵/懲罰。
全局交易驗證變?yōu)殚g接驗證。每條分片鏈中的每筆交易都將首先由該分片中的驗證者進行驗證,并且,信標鏈在ETH 2.0 上扮演“協(xié)調(diào)器”的角色。
四、設(shè)計不變量
協(xié)議設(shè)計的一個關(guān)鍵支柱是,理解協(xié)議將在哪些不變量下運行。對于以太坊及其開發(fā)者社區(qū)而言,擁有一份不可協(xié)商的設(shè)計決策清單,對項目的未來至關(guān)重要。
我們可以將ETH 2.0 的核心分解為以下要點:
1、參與網(wǎng)絡(luò)應(yīng)該是無需許可的;
2、Layer 1 在其范圍內(nèi)應(yīng)該簡潔,抽象和緊湊;
3、該協(xié)議應(yīng)該是最具表現(xiàn)力的,而不是假設(shè)它的未來用途 ;
4、網(wǎng)絡(luò)應(yīng)該傾向于有生命力,以有效地從任何災(zāi)難性場景中恢復(fù);
5、將協(xié)議的復(fù)雜性與應(yīng)用程序開發(fā)的復(fù)雜性區(qū)分開來。
1、無需許可
以太坊2.0與其他“下一代”區(qū)塊鏈之間的顯著差異在于如何確定參與共識。以太坊2.0對驗證者的唯一要求是擁有32枚ETH。
這里沒有代理,不需要投票去選擇驗證節(jié)點,沒有中心化的憲法來決定誰參加。更重要的是,以太坊2.0中的驗證者都被平等對待:每個實體參與的硬性要求都是32個ETH。
但是,任何個人都可以擁有多個驗證者身份。這僅僅是為簡化共識協(xié)議的安全性和緊湊性而做的決定。從激勵設(shè)計角度考慮,且為了形式化建模,在對區(qū)塊進行投票驗證時,平等對待所有參與者是非常重要的。
1個驗證者= 質(zhì)押32個ETH,不能比這個多。其他鏈旨在通過采用更中心化的驗證方法來解決可擴展性問題。然而,對于以太坊而言,不考慮這種選擇。
2、簡潔,但最具表現(xiàn)力
以太坊2.0在其核心定義和實現(xiàn)目標上,力求簡潔和緊湊。從根本上講,它是一個可擴展的、無需權(quán)限的平臺,用于搭建去中心化的應(yīng)用程序。
沒有必要在以太坊2.0中引入應(yīng)用程序邏輯,這是有充分理由的。人們可以將以太坊2.0系統(tǒng)類比為一個精簡的Linux內(nèi)核 - 它不是由操作系統(tǒng)來決定其所包含的功能或假設(shè)的用例,而是由為內(nèi)核搭建應(yīng)用程序的開發(fā)人員決定。
“假設(shè)意圖”這種做法是有限制性的。舊的以太坊格言說“我們沒有任何特征”,這理念同樣適用于以太坊2.0。
3、保證安全性
以太坊2.0的PoS模式,也就是Casper the Friendly Finality Gadget,在一系列旨在保持高度活躍度和網(wǎng)絡(luò)參與度的激勵措施下運作。
以太坊2.0擴展了Casper,以利用其屬性來保護分片區(qū)塊鏈網(wǎng)絡(luò)的安全。也就是說,以太坊2.0使用“鏈終結(jié)性閾值”的概念來確保系統(tǒng)中的1024個分片共享與信標鏈相同的安全池。
PoS的核心前提是,驗證者都會因為按預(yù)期完成指定工作而獲得獎勵,或因為處于離線狀態(tài)而損失質(zhì)押金,或因為惡意違反協(xié)議而受到嚴厲處罰(質(zhì)押金被沒收)。
雖然前提很簡潔,但細節(jié)決定成敗。一旦我們意識到我們不僅要考慮每個驗證者的行為,而且要且要考慮整個驗證者委員會行為,Casper的經(jīng)濟學(xué)很快變得更加復(fù)雜。
一般來說,PoS鏈的一個開放性問題是,應(yīng)該何時懲罰行為,以及如何根據(jù)某些驗證者行為的嚴重性來進行不同的處罰。也就是說,我們需要找到一種足夠全面的懲罰措施,以便在保持簡潔的同時涵蓋所有邊緣案例。
鑒于協(xié)議依賴于驗證者活動,且依賴于對運行時間的持久觀測,那么可能存在誠實的驗證者無法參與的情況。誠實的驗證者可能會由于停電、網(wǎng)絡(luò)不穩(wěn)定或其他因素而離線,但我們需要明確區(qū)分離線處罰和惡意行為造成的處罰。
以太坊2.0的部分設(shè)計理由是,攻擊者為任何企圖破壞協(xié)議的嘗試付出巨大代價。也就是說,在其他鏈中常發(fā)生的51%攻擊,在以太坊2.0上應(yīng)該是成本巨大的,甚至結(jié)果會適得其反。
也就是說,在具有明確最終性的協(xié)議中,“將最終性逆轉(zhuǎn)將”會使攻擊者對于誠實的驗證者來說顯而易見,這就使得社區(qū)可協(xié)調(diào)一致地進行軟分叉,以移除惡意行為者并使其攻擊無效。
當然,即使攻擊成功并且這種社區(qū)協(xié)調(diào)不成功,如果攻擊者的唯一目的是破壞系統(tǒng)并造成巨大損失,系統(tǒng)的完整性會減少。
基于PoS機制系統(tǒng)的另一個限制是驗證者困境,也就是說,系統(tǒng)中的驗證者是懶惰的、并且簡單地信任協(xié)議中的其他人正在正確地完成其工作,因此不驗證他們本該負責(zé)驗證的消息。
除非面臨重大處罰,否則這些驗證者可以通過不履行其責(zé)任來節(jié)省帶寬或一般的計算要求。通過為網(wǎng)絡(luò)中丟失的數(shù)據(jù)或錯誤簽名的信息添加極其強大的懲罰和質(zhì)詢機制,可以緩解這種問題。
五、以太坊2.0的驗證者激勵
以太坊 2.0 的驗證者激勵措施如下:
1、驗證者離線:Quadratic Leak
以太坊2.0依賴于拜占庭容錯閾值,必須保證網(wǎng)絡(luò)中三分之二的驗證者是誠實參與者。對不參與驗證的驗證者的處罰被稱為“inactivity leaks”。
如果一條鏈超過4個epoch時期還未能最終確定,那么協(xié)議對驗證者獎勵就會盡可能嚴格。也就是說,最大期望獎勵會變?yōu)?,因此驗證者需要表現(xiàn)得很完美,否則就會面臨更多的懲罰。
懲罰的大小與上一次鏈實現(xiàn)最終性以來的時間成正比,以阻止驗證者離線。
某些驗證者離線的時間越長,這種懲罰就會呈現(xiàn)指數(shù)增長,這種就被稱為“Quadratic Leak”。之所以涉及這種懲罰,是希望不會對短期離線造成不利影響,但考慮到預(yù)期的現(xiàn)實世界行為,較長時間離線會有很大的不利。
這種罰款而損失的資金會被銷毀,而不會重新分配給誠實的驗證者。
2、故意惡意活動:罰沒
在針對以太坊PoS的早期提案中,惡意驗證者將遭受大規(guī)模的懲罰,稱為罰沒(slashing),通常這些機制只討論個別惡意驗證者的處罰,而不討論驗證者串謀起來的嚴重性。如果大部分驗證者協(xié)同惡意攻擊網(wǎng)絡(luò),網(wǎng)絡(luò)就會受到影響。
根據(jù)拜占庭容錯,對惡意行為者的處罰將是在特定時間間隔內(nèi)惡意行動的驗證者數(shù)量的3倍。這有助于懲罰大型協(xié)同攻擊,并且還可以阻止惡意驗證者池的產(chǎn)生。
也就是說,在網(wǎng)絡(luò)上執(zhí)行聚合攻擊,對惡意驗證者有利而對普通驗證者不利。通過舉報機制進行罰沒,激勵驗證者發(fā)現(xiàn)其他驗證者的可罰沒的違法行為。
3、驗證者獎勵
根據(jù)Vitalik的以太坊Serenity 設(shè)計原理,他在每個epoch時期中概述了驗證者基本獎勵的4個特定組成部分:
1.通過證明以確定正確的 epoch 檢查點而獲得的獎勵的 1/4;
2.通過證明以確定正確的 chain head 而獲得的獎勵的 1/4;
3.通過證明使區(qū)塊得以快速進入鏈中而獲得的獎勵的1/4;
4.通過證明以確定正確的分片區(qū)塊而獲得的獎勵的1/4;
根據(jù)正確參與的驗證者數(shù)量,在基本獎勵之外還有額外獎勵。這個額外獎勵是激勵每個驗證者做正確的事情,為誠實的行為創(chuàng)造集體推動力。獎勵的發(fā)布時間表應(yīng)該是一致并直接的。增加更多的復(fù)雜性只會使系統(tǒng)更容易出錯,并且從宏觀經(jīng)濟的角度來看更難理解。
六、把程序復(fù)雜性與協(xié)議復(fù)雜性分開
“以太坊2.0路線圖令人生畏”的說法并不確切,因為以太坊2.0可能是最雄心勃勃且歷時多年的計劃之一,它可以從行業(yè)中獲得最好的經(jīng)驗教訓(xùn),并創(chuàng)建一個優(yōu)雅地解決擴展性三難困境的協(xié)議,并且,該協(xié)議將能夠持久運行下去。
關(guān)于“分片如何顯著降低開發(fā)人員體驗”已經(jīng)進行了大量討論。其依據(jù)是,在以太坊2.0協(xié)議內(nèi)部結(jié)中剝離應(yīng)用程序開發(fā)人員的需求是非常困難的,因為高度復(fù)雜的分片系統(tǒng)需要彼此交互(跨分片交易)。
乍一看,以太坊2.0從外部看起來令人生畏,并且,在以太坊2.0中智能合約如何執(zhí)行仍不甚清晰。然而,事實要更加微妙。
應(yīng)用程序開發(fā)人員只需要知道一小部分以太坊2.0協(xié)議。普通智能合約開發(fā)人員無需了解驗證者注冊表或信標鏈終端小工具的內(nèi)部結(jié)構(gòu)。
因此,階段0從應(yīng)用層中完全移除。最近階段1和階段2也提出了非常有力的提案,主張對執(zhí)行環(huán)境進行更高程度的抽象化,使以太坊2.0更強大、更簡潔。
最壞的情況是,錢包/應(yīng)用程序開發(fā)人員需要了解跨分片交易的某些細節(jié),以通過一些技巧顯示即時交易結(jié)算。如今的計算機操作系統(tǒng)和內(nèi)部設(shè)備比10年前復(fù)雜得多,但是,大多數(shù)應(yīng)用程序開發(fā)人員無需了解隱藏的內(nèi)部結(jié)構(gòu),即使這些內(nèi)部結(jié)構(gòu)構(gòu)成強大的計算機體系。
這種“將關(guān)注點區(qū)分開”,是良好架構(gòu)設(shè)計的核心,人們可以把它作為在構(gòu)建以太坊2.0時應(yīng)該牢記的設(shè)計不變量。
七、構(gòu)建真實的世界計算機
總而言之,以太坊是圖靈完備的,這意味著它可以像今天的計算機一樣,運行任何類型的可想象的代碼,盡管它還是一臺緩慢的、單線程的計算機。
今天的以太坊類似于早期的弱處理器。如今在以太坊運行應(yīng)用程序是昂貴的,因為該協(xié)議已建立機制,以防止困擾公共事業(yè)的公地悲劇的出現(xiàn)。
以太坊充滿活力的開發(fā)者社區(qū)從未停止對當前網(wǎng)絡(luò)的改進創(chuàng)新,無論是在核心層還是在layer 2。但是,從治理的角度來看,未來計劃的升級可能會出現(xiàn)問題且很痛苦。
如果以太坊2.0上線幾年后,我們感到受限,并希望建立一個以太坊3.0,那就表示我們在前者的核心設(shè)計上失敗了。
可升級性應(yīng)該以不需要有風(fēng)險的硬分叉的方式被納入?yún)f(xié)議。也就是說,一旦系統(tǒng)長期處于運行中,layer 1 的創(chuàng)新應(yīng)該是最小的或接近于零。
我們還有很長的路要走,但我們謹慎提醒自己為什么要構(gòu)建這個軟件,以及我們希望在10年內(nèi)看到它走向何方,以編寫出更具魯棒性的、可以經(jīng)得起時間的考驗的代碼。
評論
查看更多