自上一版無狀態以太坊的全面“路線圖” 發布以來已經過去了一段時間,現在很多東西都發生了改變。似乎又到了需要“全都寫下來” 的時候了。

我們沒有在做什麼

我們沒有在解決無狀態挖礦的問題。

我們沒有在解決 DSA(動態狀態訪問)問題,也不准備出於執行的目的為事務附加見證數據(witness)。

關鍵路徑

很難確定我們的目標到底是什麼。但是我認為,只要我們著眼於需求,自然會出現一個目標梯度。

通過區塊見證實現無狀態驗證者

我們希望/需要驗證者無需保存完整的狀態就能驗證區塊。一種提議是在協議中要求為區塊附加區塊見證,以便客戶端使用區塊見證數據來驗證執行區塊得到的狀態根。

為此,我們需要:

A:大大縮小見證(就當前的十六進制帕特里夏樹而言,見證數據大小最高可達100 MB)

B:讓驗證者可以連同區塊一起獲得可靠的見證

我們使用Verkle Trie 來解決需求A ,將證明開支降至恆定大小(從理論上來說,根據當前1250 萬的gas 上限來估算,證明大小的上限約為800k,平均約為200k)。另請參見"為以太坊狀態應用verkle trie 的提議"。還值得一提的是,統一verkle trie 需要修改 SELFDESTRUCT 操作碼的行為,或完全刪除該操作碼。

我們通過見證消息成為協議運行的一部分(很可能是將其作為區塊頭中的訪問列表)來解決需求B,以便收到該證明的人確認它是對應區塊的正確證明。關於生成並通過gossip 廣播見證的責任歸屬尚未確定。

延伸閱讀:為什麼無狀態性對於ETH 2.0 來說如此重要?

通過狀態保質期(State Expiry)來抑制狀態增長

區塊提議者(或礦工)依然需要生成區塊。我們不建議解決無狀態區塊挖礦的問題,因為這會將我們的目標變成減輕日益增長的狀態維護負擔。

我們的目標是對總體狀態規模施以經濟限制。我們計劃通過“狀態保質期”來實現該目標,詳情請參閱:Resurrection-conflict-minimized state bounding, take 2 - #17 by vbuterin。

大致上講,所謂的狀態保質期,就是讓狀態在一段時間(大約12 個月)後“失去活性”。失活狀態不再由協議管理。任何與失活狀態的交互都需要附帶一個證明,讓失活狀態重新恢復活性。該方案不會將任何復雜的“租賃” 機制引入EVM,但它實際上還是強制實現了“狀態租賃”。其結果就是為總體狀態規模設置了嚴格的上限。

次關鍵路徑

通過“門戶客戶端”實現無狀態客戶端架構

延伸閱讀:Complete revamp of the "Stateless Ethereum" roadmap - #2 by dankrad

當前的DevP2P 以太坊協議不能很好地支持無狀態客戶端。即使為支持無狀態客戶端而修改協議,這也並非易事。也就是說,僅依靠“關鍵路徑”,我們就可以構建出適用於Eth1+Eth2 合併基礎設施的客戶端,但是這些客戶端對於大多數為了使用JSON-RPC API 而使用客戶端人來說沒什麼用。

另一項正在開展的計劃是構建支持廣泛部署超輕量級“門戶客戶端” 所必需的網絡基礎設施。所謂的“門戶” ,就是指客戶端可以查看網絡和相關數據,但是不必通過任何有意義的方式參與協議。

“門戶客戶端” 將參與專為滿足以下需求而設計的專用型點對點網絡:

1. 按需檢索任意狀態。

State Network DHT - Development Update #2 - #5 by pipermerriam

2. 按需檢索任意區塊鏈歷史。

Alexandria - HackMD(已經過時,但是從概念上講具有代表性)

3. 參與交易gossip 廣播,但是無需訪問狀態。

Scalable Transaction Gossip - #3 by pipermerriam

4. 參與區塊gossip 廣播,但是無需滿足DevP2P 以太坊協議的隱形要求。

任何想要吸引JSON-RPC API 用戶的“無狀態客戶端” 都會參與這類網絡。我們希望現有客戶端會利用這類網絡來讓自己變得更加輕量級。

這不是實現Eth1 + Eth2 合併這一主要目標的關鍵路徑,但它有助於將無狀態客戶端擴展至除驗證者以外的用例。

Regenesis(或許不會清理狀態)

過去,“Regenesis” 有兩個不同的涵義:

使用一個新的創世塊來重新啟動區塊鏈,並就創世狀態達成共識。讓狀態“失去活性”,必須提供證明來讓狀態“恢復活性”。

活性/失活機制現已歸類為“狀態有效期” 方案。

使用新的創世塊來重啟區塊鏈有很多好處。其中,最主要的一點是,將所有客戶端從歷史分叉規則所帶來的隱形需求中解放出來,讓客戶端變得更加簡單。這也可以幫助節點縮短獲得完整狀態副本所需的同步時間。

被移出關鍵路徑的內容

Binary Trie

原本是用來減少見證大小的主要機制,現已被Verkle Trie 替代。

參考閱讀:EIP-3102: Binary trie structure

代碼默克爾化

原本是用來減少見證大小的次要機制,現已被Verkle Trie 替代。

參考閱讀:EIP-2926: Chunk-Based Code Merkleization

(完)

(文內有許多超鏈接,可點擊左下”閱讀原文“ 從EthFans 網站上獲取)

原文鏈接:

https://ethresear.ch/t/an-updated-roadmap-for-stateless-ethereum/9046

作者: pipermerriam

翻譯&校對:

閔敏&阿劍