BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

“無狀態性”的重要性

ECN以太坊中国
特邀专栏作者
本文約4676字,閱讀全文需要約7分鐘
為什麼無狀態性如此重要?
AI總結
展開
為什麼無狀態性如此重要?

來源| dankradfeist.de

作者| Dankred Feist

推荐一篇文章:


推荐一篇文章:《觀點| 狀態膨脹和無狀態性》一級標題


一級標題


目前出現的解決方案主要圍繞兩個方向:



➤ 狀態租金:為了使狀態保持在活動內存中,持續進行付費


➤ 無狀態性:區塊保留所有的證明(witness),例如默克爾證明,因此在驗證區塊有效性的時候不再需要狀態


在“無狀態性”方向中,又有不同的概念值得探索:


➤ 部分無狀態性:只需要對某些(陳舊) 狀態提供見證,減少驗證區塊所需的狀態數量


➤ 弱無狀態性:驗證區塊無需狀態,但是提議區塊需要完整狀態


一級標題


一級標題


理解Eth2 驗證者



Eth1 在過去一直被詬病其對硬件的要求非常高,雖然這些斥責並不都是公平的(經過挑選後的中等消費級硬件也可以運行Eth1 節點),但我們需要重視這些事實,尤其是希望在不損害去中心化的前提下對以太坊進行擴容。對於Eth2 來說,我們樹立了非常宏大的目標:能夠在低成本的硬件上運行Eth2 節點和驗證者,甚至是樹莓派或智能手機。


這條通向擴容性的路徑並不輕鬆。其他項目(例如EOS 和Solana) 則需要更高性能的硬件和網絡連接。但我認為要保障去中心化,降低共識節點以及P2P 節點的門檻是必要的。


在Eth2 中,共識節點是驗證者。 Eth1 和Eth2 的共識節點存在非常重要的區別:


➤ Eth1 的共識節點是礦工。要為區塊鏈“投票”,你必須要生產區塊。也就是說,共識節點和區塊生產者是不可分割的。


➤ Eth2 或是當前的第一個階段(信標鏈) 中,提議區塊和形成共識是兩種不同的機制:每12 秒由一個隨機擇出的驗證者來提議區塊,而共識是通過證明(attestation) 形成的,每個驗證者在每個epoch (每6.4 分鐘) 對區塊鏈進行投票。現在每幾分鐘都有超過十萬的驗證者在投票形成共識。區塊生產者對共識(幾乎[1])沒有影響,他們只能對區塊內包含的內容進行選擇[2]。


解除區塊提議者與共識的關聯開啟了一個重要的設計空間。信標鏈從驗證者集中隨機選擇區塊提議者,而對於分片鏈,則不必如此:


➤ 對於分片(尤其是Eth1 執行分片) 來說一種有趣的可能性在於,驗證者能夠進入生產區塊的列表。這類驗證者可能需要更高性能的硬件,可能也需要具有“完整”狀態。


一級標題


一級標題


提議者成本較高可以理解



還有一點重要的反對觀點可能是,如果區塊提議的成本過高,那麼去中心化也會受到損害,即使我們降低了驗證者和P2P 節點的門檻。但事情並非如此,“提議者”和“驗證者”之間存在重要的差異:


➤ 對於驗證者,我們需要絕大多數是誠實的,即所質押的ETH 中需要超過2/3。 P2P 節點的情況可能類似,但是就我所知並不需要一定比例的P2P 節點必須是誠實的,但是為了確保總是能收到有效的鏈,每個人都需要連接至少一個誠實的P2P 節點,這個比例大概是5%,在實踐中可能更高。


➤ 對於提議者,我們對於其是否誠實的要求低得多,與Eth1 不同,Eth2 的提議者不審查過往的區塊(因為他們不投票),只能決定他們所提議的區塊的內容。假設你的交易不是特別緊迫,如果95% 的提議者嘗試對其進行審查,那麼第20 個提議者仍然可以將其安全打包(但是低延遲的抗審查制度是另一回事,在實踐中更難實現)。


這也是為什麼相較驗證者,我並不那麼擔心提高提議者的硬件要求。如果我們保持正常驗證者的要求較低,那麼提議者需要128GB RAM 的PC 來存儲大型狀態也沒有問題。我擔心的是,如果一台能夠滿足這些要求的PC 價格為10 萬美元,但如果我們將其控制在5 千美元以下,一旦發現審查,如果社區沒有迅速引入更多提議者來做出反應是不合理的。


一級標題


一級標題


實現無狀態的裨益



本文至此我還沒有論證過為什麼無狀態性如此有力,在可執行信標鏈提案中,將狀態從10 GB 縮減到1 GB 或100 MB 似乎能為驗證者節省許多開銷,那我們為什麼還需要無狀態性?


