在過去幾個月中,無狀態共識團隊專注於一個特定問題:在無狀態 / 狀態過期成為現實的世界中,人們該從何處找到所需的狀態?
這本身就是一個困難的問題,但情況更糟:在一個有集中式建設者和 FOCIL 的世界裡,當一個建設者丟失部分狀態時,然後一個 FOCIL 交易觸發對那個丟失狀態的訪問,會發生什麼?
我們希望以太坊能夠擴展,這意味著不需要的狀態會被移出客戶端的資料庫,以確保持續的性能。在機械上,這會產生一個風險,即客戶端可能缺少根據FOCIL應該持有的數據。
因此,擴展性與審查抵抗是相互矛盾的:需要一種機制來放寬 FOCIL,以便拒絕訪問過期狀態的交易。但我們也不能允許這成為審查交易的藉口。
這個提案來自於與 @soispoke 的討論,內容是如果建設者能夠證明一個 FOCIL 交易觸及的狀態是「足夠舊的」,而且該交易沒有傳遞見證,那麼拒絕該交易是可以的。提供見證的責任在於錢包。
這不是把同樣的問題轉移到錢包上嗎?其實不是,因為: 1. 錢包可以收取「復活費」來發送交易,因此它有動力保持過期狀態。 2. 復活不再是區塊生產的關鍵路徑。
這裡的理由是,如果用戶在過去的 6 年內沒有觸碰過他們的帳戶,那麼他們肯定可以再等幾分鐘來找回他們的帳戶。如果用戶無法等待,那麼他們應該每幾個月花一些 gas 來保持帳戶的 "熱度"。
這樣就不需要快速復活了。我們如何證明一個狀態已經過期?通過在該狀態中添加一個世代計數器。根據@ngweihan_eth的估算,最糟糕的情況下我們將添加1GB的數據,並且能夠刪除80%的狀態!
這能解決所有問題嗎?不,錢包也可能被審查,數據的冗餘性較低,因此可能會丟失。但這意味著 FOCIL 無法用來防止狀態過期。它在某種程度上也解決了狀態過期/無狀態性所帶來的用戶體驗問題。
錢包的數量遠超過建設者,而且他們賺的錢更多。因此,他們更難被審查。如果錢包不想扮演這個角色,那麼就有空間讓國家網絡形成並提供這個。不過,這更具假設性。
請注意,雖然這需要兩個協議變更,但狀態過期本身不需要在協議中。
3.46K