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