加載中 ...

引介 | Rollup 各方案異同簡介

2019-12-09 00:29 編輯:btc268.com 來源:區塊鏈資訊

  Rollup 是近年來在智能合約可擴展性方面最火爆的想法之一。這個想法已經提出有一段時間了,但是直到最近才有幾個團隊,其中也包括我們 Offchain Labs 團隊,才開始大力推進。接下來讓我們花個幾分鐘時間,來談談什么是 rollup ,以及不同的方案之間有什么相關性。

  Rollup 是一種可以對開放式合約(即,所有人都能看見并與之交互的合約)進行擴容的通用方法。在 Rollup 上,對合約的調用及其 argument(實際參數)都是作為調用數據(calldata)寫在鏈上的,但是合約的實際計算和存儲都是在鏈下完成的。有人會在鏈上發布一個 assertion(斷言),斷言合約將要執行的一系列操作(例如要完成的支付)以及執行完成之后合約狀態的哈希值。可以認為,這個發布上鏈的斷言將所有的調用和結果都 “卷起來”(“rolling up”)成為單筆發送上鏈的交易。

  不同的 Rollup 系統有所區別的地方在于確保 assertion 正確性的方式。這里有三種基本方法:非交互型 rollup(如,ZK-Rollup)、一輪交互型 rollup(如, “optimistic rollup” 提案)和多輪交互型 rollup (如,我們團隊的 Arbitrum Rollup )。

非交互型 Rollup(如,ZK-Rollup)


  非交互型 rollup 依賴于簡潔的有效性證明。每個 assertion 都會附有一個易于驗證的證明(如,SNARK),以此表明 assertion 里的計算和結果都是正確的。例如,ZK-Rollup 系統使用的是 ZK-SNARKs ,即,一種易于驗證的零知識證明系統 。這對于礦工和其他觀察者來說很友好,因為驗證證明的成本較低,可以立即核實 assertion 的正確性。但是,零知識證明系統也有一個很大的缺點:除非要斷言的交易非常簡單,否則創建證明的成本會高得離譜。因此,ZK-Rollup 非常適用于支付交易,但是對于復雜一點的智能合約執行來說,效果就沒那么好了。

用于智能合約的 Rollup


  對于復雜的智能合約來說,我們必須采用一種交互式方法。也就是說,如果要將 assertion 發布到鏈上,asserter(斷言者)必須繳納保證金,并且會開放一個時間窗口,如果驗證者認為該 assertion 不正確,可以在窗口期內挑戰它。有時這被稱為 “錯誤性證明”。如果 asserter 發布了錯誤的 assertion ,就會失去自己的保證金。

  一輪交互型 rollup 又稱為“optimistic rollup”,不過這么說有點用詞不當,因為所有交互型 rollup 都是樂觀主義的設計。在一輪交互型 rollup 中,assertion 包含每次調用的結果,挑戰者會指出 assertion 中對哪個調用給出的結果是錯的。鏈上合約會模擬執行被挑戰的調用,并驗證 asserter 關于這個調用的聲明是否有誤。如果真的有誤,則取消整個 assertion ,并罰沒 asserter 的保證金。如果一個 assertion 到挑戰期結束為止還沒有被挑戰成功的話,就會被接受并得到最終確定。

  在多輪交互型 rollup(例如,我們團隊的 Arbitrum Rollup 產品)中,也設有挑戰窗口期,挑戰者可以在此期間繳納保證金,并聲明該 assertion 是錯誤的。接下來就會觸發 asserter 和挑戰者之間的往復交互型協議,并由一個鏈上合約來充當該協議的仲裁方(referee)。最后由仲裁方來決定哪一方有誤,并罰沒其保證金。這種設計是為了將解決爭議所需的鏈上工作量降至最低,即,在鏈上仲裁方據實評估合約行為之前,先通過交互型協議盡可能縮小雙方之間的爭議范圍。

