交易模式分為兩種,成交單主導和報價單主導。第一種是成交單主導,俗稱場內(nèi)交易,指的是有交易所將買賣雙方聚集在一起進行競價交易的交易方式。這種方式中交易所負責用戶管理、資產(chǎn)托管、交易撮合、資產(chǎn)清算、履約擔保等功能。第二種是報價單主導,俗稱場外交易,指的是買賣方不通過第三方而直接成為交易對手的交易方式。場外交易更多的是是雙方私下協(xié)議并不透明。大多數(shù)情況下,人們都會選擇場內(nèi)交易,除非特殊情況下,才會將場外交易作為備選補充選擇。
現(xiàn)在市場上主流的場內(nèi)交易所主要有Poloniex、Bittrex、Bitfinex、Yunbi、Okcoin、Kraken、Liqui等等,它們?yōu)閰^(qū)塊鏈市場的資產(chǎn)代幣化發(fā)展提供了全球化全天候的充足流動性。然而這些交易所是中心化的,中心化存在一些顯著的風險和問題。因此有些社區(qū)團隊做出了基于區(qū)塊鏈去中心的特性在區(qū)塊鏈網(wǎng)絡上來搭建去中心化交易所的嘗試。譬如EtherDela、0x、Kyber、Loopring等。
將去中心化的區(qū)塊鏈資產(chǎn)放到去中心化的區(qū)塊鏈網(wǎng)絡上交易,看起來是個很順理成章也很棒的想法?
中心化 VS 去中心化
一切以用戶的需求出發(fā)。
對于普通用戶來說,對于區(qū)塊鏈資產(chǎn)交易,最關心的是什么?在個人看來就是三要素,安全、成本、體驗。
安全,包括資產(chǎn)安全、個人信息安全、交易安全。成本,就是交易成本、充值成本、提現(xiàn)成本。體驗,就是交易速度、操作順暢、高可用。用戶想要的是盡可能高的安全性、盡可能低的成本、盡可能爽的用戶體驗。
中心化交易所
從業(yè)務視角來看,中心化交易所一般都提供了以下的業(yè)務模塊,賬戶體系、KYC、充值資產(chǎn)、資產(chǎn)托管、撮合交易、資產(chǎn)清算、資產(chǎn)兌換等等。盡管業(yè)務模塊多且雜,但中心化交易所在技術實現(xiàn)上是有傳統(tǒng)成熟解決方案的,即使面對海量大并發(fā)實時交易,依舊可以給用戶提供很好的服務體驗。另外,中心化交易所龐大的用戶量和交易量,也帶來了足夠的交易深度,提供了充分的流動性。
中心化交易所的交易成本從經(jīng)濟上看是由市場環(huán)境和監(jiān)管政策決定的。它可以根據(jù)運營策略來制定變化的手續(xù)費規(guī)則。為了鼓勵用戶高頻交易,甚至可以不收取交易手續(xù)費。但一般都會對資產(chǎn)提現(xiàn)進行收取手續(xù)費。另外由于中心化交易所的所有交易實質(zhì)都是IOU記賬,所以從技術上看交易成本是非常低的。
中心化交易所最大的問題在于中心化背書帶來的風險。由于資產(chǎn)的第三方背書集中式托管,所以就會面臨包括內(nèi)部運營風險、黑客攻擊風險、商業(yè)道德風險、資產(chǎn)盜用等嚴重影響用戶資產(chǎn)安全的風險。
去中心化交易所
從業(yè)務視角來看,去中心化交易所就簡單的多,它只需要承擔主要的資產(chǎn)托管、撮合交易及資產(chǎn)清算。而不需要承擔像中心化交易所所需要承擔的非交易的功能像賬戶體系、KYC、法幣兌換等等。并且與中心化交易所很大的不同在于,所有的這一切都通過開源智能合約來實現(xiàn),將資產(chǎn)托管、撮合交易、資產(chǎn)清算都放在區(qū)塊鏈上。
用智能合約來實現(xiàn)去中心化去信任的交易機制,一方面解決了中心化交易所固有的安全問題,但另一方面也帶來了體驗和成本上的問題。
在去中心化交易所中,用戶在區(qū)塊鏈上的賬戶公鑰就是身份,不需向交易所注冊個人信息因此就不存在個人信息安全問題也不需要KYC。用戶的資產(chǎn)托管于智能合約因此不存在資產(chǎn)安全風險。用戶的托管資產(chǎn)可以自由轉(zhuǎn)移無需任何人審批,安全上得到了足夠的保障。但用戶本身也需要對賬戶公私鑰有足夠的安全操作知識才能保障足夠安全。
用戶在去中心化交易所的一切資產(chǎn)&交易操作是以區(qū)塊鏈交易來驅(qū)動的,因此既時上就受到區(qū)塊鏈本身的確認速度的影響,在目前以太坊上交易確認大約需要幾十秒的時間,這對用戶體驗而言并不友好。交易成本也會受到區(qū)塊鏈本身交易費用的影響,因此對于小額交易而言交易成本會變得很高。另外由于區(qū)塊鏈網(wǎng)絡交易處理性能低下,并不能處理大并發(fā)的實時交易,所以在交易量和交易深度上遠遠不如中心化交易所,流動性上有所受限。
總結
總結而言,中心化交易所的優(yōu)勢在于,優(yōu)秀的用戶體驗,可以接受的交易成本,充足的流動性。劣勢在于安全上。去中心化交易所的優(yōu)勢在于去信任化帶來的安全保障上。但交易成本較高,用戶體驗較差。
去中心化交易所的幾個技術實現(xiàn)
EtherDelta
EtherDelta 是基于以太坊的以太幣與ERC20代幣互換的開源去中心交易平臺(智能合約github地址)。

