時間:2023-07-14|瀏覽:261
在工作量證明中,共識是通過全球競賽來實現的。第一個挖出有效區塊的幸運礦工會獲勝,比賽是通過找出計算難度問題的數學方案來進行的。因此,出塊時間是概率性的。隨著更多的區塊被打包到區塊鏈上,回滾就變得越來越困難,因為每個區塊都代表了構建區塊所需的電力和算力的累積總和。大部分攻擊者不能回滾比特幣和以太坊區塊鏈是有切實的物理保證的,因此,超過一定時間的交易可以被視為“被最終確定了”。
然而,在以太坊的權益證明機制中,最終確定性不是基于概率性的。相反,協議明確規定了最終確定性的條件:“如果超過三分之二的驗證者對區塊鏈頭正確投票了,在一段很長的時間后,我們就認為這個特定檢查點以前的所有交易都被最終確定了”。最終確定性是明確的,遵循協議的節點將無法回滾最終確定的檢查點,無論共識權重如何,這在根本上是不可能的。
在Eth2中,最終確定性的機制是通過將驗證者分配到一個有32個slot的窗口,并履行出塊或對區塊投票的職責。一個epoch由32個slot組成,每個slot為12秒。在一個epoch中,有32個驗證者被分配為區塊提議者,其他驗證者為證明者,他們需要對每個epoch中被提議的區塊進行投票。
Eth2使用了Casper權益證明共識和“確定性小工具(finality gadget)”來實現最終確定性。最終確定性的過程包括以下步驟:如果在一個epoch中,超過2/3的驗證者對區塊鏈頭正確投票,那么最新的epoch被認為是“證明”的。如果連續兩個epoch都被證明了,那么當前epoch-2被認為是最終確定的。鏈的目標是一直保持最終確定性,如果在被最終確定的epoch之后超過4個epoch沒有被確定,所有驗證者都會受到懲罰,以激勵快速恢復確定性。
在eth2的epoch過渡中,狀態轉換函數會執行重要的記賬功能,并為下一個epoch做準備。在每個epoch中,驗證者都會被重新分配任務,除非發生鏈重組,否則他們會提前兩個epoch得知自己的任務。
確定一個新被最終確定的檢查點對于Eth2非常重要,因為協議中的許多定義都以它為界限。在檢查點被最終確定之前,所有從p2pgossipsub收到的信息都會被忽略和丟棄。此外,在新的最終確定的檢查點之前傳入gossipsub的信息也會被忽略。被最終確定的檢查點以前的存儲數據可以被修剪,沒有安全問題。
最終確定性對于鏈的活性具有很強的激勵機制。Eth2的主網自2020年12月1日激活以來,鏈一直保持活躍,并按預期實現最終確定。鏈的參與率一直保持在90%以上的高水平。
盡管我們可以通過驗證者投票的結果來估計最終確定性的概率,但如果在權威鏈的分叉上有足夠多的投票權,依然可能發生1個或2個epoch內的重組。然而,在Eth2上,大量投票權的小型分叉是很罕見的,并且從未發生過。
最終確定性是通過節點遵循協議規則來實現的。節點違反協議規則可能會導致重組,但只有絕大多數