乾貨 | 路印協議 3.0 ——使用 zkSNARK 擴充套件去中心化交易所

買賣虛擬貨幣

路印協議 3.0 有兩大主要優勢:

  1. 大幅提高吞吐量降低成本

  2. 支援即時結算

整合以上兩個優勢後,這個協議將徹底顛覆以往去中心化交易所的交易體驗。

完整的設計文件: 

https://github.com/Loopring/protocols/blob/master/packages/loopring_v3/DESIGN.md

基於區塊鏈的資產當然要在區塊鏈上交易啦!不然真的會很迷。既然有了不建立在信任基礎上的密碼學貨幣,這麼珍貴、這麼神奇的資產為什麼還要委託給需要信任的中間人來交易?為什麼還要交易 IOU(欠條)?為什麼還要將資產從滲透整個金融領域的開放平臺上移走?

很多人都禁不起這樣的靈魂拷問。與此同時,中心化交易所狀況頻出,外部駭客攻擊或是交易所監守自盜等問題讓我們防不勝防,甚至連交易量的真實性也無從考證(不過,有人正試圖弄清楚)。

坦白來說,在中心化交易所進行數字貨幣和代幣交易確實有(過)優勢——因為在去中心化交易所上交易不(總)是那麼有趣且好上手的。通常會面臨使用者體驗、流動性及可擴充套件性這三大障礙。不過我們這群小夥伴,特別是以太坊 DeFi 社羣的開發者們,在加強流動性及建立媲美 web 2.0 時代應用的 dapp 方面,已經取得長足的進展。

然而可擴充套件性問題依然有待解決,特別是涉及到免信任型交易。我們必須面對這樣一個現實,如果無法大幅提升去中心化交易所的可擴充套件性(或是從底層提升以太坊的效能),就無法解決這個問題。考慮到這一點,路印協議開發團隊在過去半年時間裡正在著重解決可擴充套件性問題。

我們最新發布的路印協議 3.0,直擊可擴充套件性問題這一痛點,並使用最有效的解決手段——零知識證明

零知識證明概述🔐

我們一直在思考如何解決可擴充套件性問題。這一點從一開始就在影響我們的設計決策(從 1.0 到 2.0)—— 實現一種結合鏈下訂單訊息傳遞及鏈上結算的混合模型,也就是說,儘可能將大部分事務放到鏈下,只在必要時使用區塊鏈來確保關鍵事務的正確性。

協議 3.0 有點像是把這種邏輯推向了極端。現在,我們能在鏈下做更多事,包含結算 ......同時確保安全性。

為實現這一點,我們在協議 3.0 中引入了零知識證明(ZKPs)。它是一種密碼學工具,能夠讓某個 證明者 自證“已經完成某項計算或知道某個金鑰”——同時無需將計算結果或金鑰透露給 驗證方 。

零知識證明聽起來對隱私保護有很大作用對不對?舉例來說,某個投資俱樂部對於會員的要求是身家超過 X 美元,我可以透過零知識證明來證明自己達到了這個入會門檻,同時不需要透露具體的金額;這個俱樂部也能肯定我說的是事實。這聽起來有點複雜,不過該技術已經被用於一些注重私密性的加密貨幣,如 ZCash 。

除了隱私保障,零知識證明也有助於提升複雜系統的可擴充套件性。除了自證身家超過 X 美元之外,作為一個去中心化交易所的所有者,我還能夠證明使用者的賬戶餘額是否正確(無需展示具體金額)、使用者的交易是否正確結算、使用者的轉賬是否完成等等——你能想到的一切關於去中心化交易所的操作。這些操作都不是透過智慧合約完成,而是直接在鏈下進行,然後生成一個能讓所有人都相信我所言屬實的證明。

這就是協議 3.0 的目標:以不犧牲安全性為前提進行擴容

在協議 3.0 中,賬戶餘額和歷史交易等相關資料都是透過默克爾樹儲存在鏈下,讓使用者之間的交易結算能夠在鏈下以更新默克爾樹的方式完成,避免耗時又昂貴的鏈上交易。

同時,這也不會造成安全性下降的問題,因為零知識證明能夠保證這些交易如宣稱那樣是真實且已執行的。協議 3.0 仍然是 100% 無中間方,對終端使用者來說充分安全的——即使存在惡意的去中心化交易所運營者,他們也無法偷走代幣。