上圖是EtherDelta的技術實現(xiàn)概覽。
它主要由兩部分組成,一個是EtherDelta網(wǎng)站,另一個是etherdelta智能合約。
EtherDelta網(wǎng)站是提供給用戶操作的界面接口。用戶可以在網(wǎng)站上充值,體現(xiàn),掛單交易。
etherdelta智能合約是部署于以太坊上的特定版本地址智能合約。合約中主要實現(xiàn)了用戶資產(chǎn)托管登記簿和訂單簿。訂單簿中以代幣為維度維護了所有當前所有成交掛單和未成交掛單。用戶資產(chǎn)登記簿主要是維護了用戶的代幣資產(chǎn)和支持成交掛單的資產(chǎn)清算。
由于EtherDelta是交易驅(qū)動的模式,所以用戶的所有操作都需要普通的以太坊交易來觸發(fā)。因此,用戶需要依賴以太坊錢包工具來執(zhí)行交易指令,譬如MetaMask錢包。一個正常的流程可能是這樣的:
- 充值。用戶通過錢包工具向以太坊etherdelta合約發(fā)起充值函數(shù)調(diào)用。該交易會將代幣資產(chǎn)轉(zhuǎn)賬至合約,etherdelta合約會對該筆轉(zhuǎn)讓資產(chǎn)進行接收和登記托管于資產(chǎn)簿中。
- 掛單交易。用戶在網(wǎng)站掛單列表中相中一筆掛單符合成交預期,則在網(wǎng)站上取得該掛單相關信息,組成交易指令,并通過錢包工具對交易指令進行簽名,并通過網(wǎng)站向以太坊網(wǎng)絡廣播。以太坊etherdelta合約執(zhí)行交易指令,對相關代幣比例進行計算和交易費用計算,如果訂單正常成交,則會進行買賣雙方的訂單清算,并更新到用戶資產(chǎn)登記薄中。
- 提現(xiàn)。用戶通過錢包工具向以太坊etherdelta合約發(fā)起提現(xiàn)函數(shù)調(diào)用。該交易會將代幣資產(chǎn)從合約轉(zhuǎn)賬至用戶個人賬戶地址,etherdelta合約會對該筆轉(zhuǎn)讓資產(chǎn)更新至資產(chǎn)簿中。
如果用戶掛單需要取消,則和掛單交易一樣的步驟,需要通過錢包工具組裝取消交易指令來調(diào)用etherdelta合約更新其上的訂單簿。這種情況下,對于沒有成交的掛單,則發(fā)出了兩次以太坊交易,浪費了交易費用。因此這里有個簡單的優(yōu)化,既是在EtherDelta網(wǎng)站存在一個鏈下訂單簿緩存服務,對于并未成交的訂單緩存于鏈下,只有真正成交了才將交易廣播到以太坊網(wǎng)絡中,如果沒有成交,就可以隨時在鏈下無成本取消。
另外需要注意的是,對一個以太坊賬戶而言,它所發(fā)出的交易的順序遞增特性是很重要的 ,它必須是順序增長。因此,這個特性對EtherDelta的操作來說特別重要,一旦亂序,交易指令就會無法正常執(zhí)行。
EtherDelta技術實現(xiàn)的核心主要有兩點,其一是智能合約的資產(chǎn)托管,它保障了去中心化去信任化的資產(chǎn)安全交易,用戶資產(chǎn)只會在用戶私有賬戶和托管合約中轉(zhuǎn)移,并且只能由用戶自己發(fā)起。然而安全也不是絕對的,由于用戶側(cè)安全操作方面依然有可能給攻擊者提供機會(去中心化交易所以德(EtherDelta)被盜--我們?nèi)绾螐闹形〗逃?/a>。其二是交易驅(qū)動的模式,對普通用戶而言,有較高的操作門檻。任何的資產(chǎn)操作和交易操作都是通過以太坊交易來驅(qū)動,也因此導致了交易速度慢,交易深度不夠,交易費用高,交易列表更新不及時,交易序號無效,交易重復,交易不能合并成交等等很多廣泛被用戶詬病的問題。
盡管有各種各樣的問題,EtherDelta模式簡單清晰,起步較早,上線一年多,隨著以太坊生態(tài)的發(fā)展和用戶教育的進步也積累了一定量的用戶和可觀的成交量。它是以太坊上去中心化交易所的先行者,對后來者有一定的啟發(fā)作用。后來者大多都借鑒認可EtherDelta的智能合約資產(chǎn)托管設計,并試圖在成本和體驗兩個要素上做進一步的優(yōu)化設計。
**0x Project **