一輪交互型 Rollup vs. 多輪交互型 Rollup


  歸根結底,一輪交互型 Rollup(例如,“optimistic rollup”)和多輪交互型 Rollup(例如,Arbitrum Rollup)之間的選擇就是在解決爭端所需的鏈上成本和時間之間作出權衡。一輪交互型 Rollup 需要在鏈上模擬一次完整的調用,成本可能會非常高——因此,合約所執行的調用會受到以太坊的全局 gas limit 的限制。多輪交互型 Rollup 則不受此限制,它會進一步縮小爭議范圍,直到可以以較低成本在鏈上解決該爭議為止。通常情況下,多輪交互型 Rollup 還可以在鏈上編寫較少的數據。

  寫到鏈上的內容

  一輪交互型 Rollup 和多輪交互型 Rollup 都需要編寫所有對合約的調用及其數據到鏈上,這些就是調用數據。但是,二者之間的區別在于,需要放到鏈上作為 assertion 的數據不同。通常來說,assertion 包含對多個對合約的調用。一輪交互型 Rollup 需要把每一步哈希值添加到 assertion 內。如此才能使得每一次調用都可以被單獨挑戰。相比之下,多輪交互型 Rollup 只需要在 assertion 的最后添加整個合約狀態的哈希值即可。(中間狀態哈希值將會按需生成,但僅在極少數存在爭議的情況下。)這樣一來,多輪交互型 Rollup 的鏈上數據成本會略低一些。

  一輪交互型 Rollup 中的挑戰期和最終確定性

  在任意類型的交互型 Rollup 中,系統都必須具備抵御審查攻擊的能力。令人擔憂的是,攻擊者可能會提交一個錯誤的聲明,然后發起審查攻擊來阻止所有針對這個聲明的挑戰被公布到鏈上,直到挑戰期結束,錯誤的聲明被接受為止。對此的解決方案是,確保挑戰期比審查攻擊的持續時間更長。(也可以采用防御措施,例如,對發布錯誤聲明的一方予以更高額的罰款,并鼓勵潛在的挑戰者使用復制和其他系統方法來抵御審查攻擊。)

  鑒于上文對審查攻擊的設想(我會在之后的文章中闡述),挑戰期可能需要很長一段時間。例如,有些系統將挑戰期設為一周時間。也就是說,交易被提交之后,需要等待整整一周時間才能得到 Rollup 協議的確定——直到那時,通過交易完成的付款才算已經發生在鏈上。

  這會造成很大的問題嗎?可能比你想象的要少。要想了解原因的話,我們先假設一個有效的 assertion 已經被發布到了鏈上,并且正在等待確認。你或是其他任何人都可以核實這個 assertion 的正確性。而且你知道 Rollup 協議最后會對有效的 assertion 進行確認。因此,即使 Rollup 協議還沒有確認某個 assertion ,但是每個關注它的人都知道這個 assertion 將會被確認,可以把它當作“已確認過”。他們都知道被確認是遲早的事,因此可以繼續推進下去。

  舉例來說,如果你將會通過這類交易收到一筆付款,且每個人都能夠確定這筆付款肯定會發生,因此可以簽署這筆付款并將其轉讓給其他人,被轉讓人也能確定自己將來肯定會收到這筆付款。這幾乎就跟現金一樣,唯一的差別是,因為是延遲確認,其價值會等于面值減去一小筆利息(譯者注:可以想象成票據貼現)。

  關鍵在于,即使在被確認之前,一個有效的交易也可以獲得 “免信任確定性(trustlessly final)”。也就是說,任何人都能夠確定這個交易會得到確認。

  多輪交互型 Rollup 中的挑戰期和最終確定性

  在多輪交互型 Rollup 中也是如此:該協議在設計上可以讓有效的 assertion 具備免信任確定性,因此任何人都可以確定這個 assertion 一定會得到確認。區別在于,為了確保交易得到確認,你必須準備好參與到該協議中來保護 assertion ——只要你愿意這樣做,你一個人就可以讓有效的 assertion 得到最終確認。

  (專門給我們的 Arbitrum Rollup 產品的一個邊注:盡管 Arbitrum 技術的早期版本并沒有提供這種免信任確定性,但是最新的版本是有的。在舊版本的協議中,為了安全起見,每個被挑戰的 assertion 都會被取消,以防該挑戰的相關方串通起來將錯誤的挑戰結果上鏈。在新版本的協議中,凡是誠實的相關方都可以強制讓正確的結果通過挑戰期,因此有效的 assertion 一定會通過挑戰并得到確認。)

  (這里還需要糾正一個誤區,即,只要有爭議存在,多輪交互型 Rollup 協議就必須“暫停整個網路”,也就是說,如果有惡意參與方愿意損失押金,就可以一直阻止網絡進程。在最新版本的協議中并非如此。各方可以繼續發布新的 assertion ,無論爭議是否繼續,新的 assertion 可以獲得免信任確定性。只是協議的正式確認被拖慢了而已——這需要攻擊者付出巨大代價。)

  在多輪交互型 Rollup 協議中,確認一個 assertion 需要多久?在通常情況下,如果一個有效的 assertion 發布之后沒人挑戰的話,在確認之前就只會經歷一個挑戰期,就像一輪交互型 Rollup 那樣。

  如果出現了特殊情況,即 assertion 有效但依然遭到了挑戰,最終確認會在多輪爭議協議的影響下被推遲。挑戰者注定會輸,并失去保證金,但是會將最終確認的時間推后。這不會影響 assertion 的免信任確定性,因為所有人一開始就可以判斷出該 assertion 是有效的,還可以在必要之時強制確認有效的 assertion 。整個網絡會繼續像往常那樣安全運行下去,所有人都知道這種惡意挑戰最終會輸。

