作者:BREAD
編譯:Golem,Odaily 星球日報
編者按:以太坊創始人 Vitalik 在其今日所寫的新文《Possible futures of the Ethereum protocol, part 1: The Merge》中提到了以太坊在技術還需要改進的地方及原因和路徑,其中首要就是要將區塊最終確定性由 2-3 個 epoch(~ 15 分鐘)的時間改成在一個 slot(~ 12 秒)中完成最終確定。那麼,讓 Vitalik 如此重視的最終確定性(Finality)究竟是什麼?其在以太坊和 L2 中是如何實現的呢?
加密研究員 BREAD 的文章《WTF is Finality?》用類比的方式解釋區塊的最終確定性及實現過程。星球日報特編譯如下,希望對讀者理解有幫助。
類比最終確定性(Finality)
按照我的「WTF is……」系列文章的傳統,我喜歡從現實生活中的類比開始,如果人們不願意瞭解底層細節,就可以跳出來只瞭解要點。對於最終確定性(Finality),我們可以使用混凝土隨著時間硬化的例子,如圖:
這就是對區塊鏈裡「最終確定性」最高級的解釋,就像混凝土一樣,隨著時間的推移,從澆築(初始確認)到初凝(多次確認),初始塊被判定為「假」變得越來越困難,直到它完全硬化(最終確定)。一旦到了最後,就幾乎不可能改變了。
對應在區塊鏈中具體的順序為:
已提交(Submitted) > 已確認(Confirmed)> 最終確定(Finalized)
如果您還想深入瞭解最終確定性的方式、內容和原因(在以太坊環境中),歡迎繼續往下閱讀。
什麼是最終確定性(Finality)?
讓我們嘗試圍繞這個概念瞭解一些結構並理解它。以下是對最終確定性及相關概念的解釋:
- Slot (又稱區塊時間):可能它的替代名稱區塊時間會更好理解,時隙或區塊時間是給系統的時間量,以便其生成新交易區塊並附加到當前的鏈上。例如以太坊的 Slot 為 12 秒,Base 為 2 秒,Solana 則是 0.4 秒。
- Confirmation:確認,這是當交易正式進入已被添加到當前鏈的區塊裡時發生的事情。它現在作為賬本的一部分被 「確認」 ,並且隨著後續區塊不斷的被添加到賬本中,確認數將越來越多。
- Epoch:每 32 個 Slots 被稱為一個 Epoch。這是區塊鏈中的二級結構,用於委派角色和職責。Slot 用於構建區塊,而 Epochs 用於數據傳播、獎勵分配、驗證者選擇等。
- Checkpoint Block:檢查點區塊,這是在 Epoch 中創建的第一個區塊,用作檢查鏈歷史的參考點。
- Finality:最終確定性,這是交易被視為不可逆轉地添加到給定鏈的賬本中的點。不過,就技術屬性而言,這個術語在各個鏈中的使用並不統一,因此最好不要在所有情況下都假設標準相同。在以太坊生態系統中,當 2 個 Epoch 過去時(~ 13 分鐘)就達到了最終確認性;在 Optimistic L2 中需要等當欺詐爭議期過去時(~ 7 天);在 ZK L2 中, 由於有效性證明提供的保證,存在 2 個有爭議的最終確定性時刻:本地(當在 L2 上生成證明時 [~幾分鐘])和全局最終確定性(當證明發布到以太坊並在那裡完成時 [~ 13 分鐘])。
- Block Reorganization(「Reorg」):區塊重組,這是指曾經作為鏈一部分被確認的區塊由於某種原因不再被視為有效,並且形成了新的鏈。這通常會伴隨懲罰。
下圖嘗試在單個圖像中可視化所有這些術語,以使它們更容易理解:
最終確定性是如何進行的?
以上,我們已經瞭解了最終確定性及相關概念,那麼,它們是如何協作的呢?規則是什麼?
對於以太坊
- 驗證者投票:每個 epoch(32 個區塊)的驗證者將對當前和前一個 epoch 的檢查點區塊(Checkpoint Block)進行投票,直到該檢查點區塊獲得 2/3 正在質押 ETH 的投票數;
- 合理檢查點:一旦檢查點區塊達到 2/3 投票閾值,它就會被視為「合理」;
- 絕對多數鏈 :一旦兩個後續檢查點區塊 a 和 b 都合理且 b 已經連接了下一個區塊,則包含在第一個 epoch 之前的 epoch 中的區塊將成為最終區塊,它們不再會受到簡單區塊重組的影響。
對於 L2
L2 建立在以太坊上,所以它們基本上是一樣嗎?
答案可以說是或也不是,在《以太坊的未來,Based Rollups 會有一席之地嗎?》中曾提到 L2 是獨立的區塊鏈,但他們依靠以太坊進行最終性結算。這意味著他們的最終確定性與鏈一樣分層。
有兩種類型:
- 本地最終確定性:這是 L2 本身的最終確定性,並且僅適用於利用有效性證明(又名 ZK Rollups)的 L2。這是因為有效性證明由數學支持,並且當證明本身產生時就意味著它是正確的。因此,一旦 ZK L2 產生其證明,L2 狀態就可以被視為已經最終確定,而不必等待證明發布到以太坊並在以太坊上結算。不過這仍然帶有風險和信任假設,可以根據自己的風險承受能力來判斷是否信任它。
- 全局最終確定性:一旦狀態確定,L2 就確認其本地狀態,併產生證明(欺詐或有效性),將該證明發布到以太坊,然後以太坊確認包含該證明的區塊。即便如此,對於使用 optimistic 的 L2 們來說,反悔交易的機會仍然存在,直到 7 天挑戰期過去。這是為減少證明創建時所需的計算量而做出的權衡。
L2 網絡可以在某些情況下具有本地最終確定性,但在一般情況下,必須等到以太坊完成其發佈的有效性證明(ZK)或欺詐證明的挑戰窗口已經過去(Optimistic rollups)。
對於比特幣 /POW 鏈
在比特幣的 PoW 機制中並沒有最終確定性的說法,因為對於它來說,無論是誰都可以在其上產出最長的鏈併成為主賬本。這意味著,儘管有些不切實際,但只要有足夠的算力就可以重寫比特幣歷史的最後一天、一週、一年。
不過,儘管這種方法在資源和時間方面代價高昂,實際操作起來不太現實,但它確實在不同系統之間形成了一個有意義的區別,並且引發了幾種獨特的 MEV(最大可提取價值)類型,比如「長程攻擊」(Long-Ranged Attacks)和「區塊隱匿」(Block Withholding)。在這些情況下,礦工可以選擇生產並隱藏一個區塊,然後再追加一個後續區塊,或者連續挖出多個區塊,從而創造和捕獲獨特的利潤機會。
為什麼需要最終確定性?
以上,我們知道了如何在 POS 鏈中實現最終確定性,並且這需要較大量的工作。那麼,我們為什麼要這樣做?答案是這麼做確實有一些好處:
- 經濟安全性:系統(以及我們)能夠回顧某個點並高度自信地斷定它不會改變,這給予生態系統參與者對「真實情況」的信心。例如大額轉賬和貸款,一旦用戶確信系統在沒有極端、超出協議干預的情況下無法改變時,這就會讓用戶有信心基於這種真實性參與生態。這也是為什麼跨鏈橋通常會等待一定數量的確認或完全的最終確定性,才會在次級鏈上釋放資金。
- 更快的結算:因為系統中有一個時刻使得狀態被正式定為永久性,這意味著生態系統內的參與方只需要等待這個結算時間即可,而在 PoW(工作量證明)系統中,這個時刻永遠不會到來,完全取決於個人的主觀判斷。
- 減少被攻擊的因素:前文提到了在 PoW 鏈上存在的一些 MEV 機會,POW 鏈只是解決了「無利益風險」(Nothing at stake)問題,即任何對系統採取惡意行為的人可能也會面臨損失。但在 POS 鏈中,如果你是驗證者並試圖改變已經終結的狀態,你就必須違反協議規則,因此將會面臨罰沒質押(slashing)的風險。
結語
本文簡單科普了什麼是最終確定性,只是想讓人們意識到它是一種經常使用但未被深入理解的區塊鏈機制。最終確定性的過程就像系統中的區塊像混凝土一樣變硬,並且最終它們變得堅如磐石。