以太坊2.0的階段0是怎么回事
隨著信標(biāo)鏈(beacon chain)的啟動即將到來,Eth2 也越來越接近定局,現(xiàn)在是時候與社區(qū)同步有關(guān) Eth2 的內(nèi)在運(yùn)作方式以及成為驗證者的具體要求、激勵機(jī)制和經(jīng)驗等信息了。本文將對 Eth2 進(jìn)行高層面的概述,此文將構(gòu)成與驗證者相關(guān)的以太坊系列文章的基礎(chǔ)。
Eth2 的研究工作已經(jīng)進(jìn)行很長一段時間了,相關(guān)工作在過去的幾年中得到了顯著改善。最初通過智能合約分開管理的分片設(shè)計 (sharding) 和權(quán)益證明( PoS) 工作現(xiàn)已轉(zhuǎn)變?yōu)楦叨然ヂ?lián)的設(shè)計,在效率、可擴(kuò)展性和安全性方面得到了顯著提升。
Eth2 的幾個階段
在 Eth2 的一些組件變得更加互連的同時,其他組件被分成了幾個階段,從而更好地管理 Eth2 的方方面面。撰寫本文時,階段0即將啟動,開發(fā)人員們已經(jīng)在對客戶端軟件進(jìn)行最后的收尾工作了。與此同時,階段1的規(guī)范已經(jīng)完成,針對階段2的研發(fā)工作也在積極開展了。
階段0與信標(biāo)鏈有關(guān),信標(biāo)鏈?zhǔn)?Eth2 的核心,它管理著驗證者和分片的協(xié)調(diào)。信標(biāo)鏈?zhǔn)鞘聦嵉脑慈珽th2 的所有其他方面都從這里啟動。
階段1建立在此基礎(chǔ)上,允許將數(shù)據(jù)被放入分片中。實現(xiàn)這一組件的復(fù)雜性比其他組件要小得多,因為階段0已經(jīng)為分片做了大部分基礎(chǔ)工作。
階段2將為 Eth2 增加執(zhí)行功能,基本上就是將 Eth2 從一個強(qiáng)大的數(shù)據(jù)庫升級為一個完全去中心化的計算平臺。
階段0是什么?
如前所述,信標(biāo)鏈會追蹤驗證者集和分片鏈。在實踐中,這意味著如果你 (周期性地) 追蹤信標(biāo)鏈上發(fā)生的事情,你就會知道足夠的信息來驗證 Eth2 中發(fā)生的任何事情。通過驗證來信任。
為了使 PoS 系統(tǒng)能夠正常運(yùn)行,需要就哪些是驗證者以及每個驗證者的抵押情況等方面達(dá)成共識,這樣才能知道他們的投票權(quán)重有多大,并根據(jù)他們的行為來按比例地進(jìn)行獎勵和/或懲罰。信標(biāo)鏈也會管理 Eth2 中的分片部分,即信標(biāo)鏈也負(fù)責(zé)將驗證者分配到分片中并追蹤每條分片當(dāng)前的狀態(tài)。
Eth2 與其他 PoS 系統(tǒng)的部分區(qū)別在于參與到 Eth2 協(xié)議中的驗證者的絕對數(shù)量。與其他 PoS 系統(tǒng)中可能存在的數(shù)十個、數(shù)百個或者數(shù)千個參與驗證者的情況不同,Eth2 擴(kuò)展到了數(shù)十萬甚至數(shù)百萬的驗證者。這種程度的去中心化之所以成為可能,得益于由諸多被稱為委員會 (committees) 的驗證者小組達(dá)成的中間共識。
本質(zhì)上,信標(biāo)鏈基于一定的隨機(jī)性來將驗證者分配到各個委員會中,委員會將負(fù)責(zé)評估哪些是 (以及哪些不是) 信標(biāo)和分片鏈的一部分 (備注:也即對區(qū)塊進(jìn)行投票驗證)。之后,每個委員會的投票將以加密的方式聚合成一個證明 (attestation),這意味著驗證每個委員會的所有投票只是比檢查單個投票略微麻煩一些。因此,只需考慮少數(shù)的聚合簽名來評估許多驗證者的投票,就可以核查信標(biāo)鏈的有效性。
信標(biāo)鏈也會追蹤 Eth1 鏈和上面的抵押金,這樣新的驗證者就可以通過將 32 ETH 發(fā)送到部署在 Eth1 鏈上的抵押合約 (deposit contract) 來加入到 Eth2 系統(tǒng)中。信標(biāo)鏈對 Eth1 鏈進(jìn)行投票 (也即信標(biāo)鏈對 Eth1 鏈上的 Staking 參與者的抵押進(jìn)行投票驗證) 帶來的結(jié)果就是,Eth2 將在未來的某個時候,可以為區(qū)塊屬于 Eth1 權(quán)威鏈 (也即所謂的最長鏈) 的一部分提供經(jīng)濟(jì)保證,從而增強(qiáng) Eth1 鏈的安全性。
節(jié)點(diǎn) vs. 客戶端
Eth2 將信標(biāo)節(jié)點(diǎn) (beacon nodes) 和驗證者客戶端 (validator clients) 區(qū)別了開來,且驗證者將同時需要信標(biāo)節(jié)點(diǎn)和驗證者客戶端才能執(zhí)行自己的職責(zé)(即進(jìn)行投票驗證)。
信標(biāo)節(jié)點(diǎn) (也即節(jié)點(diǎn)) 負(fù)責(zé)維護(hù)信標(biāo)鏈,以及對用戶或驗證者需要使用哪條分片進(jìn)行管理。
驗證者客戶端 (也即客戶端) 負(fù)責(zé)處理單個驗證者的邏輯。即客戶端通過與信標(biāo)節(jié)點(diǎn)進(jìn)行通信來了解信標(biāo)鏈的當(dāng)前狀態(tài),并在適當(dāng)?shù)臅r候提議區(qū)塊或者對區(qū)塊進(jìn)行驗證,最后通過請求信標(biāo)節(jié)點(diǎn)將此信息發(fā)送給其他信標(biāo)節(jié)點(diǎn)。
“如果你不運(yùn)行驗證者客戶端,信標(biāo)節(jié)點(diǎn)包含了所有你與 Eth2 進(jìn)行無需信任交互所需的信息,就像是 Eth1 中的全節(jié)點(diǎn)一樣?!?/p>
以下是支持這種將信標(biāo)節(jié)點(diǎn)與驗證者客戶端區(qū)分開來的眾多理由中的其中一些:
每個驗證者都需要抵押 32 ETH 才能激活,因此任何想要抵押超過 32 ETH 的用戶都將需要運(yùn)行多個驗證者實例。將信標(biāo)節(jié)點(diǎn)與驗證者客戶端區(qū)別開來,將可以讓這部分用戶只需運(yùn)行一個信標(biāo)節(jié)點(diǎn)和多個與該節(jié)點(diǎn)相連接的驗證者客戶端,這樣可以減少用戶的計算、內(nèi)存和存儲要求。
將驗證者客戶端區(qū)別開來作為獨(dú)立的模塊,這樣客戶端將很可能更加安全,因為客戶端更易于編寫、推理和審計更小的代碼模塊。
對于特別擔(dān)心會出現(xiàn)冗余情況的用戶來說,實際上可以并行運(yùn)行多個節(jié)點(diǎn),這樣可以降低驗證者離線的概率。
由于驗證者客戶端只能通過某個信標(biāo)節(jié)點(diǎn)才能與 Eth2 網(wǎng)絡(luò)中的其他部分進(jìn)行交互,且即便那樣也需要通過一個受限的API,這樣驗證者的攻擊面就大大減少了。
對于想與 Eth2 進(jìn)行交互但不想成為驗證者的用戶來說,他們只需要運(yùn)行一個信標(biāo)節(jié)點(diǎn)就可以運(yùn)行他們訪問信標(biāo)鏈和所有他們想要訪問的分片鏈。
設(shè)計理念
協(xié)議高于一切:雖然我們需要承認(rèn)一切事物都有其權(quán)衡之處,但協(xié)議的安全性與活性高于其他的設(shè)計需求。
抱最高的希望,做最壞的打算:Eth2 的假設(shè)是,驗證者很懶,會收受賄賂,而且還會試圖攻擊系統(tǒng),除非能激勵他們不這樣做。此外,Eth2 還假設(shè),網(wǎng)絡(luò)不完全可靠,而且災(zāi)難性事件可能會迫使大量驗證者離線。基于這些原因,Eth2 應(yīng)具備能在第三次世界大戰(zhàn)中幸存下來的能力。
最小程度的可行復(fù)雜性:只要有可能,Eth2 已得到簡化,因為這將使其更易理解、更易向他人解釋、更易審核、更易編寫無 Bug 客戶端,并且通常更易避免邊緣化的情況。
最大程度的去中心化:PoS 協(xié)議普遍在驗證者數(shù)量這一點(diǎn)上進(jìn)行了妥協(xié),而 Eth2 的設(shè)計初衷就是將驗證者數(shù)量擴(kuò)展到數(shù)百萬,同時鼓勵這些驗證者彼此獨(dú)立工作。
做好迎接意外的準(zhǔn)備:Eth2 上的所有組件都是抗量子計算機(jī),或者可以在量子大災(zāi)難到來之際變成抗量子計算機(jī)的組件。
民治民享:Eth2 必須能在筆記本電腦上運(yùn)行。參與門檻越低,參與的人就越多,這有助于帶來更高程度的去中心化水平。
總結(jié)
現(xiàn)在大家已經(jīng)對 Eth2 有了基本的了解,在本系列的后續(xù)文章中,我們將為大家介紹更多細(xì)節(jié),探討 Eth2 得以運(yùn)行的原因。