合併後的第一天:快速回顧PoS 以太坊設計

來源:@stonecoldpat0

作者:Patrick McCorry

能源消耗

合併後的能源消耗會減少99.8%。這是可以公開驗證的,而排除一切合理的質疑後,可以說使用/運行以太坊不會對環境造成影響。沒有,沒有,一點都沒有。這就少了一個問題,可以說服新手嘗試、採用和使用加密貨幣。

可擴展性

PoS 的轉變不會影響可擴展性。 PoW 和PoS 是抗女巫攻擊的共識機制。它的目標在於:限制可以參與區塊生成過程的人。它只會找到共擔風險且因此理性行動的參與者。

引用推文:https://twitter.com/el33th4xor/status/1006931658338177024

slot、epoch 和委員會

一個epoch 有32 個slot。在一個epoch 裡,整個驗證者集將被平均至每一個slot,這樣委員會的規模就等於所有驗證者除以32。在一個slot 裡,一個委員會成員提議了區塊,剩餘的成員則對此進行投票。 (BLS 產生隨機信標)

同步和投票

slot 是指12 秒的時隙:

  • 0 – 4 秒:提議區塊

  • 4 – 12 秒:投票和計票

最好的情況下,會正常進行區塊提議和投票。有時候,提議者可能會離線,那就不會有區塊被提議出來。

處理被跳過的區塊

如果區塊提議者離線了,那麼:

  • 委員會成員(slot 96)會投票給上一個區塊

  • 下一個委員會繼續正常運作

就像所有的區塊鏈一樣,這能促使一條權威鏈的形成,因為區塊鏈生產者/驗證者必須擴展一個父塊。

最新區塊和分叉處理

在鏈的頂端進行分叉是可以的:

  • 區塊提議者已經提議了兩個或以上的區塊(罰沒情況,但區塊仍然存在)

  • 發生延遲而區塊到達了下一個slot。

這時候,該slot 的委員會成員需要選擇一個區塊。

分叉選擇規則的重要性

委員會成員應該基於同一套規則選擇“最重的鏈”(heaviest chain):

  • 選擇最多投票的分叉

  • 票數平局情況下選擇最低哈希的區塊

  • Proposer boost: 如果區塊在這個slot 被提議了,選擇有70% 額外票數的區塊

引用推文:https://twitter.com/hasufl/status/1570316069306503170

區塊變壞

如果絕大多數的委員會成員都把票投給同一個區塊,那麼:

  • 未來的委員會將會延續勝出的區塊

  • 競爭的分叉區塊則會變“壞”或者“被丟棄”

分叉選擇規則:跟隨票數積累最多的鏈。

弱主觀性

由於“投票”和“長程攻擊”的性質,所以我們不可能接收來自不受信任來源的區塊鏈副本並驗證它是不是“一條真正”的鏈,而是必須依靠於社會共識和眾所周知的檢查點:【博客鏈接】

引用文章:Proof of Stake: How I Learned to Love Weak Subjectivity | Ethereum Foundation Blog

最終確定性

我們可以理解下面這句保證:“一旦區塊敲定,它將永不可逆轉”。

兩個階段:

  • 驗證:在1 個epoch 後,下一個候選區塊就會被敲定。

  • 最終確定:在2 個epoch 後,絕對多數已經給它投票了(兩次)。

兩個區塊樹

PoS 以太坊的魅力在於,它有兩個組成:

  • 通過LMD Ghost 機制實現活性(跟隨最重的區塊分支(heaviest branch))

  • 通過Casper 的FFG 實現安全性(選擇一個區塊並敲定它)。

epoch 的鏈給予我們信心,而slot 鏈的頂端則是“待處理的世界狀態”

攻擊者:佔質押存款的1/3 以上

攻擊者無法控制交易的排序,但是他們可以攻擊最終確定性。只會在2/3 以上的驗證者投票給一個區塊時,它才能進行敲定。如果它只獲得了少於2/3 的票數,那麼它就無法驗證或敲定。

不作為懲罰

誠實的驗證者會繼續在slot 中生產區塊,並慢慢排除那些不遵守分叉選擇規則的驗證者。最終,不投票者會失去足夠的質押存款,這樣誠實的驗證者就能佔比2/3 以上的質押。

兩條平行的鏈

如果說不作為懲罰發生了,那是因為:

  • 一個驗證者集想要審查一筆交易

  • 另一個驗證者集想要打包交易

每一個驗證者集將會對另一個驗證者集進行“不作為懲罰”。這導致了兩條鏈的誕生。這是平和的分叉。

攻擊者:佔質押存款的1/2 以上

他們控制了“分叉選擇規則”並決定忽略那些打包了審查交易的區塊。就比如在PoW 機制中,他們無法改變共識規則,只能控制交易的排序。但據我所知,在這種情況下“不作為懲罰(inactivity leak)”將不會被啟動。

以太坊的守衛者

在面對審查的時候,我們能夠做什麼?答案是一次用戶激活的軟分叉!總的來說,我們可以強制退出(並潛在地)通過分叉代碼來罰沒攻擊者。這是一種有針對性的攻擊,不會損害誠實驗證者的利益。

引用推文:https://twitter.com/stonecoldpat0/status/1560040361447260163

多客戶端主題

目標:避免會讓區塊/無效交易被永遠敲定的零日攻擊。但這需要多少個客戶端?嗯,另一個出現的問題是因為不作為懲罰。如果兩個佔比50% 的客戶端出現分歧,那麼他們最終會變成兩個平行的世界。

任何單個客戶端無法激活漏洞

當運行一個客戶端組合的驗證者所佔的質押存款佔比大於33%時,不作為的懲罰才會變得有意義。通過運行少數人使用的客戶端,你可以最小化所有因為軟件漏洞而造成的損害。閱讀更多請看這裡:https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html

懲罰不等於罰沒

區別:

  • 懲罰:只是很小的問題,不會對網絡造成損害

  • 罰沒:驗證者作出了公開可檢測且惡意的行為

如果驗證者觸發了罰沒條件,他們就會被強制移出網絡。閱讀更多:

引用文章:https://eth2book.info/altair/part2/incentives/slashing/

兩種罰沒情況

1. 在同一個slot 裡投票/提議兩個或以上的區塊(強制每個slot 一張票規則的執行)

2. 提議“包含”了一個你已經投過票的分叉的分叉(抵抗長程攻擊)

我做了一個基於圖上公式的視覺圖幫助大家理解。

無論如何,我希望你們喜歡這條推文。以太坊已經變更了它的共識協議,從工作量證明機制轉向權益證明機制,這份成績非常了不起。這也是為什麼以太坊、它的路線圖/技術以及社區都非常好的。

以太坊是實驗的天堂。

Total
0
Shares
Related Posts