二層網路上的以太坊智慧合約: Optimistic Rollup

買賣虛擬貨幣
這篇文章概述了optimistic rollup:一種使用OVM[4]在二層網網路上啟用智慧合約的結構。該構造大量借鑑了plasma和zkRollup設計,並以Vitalik所描述的 shadow chains[5] 為基礎 。此結構類似於Plasma[6],但放棄了一些擴充套件性,以便在二層網路中執行完全通用的智慧合約(例如Solidity),同時還享有和一層網路相同的安全性。optimistic rollup的可擴充套件性與一層網路資料可用頻寬成正比,一層網路可以包括Eth2,Eth2, 甚至Bitcoin現金或以太坊經典[7],optimistic rollup都可以在二層網路上提供類EVM的鏈。

備註:下文中二層網路將使用簡寫 L2 ,相應的以太坊主網(或其他網路)稱為 L1

快速概述

讓我們先從一些直覺開始,瞭解如何在以太坊主網上進行 optimistic rollup,然後再深入研究。

以下是 optimistic rollup智慧合約(名為Fred)的生命歷程:

1. 開發人員編寫了一個名為Fred的Solidity合約。

2. 開發人員將交易在鏈下傳送到繫結的聚合商(aggregator)(L2的區塊生產者),聚合商負責部署合約。— 任何支付了保證金的人都可以稱為聚合商(aggregator)。— 同一條鏈上有多個聚合商。— 可以支付費用,但聚合商需要(帳戶抽象/元交易[8])。— 開發人員可以即時確認交易,否則聚合商將損失保證金。

3. 聚合商在本地處理交易並計算新的狀態根。

4. 聚合商提交以太坊交易(支付gas費用),其中包含交易和狀態根(一個optimistic rollup區塊)。

5. 如果任何人下載了該塊並發現其無效,則可以使用verify_state_transition(prev_state, block, witness)來證明其無效, 將:

— 刪除惡意聚合的區塊以及在無效塊之上構建的任何聚合區塊。— 用聚合商的部分保證金獎勵證明者。

6. Fred 知道自己的部署交易現在已成為每個未來有效的optimistic rollup狀態的一部分,因此有安全保障。可以將Fred的主網ERC20傳送到L2中!好極了!

僅此而已!使用者和智慧合約的行為應該與我們今天在以太坊主網上看到的非常相似,只是擴容了!現在,讓我們探討一下這整個過程的可能性。

深入Optimistic Rollup

首先,讓我們定義建立像以太坊這樣的無許可智慧合約平臺的含義。構建這些可愛的狀態機之必須滿足三個屬性:

· 可用的(availabe)總體狀態 — 任何相關方都可以下載當前的總體狀態。
· 有效的(valid)總體狀態 — 總體狀態是有效的 (例如:沒有無效的狀態轉換)。
· 活躍的(live)總體狀態 — 任何感興趣的一方都可以提交轉換總體狀態的交易。

譯者注:總體狀態對應的原文是 head state, 直譯或許是頭部狀態, 不過中文裡貌似沒有這個說法。

您會注意到以太坊L1滿足了這三個屬性,因為我們相信:

· 礦工不會在不可用的區塊上進行挖礦;
· 礦工不會在無效的區塊上進行挖礦*[9];
· 並非所有礦工都會審查交易。

但是,以太坊目前無法擴容。另一方面,在一些類似的安全假設下,optimistic rollup 可以大規模擴容下,提供這三個保證。為了瞭解構造和安全性的假設,將逐一檢查我們希望分別確保的每個屬性。

#1: 可用的總體狀態

Optimistic rollup 使用經典 rollup技術(此處概述[10])來確保當前狀態資料的可用性。該技術很簡單-區塊生產者(稱為聚合商)透過以太坊主網上的calldata(呼叫以太坊函式的輸入引數)傳遞所有區塊的交易和狀態根。calldata資料將默克爾化來並儲存一個32位元組的狀態根。提示:calldata為每32位元組2,000 gas,而儲存成本為20,000 gas。此外,在伊斯坦布林硬分叉[11]中,calldata的gas成本降低了近5倍。