所有計算都在鏈下完成的情況下,我們就能減少與以太坊主鏈的互動頻率,減輕網路負載。事實上,去中心化交易所提交到以太坊區塊鏈上的東西就是前面提到的證明——證明去中心化交易所在鏈下所做的計算都是正確的。透過零知識證明,尤其是 zkSNARK (我們選用的一種零知識證明技術形式),驗證者或者(在路印協議中)用於驗證證明的智慧合約都能夠高效快捷地進行驗證(毫秒級)。

路印協議 3.0 概述📝

任何人都能在路印協議上建立一個新的交易所——由所有者負責處理業務相關的功能,比如註冊代幣、設定維護模式、設定運營者等等;由運營者負責建立、提交、驗證區塊。

這裡指的區塊不是以太坊鏈上的區塊,而是單指與去中心化交易所上的事務(如交易結算)相關的資料段。這類區塊會依據被打包的交易進行狀態變更,將默克爾樹從當前狀態更新為新狀態。接著需要證明區塊中打包交易的正確性並向以太坊主網提供證明,這一步是透過零知識證明實現的。

為了最大化吞吐量,協議 3.0 目前只支援鏈下結算。所有餘額都儲存在默克爾樹上;使用者給我們的智慧合約存入代幣或者取出代幣,餘額在默克爾樹上更新(注:你無需依賴中間方,因為整個過程都是免信任的,沒有資金丟失的風險)。

獨立執行

區塊提交必須依序進行,以便默克爾樹依序從已知舊狀態更新為新狀態。為了讓各自獨立的參與方可以同時進行結算,協議 3.0 允許建立獨立的交易合約;也就是說,每個合約都是獨立執行的,使用者的賬戶及訂單不能與其他合約共享。

聯合執行

另外,去中心化交易所也能選擇共用一個交易合約,以便共享訂單和使用者帳戶——如果他們願意的話。這樣一來,這些交易所就不用各自建立基礎設施來建立區塊並生成證明了。

運營者可以是個簡單的以太坊地址,也可以是允許多個運營者聯合 提交/驗證 區塊的複雜合約,這些都能由交易所自行設定。

這種協作式的運營者合約也能用於實施鏈下資料可得性系統——一個簡單的方案是,各個運營者需要在區塊提交前進行簽名,可以透過運營者合約檢查其有效性。只要其中一個運營者守信用並真正分享資料,就能保證資料的可得性。

同樣的,交易所的所有者也可以是合約!例如,交易所所有者可以是某種治理合約或去中心化自治組織,能夠同時管理多個去中心化交易所。這些都是由去中心化交易所自己決定的,而且可以按需進行更新迭代,同時不會擾亂交易所業務。

有狀態+使用者粘性

基於以上分析,我們的設想是,大多數交易會透過一個合約完成,其中,交易所 所有者/運營者 均由合約來充當。因為區塊內包含了所有去中心化交易所的操作,所以這樣做既能增加資產流動性,也能有效提升交易效率、降低延時、增加吞吐量。

還有很重要的一點是,這樣做極大地增加路印協議 “有狀態” 的可能性——能夠儲存有價值的狀態、使用者、流動性等等。一組良好協作、蓬勃發展的去中心化交易所很難被解散或分叉,這也增加路印協議的安全性,永續性,及價值。

[如何將一組去中心化交易所構建在同一個合約上可以實現靈活的業務邏輯並分享 訂單/手續費,詳情請見此處。]

最後還有一點,考慮到賬戶餘額是在鏈下結算的,交易者使用(且喜歡)交易框架,會產生原生的使用者粘性。因此,效能良好的去中心化交易所、或是共用同一個合約的去中心化交易所群組,都能夠聚集一批忠實使用者。我們對此感到期待,因為我們的目標就是在此協議上支援成功的去中心化交易所 。

吞吐量及成本資料🐆

讓我們聽聽好訊息——究竟提升了多少效能?

根據目前的實現情況而言,在不提供鏈上資料可得性的情況下,在以太坊上可實現每秒 450 次交易;在提供鏈上資料可得性的情況下,在以太坊上可實現每秒 80 次交易。相比之下,前幾版路印協議(和其他去中心化交易所)只能達到每秒 2 次交易左右。

-不包含建立鏈下證明的成本(保守估計 $0.005,實際上應該更低)-

這只是個開端,吞吐量在短期內還會大幅提升。近期還會引入更高效的雜湊函式以及更簡單的費用環路,在不提供鏈上資料可得性的情況下,我們能夠達到在每個以太坊區塊完成 10,000–20,000 個訂單環或是每秒完成 1000 次交易

[更多效能數值詳見此處。]

這非常令人興奮。我們終於有了能夠實現去中心化交易所商業化的工具,幫助去中心化交易所與中心化交易所抗衡