哪種 Rollup 更適合你?


  那么,你應該采用那種 Rollup 系統呢?如果僅僅用于支付,或是很簡單的智能合約,像 ZK-Rollup 這樣的非交互型系統比較合適。

  如果你想運行比較復雜的智能合約,就需要從一輪交互型(例如, “optimistic rollup”)和多輪交互型(例如,Arbitrum Rollup) Rollup 系統中進行選擇。在通常情況下, 這兩種系統都需要等待較長一段時間才能對 assertion 進行最終確認,而且會為有效的 assertion 提供即時的免信任確定性。一輪 Rollup 系統的優點是可以抵御 “推遲確認” 攻擊,作惡者無法通過放棄保證金的方式推遲 assertion 的最終確認(在任何情況下,assertion 都具有免信任確定性)。多輪 Rollup 系統的優點是(1)通常情況下占用的鏈上空間較小,并且(2)可以處理計算量和存儲量較大的合約,不受以太坊 gas limit 的限制。

  我們 Offchain Labs 團隊認為大多數人都會喜歡鏈上成本較低且適用性較廣的多輪 Rollup 系統,如 Arbitrum Rollup ,而且多輪 Rollup 系統的劣勢也可以通過增加挑戰所需的保證金來補足,以此抵御推遲確認攻擊。

  我們還認為,多輪 Rollup 系統很容易正確實施。這就是為什么我們希望接下來的幾個月(甚至更早)在測試網上提供 Arbitrum Rollup 的功能版本。

  (完)

  (文內提供了許多超鏈接,請點擊閱讀原文到 EthFans 網站上獲取)

  原文鏈接:

  https://medium.com/offchainlabs/whats-up-with-rollup-db8cd93b314e

  作者:  Ed Felten

  翻譯 & 校對: 閔敏 & 阿劍

  你可能還喜歡:

干貨 | Optimistic Rollup vs. ZK Rollup:一探究竟,Part-2引介 | 以太坊難度炸彈的爆發和拆除科普 | Layer-2 中的有效性證明與錯誤性證明

關鍵詞:比特幣新聞 幣牛牛

轉載自比特幣新聞網(www.felzlh.tw),提供比特幣行情走勢分析與數字貨幣投資炒幣最新消息。

原文標題:引介 | Rollup 各方案異同簡介

原文地址:http://www.felzlh.tw/ytf/xw/18207.html

本文來源:區塊鏈資訊編輯:btc268.com

本文僅代表作者個人觀點,與本網站立場無關。

本網站轉載信息目的在于傳遞更多信息。請讀者僅作參考,投資有風險,入市須謹慎!

'); })();
网球王子真人