如果我們順勢走下去,可執行的Eth1 區塊可以成為一個分片。而在可執行信標鏈的提案中,所有的驗證者都必須保持運行完整的Eth1 執行(否則會面臨簽署無效區塊的風險)。而分片不應具備這一屬性,分片中籤署一個區塊只需要一個委員會(因此是驗證者中的1/1024),並且其他人不需要信任該委員會的絕大部分驗證者是誠實的[3],只要有一個誠實驗證者在委員會嘗試作惡時吹哨。而這只有在Eth1 具備無狀態性時才有可能:


➤ 我們希望所有驗證者的負載大致相等,並且沒有極端的峰值。因此長時間(例如一個小時或一天) 派遣某個驗證者成為Eth1 委員會成員,實際上是很糟糕的:這意味著就帶寬要求而言,驗證者的規模仍然必須能夠與完整的Eth1 鏈保持一致。此外,如果長時間使用同樣的委員會(例如通過賄賂攻擊),委員會變得更具攻擊性


一級標題


一級標題


緩存不總是挺好的嗎?



那麼如果我們進入完全無狀態卻引入了10 MB 的緩存呢?或是1 MB?即使只想檢查一個區塊,也可以輕鬆下載,因為你已被分配到一個委員會,或者作為欺詐證明收到了該緩存?


你可以執行此操作,但是我們可以明顯看到,如果大多數驗證者僅驗證單個區塊,則不太可能是最佳的。假設我們的目標是1 MB 的區塊,此外我們還有1 MB 的緩存,這意味著每當驗證者想要驗證一個區塊時,他們都必須下載2 MB 的數據(包括區塊和緩存) 。他們必須每次都下載緩存,除非他們下載所有區塊以保持最新的緩存,這正是我們要避免的事情。


一級標題


一級標題


二進制樹還是verkle trie?



我認為總的來說,力爭完整(弱) 無狀態性的聲音壓倒了部分無狀態性或狀態租金方案。這對用戶的影響會更小:他們根本不必考慮狀態。他們唯一要做的就是添加見證(以便P2P 網絡能夠驗證有效交易)。創建見證的成本非常低,以至於可以想像到會有許多相關服務。實際上大多數錢包已經依賴外部服務,不需要用戶運行自己的節點。獲取見證也只是一個微小的功能。 [4]


部分無狀態性或狀態租金,在完全弱無狀態性的道路中增加了極大的用戶體驗障礙。但考慮到僅使用二進制默克爾樹嘗試實現無狀態是非常困難的,並且要允許默克爾樹證明需要對gas 進行改動,而這會損害用戶體驗。


因此在我看來,我們現在應該往verkle tries 的方向努力。這使得我們可以具有小於1 MB 的可管理的證明,並且只有由EIP-2929 提出的適度gas 費用以及針對代碼塊收費。其缺點很容易得到控制,對用戶幾乎沒有實際影響:


➤ 開發者需要學習新的密碼學原語


➤ 添加更多非抗後量子密碼學。第二點聽起來很可怕,但是我們已經在Eth2 中引入了KZG 承諾以進行數據可用性採樣,並且無論如何我們都在使用基於橢圓曲線的簽名。需要對合併的Eth1 和Eth2 鏈進行一些後量子升級,目前沒有可實踐的後量子替代方案,因此我們不能停止前進。就採用而言,未來5年極為重要。擺在前面的道路就是竭盡所能,並在5-10 年內,當STARK 足夠強大時,我們將對所有原語進行完全的後量子升級。


總的來說,verkle tries 可以解決接下來五年的狀態問題。現在我們將能夠實現完全(弱) 無狀態性,而對用戶和智能合約開發者幾乎沒有影響。我們將能夠提升gas 上限(因為驗證變得更快) 和更多的執行分片,所有這些幾乎都不會對安全性和去中心化產生影響。


最難啃的硬骨頭是讓每個人都理解KZG 承諾和verkle tries 的工作方式。由於Eth2 將使用KZG 承諾來保證數據的可用性,大多數以太坊開發者都需要進行相關工作。



[1] 幾乎沒有影響,因為現在進行了細微優化以提高對某些平衡攻擊(balance attack) 的抵禦能力,平衡攻擊確實使提議者能對分叉選擇產生短期影響。


[2] 確切地說,如果區塊生產者開始勾結並審查大量證明,可能會產生影響,但是單個區塊的生產者對共識造成的影響完全可以忽略不計。


[3] 不誠實的委員會作惡可能會影響整個網絡,並導致嚴重的延遲,但是引入無法無效/不可用的區塊


[4] 想要自己運行節點的用戶仍讓能夠借助外部服務來獲取見證。這種操作是免信任的,因為在知道最近的狀態根的前提下,見證就是它們自身的證明



ECN的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及ETH中文站。若需長期轉載,請聯繫eth@ecn.co進行授權。

ECN的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及ETH中文站。若需長期轉載,請聯繫eth@ecn.co進行授權。


ECN的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及ETH中文站。若需長期轉載,請聯繫eth@ecn.co進行授權。


公眾號: ETH 中文站

網站:ethereum.cm

ETH
歡迎加入Odaily官方社群