當然,如果有數百萬計的資產實現代幣化,並且需要不斷轉手時,我們離所需的吞吐量仍然還差幾個量級。不過,我們對此還是很有信心的,畢竟還有零知識證明等二層擴充套件方案,和分片等一層(以太坊)擴容改進方案。

[鏈上資料可得性指的是去中心化交易所的所有歷史紀錄都能在以太坊主網上查到,任何第三方都可以在任何時間點重構交易所的狀態;更多細節詳見此處。]

其他功能🎄

擴充套件性是協議 3.0 的關注點及驅動力,除此之外還有其他一些很棒的功能已經實現。部分功能繼承/最佳化自協議 2.0 ,還有一部分只適用於協議 3.0 。點選這個文件能看到整個功能列表;要查閱完整的說明則建議閱讀設計文件。有以下幾個要點:

  • 可以選擇是否提供鏈上資料可得性——去中心化交易所可以選擇放棄這個功能,以此增加吞吐量並降低手續費。

  • 預設支援所有 ERC20 代幣及 ETHETH 不需要轉化為 WETH 。

  • 所有代幣都能用作交易手續費,而 LRC 可以從中得到好處。(譯者注:因為不管使用什麼代幣,手續費中都會有一部分交給合約,從市場上買來 LRC 並燒掉)

  • 允許匹配部分訂單(即只吃某訂單中的一部分),並自動縮放訂單。

  • 加強雙重授權功能,避免 訂單/交易 被中間方竊取(基於協議 2.0 做的加強)。

  • 獨家支援訂單別名功能。

  • 去中心化交易所的運營者可以質押 LRC “購買” 信譽,也就是實現利益繫結。

  • 支援 “維護模式”——去中心化交易所的運營者能購買一定停機時間來升級後端。

  • 保證去中心化交易所的運營方能夠準時完成任務(特別是處理存取款)的內嵌機制。

LRC 的其他附加功用🚴🏾

上文提及的功能不會一一展開,我會講講最後三個。這三點很有趣,因為:

A. 他們有助於確保去中心化交易所更加公平公正地運轉

B. 隨著機制最佳化,LRC 會具備更多原生使用價值

質押

建立交易所需要質押 LRC 。任何人(不只是所有者和運營者)都能在交易所質押 LRC;只有在交易所正常關閉且所有使用者的賬戶餘額都取出之後,才可以取出押金。

押金能保證交易所正確執行。之所以能做到這一點,是因為 1)如果沒有及時生成區塊證明,押金就會被銷燬,2)交易所自動將資金歸還給使用者後就會關閉,只有這時使用者才可以取回押金。如果繳納大量押金的交易所作惡,他們將損失慘重、一無所獲,因為運營者無法監守自盜。

注意:因為協議預設具有安全性,所以不是強制要求質押。不過,質押能實現風險共擔,而且用來區分不同的去中心化交易所;重要的是,質押可以防止使用者遭遇資料可得性問題。當不需要實施資料可得性的時候,即使只有運營者能重構默克爾樹,質押機制依然能夠保證所有資金會正確返還給使用者,否則交易所就會失去押金。

維護模式

交易所所有者可以讓交易所暫時 處於暫停狀態。例如,在更新交易所後臺的時候就能使用這個功能。

交易所所有者能購買停工期,也就是透過銷燬 LRC 換取停工期;停工期還可以透過多次購買來得到延長。

這個功能是必需的,因為運營者 必須 處理上鍊請求,否則交易所就會進入不可逆的退款(關閉)模式。維護模式允許交易所暫時停止處理上鍊請求(避免處理不及時)。不過,使用者請求旨在確保使用者可以在需要之時取款——因此,收取維護費的目的是確保交易所不能無限期停留在維護模式。

及時執行 存/取 款

每個人都討厭等待,特別是涉及到錢的時候。

如果交易所運營者沒有及時處理使用者的存取款請求,手續費就會直線下降;如果運營者沒有在使用者發起取款請求後自動將代幣轉入目標地址,就會被罰款(從押金里扣)——其中 50% 的罰款用於獎勵願意處理該請求的其他運營者(使用者可以選擇自己上),另外 50% 則銷燬。

事實上還有個功能

訂單別名非常酷,這裡多做一點解釋。訂單別名允許交易者在多個訂單中重複使用相同的交易歷史時段。除了能夠更安全地更新訂單,避免新老訂單同時達成交易之外,還支援一些有趣的吃單邏輯。

