跳至主要内容

頁面上次更新: 2024年2月23日

單一時隙最終確定性

最終確定一個以太坊區塊大約需要 15 分鐘。 然而,我們可以讓以太坊的共識機制更有效率地驗證區塊,明顯縮短最終確定耗費的時間。 使用者可以在同一時隙提交和最終確定區塊,而無需等待 15 分鐘。 這個概念被稱為單一時隙最終確定性 (SSF)

What is finality?

在以太坊基於權益證明的共識機制下,最終確定性指的是在不銷毀至少 33% 質押以太幣總量的情況下,保證不能更改或從區塊鏈中刪除區塊。 這是「加密經濟」上的安全性,因為改變鏈的順序或內容所帶來的極高成本,會讓任何理性的經濟參與者止步。

為什麼要提高最終確定的效率?

目前完成最終確定所需的時間過長。 大部分使用者不想為此等待 15 分鐘;對於可能需要高交易吞吐量的應用程式和交易所來說,必須等待那麼長時間才能確定其交易是永久性的,也很不方便。 區塊的提出和最終確定之間存在延遲也為短期重組帶來了機會,攻擊者可以利用它來審查某些區塊或提取最大可提取價值。 處理分階段升級區塊的機制也相當複雜,並且已經多次修補以消除安全漏洞,使其成為以太坊程式碼庫中更容易出現小錯誤的部分之一。 透過將最終確定耗費的時間縮短到單一時隙,可以消除這些問題。

去中心化/時間/開銷的權衡

最終確定保證不是新區塊的直接屬性;完成新區塊的最終確定需要時間。 這是因為,至少要經過佔網路以太幣質押總量 2/3 的驗證者投票(「證明」)後,區塊才會被視為已最終確定。 網路上的每個驗證節點都必須處理來自其他節點的證明,才有辦法知道某個區塊是否達到 2/3 的閾值。

完成最終確定的時間越短,每個節點所需的算力就必須越強,因為節點必須更快完成證明流程。 此外,網路上存在驗證節點越多,每個區塊要處理的證明也就越多,同時也提高了所需的處理能力。 需要的處理能力越高,可以參與網路的人就越少,因為運行驗證節點所需的硬體會更貴。 增加區塊間的延遲時間會降低節點所需的算力,但也會延長完成最終確定的時間,因為證明流程變得更慢了。

因此,需要妥善權衡開銷(算力)、去中心化(可參與區塊鏈驗證的節點數)和完成最終確定所需的時間。 理想的系統應實現最佳平衡:算力最小化、去中心化程度最大化、完成最終確定耗費的時間最小化。

以太坊目前的共識機制以下列方式平衡了這三個參數:

  • 將最小質押數量設為 32 以太幣。 這為各節點必須處理的驗證者證明數量設定了上限,因此每個節點的計算要求也有上限。
  • 將完成最終確定所需的時間設為約 15 分鐘。 這給了在一般家用電腦上運行的驗證者足夠的時間,可以安全地處理每個區塊的證明。

在目前的共識機制下,如果要縮短完成最終確定的時間,必須減少網路上驗證者的數量或者提高硬體要求。 然而,可以對證明的處理方式進行改進,從而在不新增每個節點之開銷的情況下計算更多的證明。 更高效的處理可讓最終確定在一個時隙中完成,而不用跨越兩個時期。

邁向單一時隙最終確定性的路徑

自以太坊共識機制推出以來,簽名匯總方案 (BLS) 的可擴容性比原先想像的要高得多,同時用戶端處理和驗證簽名的能力也已提高。 事實證明,驗證者在單一時隙中處理大量證明是可行的。 舉例來說,有一百萬個驗證者,每個驗證者在每個時隙投票兩次,且時隙時間調整為 16 秒,為了在一個時隙中處理一百萬個證明,節點需要至少以每秒 125,000 個的速度驗證匯總簽名。 實際上,一般電腦會花費大約 500 奈秒完成一個簽名驗證,表示 125,000 個驗證可以在約 62.5 毫秒內完成,遠低於 1 秒的閾值。

