路印協議 3.0 有兩大主要優勢:
1. 大幅提高吞吐量降低成本
2. 支持即時結算
整合以上兩個優勢后,這個協議將徹底顛覆以往去中心化交易所的交易體驗。
基于區塊鏈的資產當然要在區塊鏈上交易啦!不然真的會很迷。既然有了不建立在信任基礎上的密碼學貨幣,這么珍貴、這么神奇的資產為什么還要委托給需要信任的中間人來交易?為什么還要交易 IOU(欠條)?為什么還要將資產從滲透整個金融領域的開放平臺上移走?
很多人都禁不起這樣的靈魂拷問。與此同時,中心化交易所狀況頻出,外部黑客攻擊或是交易所監守自盜等問題讓我們防不勝防,甚至連交易量的真實性也無從考證(不過,有人正試圖弄清楚)。
坦白來說,在中心化交易所進行數字貨幣和代幣交易確實有(過)優勢——因為在去中心化交易所上交易不(總)是那么有趣且好上手的。通常會面臨用戶體驗、流動性及可擴展性這三大障礙。不過我們這群小伙伴,特別是以太坊 DeFi 社區的開發者們,在加強流動性及創建媲美 web 2.0 時代應用的 dapp 方面,已經取得長足的進展。
然而可擴展性問題依然有待解決,特別是涉及到免信任型交易。我們必須面對這樣一個現實,如果無法大幅提升去中心化交易所的可擴展性(或是從底層提升以太坊的性能),就無法解決這個問題??紤]到這一點,路印協議開發團隊在過去半年時間里正在著重解決可擴展性問題。
我們最新發布的路印協議 3.0,直擊可擴展性問題這一痛點,并使用最有效的解決手段——零知識證明。
零知識證明概述
我們一直在思考如何解決可擴展性問題。這一點從一開始就在影響我們的設計決策(從 1.0 到 2.0)—— 實現一種結合鏈下訂單消息傳遞及鏈上結算的混合模型,也就是說,盡可能將大部分事務放到鏈下,只在必要時使用區塊鏈來確保關鍵事務的正確性。
協議 3.0 有點像是把這種邏輯推向了極端?,F在,我們能在鏈下做更多事,包含結算 。..。..同時確保安全性。
為實現這一點,我們在協議 3.0 中引入了零知識證明(ZKPs)。它是一種密碼學工具,能夠讓某個 證明者 自證“已經完成某項計算或知道某個密鑰”——同時無需將計算結果或密鑰透露給 驗證方 。
零知識證明聽起來對隱私保護有很大作用對不對?舉例來說,某個投資俱樂部對于會員的要求是身家超過 X 美元,我可以通過零知識證明來證明自己達到了這個入會門檻,同時不需要透露具體的金額;這個俱樂部也能肯定我說的是事實。這聽起來有點復雜,不過該技術已經被用于一些注重私密性的加密貨幣,如 ZCash 。
除了隱私保障,零知識證明也有助于提升復雜系統的可擴展性。除了自證身家超過 X 美元之外,作為一個去中心化交易所的所有者,我還能夠證明用戶的賬戶余額是否正確(無需展示具體金額)、用戶的交易是否正確結算、用戶的轉賬是否完成等等——你能想到的一切關于去中心化交易所的操作。這些操作都不是通過智能合約完成,而是直接在鏈下進行,然后生成一個能讓所有人都相信我所言屬實的證明。
這就是協議 3.0 的目標:以不犧牲安全性為前提進行擴容。
在協議 3.0 中,賬戶余額和歷史交易等相關數據都是通過默克爾樹保存在鏈下,讓用戶之間的交易結算能夠在鏈下以更新默克爾樹的方式完成,避免耗時又昂貴的鏈上交易。
同時,這也不會造成安全性下降的問題,因為零知識證明能夠保證這些交易如宣稱那樣是真實且已執行的。協議 3.0 仍然是 100% 無中間方,對終端用戶來說充分安全的——即使存在惡意的去中心化交易所運營者,他們也無法偷走代幣。
所有計算都在鏈下完成的情況下,我們就能減少與以太坊主鏈的交互頻率,減輕網絡負載。事實上,去中心化交易所提交到以太坊區塊鏈上的東西就是前面提到的證明——證明去中心化交易所在鏈下所做的計算都是正確的。通過零知識證明,尤其是 zkSNARK (我們選用的一種零知識證明技術形式),驗證者或者(在路印協議中)用于驗證證明的智能合約都能夠高效快捷地進行驗證(毫秒級)。
路印協議 3.0 概述
任何人都能在路印協議上創建一個新的交易所——由所有者負責處理業務相關的功能,比如注冊代幣、設置維護模式、設置運營者等等;由運營者負責創建、提交、驗證區塊。
這里指的區塊不是以太坊鏈上的區塊,而是單指與去中心化交易所上的事務(如交易結算)相關的數據段。這類區塊會依據被打包的交易進行狀態變更,將默克爾樹從當前狀態更新為新狀態。接著需要證明區塊中打包交易的正確性并向以太坊主網提供證明,這一步是通過零知識證明實現的。
為了最大化吞吐量,協議 3.0 目前只支持鏈下結算。所有余額都保存在默克爾樹上;用戶給我們的智能合約存入代幣或者取出代幣,余額在默克爾樹上更新(注:你無需依賴中間方,因為整個過程都是免信任的,沒有資金丟失的風險)。
獨立運行
區塊提交必須依序進行,以便默克爾樹依序從已知舊狀態更新為新狀態。為了讓各自獨立的參與方可以同時進行結算,協議 3.0 允許創建獨立的交易合約;也就是說,每個合約都是獨立運行的,用戶的賬戶及訂單不能與其他合約共享。
聯合運行
另外,去中心化交易所也能選擇共用一個交易合約,以便共享訂單和用戶帳戶——如果他們愿意的話。這樣一來,這些交易所就不用各自建立基礎設施來創建區塊并生成證明了。
運營者可以是個簡單的以太坊地址,也可以是允許多個運營者聯合 提交/驗證 區塊的復雜合約,這些都能由交易所自行設置。
這種協作式的運營者合約也能用于實施鏈下數據可得性系統——一個簡單的方案是,各個運營者需要在區塊提交前進行簽名,可以通過運營者合約檢查其有效性。只要其中一個運營者守信用并真正分享數據,就能保證數據的可得性。
同樣的,交易所的所有者也可以是合約!例如,交易所所有者可以是某種治理合約或去中心化自治組織,能夠同時管理多個去中心化交易所。這些都是由去中心化交易所自己決定的,而且可以按需進行更新迭代,同時不會擾亂交易所業務。
有狀態+用戶粘性
基于以上分析,我們的設想是,大多數交易會通過一個合約完成,其中,交易所 所有者/運營者 均由合約來充當。因為區塊內包含了所有去中心化交易所的操作,所以這樣做既能增加資產流動性,也能有效提升交易效率、降低延時、增加吞吐量。
還有很重要的一點是,這樣做極大地增加路印協議 “有狀態” 的可能性——能夠保存有價值的狀態、用戶、流動性等等。一組良好協作、蓬勃發展的去中心化交易所很難被解散或分叉,這也增加路印協議的安全性,永續性,及價值。
[如何將一組去中心化交易所構建在同一個合約上可以實現靈活的業務邏輯并分享 訂單/手續費,詳情請見此處。]
最后還有一點,考慮到賬戶余額是在鏈下結算的,交易者使用(且喜歡)交易框架,會產生原生的用戶粘性。因此,性能良好的去中心化交易所、或是共用同一個合約的去中心化交易所群組,都能夠聚集一批忠實用戶。我們對此感到期待,因為我們的目標就是在此協議上支持成功的去中心化交易所 。
吞吐量及成本數據
讓我們聽聽好消息——究竟提升了多少性能?
根據目前的實現情況而言,在不提供鏈上數據可得性的情況下,在以太坊上可實現每秒 450 次交易;在提供鏈上數據可得性的情況下,在以太坊上可實現每秒 80 次交易。相比之下,前幾版路印協議(和其他去中心化交易所)只能達到每秒 2 次交易左右。
這只是個開端,吞吐量在短期內還會大幅提升。近期還會引入更高效的哈希函數以及更簡單的費用環路,在不提供鏈上數據可得性的情況下,我們能夠達到在每個以太坊區塊完成 10,000–20,000 個訂單環或是每秒完成 1000 次交易。
這非常令人興奮。我們終于有了能夠實現去中心化交易所商業化的工具,幫助去中心化交易所與中心化交易所抗衡。
當然,如果有數百萬計的資產實現代幣化,并且需要不斷轉手時,我們離所需的吞吐量仍然還差幾個量級。不過,我們對此還是很有信心的,畢竟還有零知識證明等二層擴展方案,和分片等一層(以太坊)擴容改進方案。
鏈上數據可得性指的是去中心化交易所的所有歷史紀錄都能在以太坊主網上查到,任何第三方都可以在任何時間點重構交易所的狀態;
其他功能
擴展性是協議 3.0 的關注點及驅動力,除此之外還有其他一些很棒的功能已經實現。部分功能繼承/優化自協議 2.0 ,還有一部分只適用于協議 3.0 。點擊這個文檔能看到整個功能列表;要查閱完整的說明則建議閱讀設計文檔。有以下幾個要點:
· 可以選擇是否提供鏈上數據可得性——去中心化交易所可以選擇放棄這個功能,以此增加吞吐量并降低手續費。
· 默認支持所有 ERC20 代幣及 ETH ,ETH 不需要轉化為 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,請聯系 foundation@loopring.org 。
感謝所有讓零知識證明在以太坊上成為可行的貢獻者們。特別感謝 BarryWhitehat 和 HarryR 進行的匯總和整合工作;感謝 Sean Bowe 及 ZCash 團隊的推進,以及我們后續十分期待能一起合作的 Matter 實驗室團隊;當然不能忘了感謝 Vitalik 在這個領域的研究。
我們還要感謝自家人 Brecht Devos,他超乎常人的學習及編碼能力,讓他在協議 3.0 上做出許多卓越的貢獻。
評論
查看更多