區塊鏈V神:以太坊2.0演算法Rollup的不完整指南

banq發表於2021-01-05

Rollup在以太坊社群中風靡一時,並有望在可預見的未來成為以太坊的關鍵可擴充套件性解決方案。但是,這項技術究竟是什麼?您能從中得到什麼期望?您將如何使用它?這篇文章將嘗試回答其中一些關鍵問題。(banq注:實際是一種分散式事務機制的解決方案。)

 

背景:什麼是第一層和第二層縮放?

擴充套件區塊鏈生態系統有兩種方法:

第一種方法:讓區塊鏈自身具有更高的交易能力。這種技術的主要挑戰在於,實現“更大區塊”的區塊鏈本質上更難以驗證,並且可能變得更加集中。為了避免此類風險,開發人員可以提高客戶端軟體的效率,或者更可持續地使用諸如分片的技術,以使構建和驗證鏈的工作分散在多個節點上。目前,被稱為“ eth2”正在實現以太坊的升級。

第二種方法:更改使用區塊鏈的方式。使用者不是將所有交易活動直接放在區塊鏈上,而是通過“第2層”協議在鏈下執行大量交易細節。鏈上有一個智慧合約,它只有兩個任務:處理充值和提款,以及核實證明鏈下發生的所有事情都遵循規則。進行這種證明的方法有多種,但是它們都具有以下特性:在鏈上驗證證明比在鏈上進行原始計算便宜得多。

 

State channels vs plasma vs rollups 三者比較

第2層縮放的三種主要型別是 state channelsPlasma 和rollups。它們是三種不同的正規化,具有不同的優勢和劣勢,在這一點上,我們非常有信心所有第2層縮放都大致可以歸為這三類

 

State channels狀態通道

想象一下,愛麗絲正在與鮑勃通過網際網路交易,鮑勃向愛麗絲支付每兆位元組0.001美元。愛麗絲和鮑勃使用以下第2層縮放方案,並不是每次付款都進行鏈上交易。

首先,鮑勃將1美元(或一些ETH或穩定幣等價物)放入智慧合約中,為了向愛麗絲支付第一筆款項,鮑勃簽署了一張“票證”(一條鏈上訊息),上面寫著“ $ 0.001”,然後將其傳送給Alice。

當鮑勃要進行第二次付款,鮑勃將在另一張票證上寫“ $ 0.002”,並將其傳送給愛麗絲。依此類推,可以根據需要進行多次付款。

當愛麗絲和鮑勃完成交易後,愛麗絲可以釋出價值最高的票證,用她自己的另一個簽名包起來。智慧合約將驗證愛麗絲和鮑勃的簽名,向愛麗絲支付鮑勃票上的金額,並將剩餘的錢退還給鮑勃。

如果愛麗絲不願意關通頻道(由於惡意或技術故障),則鮑勃可以啟動撤回期限(例如7天),當然前提如果愛麗絲在這段時間內沒有提供票證。

該技術功能強大:可以對其進行調整,以處理雙向支付、智慧合約關係(例如,愛麗絲和鮑勃在通道內簽訂金融合同)和組成(如果愛麗絲和鮑勃擁有開放通道,鮑勃和查理也是如此,愛麗絲可以不信任地與查理互動)。但是通道可以做什麼是受到限制的。

不能使用渠道將資金從鏈下傳送給尚未參與的人。通道不能用於表示沒有明確邏輯所有者的物件(例如Uniswap)。而且通道,特別是如果用來做比簡單的定期付款更復雜的事情的通道,需要鎖定大量資金。

  

plasma

為了存放資產,使用者將其傳送到管理plasma鏈的智慧合約。plasma鏈為該資產分配一個新的唯一ID(例如537)。每個plasma鏈都有一個運算子(可以是一個集中的參與者,或者是一個多重簽名,或者是更復雜的東西,例如PoS或DPoS)。每隔一個間隔(可能是15秒,一個小時或兩者之間的任何時間),操作者都會生成一個“批batch”,其中包括他們已從鏈下收到的所有plassma交易。

他們生成一個Merkle樹,放在樹中的每個索引X處,X如果存在這樣的事務,則在該事務中有一個轉移資產ID的事務,否則葉子為零。

他們釋出此樹的Merkle根進行連結。他們還傳送每個索引的Merkle分支X給該資產的當前所有者。

要提取資產,使用者釋出最新交易的Merkle分支,將資產傳送給他們。合同開始質詢期,在此期間,任何人都可以通過證明:

  1. 傳送方在傳送資產時不擁有資產,
  2. 或傳送資產來嘗試使用其他Merkle分支機構使退出無效。在以後的某個時間給其他人。如果在7天內(例如)沒有人證明出口是欺詐性的,則使用者可以提取資產。

plasma提供比通道更強大的屬性:您可以將資產傳送給從未參與系統的參與者,並且資本要求低得多。但這是有代價的:在“正常操作”期間,通道不需要任何資料就可以在鏈上進行傳輸,但是Plasma要求每條鏈定期釋出一個雜湊。此外,plasma傳輸不是即時的:您必須等待時間間隔結束並等待塊被髮布。

