本文由 Trenton Van Epps 根據 Vitalik 2019 年 3 月 15 日晚在臺北的以太坊會議上的演講整理而成,由匯智網提供中文翻譯版本。Vitalik 最近提出了他對 Rollups 的想法以及與 Ethereum1.0 和 2.0 中的第 2 層解決方案相關的數據可用性問題。他的演講包含了一些引人入勝的結構,可能會進一步從團隊中進行迭代。這是一個至關重要的研究領域,因爲對於希望增加用戶羣的項目來說,仍然非常需要信任最小化的區塊鏈擴展機制。如果你有時間我建議聽完整的演講。

原文標題:《Transcript 可擴展的以太坊區塊鏈作爲數據層》
文章整理:Trenton Van Epps
編譯:匯智網

以前的研究

本次演講所依據的基本概念首先出現在 Vitalik 於 2018 年 8 月發表的文章中,將可用性引擎 availability engines 歸功於 Justin Drake。2018 年 9 月,一個擴大該主題的 ETHresearch 帖子得到了重要討論。在 2019 年 1 月,EF 研究人員和 Matter Labs 之間的合作在 Rinkeby 測試網上產生了一個名爲 Ignis 的概念證明。這是團隊的原始帖子和 Trustnodes 訪談 / 演示。

以下是 Alex Gluchowski 和 Kent Barton 在 ETHDenver 2019 上的精彩演講,詳細介紹了 Rollup 機制:零知識縮放 Scaling With Zero Knowledge。對於 SNARK 和 STARK 之間的差異也有很好的探索。

最後,由於 EF 資助,看起來 Matter Labs 繼續通過 snark 進行擴展工作,請查看此處的公告以及更多資源。

我在下面輸入了 Vitalik 演講的粗略記錄,試圖捕捉每個部分的精髓。希望人們覺得這很有用。

背景 / MASTERCOIN

這是一種新的 L2 結構,與可擴展性(plasma/state channels)的 L2 不同,它使用 BC 作爲數據存儲而非計算的場所。計算可以用 zk-snarks 完成。

最新 Vitalik 臺北以太坊會議演講:用零知識證明實現以太坊擴容

  • 一些歷史:將 Mastercoin 視爲 BTC 之上的元協議。爲解釋 tx 定義一組不同的規則。BTC 是數據存儲,但不是狀態執行。特殊 tx 可以用 flag 表示。
  • Mastercoin 的缺點:客戶端不夠輕(需要 BTC 區塊鏈和 Mastercoin 節點)。MC 協議中的活動不會影響 BTC 鏈,這限制了整體功能。
  • 現在我們有 ETH 1.0,很快我們將獲得 ETH 2.0,我們能做類似於 Mastercoin 的事嗎?

ZK ROLLUP

ZK 彙總(not ignis, not ignis plasma)可以在今天提高 30 倍的可擴展性,將來會更高。工作原理:Onchain 合約只存儲一個值:merkle 樹的 merkle 根。

最新 Vitalik 臺北以太坊會議演講:用零知識證明實現以太坊擴容

  • 用戶發送 txs,由一個叫做中繼者的特殊 actor 調用並設置 zKsnark。發佈以前的狀態,新狀態,其中包括捆綁在一起的交易。
  • 這與 Plasma 相似嗎?(兩者都是持有 merkle 根的合約)不同之處在於 Plasma 需要複雜的退出遊戲 / 退出期以便處理惡意操作員的可能性(數據可用性)。
  • ZK Rollup 沒有數據可用性問題,因爲所有交易都發布到鏈,沒有簽名。
  • 每個發佈 13 個字節 X 每個字節 68 個 gas=884 個 gas,當前簡單 tx 的當前成本爲 21k。
  • zKsnark 證明了 tx 的有效性,而不是讓 ETH 主鏈驗證每個簽名交易。計算和存儲被移除。Merkle root 留在鏈上。這避免了 central actor/relayer。因爲數據是在鏈上發佈的,所以任何人都可以驗證。
  • 這可以通過不包括 nonce 來改進,刪除 2 個字節(每個字節 11 個字節每字節 X gas 氣體 = 748 個 gas)
  • 注意:即時存款和取款。提款:coin 從他們的 merkle 分支轉移到主鏈,然後是 merkle root 更新。存款將是相反的,但另外爲用戶提供帳戶 ID。可能會有很多漂浮在周圍。
  • 這種結構可以相對安全地將簡單付款從 15 tx/s 增加到 500 tx/s。
  • 斯坦福 1.x 研討會(youtube 視頻)的一個結果是,與其他業務相比,數據價格過高。儘管存在對狀態的擔憂,但向塊大小添加 1kb 並不會使事情變得更糟。在 Istanbul 可以減少簡單 tx 的 gas 成本,從而將 ETH1.x 的吞吐量提高到 1000 tx/sec 以上。

