回顧V神Rollups神作,詳解以太坊為何需要二層擴展方案?
原文作者:Vitalik
原文作者:TinTinLand
Rollups 在以太坊社區中風靡一時,有望在未來成為以太坊的關鍵可擴展性解決方案。但是這項技術到底是什麼,從中值得期待什麼?又將如何使用它?本文在分析以太坊幾個重要擴展方案的基礎上,試圖回答Rollups 相關的一些關鍵問題。
一級標題
一級標題
第二種,可以更改使用區塊鏈的方式。用戶不是將所有活動直接放在區塊鏈上,而是在“第2層”協議中,在鏈下執行大部分活動。鏈上有一個智能合約,它只有兩個任務:處理存款和取款,以及驗證鏈下發生的一切都遵循規則的證據。有多種方法可以進行這些證明,但它們都具有一個共同的特性,即在鏈上驗證證明比在鏈下進行原始計算要便宜得多。
一級標題
L2 層方案有狀態通道、Plasma 和Rollups 這三種主要類型。它們屬於不同範式,具有不同的優缺點,下面將分別敘述這三種不同方案的運作方式。
二級標題
二級標題
二級標題
狀態通道如何運作
假設一個具體案例,Alice 為Bob 提供了一個網絡連接,Bob 以每兆0.001美元的價格支付費用。他們的交易不是每一次都要付款,而是使用以下L2方案。
另請參閱:https://www.jeffcoleman.ca/state-channels 和statechannels.org
二級標題
二級標題
二級標題
Plasma 如何運作
為了存入資產,用戶將其發送到管理Plasma 鏈的智能合約。 Plasma 鍊為該資產分配一個新的唯一ID(例如537)。每個Plasma 鏈都有一個運算符(這可能是一個集中式的參與者,或者是一個多重簽名,或者更複雜的東西,如PoS 或DPoS)。每個間隔(可能是15秒,或一小時,或介於兩者之間的任何時間),操作員都會生成一個“ batch ”,其中包含他們從鏈下收到的所有Plasma 交易。它們生成一個Merkle 樹,其中在樹中的每個索引處,如果存在這樣的交易,則有一個事務轉移資產ID,否則該葉子為零。
另請參閱: http://plasma.io/plasma-deprecated.pdf
二級標題
二級標題
二級標題
Rollups 如何運作
關於Rollups
值得注意的是,將數據“放在IPFS 上”是行不通的,因為IPFS 沒有就任何給定的數據是否可用,達成共識,數據必須在區塊鏈上。有了將數據放在鏈上這一共識,Rollups 允許任何人根據需要在本地處理任何操作,允許他們檢測欺詐、發起提款或親自開始生成交易batch 。缺乏數據可用性問題意味著惡意或離線操作員可以造成的傷害更小(如他們不能造成1週的延遲),Rollups 更容易推理,為有權發布batch 的人開闢了更大的使用空間。最重要的是,缺乏數據可用性問題意味著不再需要將資產映射到所有者,這使得以太坊社區對Rollups 擴展方案十分感興趣,Rollups是完全通用的,甚至可以在Rollups 中運行EVM, 允許現有的以太坊應用程序遷移到Rollups,幾乎不需要編寫任何新代碼。
Rollups 工作原理

另請參閱:https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/

Rollups 工作原理
如何知道batch 中的後狀態根源是正確的?如果有人可以提交一個具有任何post-state root 的batch 而不會產生任何後果,那麼他們可以將Rollups 中的所有硬幣轉移給自己。這個問題很關鍵,對此產生了兩個截然不同的解決方案系列,導致了兩種不同的Rollups。
一級標題
一級標題
一級標題
Optimistic Rollups 與ZK Rollups
這兩種類型的Rollups 分別是:

總的來說,在短期內,Optimistic的Rollups 可能會在通用EVM 計算中勝出,而ZK Rollups 可能會在簡單的支付、交換和其他特定於應用程序的用例中勝出。
二級標題
二級標題

二級標題
可以確定的是,如果batch 構造不正確,並且所有以前的batch 都正確構造,則可能會創建欺詐證明,表明該batch 構造不正確。請注意有關以前batch 的聲明:如果有多個無效batch 發佈到Rollups 中,則最好嘗試證明最早的batch 無效。當然,如果batch 構建正確,則永遠不可能創建欺詐證明,證明該batch 無效。
二級標題
二級標題

