1. 什么是0x
0X是基于以太坊區塊鏈的去中心化交易所開源協議。這個協議是通過以太坊的智能合約來創建的,它的厲害之處就是可以讓任何人都能開設和運行去中心化交易所。
就是說,如果你想組織一個團隊運營一個去中心化的交易所,就可以用0x協議來進行,極大地降低了運營數字資產和代幣交易所的難度。
現在每天的數字資產交易達到了幾十億美元,其中交易所的傭金收入達到數百萬美元,而且隨著未來成千上萬的數字資產上線,尤其是基于以太坊的代幣誕生,去中心化交易所的需求越來越強。
另外,未來的世界很大概率會走向代幣化。它會成為未來公司或者其他組織的經濟模式,現在看,只是區塊鏈公司早期融資用代幣,但未來,所有資產都可以代幣化,包括所有公司的股票、汽車、房子等各種資產都可上鏈。代幣化將讓資產膨脹成千上萬倍,并且有極強的交易需求。
0x最終來說,想要做一個賦能的驅動者,給大家更好地的方法來創建去中心化交易所,可以讓ERC20代幣間可以不通過任何第三方就可完成交易,比如說Augur代幣和Omisgeo代幣之間不通過任何第三方完成直接兌換。
2.0X跟各種交易所相比,有什么獨特之處?
1)首先跟中心化交易所相比,更安全
中心化交易所很容易理解,目前基本上所有參與過數字貨幣交易的人都使用過,比如火幣、okcoin、云幣、幣安等。當你購買各種數字貨幣時,你需要用法幣購買比特幣或以太坊等各種數字貨幣。中心化的交易所從用戶使用習慣上看,更符合用戶習慣,簡單易用,交易速度快。這是它獨特優勢,另外,對于很多普通用戶來說,中心化交易所的托管式服務也更省心。
但是,中心化交易所也有致命缺點:一是容易被黑客攻擊,代幣被盜取;二是運營者卷款逃跑。最后,還可能因為政策原因,被監管關閉。Mt.Gox,Bitfinex等中心化交易所都經歷過安全問題,讓用戶丟失了大筆資金,還有的交易所,比如poloniex,coinbase等都遭受過DDOS攻擊。
這樣的結果導致了一些去中心化交易所的產生,比如etherdelta等,這些交易所不用把資金存儲到運營方進行交易,不用擔心黑客、運營者卷款跑路、被關閉等問題。但,去中心化交易所同樣也有問題:交易速度慢、交易規模小、費用高(連取消訂單都會產生費用)等,體驗比中心化交易所要差。
從目前局面看,中心化交易所占據絕對優勢,去中心化交易所還處于早期,在相當長時間內,兩者都有自己的空間,不過長期看,去中心化交易所在解決了速度慢等問題后,可能會逐步扭轉局面,并逐步取得優勢。
2)其次跟去中心化交易所比,交易體驗更好
目前的去中心化交易所普遍存在速度慢、交易量小、費用高等問題。去中心化交易所的每筆訂單,不管是買入、賣出還是掛單、取消訂單等操作都進入區塊鏈,交易依賴區塊時間,不僅如此,每個操作都會產生網絡交易費用。這是目前去中心化交易所的短板,這就是為什么出現了比特幣失竊的門頭溝事件之后,交易者還是首選中心化交易所的重要原因。如果你使用過etherdelta進行交易,你就知道關鍵時候等待是多么痛苦的一件事情。
0x協議其中的一個目標就是要解決這些去中心化交易的問題,它把交易訂單移出區塊鏈,在結算時才移入鏈內,從而提升交易效率,降低交易費用。同時,0x并不收取任何使用協議的費用,由各去中心化交易所的創建者來決定自己的收費方式。
0x通過創建基于以太坊的標準協議,讓所有人都可以交易ERC-20代幣和運營去中心化交易所。基于0x協議的運營者相當于0x的中繼方,它們托管訂單,可以向代幣交易者收取服務費。
除了為中繼方提供標準協議服務之外,0x還有直接面向消費者的產品,比如基于0x的OTC,可以讓交易雙方直接進行以太坊ERC20代幣交易,并且無須中繼者的交易所存在。(另:0x的OTC在以太坊測試網絡上已經開始運行,用戶可以創建和廣播訂單,只須向對方發送鏈接即可,并且可以通過任何方式發送鏈接,比如郵件、微博等社交媒體)
3.0x的解決方案
0x是基礎的創建區塊,可以作為Dapps的共享基礎設施,長遠看,它是開源的技術標準,比封閉架構更有優勢。
在0x的白皮書上提到,自動做市商的智能合約是鏈上訂單簿的替代性方案。它采用價格調整的模式。它的好處是容易對外部智能合約進行整合。價格調整模式讓它們對市場流動性非常敏感,自動做市商對供給曲線施加了人為約束。如果價格調整模型太敏感,小額交易也會產生大的現價波動。如果價格調整模型不敏感,自動做市商資金將很快被套利者消耗。
另外,狀態通道被看作是以太坊區塊鏈擴張的一種方式,還可減少不同應用的費用。狀態通道中的參與者來回傳遞加密簽名信息,可累積中間狀態的變化,與此同時無須把它們發布到規范鏈,許多中間狀態改變可以鏈下累計,直到鏈上完成結算。狀態參與者必須實時在線,以挑戰不誠實的參與方,因此對于DDOS攻擊很脆弱。
為了解決這個問題,0x提出的解決方案是:鏈下訂單中繼,鏈上最終結算。它結合了狀態通道效率和鏈上訂單簿的快速結算。加密簽名的訂單在鏈下廣播,這些訂單送進鏈上智能合約以去信任化方式執行。這樣,對于做市商(maker發起方)來說,交易摩擦成本低。
1)鏈下訂單中繼和鏈上結算的基本步驟
Maker 批準后,去中心化交易所的智能合約獲取賬戶要交易代幣(假設為A)的余額
Maker 創建一個訂單,要用代幣A交換目標代幣(假設為B),確定具體的匯率、截止時間等,并用私鑰加密簽名訂單
Maker可在任何媒體廣播訂單(twitter、郵件、博客、論壇等)
Taker 獲取訂單并決定接受訂單
Taker 同意后,去中心化交易所的智能合約獲取代幣B的余額
Taker 提交Maker簽名的訂單到去中心化交易所合約
去中心化交易所合約認證Maker的簽名,確認訂單沒有過期,確認訂單沒有被交易,之后按確定匯率進行代幣交換。
每個訂單是一個數據包,包括訂單參數和加密簽名。訂單參數通過Keccak SHA3功能鏈接并散列為32字節。maker用私鑰簽名訂單哈希以產生ECDSA簽名
訂單數據包數百字節大小,可以通過郵件、社交網絡、即時通訊等任何媒介發送。訂單只接收特定的taker的地址,竊聽者或外部第三方都無法接收。
2)訂單的廣播
買賣雙方要交易,需要有一個流動性的市場,可以進行訂單發布,以形成訂單簿。對于大多數項目團隊來說,創建和運營交易所需要耗費巨大資金。而0x協議可以讓項目團隊以較小成本維持交易所,并自定義交易費用。托管和維護訂單簿的主體都是一個中繼者。普通的中心化交易所創建和運營基礎設施,需要管理交易和處理用戶資金。而中繼者只需通過托管和傳播訂單簿來推動市場交易。這個過程中,中繼者并不代表交易者執行交易,Taker必須自己執行交易。
廣播訂單的信息格式也相對靈活。一是廣播訂單并不要求taker地址,允許訂單被任何人接收;二是訂單的費用值等參數都可以設置。中繼者托管和維持一個鏈下的訂單簿,當交易清算后,交易費從maker或taker(也可能兩者都需要)轉到中繼者。其中:
中繼者創建費用計劃和設置用于收取交易費用的地址
maker創建訂單,設置fee A(代幣)和fee B(代幣)的值,這些值滿足relayer的費用計劃,設置fee接收人的地址,并用私鑰簽署訂單
maker把簽名訂單轉移到relayer
relayer接到訂單,檢查訂單有效性及要求費用。如果訂單無效,或不滿足relayer要求,訂單會被拒絕。如果滿足條件,relayer把它發布到訂單簿
taker接收到訂單簿,其中包括maker的訂單簿
taker接受maker的訂單,并提交到交易所的智能合約
這里面,雖然maker設置交易費用,但最終來說relayer控制進入訂單簿的訂單,因此,這里有一個平衡,maker想要把訂單發布到訂單簿,就需要滿足relayer。Relayer也可以設置費用計劃,可以是固定費用、按比例收取、按交易量收取或分層收取等模型。但,一單relayer接收了訂單,進入了訂單簿,就不能改變。
傳統的交易服務是由交易所設定機制來進行買賣雙方的匹配,交易雙方必須相信交易所能提供最好的價格。而在0x,所有的交易都是去中心化的,也就是說relayer不能像傳統的交易所那樣代表maker和taker進行交易,relayer智能推薦,最終由taker決定簽名和發送交易到區塊鏈上。
3)智能合約
交易所協議是在以太坊智能合約上執行,開放且免費使用,不會向用戶收取除gas費用之外的任何費用(執行智能合約的必須費用)。它用solidity語言編寫,包括兩個相對簡單的功能:成交和取消。整個合約大概100行代碼,大概需要花費90k gas來成交訂單。
4)簽名確認
交易所智能合約能夠認證發起人使用ecrecover函數的簽名,它將哈希和簽名哈希作為參數,并返回產生簽名的公鑰。如果ecrecover返回的公鑰等于發起人的地址,該簽名是真實的。
Addresspublickey=ecrecover(hash,signature(hash));
If(publickey!=maker)throw;
5)成交和部分成交
交易所智能合約存儲之前每個成交的記錄,防止單個訂單多次成交。這個參考記錄存儲進一個映射,數據結構可以映射一個32字節數據到256位未簽名整數。傳遞與一個訂單相連的參數到keccak SHA3函數可以產生唯一的32字節哈希,它可以用于唯一確認的訂單(哈希沖突的可能性,發現兩個不同訂單擁有一個哈希,現實上不可能),每次一個訂單成交,影射存儲訂單哈希并積累成交值。
當調用交易所智能合約成交功能時,一個taker通過制定附加參數實現部分成交。只要部分成交的總額沒超過總訂單額度,多方部分成交就可能在單個訂單上執行。當試圖成交訂單時,Takers必須提供額外的參數。
6)截止時間
一個訂單的截止時間由maker指定,截止時間是一個未簽名的整數值,它代表從unix紀元絕對秒數。簽名后值就不能改變。以太坊虛擬機的時間是由區塊時間戳來給定的,當一個新的區塊被挖出來之后,時間就出來了。因此,一個訂單的截止時間狀態并不依賴于一個taker廣播它們的成交意圖,它依賴于一個礦工在EVM上執行交易后的時間狀態。
7)取消交易
一個沒有成交或到期的訂單可以由相關的maker通過交易所智能合約的取消功能進行取消。取消功能映射一個訂單的哈希,對應著訂單的最大值(valueA),防止后續交易。取消訂單花費gas。該方法可能有一個尷尬情況:一個maker試圖取消交易,與此同時,一個taker試圖接收該訂單。考慮到交易挖礦的序列有不確定性,會導致意料之外的結果。如果以太坊區塊鏈有大量的積壓訂單待處理,不確定性就會增加。
8)ZRX代幣
跟其他代幣一樣,0x的ZRX代幣也是為了驅動形成代理網絡,它想通過協議成為開源標準,協調所有參與方,通過激勵促使大規模采用代幣,在一個沒有中心治理下實現自運行的網絡。
0x的代幣主要用于支付relayer的交易服務費,另外就是0x協議升級時的去中心化治理用。根據ZRX代幣的擁有量,在協議升級等方面擁有相應的影響力。
9)去中心化的治理
一旦一個以太坊智能合約部署到區塊鏈,它的內部邏輯不能改變。因此,升級協議必須部署一個完全新的智能合約,要么對網絡分叉,要么升級用戶和處理流程,直到選擇最新版本。交易場景下,協議升級可以讓所有公開訂單無效,并要求每個市場參與者批準新的智能合約來獲取它們的交易余額。或者,協議分叉成為兩個版本運營。盡管智能合約可以持續地集成升級到協議中,同時不會中斷更高級的進程,這樣的升級機制可能給終端用戶帶來極大的安全隱患。(最壞情況是,攻擊者可以獲得用戶資金的訪問權限。)
協議代幣可用于驅動去中心化的升級機制,允許把升級持續地集成到協議中,與此同時也能保護協議用戶和持有人。
一開始,一個簡單的多方簽名合約將用于去中心化的治理,最后會有一個復雜的DAO產生。0x協議和它原生代幣將不會對用戶強加非必要的費用,或者從relayer那里抽取費用。
股份持有人提出和選出協議改善計劃,通過DAO用完全新的智能合約執行。DAO批準新的智能合約以獲取用戶的代幣,獲取的方式是增加它們到代理協議的白名單,并且最終不上不推薦的協議版本。
10)代幣注冊
訂單由十六進制字節碼組成,機器可讀,不適合普通用戶閱讀。代幣注冊合約將用于存儲ERC20代幣的列表,每個代幣都有相關的元數據:名稱、符號、合約地址、表示代幣的最小單元所需的小數(需要確定匯率)。注冊將用于官方的鏈上參考,可以被是參與者使用,在執行交易前用來獨立確認代幣地址和交易匯率。代幣注冊將用作可信的信息資源,監管是必須的,包括從注冊處增加、修改或移除代幣。0x股份持有人將提供監管。
未來協議的訂單格式可修改,便于用戶閱讀。代幣在代幣注冊處顯示為3個字母而不是代幣合約地址。以太坊域名服務(ENS)可用于確認maker、taker、relayer,這些都是要變成用戶可讀的名稱,比如“theDunkle.eth”,而不是賬戶或合約地址。
4.結語
總的來說,0x是基于以太坊區塊鏈的p2p的ERC20代幣交易所協議。它有標準的開源協議、通用的創建區塊,在分布式應用中實現交易功能的互操作性。基于0x協議的去中心化應用可以進入公開的流動池,或創建自己的流動池,并在收取一定的手續費。根據白皮書,主要特點如下:
鏈下訂單中繼+鏈上結算=市場maker(發起者)低摩擦成本+快速結算
開放可獲取的智能合約,讓任何Dapp都能使用
中繼者可以創建它們自己的流動池,并根據交易量收取交易費
標準化+解耦=共享協議層
提供dapps間的互操作性
創造流動性的網絡效應,這讓大家受益
降低進入門檻,降低市場參與者的成本
消除冗余,提高用戶體驗和智能合約安全
去中心化的升級機制,允許升級改善可以持續而安全地集成到協議中,并且不會打擾dapps或用戶。
總之,0x協議試圖把信息傳輸從應用層轉入協議層,從而實現dApp間的互操作性。但0x也有其弱點,比如taker必須在線匹配明確訂單,撮合實時性較差,另外OTC方式暫時無法顯示復雜訂單撮合。
評論
查看更多