Eth2 信標鏈:你首先該知道的事(下)

買賣虛擬貨幣
信標鏈檢查點

檢查點就是位於一個時段的第一個時隙內產生的區塊。如果某個時段的第一個時隙內沒有產生區塊,則將最近的一個符合要求的區塊認定為檢查點區塊。每個時段都會有一個檢查點區塊;一個區塊有可能同時是多個時段的檢查點。

注意,從時隙 65 到時隙 128 之間都是空塊。時段 2 的檢查點本來應該是時隙 128 處產生的區塊,但因為該時隙被跳過了,所以時段 2 的檢查點仍然是時隙 64 處產生的區塊。時段 3 也類似,時隙 192 被跳過了,因此將時隙 180 處產生的區塊認作時段 3 的檢查點。

時段邊界區塊(epoch boundary block)是一些文獻(比如 Gasper 論文,也是上面這張示意圖的來源)中用到的一個術語,可以認為是檢查點的同義詞。

在發起一次 LMD GHOST 投票時,驗證者也要為最近時段的檢查點投票,投票者希望確立的新檢查點叫做 “目標檢查點”(target)。這種投票叫做 Casper FFG 投票,而且投票中也會包含投票者認定的上一個檢查點,叫做 “來源檢查點”(source)。在上圖中,時段 1 中的一個驗證者的投票將創世塊作為來源檢查點,然後推舉時隙 64 處產生的區塊為目標檢查點。在時段 2,同一個驗證者又為相同的檢查點投票了。

只有被分配到某個時隙的驗證者才需要為該時隙的區塊投票,但是,所有驗證者都要為每一個時段的檢查點發起 FFG 投票。

大多數

由所有活躍驗證者總餘額的 2/3 所支援的投票內容就是多數票。

我們舉簡單一點的例子來說明一下,假設有 3 個活躍驗證者,兩個的餘額是 8 ETH,另一個的驗證者餘額為 32 ETH。那麼,只有包含了那個最大驗證者的投票才可能是多數票;雖然另外兩個驗證者可能都投了另一個檢查點,但是他們的餘額總和只佔 50%,形成不了多數。

確定性

一個時段結束的時候,如果其檢查點得到了 2/3 的總餘額支援(形成了多數票),那麼該檢查點就被合理化(justified)了。

如果一個檢查點 B 已經得到合理化,其下一個時段的檢查點也被合理化了,那麼 B 就被敲定(finalized)了。一般來說,一個檢查點會在兩個時段內得到敲定,大概就是12.8 分鐘。

從平均的角度來看,使用者的交易總是打包在一個時段的中間部分(的區塊中);那麼距下一個檢查點就還有半個時段的時間,因此,一筆交易經過 2.5 個時段(16 分鐘)就可以得到確定性(finality)。理想化情況下,超過 2/3 的見證訊息會在一個時段的前 22 個時隙內完成打包。因此,交易敲定的平均時長是 14 分鐘(16 + 32 + 22 個時隙)。區塊確認則從區塊見證訊息,一步步升級到合理化,再到確定性。使用者自己可以覺得他們要不要等到交易確定,還是更低一點的安全性就足夠了。

為簡化敘述難度,下文假設所有驗證者的餘額都相同。

信標鏈的頂端

(上圖中)時隙 96 處產生了一個時段邊界區塊,而且包含了對時段 2 檢查點的見證訊息(投票)。見證訊息的數量達到了 2/3 的多數要求。然後時段 2 的檢查點就得到了合理化,同時,上一個合理化的檢查點,也就是時段 1 的檢查點,就被敲定了。時隙 32 處的區塊得到確定性,會使得之前所有區塊都得到確定性。在敲定檢查點的時候,並沒有對同時得到敲定的區塊在數量上的限制。所以,雖然確定性僅在時段邊界的時候產生,見證訊息是逐個逐個區塊累加的,下文的 “從創世塊到區塊鏈頂端的歷程” 部分提供了另一種描述。

從時隙 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)及舉報人獎勵
區塊提議者獎勵
怠惰懲罰(inactivity penalty)

當期見證訊息(包含 LMD GHOST 投票和 FFG 投票)與其它多數驗證者一致時,驗證者可以得到獎勵。在 Eth2 Phase 1 階段,驗證者傳送交聯也可以得到獎勵。當區塊得到敲定時,驗證者獎勵也就確定下來了。

另一方面,如果驗證者沒有提交見證訊息,或者投票支援了一個最終不能得到敲定的區塊,他們也會受到懲罰。

在列舉不太常見的懲罰和獎勵之前,你可能還想知道,成為質押者會面臨怎樣的貶值風險。答案是,你可能失去的 ETH,恰好跟你能賺取的 ETH 數量對稱。如果一個驗證者一年的獎勵回報率是 10%,則作惡驗證者在最壞情況下可能會失去 10%。舉個例子,如果一個驗證者總是離線,或者總是給那些不能得到敲定的區塊投票,則其損失的 ETH 數量,恰與一位總是及時提交見證訊息,且所支援的區塊總是得到敲定的驗證者所得的獎勵,在數額上相等。