0x和EtherDelta不同。它不是交易平臺,它是一個開源的去中心交易協(xié)議。它的目標是成為以太坊生態(tài)上各種Dapp的共享基礎設施,它期望成為區(qū)塊鏈生態(tài)中開放的技術標準規(guī)范。

0x的技術實現(xiàn)中,引入了Relayer的概念。Relayer可以理解是任何實現(xiàn)了0x協(xié)議和提供了鏈下訂單簿服務的做市商、交易所、Dapp等等。Relayer的訂單簿技術實現(xiàn)可以是中心化的也可以是非中心化的。Relayer從成交交易中收取手續(xù)費獲利。交易過程大略如下:
Relayer設置自身的交易服務費用規(guī)則,并對外提供訂單簿服務。
Maker選定一個Relayer進行掛單創(chuàng)建和填充必要的訂單,手續(xù)費信息,并用私鑰簽名。
Maker將簽名后的訂單提交給Relayer.
Relayer對訂單做必要的檢查,并將其更新到自身的訂單簿。
Takers監(jiān)看到訂單簿的更新,并選中成交訂單。
Takers對選中的訂單進行填充,并廣播至區(qū)塊鏈完成最后的成交。
?
0x 相比于EtherDelta更好的利用了去中心化和中心化各自的優(yōu)勢,把鏈上鏈下作了結合。它把清算功能保留在鏈上,同時把交易撮合放到鏈下來處理。一方面保障了用戶資產(chǎn)安全,另一方面借助鏈下的Relayer提升了用戶體驗也降低了用戶交易成本。在關鍵的三要素上,與EtherDelta相比,有了很大的進步。
但有一點需要注意的是,Relayer和Relayer之間是割裂的,Relayer之間由于利益上關系彼此是互相競爭的。如果Relayer自身用戶并不多、交易量不足、交易深度不夠那流動性上會有所欠缺。未來如果以太坊Dapp生態(tài)發(fā)展順利,Dapp遍地開花,且普通Dapp都能達到百萬級別用戶量的基礎上,0x協(xié)議會有廣泛的應用基礎。
KyberNetwork
Kyber 是個專注于鏈上資產(chǎn)去中心化互換的交易所。它的目標是解決中心化的風險、即時交易、交易品種繁雜等等問題。但在具體實現(xiàn)上它和傳統(tǒng)交易所有很大的不同,它強調(diào)的是基于代幣儲備庫的兌換而不是掛單交易的處理。

Kyber引入了儲備貢獻者的角色為代幣儲備庫提供代幣,引入了儲備庫管理者來管理運營儲備庫。每個儲備庫都由對應的儲備管理者來運營,由其負責周期性設置儲備庫兌換率,并利用儲備庫對普通用戶提供的兌換折價來獲取利益,該利益由儲備管理者和儲備貢獻者共同分享。儲備庫與儲備庫之間是互相競爭關系,以保障給用戶提供最優(yōu)的兌換價格。KyberNetwork為儲備庫管理者提供平臺,并設有KyberNetwork的全局運營者對所有儲備庫、儲備庫管理者進行集中管理維護。
Kyber基于儲備庫的基礎上支持了去中心化的各類自由兌換的即時支付API,強調(diào)了流動性保證。但這些也是有前提的,就是代幣要有充足的儲備庫。
Loopring
Loopring 是類0x的去中心化的交易協(xié)議,從整體思路上與0x Project是非常類似的,也主要是受到0x的啟發(fā)。

Loopring與0x一樣的地方是,鏈上智能合約負責資產(chǎn)托管、實施撮合成交,鏈下負責訂單匹配。
具體技術實現(xiàn)上的不同點,其一是,Loopring將撮合擴展到了多幣種多訂單上,既白皮書所說的鏈上交易環(huán)路撮合技術,鼓勵交易所匹配最大折扣的成交路徑,為用戶節(jié)省交易成本的同時交易所也有利可圖。但另一方面也增加了智能合約的復雜度和以太坊交易的執(zhí)行成本,在實際應用中效果如何還有待觀察。其二是,設計了經(jīng)濟激勵機制,提倡交易所從交易手續(xù)費為主的模式轉(zhuǎn)變?yōu)槌杀竟?jié)約分潤為主的模式。其三是,交易所之間是互相平等競爭的關系,用戶的訂單可以選擇發(fā)送給一個或多個交易所,甚至為了快速達成,可以發(fā)送給全網(wǎng)所有的交易所,盡管這樣會給市場深度帶來好處,讓成交更快更有效,但對于交易所而言也會帶來搶單的問題,因為理論上大部分交易所對于鏈上訂單合約的變更的感知速度是一樣的,因此對于同樣的訂單匹配,不同交易所就會各自發(fā)送相同的撮合請求到鏈上,造成大量無效的撮合交易。
原文鏈接: https://github.com/toxotguo/thinking/blob/master/閑聊以太坊的去中心化交易所.md
作者: 郭世清