值得注意的是,我們也可以使用除以太坊主網之外的其他網路作為L1提供資料可用性,包括 Bitcoin Cash[12] 和[Eth2](https://learnblockchain.cn/tags/%E4%BB%A5%E5%A4%AA%E5%9D%8A2.0[13])。在Eth2階段1中,所有分片都可以作為L1提供資料可用性,以分片數量線性地擴容TPS。這樣的吞吐量是足夠的,直到遇到其他可擴充套件性瓶頸(例如狀態計算)。

安全假設

在這裡,我們假設以太坊主網上多數是誠實的。另外,如果我們使用Eth2、ETC或Bitcoin Cash,我們也將類似假設。

在這些假設下,使用可信的L1來發布所有交易,我們可以確保任何人都可以計算當前的總體狀態,從而滿足屬性1。

#2: 有效的總體狀態

我們需要確保的第二個屬性是有效的總體狀態。在zkRollup中,使用零知識證明來確保有效性。從長遠來看,這是一個不錯的解決方案,但目前無法為任意狀態轉換建立有效的zkProofs。但是,仍然有希望使用通用的EVM型狀態機!我們可以使用plasma/truebit[14]類似的加密經濟學進行有效性博弈。

密碼經濟學有效性博弈

從較高層次來看,區塊提交和有效性博弈規則如下:

· 聚合商提交保證金才能開始生產區塊。
· 每個區塊包含 [access_list, transactions, post_state_root].
· 有保證金的聚合商將按照“先到先得”的原則(或根據需要使用輪流方式)將所有區塊提交到ROLLUP_CHAIN合約。
· 任何人都可能證明該區塊無效,並贏得了聚合商的部分保證金。

要證明一個塊無效,必須證明以下三個屬性之一:

· INVALID_BLOCK: 提交的塊是無效。這是透過is_valid_transition(prev_state, block, witness) => boolean計算的。
· SKIPPED_VALID_BLOCK: 提交的塊“忽略”了一個有效塊。
· INVALID_PARENT: 提交的塊的父塊是無效的。

這三個狀態轉換有效性條件如圖所示:

該狀態有效性博弈具有一些有趣的屬性:

可插拔的有效性檢查器: 我們可以為is_valid_transition(…)定義不同的有效性檢查器,從而允許我們使用不同的VM(包括EVM和WASM在內)來執行智慧合約。
僅有一條有效鏈: 提交到以太坊的區塊,可以確定交易和區塊的總順序。這使我們能夠確定性地確定“頭(head)”塊,從而要求聚合商在提交新塊之前刪減無效的塊。
部分驗證: 此有效性博弈可以以單個UTXO為基礎進行。方案使用部分無效取代全部區塊整體無效 -- 這類似於Plasma Cash。請注意,並不需要證明一個塊的所有無效轉換。部分割槽塊無效驗證意味著我們可以只驗證我們關心的狀態, 以確保安全。要了解有關UTXO如何實現並行性請檢視Cryptoeconomics.study影片[15]!
有關瞭望塔
譯者注:瞭望塔是一個幫助使用者監視交易欺詐的實體,因為普通使用者很難實時線上,瞭望塔則可以充當使用者的代理。

採用L2的挑戰之一是瞭望塔[16]的複雜性。與使用者簽約的瞭望塔,是另一個加入的來管理已經複雜的系統實體。幸運的是,optimistic rollup 加密經濟有效性博弈自然地激勵了瞭望塔!所有資料都是可用的,因此任何人都可以執行全節點驗證無效交易以獲得“所有”構建無效鏈的聚合商的保證金。這種風險激勵將促使聚合商成為瞭望塔,從而驗證他們建立的鏈,從而減輕了驗證者的困境。

有關Plasma
許多plasma構造也依賴於加密經濟學的有效性博弈。但是,在沒有zkProofs或資料劫持攻擊的漁夫博弈[17](資料可用性問題)情況下,在plasma中執行合約自治是不可能的。值得慶幸的是,rollup 透過釋出計算鏈上狀態轉換所需的最少資訊來解決資料可用性問題。不過,如果我們想擴容到每秒數十萬(甚至更多)的交易 plasma 仍然是至關重要,但是這是遠期的需要,但對於許多智慧合約而言,從中期來看並不是必需的。

安全假設

1. 加密經濟學有效性博弈是基於誠實甚至理性的驗證者假設下工作的。我們可以說他是“理性”的驗證者,而不是“誠實”的驗證者,因為挑戰博弈可能會從經濟上激勵他們。

2. 另外,我們假設主網是活躍的,這意味著它不會審查所有試圖證明無效的交易(譯者注:審查意味著干預,這裡的意思是指:證明無效的交易並不會選擇性的干預,例如如丟棄該交易)。請注意,從某種意義上說,聚合商的解除保證金退出期限是主網上的活躍性假設(例如,如果我們需要1個月的保證金退出期限,需要在該月內證明提交無效性證明,才能罰沒保證金)。

在這些假設下,所有無效塊或狀態轉換都將被丟棄,從而使我們獲得一個有效總體狀態,並滿足屬性 #2。

#3: 活躍的總體狀態

我們必須滿足的最終屬性是活躍,通常被稱為抗審查能力。確保這一點的關鍵是:

· · 保證金大小超過MINIMUM_BOND_SIZE的任何人都可能成為同一rollup鏈的聚合商。
由於誠實的聚合商可能會移除無效的塊,因此即便產生了無效區塊,鏈也不會停止。

有了這兩個屬性,我們就可以保持活躍!誠實的聚合商可能總是避擴音交無效區塊,因此,即使只有一個非審查性聚合商,你的交易最終也會得到確定,這與主網類似。

有關活躍與即時確認

我們真正想要的一個屬性是即時確認。這樣就可以為使用者提供亞秒級的反饋,表明他們的交易將被處理。我們可以透過在塊上指定聚合器短時的壟斷出塊來實現這一目標。缺點是,它降低了抗審查能力,因為現在一個參與方一段時間內具備了審查。很想聽聽有關此權衡的任何研究!

安全假設

保持活躍基於兩個安全性假設:

存在一個非審查聚合商。

以太坊主網是非審查的

在這些假設下,optimistic rollup 鏈將能夠基於任何有效的使用者交易來進化和變更總體狀態 (滿足屬性#3)。

現在,這三個屬性均已滿足,並且我們在以太坊L2中提供了一個無許可的智慧合約平臺!

可擴充套件性指標

以下估算是**完全基於資料可用性 **。實際上,可能會遇到其他瓶頸,其中一個是狀態計算。但是,這確實提供了可用的上限。

在ETh2資料可用性下的ERC20 轉賬

計算基於 一個簡單的 call-data 計算 python 指令碼[18].

請注意,這些 ERC20 轉賬對calldata 進行了最佳化。另外請注意,Optimistic Rollup 的好處是我們不僅限於ERC20傳輸!

ECDSA 簽名~100 TPS:未採用 EIP 2028 時 ~450 TPS:採用 EIP 2028 後 ( 2019年 10 月已經很到主網)

BLS 簽名 / SNARK-ed 簽名~400 TPS :未採用 EIP 2028 時 ~2000 TPS :採用 EIP 2028 後 ( 2019年 10 月已經很到主網)

在其他的資料可用性下( 如 ETH2, Bitcoin Cash)

與L1可以處理的吞吐量的數量成線性關係。

超過2000 TPS!

Optimistic Rollup 與 Plasma

Optimistic Rollup與Plasma有很多共同點。兩者都使用聚合商透過加密經濟有效性博弈來確保安全性,從而在主網上提交區塊。唯一的區別是是否具有確保區塊可用的可用性收據。

兩種解決方案之間的相似之處使得兩者之間可以共享許多基礎架構和程式碼。在成熟的L2生態系統中,我們很可能會看到rollup,plasma和狀態通道[19]在同一個客戶端(智慧錢包)中一起工作。哦,我是否提到過OVM[20]?

Yay Optimistic Rollup

Optimistic Rollup會在L2中佔據一席之地。它在通用智慧合約平臺,簡單性,安全性和擴充套件性之間做了一些權衡。再加上其能夠安全的執行智慧合約,意味著它甚至可以用於裁定其他第二層解決方案,例如Plasma和狀態通道!

就把它稱為二代 L2 中的 L1 吧。

無論如何,研究已經夠了,是時候實施強大,全面且使用者友好的以太坊第2層了!

特別感謝Vitalik Buterin與我一起解決這些想法並提出了很多建議。

此外,還要感謝Ben Jones所做的大部分工作以及Jinglan Wang,Kevin Ho 和Jesse Walden 的編輯。

更新:John Adler 在他的《合併共識》中的文章與optimistic rollups 進行了對比分析,參考此處[21],另外,此提案[22]可以提高 ETh2 的資料可用性 - 更多的 TPS!

Plasma Group Blog[23]

本翻譯由 Cell Network[24] 贊助支援。

參考資料

[1]登鏈翻譯計劃: https://github.com/lbc-team/Pioneer
[2]Tiny熊: https://learnblockchain.cn/people/15
[3]Karl Floersch: https://medium.com/@karl_dot_tech?source=post_page-----2c1cef2ec537----------------------
[4]OVM: https://medium.com/plasma-group/introducing-the-ovm-db253287af50
[5]shadow chains: https://blog.ethereum.org/2014/09/17/scalability-part-1-building-top/
[6]Plasma: https://learnblockchain.cn/tags/Plasma
[7]Bitcoin現金或以太坊經典: https://ethresear.ch/t/bitcoin-cash-a-short-term-data-availability-layer-for-ethereum/5735
[8]元交易: https://learnblockchain.cn/article/584
[9]*: https://eprint.iacr.org/2015/702.pdf
[10]此處概述: https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477
[11]伊斯坦布林硬分叉: https://learnblockchain.cn/2019/11/21/istanbul-update
[12]Bitcoin Cash: https://ethresear.ch/t/bitcoin-cash-a-short-term-data-availability-layer-for-ethereum/5735
[13]Eth2: https://learnblockchain.cn/tags/以太坊2.0
[14]truebit: https://learnblockchain.cn/tags/TrueBit
[15]Cryptoeconomics.study影片: https://www.youtube.com/watch?v=-xoCoZGJ9AQ
[16]瞭望塔: https://blockonomi.com/watchtowers-bitcoin-lightning-network/
[17]漁夫博弈: https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#what-is-the-data-availability-problem
[18]一個簡單的 call-data 計算 python 指令碼: https://gist.github.com/karlfloersch/1bf6ab7871f41e3a5a921c0a007ad5c6
[19]狀態通道: https://learnblockchain.cn/tags/%E7%8A%B6%E6%80%81%E9%80%9A%E9%81%93
[20]OVM: https://medium.com/plasma-group/introducing-the-ovm-db253287af50
[21]此處: https://ethresear.ch/t/minimal-viable-merged-consensus/5617
[22]此提案: https://ethresear.ch/t/multi-threaded-data-availability-on-eth-1/5899
[23]Plasma Group Blog: https://medium.com/plasma-group
[24]Cell Network: https://www.cellnetwork.io/?utm_souce=learnblockchain

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;