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