舉例來說,使用者能夠在同一個交易 “時段” 內建立一個 “用 X 枚 代幣Z 購買 N 枚 代幣 A 或 M 枚 代幣 B (或其他代幣)” 的買單;在這種規則情況下,使用者不會花費超過 X 枚 代幣 Z,但是能買到 [0, N] 枚 代幣 A 且/或 [0, M] 枚 代幣 B 。

該功能的實際用例是使用某種代幣來購買任意一種穩定幣,或是使用某種代幣來購買 ETH 或 WETH 。在這些情況下,使用者可能不在乎自己會買到哪種幣,只是想增加達成交易的概率。

手續費模式依舊靈活

協議 3.0 依舊沿用了協議 2.0 中介紹的手續費模式,交易者能夠繼續支付任意一種代幣作為手續費,去中心化交易所則賺取這些手續費,但 LRC 受到協議層通縮設定影響,總供給量會隨著網路使用量的增加而減少。

如果去中心化交易所用起來像中心化交易所💸

如一開始提到的,去中心化交易所的交易體驗會發生巨大變化;事實上,我們以後可能都不會刻意提到 “去中心化交易所”這個詞——未來,加密交易只會在去中心化交易所上進行。協議 3.0 就是這項轉變的開端。

將來,基於路印協議 3.0 的去中心化交易所會帶來如去中心化交易所那樣快速便捷的交易體驗。結算也能及時獲得籤驗。

交易流程

使用者透過賬戶在交易所建立訂單,訂單會被記錄在去中心化交易所的訂單簿上。

去中心化交易所將會匹配訂單,並透過環形匹配私鑰和雙重授權金鑰簽署訂單。訂單環中訂單完成流程如下:

  • 訂單環結算完成之後,去中心化交易所的圖形使用者介面會立即更新,訂單會顯示 “已完成” 狀態,但還未得到驗證。

  • 去中心化交易所將訂單環傳送給運營者;收到訂單環之後,運營者必須儘快提交區塊。

  • 在最大容許時間限制內,運營者會生成證明並驗證區塊。

訂單交易完成之後,去中心化交易所會顯示“已驗證”標識。訂單有以下幾種狀態標識:

  • 在訂單簿中 “未匹配

  • 由去中心化交易所 “完成匹配

  • 已提交” 入區塊

  • 透過生成證明 “完成驗證

  • 一旦該訂單所在區塊得到最終確定,即表明該訂單得到 “最終確定”(包含該訂單環的區塊以及之前的所有區塊均已被驗證)

只有區塊得到最終確定之後,訂單環的結算結果才真正實現不可逆轉。

挑戰🌔

我們依然面臨一些挑戰,其中最值得注意的就是 SNARKs 需要進行“可信設定”;我們不會在此深入探討,只要知道有些可信設定如果執行不當(隨機性不足),從理論上來說會帶來構建虛假證明的風險。好訊息是,這個問題已經幾乎被解決——Sonic:近似免信任的啟動設定。

相關思考🔭

路印協議 3.0 前景非常鼓舞人心。這個世界似乎終於能夠開始正視去中心化交易所,認識到它將在未來代幣化的世界中成為價值轉移的途徑;我們很榮幸能貢獻一份心力。

去中心化交易所領域的革新速度也讓我們非常吃驚。目前出現許多協議和專案,讓我們意識到自己雖然已經是鏈圈的 “老人” 了,仍然要持續保持行動及思考,不然就會被淘汰;對此我們仍然保持謙遜且積極的心態。

再呼籲一次,請查閱我們協議 3.0 完整的設計文件,下週我們將開原始碼庫,請保持關注。在未來一兩個月內,我們預計會部署測試網路,並在半年內釋出主網。

如果你有意願協助我們一起開發協議 3.0,請聯絡 [email protected]

致謝🏅

感謝所有讓零知識證明在以太坊上成為可行的貢獻者們。特別感謝 BarryWhitehat 和 HarryR 進行的彙總和整合工作;感謝 Sean Bowe 及 ZCash 團隊的推進,以及我們後續十分期待能一起合作的 Matter 實驗室團隊;當然不能忘了感謝 Vitalik 在這個領域的研究。

我們還要感謝自家人 Brecht Devos,他超乎常人的學習及編碼能力,讓他在協議 3.0 上做出許多卓越的貢獻。

路印協議 3.0 設計文件:

https://github.com/Loopring/docs/wiki/Loopring3_Design

原文連結:

https://medium.com/loopring-protocol/loopring-protocol-3-0-zksnarks-for-scalability-845b35a8b75b

作者: Matthew Finestone

翻譯&校對: IAN LIU & 閔敏 

免責聲明:

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

推荐阅读

;