進一步採取行動

Rollup 應該能夠支持更復雜的狀態轉換,包括 Uniswap,高性能交換,多個 token,隱私保護計算,ENS 等,所有這些都使用 SNARK + publish tree details 範例。

ZK ZK ROLLUP (Bose–Einstein condensate)

  • 基本思路:採用 ZK 彙總但內置迷你版 zCash。(關於 zCash 的入門:用戶發佈 txs,SNARKs 說「我有一個有效的支出證書,用於該狀態的一些 coin 哈希。這是一個新的 coin 哈希」
  • zCash,續,用戶有加密 S,coin 哈希:h(s+1),支付證書:h(s+2)。SNARK 證明支付證書屬於現有 coin,但不屬於哪一枚。驗證功能還應檢查尚未顯示支出證書。
  • 轉發者不會發布 tx,它會發布收據(105 字節 X 68 gas= 每 tx 7140 gas)。在這裏我們放置一個 SNARK 來驗證包含的每個單獨的 tx 是否附加了 SNARK (一級遞歸)。驗證 SNARKs onchain,它需要 500k gas。

BEACON CHAIN – 第 1 階段

  • 如果我們想做更多的事情怎麼辦?輸入 ETH 2.0 的 Beacon Chain 第 1 階段。作爲僅數據鏈的分片鏈意味着 2.8 MB/ 秒的數據可用性。
  • 每個 zK zK 彙總是 105 字節 / 意味着 27k 隱私保留交易 / 秒,如果完全消耗 2.8 MB。如果我們不關心隱私,則 27k 增加 10 倍。
  • get rekt scamcoins LOL VB 甚至無法選擇哪個是 TPS 聲稱的最差。
  • 障礙是這些系統依賴於數據和計算(雖然數量很少)。ETH 2.0 (階段 1)沒有計算但有大量數據,而 ETH 1.0 有計算:讓我們橋接兩者。

ETH2 在 ETH1 輕客戶端

  • ETH 2.0 研究團隊花了很多時間使 2.0 體系結構輕鬆客戶端友好。
  • 當持久委員會切換時,每 9 天需要 80kb 的 merkle 分支(也可以在 9 天內分攤),每個頭部加 500 字節。
  • 在 ETH1 客戶端需要 BLS-12-381 預編譯。 ETH 1 鏈可以是掛鉤到 2.0 鏈的計算層,要求在 2.0 鏈上發佈用於彙總模式的數據。

其他用於可擴展數據可用性的引擎。

Plasma 具有更頻繁的承諾,Dapps 存儲鏈上的消息,具有獨立「主權」狀態轉換功能的區塊鏈協議搭載在以太坊上用於數據可用性。

加快跨境交易

  • 當前分片設計的弱點:分片之間的通信有延遲(等待交聯,~6 分鐘)
  • 解決此延遲的粗略建議是允許一個分片看到另一個分片的根的機制。這可能在大多數時間都有效。

最新 Vitalik 臺北以太坊會議演講:用零知識證明實現以太坊擴容

  • 快速探索用戶何時想要在分片之間轉移 token:他們可以將 tx 發佈到帶有 root 的智能合約(包含預期的 token 轉移),以及保證金。
  • 「碎片的 merkle root 是 0x12345,如果這個說法錯了,我同意失去 100 ETH (押金)」。
  • 在存儲令牌餘額的註冊表的上下文中,發佈 100 個 ETH 存款的用戶(在等待 x-shard 交易通過時)然後將其餘額更新爲條件狀態如果狀態根聲明是正確的,我有 x+轉移 amt ,如果不正確我只有原始金額(減去沒收的 ETH 保證金)。
  • 將其視爲 SC 內部的量子疊加(存儲兩種狀態 / 兩種可能性)。只有當合約通過交聯才能知道原始碎片的狀態根時才解決。
    然後可以在用戶之間傳遞這種疊加,而不需要他們知道(錢包會顯示樂觀的值,直到約 6 分鐘後纔會發送交聯)。

一般用途隱私

ZEXE:基於 UTXO 的系統,可以保護隱私。

第 2 層計算的好處

  • 從哲學上講,第 1 層不需要過於複雜來優化屬性,塊時間,x-shard 通信,x-shard 同步消息支持,隱私等。
  • 從理論上講,ETH 2.0 階段 3 可能永遠是足夠的,不需要超級二次分片。
  • 例外情況是增加分片或更新加密。
  • 其他區塊鏈已經提出了這個主張,但實際情況是,一旦你擁有可擴展的數據可用性和足夠的表現力,至少要驗證 zKSnarks 和狀態轉換(功率和複雜性的最低閾值),你可以在頂部建立所有必要的 L2。
  • L1 可能變得越來越難以改變,但如果它們處於可擴展數據可用性之上(2.8 mb/sec),這對計算 L2 來說是好的。

問題交流

問:L2 內容是否排除了使用完整語言不適用於 zKsnarks?

TC 的數學定義與加密社區的含義有所不同。數學:TC 意味着計算機。這是如此籠統,你不能告訴計算何時停止(Snark 需要事先知道)。

加密:使用 TC 意味着表達足以使應用程序具有複雜的內部狀態(plasma,makerdao,uniswap,這些 L2 的驗證引擎) BTC 不能做這些事情,ETH 可以。ZEXE 是基於 UTXO 的模型,但也可以。

TC 是錯誤的詞,但是你可以做一些足夠表達的事情來構建 zKsnarks 中的應用程序。

問:我們是否應該擔心熊市期間 30%的哈希率損失?

這是一個問題,但不是真正需要擔心的事情。ETC (以太坊經典)遭到攻擊,但只有 3%的 ETH 鏈哈希值。如果它成爲一個重要的問題,那麼第 0 階段可以用作 1.0 鏈 POW 客戶端的終結機制。然後,51%的攻擊只允許審查塊,而不是恢復塊。

問:基礎層和應用層之間的去中心化程度總會存在競爭。數據可用性和 SNARK 總是 mean 集中化?

這個新的 L2 類非常有趣,不需要解決數據可用性問題。集中化可以減少。比較 Plasma 和 Rollup:plasma 數據可用性問題意味着需要有一個 actor,如果惡意,他可以浪費用戶 2 周的 coin 鎖定時間。如果轉發者消失,Rollup 沒有數據可用性問題,另一個可以迅速取代他們的位置。可能的傷害減少,像 Rollup 這樣的 L2 是解決方案的一部分。

問:在進行跨域通信時,你是否正在考慮兩階段提交協議?

合約 yanking 有助於解決火車和酒店問題。(與不同分片上的 2 個對象進行交互) ETH 鏈是否應支持 L1 上的同步?不,它引入了太多的複雜性。

現在,在兩個交聯之間,你可以計算分片中的狀態轉換,作爲分片和信標鏈中數據的函數。不依賴於其他分片中發生的事情。

具有同步交叉分片調用會破壞此不變量,使狀態計算遊戲變得更加複雜,儘管你可以實現類似 Rollup 的 L2,這將有助於支持同步交叉分片調用。

問:「第三方」L2 解決方案(Celer)與其他以太坊 L2 解決方案之間的關係是什麼?

Celer 是一個提供自己的數據可用性解決方案的 L2,Plasma 也是這樣做的。Rollup 執行計算 offchain 並在鏈上處理數據可用性。有不同的權衡。

youtube 視頻鏈接

google 幻燈片地址