二級標題
數據壓縮原理
一個簡單的以太坊交易(發送ETH)需要大約110個字節。但是,Rollups 中的ETH 傳輸僅佔用約12個字節:
其中一部分只是高級編碼:以太坊的RLP 在每個值的長度上浪費了1個字節。但是也包含了一定的壓縮技巧:
Nonce:此參數的目的是防止重放攻擊。如果帳戶的當前Nonce 為5,則該帳戶的下一筆交易必須具有Nonce 5,一旦處理了交易,帳戶中的隨機數將增加到6,因此無法再次處理該交易。在Rollups 中,我們可以完全省略隨機數,因為我們只是從前狀態中恢復隨機數;如果有人嘗試使用較早的隨機數重放交易,則簽名將無法驗證,因為簽名將針對包含更高Nonce 的數據進行檢查。
Gasprice:我們允許用戶以固定範圍的Gasprice 付款,如2的16次冪。或者可以在每個batch 中都有一個固定的費用,甚至將gas 支付完全轉移到Rollups 協議之外,並讓交易參與者通過狀態通道向batch 創建者支付費用。
Gas:我們同樣可以將總Gas 限制為2的多次冪。或者在batch 級別設置Gas 限制。
To:我們可以用index 替換20字節的地址。如果一個地址是添加到樹中的第4527個地址,我們只使用index 4527來引用它,將向狀態添加一個子樹(subtree),以存儲index到地址。
這些壓縮技巧是Rollups 可延展性的關鍵。如果沒有它們,Rollups 可能只是基本鏈可擴展性的10倍左右(儘管有一些特定的計算密集型應用程序,即使是簡單的Rollups 也很強大),而進行數據壓縮後,幾乎所有應用的擴容性都可以實現100 倍以上的提升。
二級標題
二級標題
二級標題
誰可以提交batch ?
對於誰可以在Optimistic或ZKRollups 中提交batch ,有許多說法。一般來說,每個人都同意,為了能夠提交batch ,用戶必須支付大筆存款;如果該用戶曾經提交欺詐性batch (例如具有無效的狀態根),則該存款將被部分銷毀,部分作為獎勵給予欺詐證明者。但除此之外,還有很多可能性:
完全無政府狀態:任何人都可以隨時提交batch 。這是最簡單的方法,但它有一些重要的缺點。一旦存在多個參與者,同時生成並嘗試並行提交batch,但最終只有一個batch 能被成功打包。這導致在生成證明方面浪費大量精力,以及將batch 發佈到鏈中浪費Gas。
DPoS 投票:序列者在拍賣中被選中,但如果他們表現不佳,代幣持有者可以投票將他們踢出並舉行新的拍賣。
二級標題
二級標題
二級標題
拆分批處理和狀態根供應
總而言之,這是一個相當複雜的技術,試圖在效率,簡單性,抗審查性和其他目標的複雜權衡之間取得平衡。現在說這些想法的哪種組合效果最好還為時過早。時間會證明一切。
一級標題
一級標題
以下是其他一些示例用例的圖表:

圖片描述
圖片描述
現在,如果我們想超過約1000-4000 TPS 該怎麼辦?這就是Eth2 數據分片的用武之地。分片提案每12秒提供16 MB 的空間,可以容納任何數據,且確保對該數據的可用性。此數據空間如果由Rollups 使用,每秒約1398kb空間比現有以太坊鏈提高了23倍,從長遠來看,數據容量預計將進一步增長。因此,使用Eth2 分片數據的Rollups 可以共同處理多達約10萬交易,未來甚至更多。
一級標題
一級標題
一級標題
Rollups 有哪些尚未完全解決的挑戰?
雖然Rollups 的基本概念現在已經很好理解,它們是可行和安全的,並且已經有多個Rollups 部署到主網中,但仍有許多Rollups 設計領域尚未得到充分探索,將以太坊生態系統的大部分內容完全引入Rollups 以方面存在很多挑戰。一些關鍵問題包括:
用戶和生態入駐- 使用Rollups 項目不多、用戶不熟悉,很少有錢包集成Rollups。商家和慈善機構尚未支持這種支付方式。
跨Rollups 交易- 高效地將資產和數據從一個Rollups 移動到另一個Rollups,而無須產生經由L1的費用。
審計激勵- 如何最大程度提高至少有一個誠實節點完整驗證一個Optimistic Rollup 的機率,使問題出現時他們會廣播欺詐證明?對於小規模Rollup (高至每秒幾百筆交易),這個問題不大,因為對礦工來說只是舉手之勞,但對於大規模的Rollup 來說,還需要更充分的理由以說服礦工去做驗證。
一級標題
一級標題
結論
結論