罰沒(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 的投票以時隙 64 的區塊為來源檢查點,以時隙 96 的區塊為目標檢查點,那麼該票就被 TA 自己在時段 5 的投票給包圍(環繞)起來了。

· 如果該驗證者在時段 6 的投票以時隙 0 的區塊為來源檢查點,以時隙 160 的區塊為目標檢查點,則該投票把 TA 自己在時段 5 的投票給包圍起來了。

如果這位驗證者在時段 6 又給時隙 128 的區塊投票,除非其來源檢查點仍是時隙 32 的區塊,否則就成了雙重投票,也會被罰沒。相同的 FFG 投票倒是不會被罰沒的。

擁有相同來源檢查點的 FFG 投票也不會招致罰沒。這是維持網路活性的重要條件。舉個例子,如果兩條分叉鏈各自都有 50% 的驗證者餘額支援,協議應該鼓勵驗證者透過投票給相同來源檢查點、不同目標檢查點,在分叉間切換(而不是懲罰他們切換分叉,這樣會導致網路繼續分裂)。能夠安全地在分叉間切換,驗證者們就能打破僵局,嘗試形成 2/3 的多數。

檢舉他人的驗證者需要在見證訊息中納入相互衝突的投票,以證明另一個驗證者應該受到懲罰。要高效地從一長段歷史中找出相互衝突的投票,在演算法和資料結構上也是一種挑戰。因此,開放工程挑戰·罰沒探測器也在尋找貢獻者。

得到良好控制的驗證者一般是可以避免被罰沒的:只需記得自己曾經簽名過哪些見證訊息就好。誠實的驗證者也不會因為其它驗證者的行為而受到波及。只要驗證者不簽名相互衝突的見證訊息,不作出雙重提議,就不會被罰沒。

為得到更好的執行體驗、更值得信任的資訊來源,乃至更好的 DoS 保護,驗證者客戶端可能會同時使用多個信標鏈節點。在這種模式中,包括使用備份的驗證者客戶端的時候,需要小心不要讓驗證者簽署相互衝突的訊息。

信標鏈驗證者啟用及生命週期

每一個想成為驗證者的使用者都要先有 32 ETH 才能獲得驗證者資格。使用者質押 32 ETH 到以太坊主網上的保證金合約中,就能獲得一個驗證者資格。

另一方面,信標鏈也會勸退(反啟用)所有餘額降低到 16ETH 的驗證者;質押使用者可以取出剩餘的驗證者餘額,不過在 Eth2 Phase 0 還做不到。

驗證者在服務 2048 個時段(約 9 天)之後也可以主動退出。退出時要先走完 4 個時段,質押使用者才能取出自己的權益。在這 4 個時段內,該驗證者的餘額仍然是可以被罰沒的。因此,誠實驗證者的餘額可以在約 27 小時之後取出。但是,如果驗證者在此時被罰沒,就只有再等 8192 個時段(約 36 天)之後才能取出剩餘款項。

更多技術細節可看《以太坊 2.0 Phase 0 驗證者生命週期》。下圖亦來自這份資料:

為避免驗證者集合在短時間內出現大規模的變動,單個時段內能啟用和退出的驗證者數量是有一個機制限制的。這樣可以讓啟用許多驗證者、快速攻擊系統的攻擊更難發動。

信標鏈還使用了一個叫做 “有效餘額” 的概念,這個有效餘額迴避驗證者餘額的變化更小,使得技術上的最最佳化成為可能。

總結

在每一個時段,驗證者都被均勻分配到不同時隙中,並進一步劃分成相同規模的委員會。驗證者只有 1 個應召的時隙,也只會存在於 1 個委員會中。因此:

一個時段中的所有驗證者,透過集體決策嘗試敲定某個檢查點;方法是 FFG 投票;
各時隙中的所有驗證者,透過集體決策嘗試選出信標鏈的頂端區塊:方法是 LMD GHOST 投票;
一個委員會中的所有驗證者,透過集體投票嘗試將某個分片交聯到信標鏈上。

最符合協議的行為可以得到最多的獎勵。

信標鏈的啟動(創世塊)需要至少 16484 名驗證者。驗證者的數量會因為罰沒及資源退出而減少,也會因為質押使用者的投入增加而增加。而且,隨著 Eth2 Pahse 1 及後續階段的升級,預計會有更多驗證者參與進來。信標鏈需要至少 262144 名驗證者(質押的 ETH 數量超過 800 萬)才能使得單個信標鏈區塊能包含 64 個交聯。

我們還從未擁有過一個 去中心化 系統和應用的可擴充套件平臺。如果你想更深入地研究以太坊 2.0,權威的參考來源是 Ethereum 2.0 Specifications。該技術規範包含了信標鏈技術規範,還提供了其它關鍵資訊源,而且提交 issue 可以獲得獎金。當前,最緊迫的 工程需要是點對點網路的組網功能。

自己動手,或者推薦朋友參加挑戰、參與 ethresear.ch 論壇或者 Ethereum Magician 論壇,創造歷史吧!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;