路印協(xié)議3.0將徹底顛覆去中心化交易所的交易體驗
路印協(xié)議 3.0 有兩大主要優(yōu)勢:
1. 大幅提高吞吐量降低成本
2. 支持即時結(jié)算
整合以上兩個優(yōu)勢后,這個協(xié)議將徹底顛覆以往去中心化交易所的交易體驗。
基于區(qū)塊鏈的資產(chǎn)當(dāng)然要在區(qū)塊鏈上交易啦!不然真的會很迷。既然有了不建立在信任基礎(chǔ)上的密碼學(xué)貨幣,這么珍貴、這么神奇的資產(chǎn)為什么還要委托給需要信任的中間人來交易?為什么還要交易 IOU(欠條)?為什么還要將資產(chǎn)從滲透整個金融領(lǐng)域的開放平臺上移走?
很多人都禁不起這樣的靈魂拷問。與此同時,中心化交易所狀況頻出,外部黑客攻擊或是交易所監(jiān)守自盜等問題讓我們防不勝防,甚至連交易量的真實性也無從考證(不過,有人正試圖弄清楚)。
坦白來說,在中心化交易所進(jìn)行數(shù)字貨幣和代幣交易確實有(過)優(yōu)勢——因為在去中心化交易所上交易不(總)是那么有趣且好上手的。通常會面臨用戶體驗、流動性及可擴展性這三大障礙。不過我們這群小伙伴,特別是以太坊 DeFi 社區(qū)的開發(fā)者們,在加強流動性及創(chuàng)建媲美 web 2.0 時代應(yīng)用的 dapp 方面,已經(jīng)取得長足的進(jìn)展。
然而可擴展性問題依然有待解決,特別是涉及到免信任型交易。我們必須面對這樣一個現(xiàn)實,如果無法大幅提升去中心化交易所的可擴展性(或是從底層提升以太坊的性能),就無法解決這個問題??紤]到這一點,路印協(xié)議開發(fā)團(tuán)隊在過去半年時間里正在著重解決可擴展性問題。
我們最新發(fā)布的路印協(xié)議 3.0,直擊可擴展性問題這一痛點,并使用最有效的解決手段——零知識證明。
零知識證明概述
我們一直在思考如何解決可擴展性問題。這一點從一開始就在影響我們的設(shè)計決策(從 1.0 到 2.0)—— 實現(xiàn)一種結(jié)合鏈下訂單消息傳遞及鏈上結(jié)算的混合模型,也就是說,盡可能將大部分事務(wù)放到鏈下,只在必要時使用區(qū)塊鏈來確保關(guān)鍵事務(wù)的正確性。
協(xié)議 3.0 有點像是把這種邏輯推向了極端?,F(xiàn)在,我們能在鏈下做更多事,包含結(jié)算 。..。..同時確保安全性。
為實現(xiàn)這一點,我們在協(xié)議 3.0 中引入了零知識證明(ZKPs)。它是一種密碼學(xué)工具,能夠讓某個 證明者 自證“已經(jīng)完成某項計算或知道某個密鑰”——同時無需將計算結(jié)果或密鑰透露給 驗證方 。
零知識證明聽起來對隱私保護(hù)有很大作用對不對?舉例來說,某個投資俱樂部對于會員的要求是身家超過 X 美元,我可以通過零知識證明來證明自己達(dá)到了這個入會門檻,同時不需要透露具體的金額;這個俱樂部也能肯定我說的是事實。這聽起來有點復(fù)雜,不過該技術(shù)已經(jīng)被用于一些注重私密性的加密貨幣,如 ZCash 。
除了隱私保障,零知識證明也有助于提升復(fù)雜系統(tǒng)的可擴展性。除了自證身家超過 X 美元之外,作為一個去中心化交易所的所有者,我還能夠證明用戶的賬戶余額是否正確(無需展示具體金額)、用戶的交易是否正確結(jié)算、用戶的轉(zhuǎn)賬是否完成等等——你能想到的一切關(guān)于去中心化交易所的操作。這些操作都不是通過智能合約完成,而是直接在鏈下進(jìn)行,然后生成一個能讓所有人都相信我所言屬實的證明。
這就是協(xié)議 3.0 的目標(biāo):以不犧牲安全性為前提進(jìn)行擴容。
在協(xié)議 3.0 中,賬戶余額和歷史交易等相關(guān)數(shù)據(jù)都是通過默克爾樹保存在鏈下,讓用戶之間的交易結(jié)算能夠在鏈下以更新默克爾樹的方式完成,避免耗時又昂貴的鏈上交易。
同時,這也不會造成安全性下降的問題,因為零知識證明能夠保證這些交易如宣稱那樣是真實且已執(zhí)行的。協(xié)議 3.0 仍然是 100% 無中間方,對終端用戶來說充分安全的——即使存在惡意的去中心化交易所運營者,他們也無法偷走代幣。
所有計算都在鏈下完成的情況下,我們就能減少與以太坊主鏈的交互頻率,減輕網(wǎng)絡(luò)負(fù)載。事實上,去中心化交易所提交到以太坊區(qū)塊鏈上的東西就是前面提到的證明——證明去中心化交易所在鏈下所做的計算都是正確的。通過零知識證明,尤其是 zkSNARK (我們選用的一種零知識證明技術(shù)形式),驗證者或者(在路印協(xié)議中)用于驗證證明的智能合約都能夠高效快捷地進(jìn)行驗證(毫秒級)。
路印協(xié)議 3.0 概述
任何人都能在路印協(xié)議上創(chuàng)建一個新的交易所——由所有者負(fù)責(zé)處理業(yè)務(wù)相關(guān)的功能,比如注冊代幣、設(shè)置維護(hù)模式、設(shè)置運營者等等;由運營者負(fù)責(zé)創(chuàng)建、提交、驗證區(qū)塊。
這里指的區(qū)塊不是以太坊鏈上的區(qū)塊,而是單指與去中心化交易所上的事務(wù)(如交易結(jié)算)相關(guān)的數(shù)據(jù)段。這類區(qū)塊會依據(jù)被打包的交易進(jìn)行狀態(tài)變更,將默克爾樹從當(dāng)前狀態(tài)更新為新狀態(tài)。接著需要證明區(qū)塊中打包交易的正確性并向以太坊主網(wǎng)提供證明,這一步是通過零知識證明實現(xiàn)的。
為了最大化吞吐量,協(xié)議 3.0 目前只支持鏈下結(jié)算。所有余額都保存在默克爾樹上;用戶給我們的智能合約存入代幣或者取出代幣,余額在默克爾樹上更新(注:你無需依賴中間方,因為整個過程都是免信任的,沒有資金丟失的風(fēng)險)。
獨立運行
區(qū)塊提交必須依序進(jìn)行,以便默克爾樹依序從已知舊狀態(tài)更新為新狀態(tài)。為了讓各自獨立的參與方可以同時進(jìn)行結(jié)算,協(xié)議 3.0 允許創(chuàng)建獨立的交易合約;也就是說,每個合約都是獨立運行的,用戶的賬戶及訂單不能與其他合約共享。
聯(lián)合運行
另外,去中心化交易所也能選擇共用一個交易合約,以便共享訂單和用戶帳戶——如果他們愿意的話。這樣一來,這些交易所就不用各自建立基礎(chǔ)設(shè)施來創(chuàng)建區(qū)塊并生成證明了。
運營者可以是個簡單的以太坊地址,也可以是允許多個運營者聯(lián)合 提交/驗證 區(qū)塊的復(fù)雜合約,這些都能由交易所自行設(shè)置。
這種協(xié)作式的運營者合約也能用于實施鏈下數(shù)據(jù)可得性系統(tǒng)——一個簡單的方案是,各個運營者需要在區(qū)塊提交前進(jìn)行簽名,可以通過運營者合約檢查其有效性。只要其中一個運營者守信用并真正分享數(shù)據(jù),就能保證數(shù)據(jù)的可得性。
同樣的,交易所的所有者也可以是合約!例如,交易所所有者可以是某種治理合約或去中心化自治組織,能夠同時管理多個去中心化交易所。這些都是由去中心化交易所自己決定的,而且可以按需進(jìn)行更新迭代,同時不會擾亂交易所業(yè)務(wù)。
有狀態(tài)+用戶粘性
基于以上分析,我們的設(shè)想是,大多數(shù)交易會通過一個合約完成,其中,交易所 所有者/運營者 均由合約來充當(dāng)。因為區(qū)塊內(nèi)包含了所有去中心化交易所的操作,所以這樣做既能增加資產(chǎn)流動性,也能有效提升交易效率、降低延時、增加吞吐量。
還有很重要的一點是,這樣做極大地增加路印協(xié)議 “有狀態(tài)” 的可能性——能夠保存有價值的狀態(tài)、用戶、流動性等等。一組良好協(xié)作、蓬勃發(fā)展的去中心化交易所很難被解散或分叉,這也增加路印協(xié)議的安全性,永續(xù)性,及價值。
[如何將一組去中心化交易所構(gòu)建在同一個合約上可以實現(xiàn)靈活的業(yè)務(wù)邏輯并分享 訂單/手續(xù)費,詳情請見此處。]
最后還有一點,考慮到賬戶余額是在鏈下結(jié)算的,交易者使用(且喜歡)交易框架,會產(chǎn)生原生的用戶粘性。因此,性能良好的去中心化交易所、或是共用同一個合約的去中心化交易所群組,都能夠聚集一批忠實用戶。我們對此感到期待,因為我們的目標(biāo)就是在此協(xié)議上支持成功的去中心化交易所 。
吞吐量及成本數(shù)據(jù)
讓我們聽聽好消息——究竟提升了多少性能?
根據(jù)目前的實現(xiàn)情況而言,在不提供鏈上數(shù)據(jù)可得性的情況下,在以太坊上可實現(xiàn)每秒 450 次交易;在提供鏈上數(shù)據(jù)可得性的情況下,在以太坊上可實現(xiàn)每秒 80 次交易。相比之下,前幾版路印協(xié)議(和其他去中心化交易所)只能達(dá)到每秒 2 次交易左右。
這只是個開端,吞吐量在短期內(nèi)還會大幅提升。近期還會引入更高效的哈希函數(shù)以及更簡單的費用環(huán)路,在不提供鏈上數(shù)據(jù)可得性的情況下,我們能夠達(dá)到在每個以太坊區(qū)塊完成 10,000–20,000 個訂單環(huán)或是每秒完成 1000 次交易。
這非常令人興奮。我們終于有了能夠?qū)崿F(xiàn)去中心化交易所商業(yè)化的工具,幫助去中心化交易所與中心化交易所抗衡。
當(dāng)然,如果有數(shù)百萬計的資產(chǎn)實現(xiàn)代幣化,并且需要不斷轉(zhuǎn)手時,我們離所需的吞吐量仍然還差幾個量級。不過,我們對此還是很有信心的,畢竟還有零知識證明等二層擴展方案,和分片等一層(以太坊)擴容改進(jìn)方案。
鏈上數(shù)據(jù)可得性指的是去中心化交易所的所有歷史紀(jì)錄都能在以太坊主網(wǎng)上查到,任何第三方都可以在任何時間點重構(gòu)交易所的狀態(tài);
其他功能
擴展性是協(xié)議 3.0 的關(guān)注點及驅(qū)動力,除此之外還有其他一些很棒的功能已經(jīng)實現(xiàn)。部分功能繼承/優(yōu)化自協(xié)議 2.0 ,還有一部分只適用于協(xié)議 3.0 。點擊這個文檔能看到整個功能列表;要查閱完整的說明則建議閱讀設(shè)計文檔。有以下幾個要點:
· 可以選擇是否提供鏈上數(shù)據(jù)可得性——去中心化交易所可以選擇放棄這個功能,以此增加吞吐量并降低手續(xù)費。
· 默認(rèn)支持所有 ERC20 代幣及 ETH ,ETH 不需要轉(zhuǎn)化為 WETH 。
· 所有代幣都能用作交易手續(xù)費,而 LRC 可以從中得到好處。(譯者注:因為不管使用什么代幣,手續(xù)費中都會有一部分交給合約,從市場上買來 LRC 并燒掉)
· 允許匹配部分訂單(即只吃某訂單中的一部分),并自動縮放訂單。
· 加強雙重授權(quán)功能,避免 訂單/交易 被中間方竊?。ɑ趨f(xié)議 2.0 做的加強)。
· 獨家支持訂單別名功能。
· 去中心化交易所的運營者可以質(zhì)押 LRC “購買” 信譽,也就是實現(xiàn)利益綁定。
· 支持 “維護(hù)模式”——去中心化交易所的運營者能購買一定停機時間來升級后端。
· 保證去中心化交易所的運營方能夠準(zhǔn)時完成任務(wù)(特別是處理存取款)的內(nèi)嵌機制。
LRC 的其他附加功用
上文提及的功能不會一一展開,我會講講最后三個。這三點很有趣,因為:
A. 他們有助于確保去中心化交易所更加公平公正地運轉(zhuǎn)。
B. 隨著機制優(yōu)化,LRC 會具備更多原生使用價值。
質(zhì)押
創(chuàng)建交易所需要質(zhì)押 LRC 。任何人(不只是所有者和運營者)都能在交易所質(zhì)押 LRC;只有在交易所正常關(guān)閉且所有使用者的賬戶余額都取出之后,才可以取出押金。
押金能保證交易所正確運行。之所以能做到這一點,是因為 1)如果沒有及時生成區(qū)塊證明,押金就會被銷毀,2)交易所自動將資金歸還給用戶后就會關(guān)閉,只有這時用戶才可以取回押金。如果繳納大量押金的交易所作惡,他們將損失慘重、一無所獲,因為運營者無法監(jiān)守自盜。
注意:因為協(xié)議默認(rèn)具有安全性,所以不是強制要求質(zhì)押。不過,質(zhì)押能實現(xiàn)風(fēng)險共擔(dān),而且用來區(qū)分不同的去中心化交易所;重要的是,質(zhì)押可以防止用戶遭遇數(shù)據(jù)可得性問題。當(dāng)不需要實施數(shù)據(jù)可得性的時候,即使只有運營者能重構(gòu)默克爾樹,質(zhì)押機制依然能夠保證所有資金會正確返還給用戶,否則交易所就會失去押金。
維護(hù)模式
交易所所有者可以讓交易所暫時 處于暫停狀態(tài)。例如,在更新交易所后臺的時候就能使用這個功能。
交易所所有者能購買停工期,也就是通過銷毀 LRC 換取停工期;停工期還可以通過多次購買來得到延長。
這個功能是必需的,因為運營者 必須 處理上鏈請求,否則交易所就會進(jìn)入不可逆的退款(關(guān)閉)模式。維護(hù)模式允許交易所暫時停止處理上鏈請求(避免處理不及時)。不過,用戶請求旨在確保用戶可以在需要之時取款——因此,收取維護(hù)費的目的是確保交易所不能無限期停留在維護(hù)模式。
及時執(zhí)行 存/取 款
每個人都討厭等待,特別是涉及到錢的時候。
如果交易所運營者沒有及時處理用戶的存取款請求,手續(xù)費就會直線下降;如果運營者沒有在用戶發(fā)起取款請求后自動將代幣轉(zhuǎn)入目標(biāo)地址,就會被罰款(從押金里扣)——其中 50% 的罰款用于獎勵愿意處理該請求的其他運營者(用戶可以選擇自己上),另外 50% 則銷毀。
事實上還有個功能
訂單別名非常酷,這里多做一點解釋。訂單別名允許交易者在多個訂單中重復(fù)使用相同的交易歷史時段。除了能夠更安全地更新訂單,避免新老訂單同時達(dá)成交易之外,還支持一些有趣的吃單邏輯。
舉例來說,用戶能夠在同一個交易 “時段” 內(nèi)創(chuàng)建一個 “用 X 枚 代幣 Z 購買 N 枚 代幣 A 或 M 枚 代幣 B (或其他代幣)” 的買單;在這種規(guī)則情況下,用戶不會花費超過 X 枚 代幣 Z,但是能買到 [0, N] 枚 代幣 A 且/或 [0, M] 枚 代幣 B 。
該功能的實際用例是使用某種代幣來購買任意一種穩(wěn)定幣,或是使用某種代幣來購買 ETH 或 WETH 。在這些情況下,用戶可能不在乎自己會買到哪種幣,只是想增加達(dá)成交易的概率。
手續(xù)費模式依舊靈活
協(xié)議 3.0 依舊沿用了協(xié)議 2.0 中介紹的手續(xù)費模式,交易者能夠繼續(xù)支付任意一種代幣作為手續(xù)費,去中心化交易所則賺取這些手續(xù)費,但 LRC 受到協(xié)議層通縮設(shè)定影響,總供給量會隨著網(wǎng)絡(luò)使用量的增加而減少。
如果去中心化交易所用起來像中心化交易所
如一開始提到的,去中心化交易所的交易體驗會發(fā)生巨大變化;事實上,我們以后可能都不會刻意提到 “去中心化交易所”這個詞——未來,加密交易只會在去中心化交易所上進(jìn)行。協(xié)議 3.0 就是這項轉(zhuǎn)變的開端。
將來,基于路印協(xié)議 3.0 的去中心化交易所會帶來如去中心化交易所那樣快速便捷的交易體驗。結(jié)算也能及時獲得簽驗。
交易流程
用戶通過賬戶在交易所創(chuàng)建訂單,訂單會被記錄在去中心化交易所的訂單簿上。
去中心化交易所將會匹配訂單,并通過環(huán)形匹配私鑰和雙重授權(quán)密鑰簽署訂單。訂單環(huán)中訂單完成流程如下:
· 訂單環(huán)結(jié)算完成之后,去中心化交易所的圖形用戶界面會立即更新,訂單會顯示 “已完成” 狀態(tài),但還未得到驗證。
· 去中心化交易所將訂單環(huán)發(fā)送給運營者;收到訂單環(huán)之后,運營者必須盡快提交區(qū)塊。
· 在最大容許時間限制內(nèi),運營者會生成證明并驗證區(qū)塊。
訂單交易完成之后,去中心化交易所會顯示“已驗證”標(biāo)識。訂單有以下幾種狀態(tài)標(biāo)識:
· 在訂單簿中 “未匹配”
· 由去中心化交易所 “完成匹配”
· “已提交” 入?yún)^(qū)塊
· 通過生成證明 “完成驗證”
· 一旦該訂單所在區(qū)塊得到最終確定,即表明該訂單得到 “最終確定”(包含該訂單環(huán)的區(qū)塊以及之前的所有區(qū)塊均已被驗證)
只有區(qū)塊得到最終確定之后,訂單環(huán)的結(jié)算結(jié)果才真正實現(xiàn)不可逆轉(zhuǎn)。
挑戰(zhàn)
我們依然面臨一些挑戰(zhàn),其中最值得注意的就是 SNARKs 需要進(jìn)行“可信設(shè)置”;我們不會在此深入探討,只要知道有些可信設(shè)置如果執(zhí)行不當(dāng)(隨機性不足),從理論上來說會帶來構(gòu)建虛假證明的風(fēng)險。好消息是,這個問題已經(jīng)幾乎被解決——Sonic:近似免信任的啟動設(shè)置。
相關(guān)思考
路印協(xié)議 3.0 前景非常鼓舞人心。這個世界似乎終于能夠開始正視去中心化交易所,認(rèn)識到它將在未來代幣化的世界中成為價值轉(zhuǎn)移的途徑;我們很榮幸能貢獻(xiàn)一份心力。
去中心化交易所領(lǐng)域的革新速度也讓我們非常吃驚。目前出現(xiàn)許多協(xié)議和項目,讓我們意識到自己雖然已經(jīng)是鏈圈的 “老人” 了,仍然要持續(xù)保持行動及思考,不然就會被淘汰;對此我們?nèi)匀槐3种t遜且積極的心態(tài)。
再呼吁一次,請查閱我們協(xié)議 3.0 完整的設(shè)計文檔,下周我們將開源代碼庫,請保持關(guān)注。在未來一兩個月內(nèi),我們預(yù)計會部署測試網(wǎng)絡(luò),并在半年內(nèi)發(fā)布主網(wǎng)。
如果你有意愿協(xié)助我們一起開發(fā)協(xié)議 3.0,請聯(lián)系 foundation@loopring.org 。
感謝所有讓零知識證明在以太坊上成為可行的貢獻(xiàn)者們。特別感謝 BarryWhitehat 和 HarryR 進(jìn)行的匯總和整合工作;感謝 Sean Bowe 及 ZCash 團(tuán)隊的推進(jìn),以及我們后續(xù)十分期待能一起合作的 Matter 實驗室團(tuán)隊;當(dāng)然不能忘了感謝 Vitalik 在這個領(lǐng)域的研究。
我們還要感謝自家人 Brecht Devos,他超乎常人的學(xué)習(xí)及編碼能力,讓他在協(xié)議 3.0 上做出許多卓越的貢獻(xiàn)。