去中心化交易所(DEX)將是區塊鏈生態最重要的基礎設施,也會是區塊鏈技術應用落地的下一個爆發點。其實去中心化交易目前是很靜的藍海,但未來這個領域將是暴風驟雨,是“兵家必爭之地”。
區塊鏈行業里曾經有不少項目打著DEX旗號進行私募,我也遇到過不少做DEX的團隊,但兩年左右的光景就讓其中的多數人不再發聲了。其實對去中心化交易真正理解的人并不多;而真正懂的人也不想做太早的分享——與其授人以漁,不如自己多花時間把網織好。
今天為什么決定要做這個分享,講去中心化交易的技術發展趨勢呢?原因之一是我希望系統性地,而不是東拼西湊,就能讓對DEX感興趣的普通投資者和專業投資者了解什么是好的去中心化交易技術,做更好的投資判斷;原因之二我想讓路印社區和LRC持有者知道我們對DEX是有深刻思考的,想的到,看的到才可能做的到;原因之三是魔笛手技術社區的Claire女士邀請我在她的社區做個相關的分享。她的邀請是我寫這篇文章的推動力,否則寫作這件事在我的工作列表里會排在較后的位置。
目標受眾
你需要對去中心化這個理念有一定的理解。我希望你認同去中心化本身不是目的,而是為了實現資產安全的方案——而且是目前我們唯一有的一種技術方案。我也希望你認同我的另一個小觀點,即去中心化不是非黑即白。去中心化技術用得好,可讓一個系統接近比特幣的安全級別——目前還沒有高于比特幣安全級別的資產;但如果用的不好,去中心化系統會比很多中心化系統還不安全,而這恰恰是很多公有鏈真實的處境。
你需要意識到區塊鏈的維護是有成本的。比如以太坊,這個成本就是轉賬或運行智能合約時候給礦工的油費(即gas)。你也需要對智能合約(smart contract)有所了解。它們是在區塊鏈上的“小程序”,可以被用戶的交易觸發運行。你還需要有一些訂單交易的經驗,比如你買賣過股票,或者在中心化交易所上面買賣過虛擬資產。
如果你沒有上述的知識,接下來的內容有可能會讓你云里霧里,我建議你可以停下來。最近有個連續劇,叫《長安十二時辰》,很不錯,大陸的朋友可以看看。
交易模式
很抱歉我在切入正題前還需要鋪墊地講一下去中心化交易的一些不同的模式,避免后續我們拿蘋果和橘子做比較。
傳統的交易模式是非常多樣的,每一種模式都可以通過區塊鏈和智能合約技術來做一定程度的去中心化,加上區塊鏈本身賦能了全新的交易模式,因此DEX的種類很多而且會越來越多。我們在做DEX比較的時候,如果不是基于同一個分類,比來比去就沒有太大意義。
路印協議的目標是用區塊鏈技術提供與股票市場現貨交易模式類似的去中心化交易解決方案。換句話說,是基于訂單撮合的現貨DEX。我們相信鏈上資產現貨交易不僅未來的交易總量是巨大的,也是相關衍生品交易最主要的數據源之一。這種DEX的技術難度是最大的,特別涉及到吞吐量需求和成本控制的時候。這個挑戰至少目前可以被比喻成皇冠上最大的寶石。與路印目標相似的項目做的比較好的是0x和StarkDEX。我們熟知的其它幾個DEX和路印就不屬于同一個分類,比如Kyber,Uniswap,DutchX。我簡單介紹下這三個項目你就會知道其中的區別。
Kyber和很多機場的貨幣兌換服務商模式相似。作為客戶,你去兌換貨幣的時候,可以根據自己的買入或賣出量詢問他們的實時報價,但是無法協商價格,也不會有所謂掛單一說。Kyber的背后是多個做市商,他們根據其它交易所的市場價格和訂單深度信息為Kyber的用戶提供報價,報價都是有時效性的,過期作廢。有一點很重要:Kyber的做市商需要在其它交易所上通過訂單撮合買賣套利。也就是說,Kyber依然要依賴訂單撮合類型的交易模式支持其流動性。
Uniswap其實也是一種做市商提供流動性的模式,只不過這個做市商是一個數學算法。它根據做市資金池的金額和買入賣出量,通過一個價格曲線,自動計算每一筆買賣的價格。Uniswap的流動性和價格幅度取決于做市資金池的規模,規模越大價格浮動越小。
DutchX是基于荷蘭式拍賣的交易模式,通過預先設定的價格曲線,和買方的參與度來決定最終的成交價格。DutchX和路印的模式相比,DutchX保證特定時間內一定會成交,但不保證交易具體價格;路印這種訂單撮合模式保證價格,但不保證一定成交或者成交時間。
在本文后續的段落中,當我說去中心化交易所的時候,指的是路印協議這種基于訂單撮合的去中心化交易技術。你腦海中可以想想股票交易所,我們就是要做區塊鏈上的類似股票交易所的技術和產品方案。
終于可以進入正題了。我把截止到今天的去中心化交易技術劃分為三個階段。大家已經看到了前兩個階段技術的落地,一些人也看到了第三個階段技術落地的曙光。基于第三階段技術,我會暢想接下來發展的三個可能的方向。
在總結每個階段主要的技術特點時,我還會提及每個階段技術的安全性。畢竟資產安全是去中心化交易的最大前提,避而不談安全而只提其它的指標是沒有意義的。
DEX經歷的三個技術階段
第一階段
去中心化交易技術始于以太坊的誕生。如果你非說從比特股(BitShares)或者瑞波幣(Ripple)就開始了,我也不反對,前后其實沒差多少時間,沒必要糾結在這個時間點上。至少在以太坊上,第一批DEX開發者幾乎都是抱著寫HelloWorld的心態寫智能合約的,也就是說更多是在乎并試圖證明邏輯的正確性,而幾乎完全忽略落地后大量用戶參與時的性能問題。在這種開發理念下,智能合約被嚴重濫用了:中心化交易系統的主要模塊都被搬到了DEX智能合約里,包括訂單本(Order Book),撮合引擎(Match Engine),清結算子系統(Settlement Subsystem),賬號子系統(Account Subsystem),以及充值提現子系統(Deposit & Withdrawal)。
第一階段的技術有幾個特點。首先它非常簡單。以太坊上的EtherDelta就是這種技術的代表,它的主合約只有三百多行代碼。另外它也沒有任何鏈外系統做輔助,全部的邏輯都在區塊鏈上運行,因此它和以太坊主網的去中心化程度一樣,安全性也和以太坊的安全性高度一致(前提是智能合約沒有安全漏洞)。另外它還有個理論上的優勢,就是可以匯聚整個網絡的全部流動性。但實際應用中,這個優勢其實是紙上談兵,完全沒有用武之地。
第一階段技術致命缺點是吞吐量太低,而費用又太高了。原因很明顯:每次提交和取消訂單都需要消耗一個以太坊交易。在提交訂單的交易里,還要觸發訂單匹配。如果訂單恰巧匹配到了一個或者多個對手單,就要做清結算,記錄成交歷史,做內部轉賬;如果訂單不能匹配任何對手單,就需要把訂單寫入訂單本。總之,在智能合約層面的邏輯實在是太多,任何合約的代碼優化都是杯水車薪。
你可能會想:等以太坊2.0擴容后,允許合約的費用降低了不就沒什么問題了嗎?別忘了,除了多個去中心化交易所,還有許多應用也在等待以太坊擴容。無論以太坊如何擴容,都會有更多的去中心化應用來競爭資源,而資源的價格會根據供求關系不斷調整,直到供求達到平衡點。即使以太坊2.0擴容一千倍,也會有萬倍甚至十萬倍更多的應用來競爭區塊鏈資源。我認為去中心化應用完全依靠底層區塊鏈的升級來擴容是一種不可取的態度,至少這樣的應用沒有相對競爭優勢,而幾乎所有的商業化競爭,都是在拼相對優勢。
第二階段
大約是2017年年初,當開發者們意識到第一階段技術的缺陷時,他們開始嘗試去做進一步的優化。路印就是這個時候開始研發自己協議的。實際上路印后來陸續發布的1.0,1.5, 和2.0三個版本都屬于第二階段這個范疇。
這個階段優化的思路其實很直接:盡量把與資產安全相關度低的模塊從智能合約中移除,放到鏈外的中心化系統中去運行,這樣就可以避免對區塊鏈的過渡依賴,從而提高吞吐量并降低成本。包括路印在內的許多DEX項目把這個鏈外的中心化系統稱為中繼(Relayer)。從智能合約中移除的子系統包括:訂單本,撮合引擎。賬號子系統和充值提現子系統則被去掉,轉而使用以太坊地址作為賬號。留在智能合約中的就只有清結算子系統了,這個子系統的主要邏輯是驗證訂單和撮合的正確性,計算成交量,更新成交記錄,并進行資產在鏈上的原子互換。
第二階段的DEX產品理論上依然可以匯集整個網絡的所有訂單,但訂單的管理和撮合由于是在中心化系統中完成的,因此就不再是“去中心化”交易所了。但開發者和社區依然把這種技術歸類于去中心化技術,其主要原因有兩個,第一是用戶交易的資產依然是掌握在用戶自己的地址中,因此從資產安全的角度講,依然是“去中心化”,和以太坊的安全性一致的;第二是用戶的訂單可以被多個中繼同時匹配,因此流動性是可以去中心化共享的。對這一階段技術和產品更準確的一種描述應該是“非托管中心化交易所”技術。但業界也沒人糾結于這一點,何況從市場角度出發,持續使用同一個術語更容易被非技術社區接納。
第二階段技術的優化結果如何呢?假設以太坊15秒出一個塊,理論上這種技術每秒可以成交(吞吐量)2到3筆,每個交易消耗的油費大約等值13美分左右 — 這個成本和以太坊價格成正比,13美分是以太價格190美金計算得到的,如果我們期待以太價格未來會更高,那么撮合的成本也會同樣增加。這個成本還和中繼使用的gas價格相關。
知道了第二階段技術的性能,如果還有人告訴你這個階段的去中心化交易所將取代像幣安,Coinbase這樣的中心化交易所,你會認同嗎?我覺得用蚍蜉撼樹來比喻也不為過。吞吐量還是太小,成本還是太高了。
如何才能進一步實現DEX的優化性能(這里專指吞吐量和成本)而不依賴于以太坊本身的擴容呢?這是個巨大的挑戰。多數的DEX項目到第二階段就無法實現技術上的突破了,等待主網擴容,成了他們唯一救命稻草。
第三階段
2019年,有兩個項目從第二階段,跨入了第三個階段。一個是舊金山的StarkWare公司(他們借鑒了0x第二階段的技術);另一個就是我們路印協議。其實這兩個項目思路十分相似:進一步把邏輯從智能合約中移除,放到鏈外的中心化系統中去運行;路印協議甚至是將除了轉賬之外的幾乎所有鏈上邏輯,全部轉移到鏈外的中繼里(區塊鏈上的轉賬是無法移到鏈外的)。
“等一下”,你可能會驚嘆,“那不就和中心化交易所一樣了嗎?”
如果只是簡單粗暴地那么做,可不就變成中心化交易所了!但是第三階段技術的一個核心潛臺詞是“可信計算”。換句話說,我們需要通過技術,證明在鏈外運行的代碼邏輯是百分百可信的。這個信任最主要是針對鏈上對應的智能合約而言,只有智能合約信任鏈外的計算結果,才做鏈上的轉賬。如果智能合約信任鏈外計算結果,那么用戶也就應該可以信任中繼的計算結果,進而從總體上信任這種去中心化交易技術。
這里“可信計算”其實沒有一個嚴謹的定義,我是想通過這個比較容易理解的概念,來強調第三階段技術的一個關鍵點。目前看來實現可信計算的方式主要由兩種:第一種是通過硬件,利用CPU中的可信任計算環境(Trusted Execution Environment,或者叫TEE,有時候也叫Enclave)實現。這種實現方式本質上是基于信任鏈,而信任鏈的最頂端是CPU的生產廠家。第二種是通過零知識證明(Zero-Knowledge Proofs,或者叫ZKP)實現,即ZK Rollup。這是基于數學無需信任的一種技術方式。
路印傾向于現在和未來都不信任硬件廠商,原因再簡單不過了:我們假設Intel自己做了一個中心化交易所,我們會信任這個交易所嗎?如果CPU廠商值得信任,我們是不是就不該浪費生命開發DEX了,直接把交易所這個商機讓給CPU廠商不就完了?
那么第三階段技術和第二階段比起來有什么不同呢?這個值得說一說,否則當我們說到第四代,第五代技術的時候就無從下筆了。
第一個不同點是:清結算也轉移到了鏈外的中繼里。從用戶體驗角度,最直接的不同是交易幾乎是實時完成的,這一點和中心化交易所幾乎是一樣的。另外在第二階段主要消耗油費的結算子系統也不再消耗那么多費用了。進而實現了兩個重要的特點:1)用戶感知的交易所實時性,和2)交易成本的降低。
第二個不同點是:只需要把可信計算的證明(proof)數據存儲到區塊鏈上。這個證明其實很小,而且只需要定期地給一大批交易生產一個證明。比如在路印3.0最新的beta3版本中,可以為10萬個交易只生成一個256字節的零知識證明。如果定性說第二階段技術是每筆交易清結算都上鏈,那么第三階段就是大批量交易的證明上鏈。不管從存儲角度,還是從計算角度,第三階段對區塊鏈的使用都降低了數十倍,甚至數百倍,數千倍,因此極大提高了區塊鏈的使用效率。
第三個不同點是:訂單,即流動性,再也無法跨中繼共享了。第三階段的訂單必須指定只有特定的中繼才能去做可信計算。這是為了性能而做的取舍,否則多個中繼協調起來就無法做到用戶感知的交易所實時性,同時也會極大增加系統的復雜度。但這個缺點后續并非不可解決。
第四個不同點是:中繼在區塊鏈外維護了一個交易賬號系統,用戶需要對該系統做充值才可以下單做交易,交易后可以提現獲取區塊鏈上真正的資產。這個改變的缺點是用戶需要充值提現;但它同時也恰恰是個優點,因為這種交互模式和中心化交易所的用戶體驗是完全一致的。用戶甚至還有個交易密碼用來對訂單進行簽名,也就是交易過程中,甚至可以不解鎖私鑰。另外即使忘記交易密碼,也不會損失任何資產。
特別需要做個說明:這個交易賬號系統其實是維護在一個叫“樹”的結構中的。每個交易所一棵樹,這棵樹里面記錄了每個用戶的交易密碼對應的公鑰,每個用戶每種資產的余額,以及每個訂單的歷史成交量等信息。這棵樹其實就是第三階段DEX鏈外的“世界狀態”,我們可以稱之為“世界狀態樹”。
第三階段技術的安全性如何呢?它和以太坊主網安全性依然是高度一致的。我們在設計路印協議的時候,一直需要做個假設 :去中心化交易所的擁有者和運營者從第一天起就是想要作惡的。第三階段技術保證在這個最壞假設下,用戶的資產依然百分百和以太坊主網一樣安全。在最壞情況下,用戶只是在一段時間內無法使用自己充值在DEX中的資產,但過了一小段時間,就可以通過第三方工具將資產全部取回。而基于這種技術的交易所運營者,一旦作惡,只會大量損失自己抵押的信用資產,得不償失。當然路印3.0設計時也考慮了交易所運營者面對的風險,特別是當中繼完全被黑客控制后,我們的技術確保交易所的損失應該只是幾天內需要使用的以太坊交易油費的總和。這個損失小到三五千人民幣,大到三五萬人民幣,對一個公司來說,是完全可以承受的。
讀到這里,我希望你還沒被弄糊涂。你可以在腦海里,這樣勾勒出第三階段技術的一個畫面:一個DEX包含以太坊上的一組智能合約,用來驗證可信計算的證明,并在必要的時候做充值提現的轉賬;它還包含一個在中心化中繼系統里的一個很大很大的樹,里面包含這個DEX的所有重要信息。
第三階段技術的性能怎么樣呢?這取決于上面提到的那棵樹的容量,容量越大,吞吐量越小,成本越高。路印3.0最新版本采用了四叉樹結構(也就是每個節點有四個子節點),在高度設置為21的情況下,最高級別資產安全的情況下每秒交易吞吐量最高是290筆;如果我們稍微降低安全性到聯盟鏈級別,每秒交易吞吐量可達5200筆,而且我們還在近一步優化吞吐量。
每筆交易的成本大約只有人民幣5–10分 , 這個取決于我們所用的云計算服務的費用,因此其變化幅度較大。很重要的一點是,這個費用與以太的費用相關性就更小了,以太價格對整體費用的影響大約是八分之一到十分之一左右。
我們覺得協議這樣的吞吐量和交易成本即使和最主流的中心化交易所比也非常有競爭力,畢竟從安全角度看,第三階段DEX技術依然保障資產和以太坊主網一樣安全。不過為了讓整個DEX產品的吞吐量上去,還需要努力改進中繼的吞吐量 — 一個去中心化交易所真正的吞吐量是協議吞吐量和中繼吞吐量的最小值。
2019年下半年將是路印3.0協議落地最關鍵的時期,我們相信基于第三階段DEX技術的去中心化交易所,應該有很大的機會能與主流的中心化交易所競爭。第三階段技術已經不再是紙上談兵,蚍蜉撼樹了。但不得不說,真的把這種技術轉化成好的產品,依然是一個巨大的挑戰,特別是中繼的開發難度很大,中間也許還是有些坑要踩的。
下面我來聊聊在第三階段技術的基礎上,DEX有可能往哪三個方向發展。這三個方向有可能在時間上是部分重合,甚至是并行的。它們之間沒有明顯的依賴關系,卻又可能組合在一起。
DEX技術可能的三個發展方向
方向一
第一個方向是第三階段技術的通用化。目前路印在做的是現貨交易,但其實第三階段技術實際上提供了一種通用的dApp擴容方案。說的更明確點:這種技術不僅僅可以用來給DEX擴容,還可以用來給幾乎所有類型的dApp擴容。如果你改變鏈外世界狀態樹的邏輯本質上是用戶資產互換,那么你就做了一個去中心化交易所;如果你改變樹的邏輯是一個用戶給另一個用戶付款,那么你就做了一個可以和閃電網絡競爭的,資金利用率更高的支付系統;你還可以做物流追蹤,做任何圖靈完備的dApp。如果我們只把場景限制在有交易屬性的dApp內,那么你可以做衍生品交易,做另一個版本的Kyber,Uniswap,和DutchX。
一種對世界狀態樹改變比較有趣的模式是引入了隱私保護的模式。基于此可能會實現類似Zcash的那種隱私支付,或者帶隱私的資產交易。
方向二
第二個方向是支持跨鏈的去中心化交易協議。我之前一直強調:跨鏈和交易是兩個層面的技術,不應混為一談。不過我們發現,基于路印3.0的技術應該可以做跨鏈交易協議,這又是怎么回事呢?
我們假設把路印協議3.0部署到以太坊上,對應有一個世界狀態樹A;再把同一個協議部署到另兩個支持以太坊虛擬機的公有鏈上(比如Qtum,波場,或者wanchain),對應有另一個世界狀態樹B和C。
那么是不是可以把A、B、C三棵樹合而為一,變成樹D呢?這樣我們就可以通過可信計算,更改D這棵樹里面兩個用戶的不同的資產,其中一個資產在以太坊上,另一個資產在另一條鏈上,這不就實現了跨連交易了嗎?其實就是這樣。我們意識到這個可能性是在幾乎做完了路印3.0 beta2 的時候,這的確讓我興奮了很久。當然,工程上需要很多仔細的設計,特別是因為不同的公有鏈的安全特點不一樣,這棵世界狀態樹在更新維護時候,要特別考慮到每條鏈重構(reorganization)的影響。
這種技術不僅僅可以跨支持以太坊虛擬機的公有鏈,還可以跨任何支持圖靈完備智能合約和以太坊這種賬戶體系(Account Model)的公有鏈。但后者需要重新開發一套對應的智能合約代碼。
這種跨鏈技術與其他基于中間鏈的跨鏈技術不同的地方在于:1)中繼完全不需要任何信任,因為可信計算保證了這一點。而基于中間鏈的跨鏈技術的安全性取決于中間鏈本身的共識安全級別 — 你應該知道,絕大多數這些中間鏈的共識是高度集中的,因此非常不安全;2)這種跨鏈不涉及在一個鏈上生成另一個鏈上某個幣的替身(好比BTC和以太坊上的WBTC的關系一樣)。
方向三
第三個方向是中繼或者說世界狀態樹本身的去中心化。當我們審視這個架構的時候,我們會問自己:哪些模塊還是中心化的,是否可以通過使用區塊鏈技術來進一步去中心化呢?顯而易見,是中繼本身了!如果我們把中繼這個中心化系統改造成一個聯盟鏈或者公有鏈會怎樣呢?
我們會獲得一些中繼去中心化后帶來的好處。一個好處撮合算法的統一加共識:當把中繼變成一條鏈,我們稱其為中繼鏈(這里的概念不應和其它場景下的同名概念混淆)。這條鏈的所有出塊節點就變成了中繼鏈節點。這些節點就必須基于同一套代碼來完成撮合,而不是像上述的第三階段技術后面的中繼的撮合邏輯完全是定制化,中心化控制的。撮合算法的統一和共識實際上可以把DEX在撮合規則上做到更加公開,公平,和公證。還可以做到更好的容錯,進而保證整個DEX是個殺不死的小強,不怕IP被封。這種DEX的去中心化程度反而更像第一階段的DEX產品那也,沒有任何個人或實體作為擁有者需要承擔任何法律責任。
當更多中繼鏈節點加入這個區塊鏈挖礦以后,也就間接實現了流動性的共享。也就是說,一個訂單,可以被所有的中繼鏈節點撮合,而且中繼鏈節點之間是存在競爭關系的,訂單撮合的越多,費用也就越高。因此一個有效訂單被被忽略的情況就不會出現。
中繼鏈的挖礦可以在兩個維度上進行,一個維度是撮合訂單,另一個維度是生成可信計算的零知識證明。中繼鏈上甚至可以沒有一個原生虛擬貨幣,正如中繼本身也不需要一個DEX結算用的費用代幣一樣。
如果將我們世界狀態樹內部的建模方法加以改進,比如改成UTXO模型,也許方向三會與Plasma技術相遇在某處。不過Plasma設計的一個重要目標是把非常多個區塊鏈放到一個樹狀的宏觀結構中,進而對區塊鏈進行類似于MapReduce的徹底擴容,而以太坊是其宏觀結構中的根區塊鏈(Root Blockchain)。
不同方向的結合
中繼鏈可以與第一個發展方向結合,實現一個通用的dApp中繼鏈。這樣的中繼鏈的優點是開發高性能的dApp相對就比較簡單,不用像路印這樣一點點從頭開發,只需要用特別的編程語言在合約里實現對世界狀態樹的修改邏輯即可。它的缺點是無法為特定應用提供極致的優化,所以性能也無法做到最優。另一個方案是提供一個任意dApp中繼鏈的開發框架,可以做簡單開發就可以發布某個dApp特定的中繼鏈。
中繼鏈也可以和方向一結合,支持跨鏈。我們甚至可以把這三個方向都結合在一起,不過這種技術真正落地復雜度很大,而復雜度本身會帶來安全風險。因此這種技術的落地需要更久的時間。
總結
今天我斗膽分享了我理解的DEX技術截止目前的三個階段和未來可能的三個發展方向。其實這也是路印自身的經歷和未來可能的發展。由于學識眼界的限制,我這里講的肯定有不準確甚至完全錯誤之處。各位見笑了。如果您有關于本文的疑問或反饋,請發電子郵件聯系我。
過去的兩年里面,路印的工程師幾乎每天都在解決問題,但每天又會遇到新問題。每次試錯都是一次經驗積累,每次突破都是一次能力的升華。我們的動力源于我們的信念:我們堅信去中心化交易這個趨勢,也看到了其中巨大的商機。
另外,路印協議過去、現在、以及未來的所有版本的價值,都會集中體現在LRC代幣上,對任何人和組織都不會有例外,包括路印自己的工程團隊。我會在未來和大家分享路印的工程師如何通過使用自己的技術,布局去中心化交易生態。
評論
查看更多