此外,palsma和通道共有一個共同的弱點:它們安全的博弈論依賴於這樣的思想,即由兩個系統控制的每個物件都具有一定的邏輯“所有者”。如果該所有者不關心其資產,則可能導致涉及該資產的“無效”結果。

這對於許多應用程式都可以,但是對於其他許多應用程式(例如Uniswap)卻是一個破壞交易的因素。即使是在未經所有者同意的情況下也可以更改物件狀態的系統(例如基於帳戶的系統,您可以在其中增加在未經他人同意的情況下無法達到平衡)。這一切都意味著在任何實際的plasma或通道部署中都需要大量的“特定於應用程式的推理”,並且不可能製作僅模擬整個以太坊環境(或“ EVM”)的plasma或通道系統。為解決此問題,我們開始進行rollup。

 

Rollup

plasma和通道是“完整”的第2層方案,因為它們試圖將資料和計算都移出鏈。但是,圍繞資料可用性的基本博弈論問題意味著不可能為所有應用程式安全地做到這一點。plasma和通道通過依賴所有者的明確概念來解決此問題,但這會阻止它們變得完全抽象。

另一方面,Rollup是“混合”第2層方案。rollup將計算(和狀態儲存)移到鏈外,但每個交易事務在鏈上保留一些資料。為了提高效率,他們使用了大量的花哨壓縮技巧在任何可能的地方來將資料替換為計算。

結果是系統的可擴充套件性仍然受到基礎區塊鏈的資料頻寬的限制,但是位元組大小比率非常有利:以太坊基礎層ERC20令牌傳輸成本約為45000瓦斯,而rollup中的ERC20令牌傳輸佔用16個位元組的鏈上空間,成本不到300瓦斯。

這些資料是在鏈事實為關鍵。將資料放在鏈上並對此達成共識,任何人都可以根據需要在本地處理Rollup中的所有操作,從而允許他們檢測欺詐,發起提款或親自開始生成交易批。缺乏資料可用性問題意味著惡意或離線操作員的工作量甚至更少危害(例如,它們不能導致1周的延誤),為有權釋出批次的人開放了更大的設計空間,並使Rollup更容易進行推理。而最重要的是,現有的以太坊應用程式幾乎無需編寫任何新程式碼即可遷移到Rollup。

 

Rollup如何工作?

鏈上有一個智慧合約,它維護狀態根:rollup狀態的Merkle根(意思是,“餘額”內的帳戶餘額,合同程式碼等)。

區塊鏈V神:以太坊2.0演算法Rollup的不完整指南

任何人都可以以高度壓縮的形式釋出批處理,交易集合以及先前的狀態根和新的狀態根(處理交易後的Merkle根)。合同檢查批處理中的先前狀態根是否與其當前狀態根相匹配;如果是這樣,它將狀態根切換到新的狀態根。

區塊鏈V神:以太坊2.0演算法Rollup的不完整指南

為了支援存款和提款,我們增加了使輸入或輸出處於rollup狀態“之外”的交易的功能。如果批次具有來自外部的輸入,則提交該批次的事務也需要將這些資產轉移到rollup合同中。如果某個批次有外部輸出,則在處理該批次時,智慧合約會啟動這些提款。

就是這樣!除了一個主要細節:如何知道批次中的狀態後根是正確的?如果某人可以提交具有任何後期狀態根源的批次而沒有任何後果,那麼他們可以將rollup中的所有硬幣轉移給自己。

這個問題很關鍵,因為有兩個非常不同的解決方案系列,而這兩個解決方案系列導致了兩種rollup方式。

 

樂觀Rollup與ZK Rollup

Rollup的兩種型別是:

  1. 樂觀rollup,使用欺詐證明:rollup合同會跟蹤其整個狀態根歷史以及每個批次的雜湊值。如果有人發現某個批次的狀態後根不正確,則釋出需要鏈的證明,以證明該批次的計算不正確。合同將驗證證明,並還原該批次及其之後的所有批次。
  2. ZK rollup,使用有效性證明:每個批次都包含一個稱為ZK- SNARK的加密證明(例如,使用PLONK協議),這證明後狀態根是執行批次的正確結果。無論計算量有多大,都可以在鏈上非常迅速地驗證證明。

總的來說,我個人認為,在短期內,對於通用EVM計算而言,樂觀可能會勝出,而對於簡單付款,交易和其他特定於應用的用例,ZK可能會勝出。隨著ZK-SNARK技術的改進,中長期ZK將在所有用例中勝出。

 

欺詐證明的剖析

樂觀rollup的安全性取決於以下想法:如果有人將無效的批次釋出到rollup中,則任何跟得上鍊並檢測到欺詐的人都可以釋出欺詐證明,以證明該批次無效並向合同證明。應該還原。

區塊鏈V神:以太坊2.0演算法Rollup的不完整指南

