本文描述了實現此解決方案的實用路徑。
Vitalik buterin,以太坊聯合創始人
編輯:南風
對于以太坊而言,匯總是唯一在短期、中期和長期內不需要信任的可擴展解決方案。以太坊L1的交易費幾個月來一直很高?,F在更迫切的是采取一切必要的行動,幫助促進整個生態系統向匯總系統的轉移。Rollups大大降低了許多以太坊用戶的成本:l2fees.info網站經常顯示優化和arbitrum網絡的成本比以太坊基礎層本身低3-8倍,而ZK Rollups具有更好的數據壓縮能力,可以避免包含簽名,所以它的成本比以太坊基礎層低40-100倍。
然而,對于許多用戶來說,即使這些成本也太高了。長期以來,數據分片一直被認為是解決當前匯總形式長期缺點的解決方案。數據分片預計將為以太坊鏈上的匯總增加約1-2mb/s的專用數據空間。本文描述了一種實現此解決方案的實用路徑,它可以盡快解鎖用于匯總的數據空間,并隨著時間的推移增加更多的額外空間和安全性。
步驟1:擴展事務調用數據
當前,現有匯總使用事務調用數據。因此,如果我們希望在短期內增加匯總容量并降低成本,而不需要每個匯總團隊進行任何額外工作,那么我們應該降低交易數據的天然氣成本。當前的平均數據塊大小遠沒有威脅以太坊網絡的穩定性,因此可以安全地實現這一點,盡管可能需要一些額外的邏輯來防止非常不安全的邊緣條件。
參見方案eip-4488,或另一個(更簡單但更溫和的)方案eip-4490。
EIp-4488:
https://github.com/ethereum/EIps/pull/4488
EIp-4490:
https://github.com/ethereum/EIps/pull/4490
EIp 4488應該能夠將每個插槽可用于匯總的數據空間增加到理論上最大約1MB,并將匯總成本降低約5倍。這可以比以下步驟更快地實現。
第二步:多少件
與此同時,我們可以開始做一些工作,推出“合適”的細分市場。以完整的(功能性的)形式實現碎片化需要很長時間,但我們可以做的是一步一步地實現它,并從每一步中受益。首先,實現片段規范的“業務邏輯”是很自然的,但是首先啟動的片段數量需要非常少(例如4個片段),以避免片段網絡周圍的大多數困難。每個片段將在其自己的子網中廣播。默認情況下,驗證者將信任委員會,但如果他們愿意,他們可以選擇在每個子網中,但只有當他們看到信標塊確認的任何片段塊的所有數據時,他們才會收到信標塊。
片段規范本身并不特別困難;其模板代碼更改的規模與最近發布的Altair hard Diffraction相似(Altair的信標更改規范文件為728行,分段信標更改規范文件為888行)。因此,可以合理預期,它可以在與Altair的實現和部署類似的時間框架內實現。
為了使分片數據被匯總實際使用,匯總將需要能夠證明分片數據。有兩種選擇:
添加beaconblockroot操作代碼;匯總將添加代碼,以驗證源于歷史信標鏈的塊根的Merkle證明;
添加面向未來的狀態和歷史訪問預編譯,以便將來當提交方案更改時,匯總不需要更改其代碼。
這將使每個插槽的匯總數據空間增加到大約2MB(每個扇區250KB*4個扇區,加上上面步驟1中擴展的calldata)。
第三步:n件,由委員會保護
將活動磁貼的數量從4增加到64。此時,碎片數據將進入子網,因此p2p層必須足夠強大,以便將其劃分為更多子網。數據可用性的安全性將基于大多數(核查人員)的誠實假設,并依賴于委員會的安全性。
這將使每個插槽的匯總數據空間增加到約16MB(每個片250KB*64個片);我們假設此時匯總將從以太坊執行鏈遷移。
步驟4:數據可用性采樣(DAS)
添加數據可用性采樣(DAS)以確保更高級別的安全性,這樣即使在大多數(驗證者)不誠實攻擊的情況下,用戶也可以得到保護。數據可用性采樣可以分階段進行:首先,允許網絡以非綁定方式對其進行測試,然后將其視為接收信標塊的必要條件,甚至可以先在一些客戶端上進行。
一旦完全引入數據可用性采樣,碎片的傳播就完成了。
基于切片的最優匯總和ZK匯總
當前以太坊與實施分片后的以太坊之間的一個主要區別是,在分片世界中,匯總數據實際上不能成為向智能合約提交匯總塊的事務的一部分。相反,匯總數據的發布和匯總塊的提交必須分開:首先,數據發布將把數據放在鏈上(即放在片段鏈中),然后塊提交將提交塊頭和指向底層數據的證書。
Optimization和arbitrum在提交匯總塊時使用了兩步設計,因此這兩種方法的代碼都會有一個小小的變化。
對于ZK匯總,事情有點棘手,因為提交事務需要數據直接操作的證明。他們可以通過zk snark證明切片中的數據與信標鏈上的承諾相匹配,但此操作非常昂貴。幸運的是,還有更便宜的選擇。
如果zk snark是基于bls12-381的plonk證明,那么它們可以簡單地將片段數據提交直接打包為輸入。Bls12-381片段數據承諾是一個kzg承諾,與plonk中的承諾類型相同,因此它可以作為公共輸入直接傳遞給證書。
如果zk snark使用一些不同的機制(甚至bls12-381 plonk具有更大的信任設置),它可以包括自己的數據承諾,并使用等價性證明來驗證證明中的承諾和信標鏈中的承諾是對相同數據的承諾。
誰將在一個支離破碎的世界中存儲歷史數據?
增加數據空間的一個必要條件是刪除以太坊核心協議同意的所有數據的屬性。因為數據量太大了。例如:
理論上,eip-4488帶來的最大鏈大小約為每12秒1262861字節,即每年約3.0 TB,但事實上,更可能是每年約250-1000 GB,尤其是在開始時。
4個片(每個插槽1 MB)每年將增加約2.5 TB的容量。
64片(每個插槽16 MB)每年將帶來大約40 TB的存儲容量。
大多數用戶的硬盤容量在256 GB到2 TB之間,而1的TB似乎在中間。下圖顯示了一組區塊鏈研究人員對計算機硬盤空間進行的內部調查的結果:
這意味著用戶現在可以運行節點,但是如果該路線圖的某一部分沒有變更而實施的話,用戶就無法執行節點。當然,也可以使用更大的驅動器,但是用戶需要努力購買它們。由此,執行節點的復雜度大幅增加。當前的主要解決方案是EIp-4444,該建議消除了節點運營商負責存儲一年以上的區塊或收據。在片段的情況下,這一年的時間很可能進一步縮短,并且節點僅負責他們積極參與的子網絡上的片段。
如果以太網核心協議沒有存儲這些數據,那么誰保存呢?
首先,要記住即使有切片,數據量也不會太大。是的,每年40TB確實超過了執行“默認”消費硬件的個人能力(實際上每年1TB也是如此)。但是,對于想考慮投入幾個資源并存儲這些數據的方法的人來說,這是在可接受的范圍內。目前,48TB的HDD售價1729美元,14TB售價約420美元。因為可以得到質押獎勵金,所以實行了一個32ETH驗證槽的人,有想在片段實施后支付并存儲整個連鎖。因此,實際上,“沒有人會為了完全丟失這些數據而保存切片的歷史數據”這種情況是不可能發生的。
那么,誰來保存這些數據呢?我的想法如下。
個人和機構的志愿者;
塊瀏覽器(etherchain.org、etherscan.io、amberdata.io等)可以向用戶提供數據?模式,因此存儲所有數據。
Rollup DAOs向參加者指定支付費用,存儲并提供與Rollup相關的歷史數據。
歷史數據可以由種子(torents)上傳和共享。
客戶端可以任意選擇隨機存儲塊鏈的0.05%的歷史數據(僅當許多客戶端同時離線時,使用刪除碼)。
portal Network內的客戶端可以隨機存儲塊鏈歷史數據的一部分。portal Network將數據請求自動引導到存儲數據的節點。
可以通過協議激發歷史數據的存儲。
像The Graph這樣的協議可以創建一個激勵市場,客戶向服務器支付費用獲取歷史數據,并獲得證明其準確性的默克爾證書。由此,運行存儲歷史數據的服務器,并鼓勵根據需要提供這些數據的人和機構。
其中一些解決方案(個人和機構志愿者、區塊瀏覽器)已經可用。當前的p2p種子場景是一個主要由志愿者驅動并存儲大量內容的生態系統的很好例子。其他基于協議的解決方案更強大,因為它們提供了激勵,但它們的開發可能需要更長的時間。從長遠來看,通過這些L2協議訪問歷史數據可能比通過當前的以太坊協議更有效。
發表評論