若要進一步提高效率,可以建立超級委員會,如每個時隙隨機選擇 125,000 個驗證者。 只有這些驗證者可以對區塊進行投票,因此也只有這些驗證者可以決定區塊是否完成最終確定。 這是否為一個好主意,取決於社群認為成功攻擊以太坊的成本有多高。 這是因為攻擊者不需要使用質押以太幣總數的 2/3,而是用該超級委員會所質押以太幣的 2/3 來最終確定不誠實的區塊。 這仍然是非常活躍的研究領域,但對於一個大到首先需要超級委員會的驗證者集合來說,攻擊其中一個小組委員會的成本將非常高,這似乎是合理的(範例:使用以太幣計價的攻擊成本會是 2/3 * 125,000 * 32 = ~2.6 million ETH)。 攻擊的成本可以透過增加驗證者集合的大小(如調整驗證者大小,使攻擊成本為 100 萬個以太幣、400 萬個以太幣、1000 萬個以太幣)來調整。 以太坊社群初步投票(opens in a new tab)似乎顯示 100~200 萬個以太幣是可能的攻擊成本,表示每個超級委員會約有 65,536 - 97,152 個驗證者。

然而,真正的瓶頸並不是驗證,對驗證者節點來說,真正有挑戰性的是簽名匯總。 要擴容簽名匯總可能需要提高每個子網中的驗證者數量、增加子網數量或新增額外的匯總層(如實作委員會的委員會)。 解決辦法可能包括允許專門的匯總者 - 類似於如何在提交者-建置者分離 (PBS) 和 Danksharding 下,將區塊建置和卷軸資料產生承諾外包給專門的區塊建置者。

分叉選擇規則在單一時隙最終確定性中扮演什麼角色?

目前的共識機制依賴最終確定小工具(確定是否有 2/3 的驗證者已證明某一條鏈的演算法)與分叉選擇規則(當有多個選項時決定哪一條鍊是正確的演算法)之間的緊密耦合。 分叉選擇演算法僅考慮最後一個完成最終確定的區塊之後的區塊。 在單一時隙最終確定性下,分叉選擇規則不會考慮任何區塊,因為最終確定發生在與提出的區塊相同的時隙中。 這表示在單一時隙最終確定性下,不論分叉選擇演算法最終確定小工具,隨時都將保持活躍。 最終確定小工具會最終確定有 2/3 的驗證者上線且誠實證明的區塊。 若一個區塊無法超過 2/3 的閾值,則分叉選擇規則會啟動,以確定要跟隨哪條鏈。 這也為不活躍洩漏機制帶來了一個機會,可以在 >1/3 的驗證者離線時恢復區塊鏈,儘管仍有些細微差異。

未解決的問題

透過增加每個子網的驗證者數量以擴容匯總的問題是,它會導致對等網路上的負載增加。 新增匯總層的問題是,它對工程師來說非常複雜,而且會增加延遲(即區塊提交者可能需要更長的時間才能收到所有子網匯總者的訊息)。 即使使用 BLS 簽名匯總,也不清楚如何處理網路上的活躍驗證者數量多於每個時隙的實際處理能力的情況。 一種潛在的解決方法是,由於所有驗證者每個時隙都會證明,並且單一時隙最終確定性下沒有委員會,因此可以完全取消 32 個以太幣的有效餘額上限,這表示管理多個驗證者的營運商可以合併他們的質押以太幣並減少運行數量,減少驗證節點需要處理的訊息數量,以說明整個驗證者集合。 這需要大型質押者同意合併其驗證者。 也可以隨時對驗證者的數量或質押的以太幣總量設定固定上限。 然而,這需要一些機制來決定哪些驗證者可以參與,哪些不行,這很可能產生不必要的副作用。

目前進度

單一時隙最終確定性目前處於研究階段, 預計幾年內都不會上線,可能在沃克爾尔樹Danksharding 等其他重大升級發佈之後發佈。

了解更多

這篇文章對你有幫助嗎?