聲稱某批次無效的欺詐證明將包含綠色的資料:該批次本身(可以對照儲存在鏈上的雜湊值進行檢查)以及Merkle樹的各個部分,它們僅需要證明已讀取和//特定的帳戶即可或按批次修改。可以從綠色的節點中重建黃色的樹中的節點,因此無需提供。此資料足以執行批處理並計算狀態後的根。

如果批次中計算出的狀態後根與提供的狀態後根不同,則說明該批次是欺詐性的。

可以保證,如果一個批次的構造不正確,並且所有先前的批次都正確構造,則可以建立一個欺詐證明,證明該批次的構造不正確。請注意有關先前批次的宣告:如果有多個無效批次釋出到rollup中,那麼最好嘗試證明最早的無效批次。當然,還可以保證,如果正確構造了一個批次,則永遠不可能建立表明該批次無效的欺詐證明。

 

ZK rollup如何工作?

一個簡單的以太坊交易(傳送ETH)需要約110個位元組。但是,rollup上的ETH傳輸僅佔用〜12個位元組

ZK特有的一個重要壓縮技巧是,如果事務的一部分僅用於驗證,而與計算狀態更新無關,則可以將該部分留在鏈下。這不能在樂觀中完成,因為如果以後需要在欺詐證明中檢查資料,則仍需要將資料包含在鏈上,而在ZK中,SNARK證明批次的正確性已經證明了任何資料提供了驗證所需的資訊。

一個重要的例子是隱私保護:在樂觀中,每筆交易中用於隱私的〜500位元組需要進行保留,而在ZK中,覆蓋整個批次的ZK-SNARK已經沒有了。

這些壓縮技巧是rollup可伸縮性的關鍵。沒有它們,rollup可能只會使基礎鏈的可伸縮性提高約10倍,而採用壓縮技巧時,縮放係數幾乎可以超過100倍所有應用程式。

 

誰可以提交批次

可以提交樂觀或ZK的批處理有很多思想流派。通常,每個人都同意,為了能夠提交一批,使用者必須放下大量的押金。如果該使用者曾經提交過欺詐性批次(例如,具有無效的狀態根),則該存款將被部分燃燒,並作為對欺詐證明者的獎勵。除此之外,還有許多可能性:

  • 完全無政府狀態:任何人都可以隨時提交一批。這是最簡單的方法,但是有一些重要的缺點。特別地,存在多個參與者將生成並嘗試並行提交批次的風險,並且這些批次中只有一個可以被成功包含。這導致在將批量釋出到鏈中時在生成證明和/或浪費的氣體方面浪費了大量的精力。
  • 集中式序列器:只有一個角色,即序列器,可以提交批次(提款除外:通常的技術是使用者可以先提交提款請求,然後如果序列器在下一次不處理該提款請求批處理,那麼使用者可以自己提交一次操作批處理)。這是最“有效”的方法,但它依賴於中心角色的活躍性。
  • 序列器拍賣:舉行拍賣(例如每天),以確定誰有權在第二天成為序列器。該技術的優點在於它籌集了可以由例如銀行分配的資金。由rollup控制的DAO(請參閱:MEV拍賣
  • 從PoS集中隨機選擇:任何人都可以將ETH(或rollup的自己的協議令牌)存放到rollup合同中,並且從一批存放者中隨機選擇每批的序列器,被選擇的概率與數量成正比存放。該技術的主要缺點是導致大量不必要的資本鎖定。
  • DPoS投票:通過拍賣選擇了一個序列器,但是如果它們的表現不佳,令牌持有者可以投票將其踢出並進行新的拍賣來替換它們。

拆分批處理和狀態根供應

當前正在開發的一些rollup使用“拆分批次”範例,其中提交一批第2層事務的動作和提交狀態根的動作是分別完成的。這具有一些關鍵優勢:

  1. 您可以允許許多序列器並行釋出批處理,以提高檢查的抵抗力,而不必擔心某些批處理將是無效的,因為其他批處理已首先包含在內。
  2. 如果狀態根是欺詐性的,則無需還原整個批次。您可以只還原狀態根,然後等待某人為同一批次提供新的狀態根。這為交易傳送者提供了更好的保證,即他們的交易將不會被還原。

因此,總而言之,存在著一個相當複雜的技術園地,它們試圖在涉及效率,簡單性,審查制度阻力和其他目標的複雜權衡之間取得平衡。現在說這些想法的最佳組合還為時過早。時間會證明一切。

 

rollup中有哪些尚未解決的挑戰?

Rollup的基本概念現在已得到很好的理解,但我們可以肯定它們在根本上是可行且安全的,並且已經將多個rollup部署到了主網上,但仍有很多rollup設計領域尚未得到很好的探索,充分利用以太坊的可伸縮性,將以太坊生態系統的大部分完全整合到rollup中將面臨很多挑戰。

 

 

結論

rollup是一種強大的新的2層伸縮範例,在短期和中期的未來(以及可能也是長期的)中,有望成為以太坊伸縮的基石。

詳細點選標題見原文。

 

相關文章