Eth2信標鏈:你首先該知道的事
編者按:本文來自:以太坊愛好者(ID:ethfans)編者按:本文來自:
以太坊愛好者(ID:ethfans)
以太坊愛好者(ID:ethfans)
編者按:本文來自:
以太坊愛好者(ID:ethfans)
編者按:本文來自:
先來看看分片(shard)、驗證者(staking validator)、見證消息(attestation)、委員會(committee)、檢查點和最終確定性(finality)所組成的全景。
以太坊愛好者(ID:ethfans)
,作者:ethos.dev,翻譯:阿劍,Odaily經授權轉載。
先來看看分片(shard)、驗證者(staking validator)、見證消息(attestation)、委員會(committee)、檢查點和最終確定性(finality)所組成的全景。
還記得自己第一次對區塊鏈世界發出“原來如此” 感嘆時候的喜悅嗎?
信標鍊是整個Eth2 系統的核心;但關於信標鏈的內容,大多都僅僅是在搬弄技術詞彙,很瑣碎,也不夠深刻。
先來看看分片(shard)、驗證者(staking validator)、見證消息(attestation)、委員會(committee)、檢查點和最終確定性(finality)所組成的全景。
在這裡,我們會提供對信標鏈諸要素和機制的透徹解讀。我們也會提供例子,恰如其分地點出關鍵細節,使你能事半功倍。
我們假定,你已經擁有對以太坊區塊鍊或者比特幣區塊鏈的堅實理解,也熟悉權益證明(Proof of Stake)。
先來看看分片(shard)、驗證者(staking validator)、見證消息(attestation)、委員會(committee)、檢查點和最終確定性(finality)所組成的全景。
分片:遠大理想
要理解信標鏈,先了解一下分片的概念會有所幫助。區塊鏈(包括以太坊)當前在提高可擴展性(scalability)上面臨的主要難題是:每個節點都必須驗證和執行所有交易。
而從計算機科學的角度來看,要擴展吞吐量,主要有兩種辦法:
A. 垂直擴展:大意是加強節點,讓節點變得越來越強大。
B. 水平擴展:大意是,加入更多節點。
為了去中心化,區塊鏈系統只能水平擴展。以太坊2.0(也叫Eth2 或者Serenity)的其中一個目標是,讓普通的消費級硬件就能運行節點。分片這個術語的本意,就是對數據庫進行水平分區(horizontally partitioning)。
基本上,一條分片鏈會由一部分節點(即全網節點的一個子集)來處理。而係統中的虛擬礦工,驗證者(validator),會被分配到不同的分片上,僅僅處理和驗證自己所在分片鏈上的的交易。
在這個系統中,按塊處理某個分片的節點群是會不斷更換的。
要對一個區塊鏈系統做分片,主要的挑戰就是分片的安全性。因為驗證者分散在各個分片上,惡意驗證者攻陷單個分片的難度會降低。
錯誤性證明(fraud proof),數據託管證明(custody proof)和數據可用性檢查(data availability check)同樣也是重要的安全組件,但要專門寫文章才能解釋清楚。
Phase 1:分片
Eth2 現在的計劃是啟用64 個分片。雖然分片跟信標鏈在概念上是相互獨立的,我們還是準備講講整個系統的一些關鍵元素。
分片概念反映出了信標鏈的功能和需要;通過分片這個概念,我們可以理解為什麼需要在傳統的區塊鏈系統中加入這些額外的部分。這個全新的領域也歡迎有所感悟的讀者提出創新。
以太坊2.0 會分三個階段部署:
Phase 1:四肢
Phase 0:信標鏈
Phase 1:分片
可以類比為人體的三個部分:
Phase 0:心臟
Phase 1:四肢
也可以類比為一支氣勢磅礴的管弦樂團:
Phase 1:樂器
Phase 2:樂手
圖片描述
每個階段都會整合到系統中,分別擔任不同的角色。比起其它階段,Phase 1 所引入的功能會更加波瀾不驚,而Phase 2 會更關乎執行。
時隙和時段(Slot and Epoch)
圖片描述
信標鏈就是以太坊2.0 的心跳,是整個系統的和諧及共識中的主旋律。
圖片描述
- 時段0 的32 個時隙。創世塊就在時段0 產生 -
時隙是用來標記產生信標鏈區塊及分片區塊的機會的:在信標鍊和各分片上,每一個時隙就有一次產生新區塊的機會。你可以想像信標鍊和各分片鍊是精心設計、緊密同步的。理想情況下,每12 秒,就會產生1 個信標鏈區塊,和分佈在不同分片鏈上的64 個分片區塊。驗證者之間確實需要在時間上達成同步。
圖片描述
因此,時隙就像區塊時間一樣,只不過,時隙也有可能出空塊。信標鍊和分片鏈的創世塊是在時隙0 時產生的;不過,各分片鏈會在信標鏈的時段0 完成之後才開始運行,而且各有各的時段0(產生創世塊的起點)。
圖片描述
區塊的提議者指的是一名被隨機選出來產生區塊的驗證者。
圖片描述
二級標題
- 在某個時段的第28 個時隙處,沒有出現相應的區塊提議(被分配為提議者的驗證者因為一些原因而沒有提出區塊)-
所謂見證消息(attestation),就是一名驗證者發起的投票,其權重由驗證者的餘額決定。見證消息會被驗證者附加到區塊內,隨著區塊一起傳播。
二級標題
驗證者之間還會互相監督,可以報告其它驗證者做出互相衝突的投票或者提議多個區塊的不軌行為,如果報告屬實則可以得到獎勵。
信標鏈的主要內容就是一份驗證者地址的註冊表、每個驗證者的狀態、見證消息、以及鏈接到分片的信息。驗證者在參與前需經過信標鏈激活,也可以轉變自己的狀態,在下文的“信標鏈驗證者激活及生命週期” 部分有述。
二級標題
在工作量證明區塊鏈上,用戶成為礦工的方式就是控制硬件參與共識。而在以太坊2.0 中,用戶可以通過質押ETH 獲得驗證者資格,並通過控制驗證者來參與網絡。所以說驗證者是虛擬的,是由質押者來主動激活的。
把質押者(staker)和權益(stake)、驗證者和余額(balance)關聯起來會更容易理解。每個驗證者的餘額最大為32 ETH,雖然質押者可以把自己全部的ETH 都質押進去。每存入32 個ETH,就可以獲得1 個驗證者資格。
交聯(crosslink):讓分片紮根到信標鏈上
圖片描述
委員會簡介
圖片描述
信標鏈這個名字,正是來源於其公開提供隨機數的功能(即“隨機性信標”)。信標鏈會對一個叫做“RANDAO” 的偽隨機過程達成共識。
圖片描述
圖片描述
驗證者是由RANDAO 以驗證者的餘額為權重選擇出來的。一個驗證者可能在一個時隙中同時又是提議者,又是委員會成員,但這並非常態。發生這種事情的概率是1/32,所以我們估計每個時段會看到一次。上面這個示意圖描繪的是驗證者數量少於8192 個時的情形,不然一個時隙至少會有兩個委員會。
圖片描述
本文著重考察的信標鏈委員會:為信標鏈服務的驗證者。一個信標鏈委員會會被隨機分配到一個分片上,在一個信標鏈區塊鏈上產生交聯。而且委員會成員不是長期不變的,負責產生交聯的委員會都是逐塊逐塊替換的。
僅僅為分片鏈產生區塊的委員會留待日後解釋。分片鏈驗證者可能在不與信標鏈交互的情況下產生許多信標鏈區塊,但是,如果一個分片要跟其它分片通信,它就需要信標鏈委員會把分片區塊交聯到一個信標鏈區塊上。
圖片描述
- 協議假設驗證者總是給自己認為是區塊鏈頂端的區塊投票 -
一個驗證者在一個時段中只會參加一個委員會。一般來說,系統中的驗證者會超過8192 個,所以每個時隙會有多於一個委員會。委員會的規模都是一樣大的,都至少有128 個驗證者。當系統中的驗證者少於4096 個時,安全性就會下降,因為委員會的規模將少於128 個驗證者。
委員會:關鍵
舉個例子,假設有16384 名驗證者。其中512 名驗證者被偽隨機地分配到時隙1,另外512 個被分配到時隙2,等等。時隙1 的512 個驗證者被進一步切分成4 個委員會。所有512 個驗證者都要在時隙1 處發起LMD GHOST 投票;其中一個委員會的128 名驗證者嘗試交聯到分片33;另一個委員會的128 名驗證者嘗試交聯到分配55;另外兩個委員會則嘗試交聯到分片22 和分片11。
圖片描述
在時隙2,這個過程會重複一遍。 512 名驗證者一樣被劃分成4 個委員會。假定他們被分配到的分片為41、20、17、15。所有的512 個驗證者都要在時隙2 處為信標鏈的頂端投票;這幾個委員會也會嘗試為分片41、20、17、15 提出交聯。
圖片描述
信標鏈檢查點
檢查點就是位於一個時段的第一個時隙內產生的區塊。如果某個時段的第一個時隙內沒有產生區塊,則將最近的一個符合要求的區塊認定為檢查點區塊。每個時段都會有一個檢查點區塊;一個區塊有可能同時是多個時段的檢查點。
- 單時段包含64 個時隙時的檢查點示意圖 -
時段邊界區塊(epoch boundary block)是一些文獻(比如Gasper 論文,也是上面這張示意圖的來源)中用到的一個術語,可以認為是檢查點的同義詞。
在發起一次LMD GHOST 投票時,驗證者也要為最近時段的檢查點投票,投票者希望確立的新檢查點叫做“目標檢查點”(target)。這種投票叫做Casper FFG 投票,而且投票中也會包含投票者認定的上一個檢查點,叫做“來源檢查點”(source)。在上圖中,時段1 中的一個驗證者的投票將創世塊作為來源檢查點,然後推舉時隙64 處產生的區塊為目標檢查點。在時段2,同一個驗證者又為相同的檢查點投票了。
一級標題
大多數
一級標題
我們舉簡單一點的例子來說明一下,假設有3 個活躍驗證者,兩個的餘額是8 ETH,另一個的驗證者余額為32 ETH。那麼,只有包含了那個最大驗證者的投票才可能是多數票;雖然另外兩個驗證者可能都投了另一個檢查點,但是他們的餘額總和只佔50%,形成不了多數。
圖片描述
一級標題
圖片描述
如果一個檢查點B 已經得到合理化,其下一個時段的檢查點也被合理化了,那麼B 就被敲定(finalized)了。一般來說,一個檢查點會在兩個時段內得到敲定,大概就是12.8 分鐘。
圖片描述
二級標題
信標鏈的頂端
二級標題
(上圖中)時隙96 處產生了一個時段邊界區塊,而且包含了對時段2 檢查點的見證消息(投票)。見證消息的數量達到了2/3 的多數要求。然後時段2 的檢查點就得到了合理化,同時,上一個合理化的檢查點,也就是時段1 的檢查點,就被敲定了。時隙32 處的區塊得到確定性,會使得之前所有區塊都得到確定性。在敲定檢查點的時候,並沒有對同時得到敲定的區塊在數量上的限制。所以,雖然確定性僅在時段邊界的時候產生,見證消息是逐個逐個區塊累加的,下文的“從創世塊到區塊鏈頂端的歷程” 部分提供了另一種描述。
二級標題
用同樣的辦法,可以觀察到從創世塊開始的一條故事線。所有的提議者,從時隙1 到時隙36,一一提議了一個區塊,而且這些區塊都顯現在鏈上。對於時段1的所有區塊來說,其檢查點(時隙32 處的區塊)累積獲得了55% 的驗證者的見證。在驗證者提議時隙64 處的區塊時,它也納入了對時段1 檢查點的見證消息。現在,有70% 的驗證者都見證了時段1 的檢查點,因此時段1 檢查點得到了合理化。完成時段2 時,時段2 的檢查點(時隙64 處的區塊)累積的見證消息還達不到2/3 的多數要求。時隙96 處的區塊在提議時,也納入了對區塊2 檢查點的見證消息,所以,這時候,時段2 的檢查點也達到2/3 的多數要求,被合理化了。合理化時段2 的檢查點同時也會敲定時段1 的檢查點及所有此前的區塊。
有時,合理化一個區塊會敲定兩個甚至多個時段以前的區塊。 Gasper 論文討論了這種情況,預計只有網絡高延遲、網絡隔離、遭遇強大攻擊者的極端情況下,才會出現這種事。
一級標題
確定性對於分片及以太坊區塊的用戶來說是重中之重,因為確定性使他們能夠確定,交易已經永遠寫在鏈上,不可更改了。確定性也降低了跨分片通信的複雜性。沒有確定性,分片內部和分片之間交易的回滾會具有破壞性,甚至讓分片的好處蕩然無存。
深入理解見證消息
一級標題
一條見證消息裡麵包括了一個LMD GHOST 投票和一個FFG 投票。理想情況下,所有的驗證者每個時段都會發出一條見證消息。一筆見證消息有32 個時隙的機會被打包到鏈上。這就意味著,一個驗證者可能在單個時段內有兩筆見證消息被打包上鍊。見證消息打包上鍊的時間也決定了驗證者可得的獎勵幅度:在自己所在的時隙就打包上鍊可以得到最多的獎勵;要是等到後續時隙才打包上鍊,驗證者得到的獎勵就會下降。為了給驗證者足夠的時間來準備見證消息,他們會在一個時段以前就預先知道自己所在的委員會。區塊提議者則僅在時段開始之時分配一次。此外,隱蔽領袖選舉研究還致力於減輕對區塊提議者的攻擊和賄賂。
委員會機制使得匯總所有的見證人簽名、變成單個聚合簽名在技術上的優化成為可能。如果同一委員會中的所有驗證者都作了同樣的LMD GHOST 和FFG 投票,則他們的簽名可以聚合起來(成為單個簽名)。
一級標題
信標鏈驗證者獎懲措施
為避免過度深入,我們僅討論驗證者激勵相關的6 種措施:
見證人獎勵
見證人懲罰
罰沒(slashing)及舉報人獎勵
區塊提議者獎勵
當期見證消息(包含LMD GHOST 投票和FFG 投票)與其它多數驗證者一致時,驗證者可以得到獎勵。在Eth2 Phase 1 階段,驗證者發送交聯也可以得到獎勵。當區塊得到敲定時,驗證者獎勵也就確定下來了。
二級標題
另一方面,如果驗證者沒有提交見證消息,或者投票支持了一個最終不能得到敲定的區塊,他們也會受到懲罰。
罰沒(Slashing)的力度下至0.5 ETH,上至一位驗證者的全部權益。如果一位驗證者所提交的見證消息觸犯了協議所定義的罰沒條件,則TA 會損失自身權益的至少1/32,並被驅逐出驗證者隊伍。懲罰的力度就像該驗證者離線了8192 個時段一樣。協議還會根據相近時間內被罰沒的驗證者數量施加一個額外的懲罰。此種額外懲罰的計算公式是:驗證者余額× 3 × 被罰沒的驗證者佔比。那麼,如果占全體驗證者1/3 數量的驗證者都觸犯了罰沒條件,則他們會失去全部餘額。相應地,檢舉這些不軌行為的驗證者將會得到檢舉人獎勵。
二級標題
區塊提議者在所提議區塊得到敲定之後,也會得到一個成比例獎勵。總是在線,並且提議工作做得很好的驗證者,其總獎勵可增加約1/8。出現罰沒事件的時候,提議者也會因為打包罰沒證據而得到一小筆獎勵。在Eth2 Phase 0 中,所有的檢舉人獎勵都會給予區塊提議者。
以太坊2.0 系統中機制眾多,對這些機制的評價應從所有機制的整體效果出發。最末一種獎懲措施是所謂的“怠惰懲罰”。基本上,如果距上一次敲定區塊已過去了4 個時段(還沒有新檢查點得到敲定),所有驗證者都會遭受怠惰懲罰,而且懲罰力度會呈平方級上升,直至新的檢查點得到敲定。怠惰懲罰保證了:即使50% 的驗證者都離線了,系統也會在21 天后重新開始敲定區塊。
二級標題
罰沒條件
罰沒條件主要有三個,分別是:雙重提議、FFG 雙重投票,FFG 環繞投票。 LMD GHOST 投票是不會招致罰沒的。
雙重投票是指驗證者在提交FFG 投票時,多個投票指向同一個目標檢查點,但引用的來源檢查點卻各不相同。
環繞投票指的是驗證者在提交FFG 投票時,多個投票所指向的檢查點恰成環繞形狀。舉個例子,假定一位驗證者在時段5 投票時,以時隙32 的區塊為來源檢查點,以時隙128 的區塊為目標檢查點:
如果該驗證者在時段6 的投票以時隙0 的區塊為來源檢查點,以時隙160 的區塊為目標檢查點,則該投票把TA 自己在時段5 的投票給包圍起來了。
一級標題
如果這位驗證者在時段6 又給時隙128 的區塊投票,除非其來源檢查點仍是時隙32 的區塊,否則就成了雙重投票,也會被罰沒。相同的FFG 投票倒是不會被罰沒的。
檢舉他人的驗證者需要在見證消息中納入相互衝突的投票,以證明另一個驗證者應該受到懲罰。要高效地從一長段歷史中找出相互衝突的投票,在算法和數據結構上也是一種挑戰。因此,開放工程挑戰·罰沒探測器也在尋找貢獻者。
一級標題
為得到更好的運行體驗、更值得信任的信息來源,乃至更好的DoS 保護,驗證者客戶端可能會同時使用多個信標鏈節點。在這種模式中,包括使用備份的驗證者客戶端的時候,需要小心不要讓驗證者簽署相互衝突的消息。
總結
一級標題
每一個想成為驗證者的用戶都要先有32 ETH 才能獲得驗證者資格。用戶質押32 ETH 到以太坊主網上的保證金合約中,就能獲得一個驗證者資格。
總結
另一方面,信標鏈也會勸退(反激活)所有餘額降低到16ETH 的驗證者;質押用戶可以取出剩餘的驗證者余額,不過在Eth2 Phase 0 還做不到。
更多技術細節可看《以太坊2.0 Phase 0 驗證者生命週期》。下圖亦來自這份資料:
總結
為避免驗證者集合在短時間內出現大規模的變動,單個時段內能激活和退出的驗證者數量是有一個機制限制的。這樣可以讓激活許多驗證者、快速攻擊系統的攻擊更難發動。
信標鏈還使用了一個叫做“有效餘額” 的概念,這個有效餘額迴避驗證者余額的變化更小,使得技術上的最優化成為可能。


