時間:2023-08-10|瀏覽:245
這個提議在以太坊社區里從2020年6月就開始討論了。其實主要相關于以太坊1.0鏈的狀態,未來以太坊2.0的進程里,有一個進程需要進行以太坊1.0和2.0的合并,以及未來以太坊將面臨的升級任務。
以太坊社區研究這件事的開始是由以太坊ledgerwatch的開發者AlexeyAkhunov提出的,他以COSMOS的問題和方案為基礎提出了重置以太坊的推論,通過這篇文章內容可以初步理解重置以太坊的概念。
CosmosHub的經驗教訓 如果您觀察到CosmosHub如何執行從版本1到版本2,然后從版本2到版本3的升級,您將知道這實際上是通過重新啟動區塊鏈來完成的。升級后,節點運營商必須關閉其節點,然后生成CosmosHub狀態的快照,然后有效地使用該快照任何想要加入Cosmos的人,需要獲取CosmosHub-3的起源,下載CosmosHub-3的所有塊(而不是CosmosHub-1或CosmosHub-2),然后重播它們。
我們可以“重新啟動”以太坊1嗎? 讓我們看一下這種方法在以太坊中的應用假設,我們有一個非常大的區塊鏈(150-160Gb)以及相當大的狀態(40-100Gb,取決于您的存儲方式)。這種“重新啟動”的明顯好處是,新的連接器節點將需要從40Gb的創世紀狀態開始,而不是從價值150Gb的塊開始。但是下載40GbGenesis仍然不是一個很好的體驗。以太坊中的狀態是隱式的,只有其merkle根哈希是顯式的。
現在讓我們假設,我們可以使用這些40Gb隱式存儲的“鏈外”,并且僅將根哈希用作起源。讓我們也從空狀態開始。那我們該如何使事務訪問隱式狀態的一部分?
請記住,即使現在40Gb也是隱式的,獲取它的確切方法是實現細節。您可以運行所有1000萬個塊來計算它,也可以通過快速同步或扭曲同步下載其快照,甚至可以從某人的外部磁盤復制它,然后重新進行驗證。盡管狀態是隱式的,但我們假設區塊構成器(通常是采礦池)可以訪問該隱式狀態,并且始終能夠處理所有事務。我們要刪除的假設是,所有其他驗證節點都可以訪問該隱式狀態,以檢查塊中的事務是否有效,并且塊頭中顯示的狀態根哈希與該塊的執行結果匹配。
是無狀態的以太坊嗎? 如果您完全遵循無狀態以太坊,那么您可能會意識到這正是我們正在嘗試做的事情-保留塊編寫器有權訪問隱式狀態的假設,而刪除所有驗證節點具有相同訪問權的假設。我們建議通過讓區塊打包者有義務在區塊中添加額外的證明來做到這一點,我們稱這些證明為“區塊見證”。
區塊中的證明與交易中的證明? 當人們第一次了解這一點時,他們就認為這些額外的證明確實是由交易發送者提供的,并成為交易有效載荷的一部分,但是我們必須向他們解釋,這不是區塊打包者的工作。但是后來我們發現交易將不得不包含一些額外的證據。也就是說,他們將需要證明發送地址有足夠的ETH來購買該交易的gas,以及該賬戶中所有其他交易的隨機數,但隨機數較低。他們可能還需要證明發送帳戶的隨機數,以便該節點可以找出是否存在隨機數缺口,從而通過一系列不可行的交易來發現潛在的DDOS攻擊,并可以進行更嚴格的檢查。
ReGenesis以提供緩解 關于DSA的擔憂無法輕松地完全解決,但可以充分緩解,以至于用戶很少會看到不便,也永遠不會永遠陷入“無法實現所需狀態轉換”的境地。緩解措施依賴于額外的規則,即隨交易提供的任何證明(根據狀態根進行檢查(但不一定足以使交易成功))都成為隱含狀態的一部分。因此,用戶反復執行事務的嘗試將保持隱式狀態的增長,并最終將成功。任何試圖“誘捕”用戶的攻擊者,都必須想出更復雜的方法來將事務的狀態訪問重定向到隱式狀態之外,最終,攻擊者將失敗。
隨著隱式狀態從無到有(僅在“重新啟動”之后)增長到包含越來越多的活動訪問狀態,事務需要提供的證據將減少。一段時間之后,大多數交易甚至都不需要附加任何證據,只需接觸狀態中一些非常老舊且“塵土飛揚”的部分。
我們可以繼續做下去? 我稱此為“重新啟動”再生,可以定期進行以減輕非采礦節點的負擔。它也代表了無狀態以太坊的戲劇性版本。
重復執行ReGenesis將簡化以太坊客戶端實現的體系結構。它幾乎可以消除對更高級的快照同步算法的需求。如果我們每1m塊(大約6個月)執行一次ReGenesis,則可以在BitTorrent,Swarm,IPFS上使用狀態快照以及區塊鏈文件。我們現在不能這樣做,因為狀態每15秒鐘而不是每6個月更改一次。如果客戶端實現可以應對重播6個月的數據塊,那么我們就不需要非常復雜的快照算法。因此,