7 月 28 日,Dean Eigenmann 在推特上詢問 Eth2.0 爲何使用 「執行環境方案」,是否真的能解決 「狀態增長」 問題,引發了激烈的辯論。

所謂 「狀態增長」 問題,指的是隨着用戶規模的不斷擴大和合約數量的不斷增加,以太坊全節點需要存儲的狀態數據在不斷上升,對全節點的存儲讀寫性能提出了越來越高的要求。

針對這一問題,人們提出過很多解決方案,比如所謂的 「狀態租金」,以及 「無狀態客戶端」。狀態租金即要求用戶爲自己所存儲的狀態支付價格,「無狀態客戶端」 則是通過改造區塊結構來降低全節點對整個狀態數據的訪問需求。

實質上,這就是問的 Eth2.0 會如何設計狀態存儲方案並保證狀態數據可用性的問題。

在下文中,Vitalik 簡單解釋了他對這一問題的看法。令人疑惑的是,Vitalik 將無狀態客戶端歸爲市場化存儲方案的一種。但在我看來,無狀態客戶端是一種徹底的技術解決方案,就是爲了避免使用在經濟上非常複雜的、需要收費的方案。

原文標題:《觀點 | Vitalik:Eth2 會越來越依賴於輕客戶端》
作者:Vitalik Buterin,以太坊創始人
翻譯:阿劍
來源:以太坊愛好者

Dean Eigenmann:

對我來說,無狀態執行環境怎麼看都不是一個解決狀態增長問題的好辦法(雖然好像也沒有人想好好解決這個問題)。我不認爲這一方案是可行的,而且其激勵機制可能過於複雜、會破壞 Eth2.0 的簡潔性。@wjvill @VitalikButerin 你們的設計理念是什麼呢?

Vitalik Buterin:

我來從我的視角分析一下這場辯論吧。

一貫以來,區塊鏈協議都將存儲空間作爲一項公共資源:所有的全節點都存儲所有的內容;任何人只要使用了存儲空間,就會把成本施加給所有其他用戶。

這樣的使用,應該也要付錢纔對。

但若要付費,就不得不面對如下難題:很難確定到底怎麼給存儲空間定價、怎麼確定目標存儲空間大小、存儲空間應是暫時性使用的還是永久可用、租金如何繳納,等等。

另一方面,還有一種更加市場化的方案來安排存儲資源:對於任意狀態數據來說,都必有某些用戶可以從狀態數據可用性中獲益,而且其他用戶也會願意存儲這些數據。因此,我們可以讓用戶與存儲方直接締約來保證狀態數據可用性。

基於市場的方案當然承認這樣的可能性:如果用戶疏忽大意,一些狀態數據會 「消失」(即不可用)。所有基於市場的技術都會遇上這個問題。

因此,就有一種思想認爲:沒錯,我們當然應該讓私人締約成爲主導,但事關用戶體驗的便利性,協議確實應該保證狀態可用性和存儲空間供應。

「無狀態客戶端方案」 完全屬於 「市場化存儲空間」 學派。Vlad Zamfir 則完全屬於另一個陣營。

市場化存儲空間的一個好處是,你可以根據狀態可用性保證服務的不同質量支付不同的價格。當然,另一個學派會說,要是讓用戶知道他們的狀態數據可能有一天會用不了,dApp 開發者面臨的複雜性要上升好幾倍。

話雖如此,還是有一些折衷之道。舉個例子,在 「執行環境方案」 中,可以建立一個執行環境、要求區塊生產者必須在區塊中包含使用時間不到一年的隨機存儲祕鑰。這樣就給了狀態存儲空間一年的保證。

不過,還是有一些開放性問題要留給實驗性的解決方案。富狀態性(Statefulness)是有不同層級的,例如:如果你只想保存一個 「靜態見證(static witness)」 屬性,你可以僅保存已用過的收據(receipts)的 ID 字段;比起全狀態來說,這是非常輕量的狀態了。

也就是說,情形正變得越來越明朗:Eth2 將越來越依賴於 輕客戶端 <-> 服務器市場,哪怕只是出於讓用戶可以從自己沒有同步的 1000 多個分片中獲得數據的目的。狀態供應是另一項義務,也可以放進來。

而且,在協議層還有一些別的方法可以用來強化狀態存儲保證,比如給主要類型的收據加入爲期一年的託管證明(proof of custody)(如此執行環境可以恢復出整棵狀態樹)。

來源鏈接:twitter.com