去中心化交換協(xié)議的發(fā)展
從Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x協(xié)議,去中心化交換協(xié)議也經(jīng)過了好幾代發(fā)展和很多模式的探索,每一代都通過前面的協(xié)議的痛點(diǎn)來進(jìn)行改進(jìn)和深化,主要分為:鏈上orderbook鏈上結(jié)算、鏈下orderbook鏈上結(jié)算與基于智能合約管理的資金池。
鏈上orderbook,鏈上結(jié)算
最早的基于以太坊的去中心化交換協(xié)議的成功探索非Etherdelta莫屬,曾一度占據(jù)去中心化交換市場的半壁江山。Etherdelta是較為完全的去中心化模式,用戶充值、掛單、吃單、結(jié)算及提現(xiàn)全部在鏈上完成。
具體運(yùn)行機(jī)制如下:
Etherdelta的整個(gè)運(yùn)行都在鏈上完成,用戶保管自己的私鑰,平臺不會觸碰用戶資產(chǎn),保證了資產(chǎn)和交換的安全、透明。但其弊病也較為明顯:
1. 由于所有的交換環(huán)節(jié)都在鏈上完成,且每一個(gè)掛單、撤單、吃單等操作都會消耗GAS費(fèi)用,導(dǎo)致延時(shí)高、成本效益低下;
2. 存在礦工非法預(yù)先交換的可能;
鏈下orderbook,鏈上結(jié)算
為了解決純鏈上效率低下,且手續(xù)費(fèi)低廉的問題,0x協(xié)議引入了relayer(中繼)的概念,所有訂單都發(fā)給relayer,無需上鏈,只有成交才會上鏈。
0x的“鏈下訂單中繼、鏈上最終結(jié)算”運(yùn)作模式如下:
0x協(xié)議的主要問題在于,如果需要共享訂單,運(yùn)用0x協(xié)議的交易所每一筆成交都需要廣播出來,以便其他交易所得知和確認(rèn),因此單純地使用0x協(xié)議無法實(shí)現(xiàn)瞬時(shí)成交;另外,由于需要將ETH轉(zhuǎn)化為WETH,也增加了交換成本。
基于智能合約管理的資金池
最具典型的資金池模式有Bancor和Kyber。所謂資金池,可以理解為平臺利用智能合約建立了一個(gè)用于儲備各類資產(chǎn)的池子,資金池中資產(chǎn)的提供方可以是普通用戶或者做市商。
MOV去中心化交換協(xié)議介紹
我們在考察各個(gè)交換協(xié)議時(shí),其實(shí)純鏈上交換協(xié)議才是最發(fā)揮區(qū)塊鏈價(jià)值的方案,但是因?yàn)橐蕴坏裙溞阅軉栴},導(dǎo)致像Etherdelta這樣的純鏈上方案受挫,才有0x這樣的鏈下orderbook出現(xiàn),來改善性能的問題。究其根本,是本身的基礎(chǔ)設(shè)施不完善,導(dǎo)致的迫不得已的改變。所以比原鏈MOV從一開始就先著手解決區(qū)塊鏈性能問題。
高速側(cè)鏈?zhǔn)潜U?/p>
MOV采用了高速側(cè)鏈Vapor pro作為底層的基礎(chǔ)設(shè)施,Vapor每0.5s出塊,每個(gè)區(qū)塊可以容納8000筆交易,即每秒16000 tps,在增大區(qū)塊,提升節(jié)點(diǎn)服務(wù)器的情況下,仍然有進(jìn)一步提升空間。這個(gè)性能能夠滿足當(dāng)前非高峰時(shí)段的用戶需求,可以比肩部分的中心化的方案。
同時(shí)MOV采用了DPoS作為共識機(jī)制,雖然喪失了一定的去中心化,但是增加了可以進(jìn)行鏈上撮合的門檻,提高準(zhǔn)入門檻可以更好的防止部分有不良企圖的“礦工”進(jìn)行預(yù)先交易,同時(shí)因?yàn)殒溕洗楹媳旧砭哂幸欢ǖ拇楹鲜杖耄酝ㄟ^這個(gè)經(jīng)濟(jì)激勵(lì)可以防止DPoS的出塊節(jié)點(diǎn)作惡來破壞系統(tǒng)(其作惡的成本高于其不作惡的正常收益)。
訂單共享
0x協(xié)議為了解決性能問題,所以采用鏈下orderbook,但帶來的問題就是訂單的割裂,采用0x協(xié)議的各個(gè)不同參與方,為了自己的利益,必然不會將自己用戶的訂單共享出來,從而影響整體的交易深度,而mov采用鏈上orderbook,所有的用戶訂單都在鏈上,公開透明,所有參與撮合的共識節(jié)點(diǎn)都可以共享這個(gè)深度,從而增強(qiáng)mov上資產(chǎn)的流動(dòng)性。
磁力合約的優(yōu)勢
因?yàn)楸仍準(zhǔn)腔?a href="http://ttokpm.com/tags/比特幣/" target="_blank">比特幣的UTXO模型,所以在UTXO模型上的磁力合約來做交換協(xié)議具有更大的優(yōu)勢,因?yàn)閁TXO模型本身以資產(chǎn)為基本單位,和賬戶模型相比,對于資產(chǎn)的操作更加簡易和方便,我們來對比兩者的流程。
以0x為例,0x整個(gè)交互流程:
1. Maker授權(quán)DEX合約訪問自己的Token A余額;
2. Maker創(chuàng)建訂單(訂單有固定的格式)并用私鑰簽名;
3. Maker使用任意通信手段廣播訂單;
4. Taker接收訂單并愿意執(zhí)行;
5. Taker授權(quán)DEX合約訪問自己的Token B余額;
6. Taker提交訂單給DEX;
7. DEX驗(yàn)證訂單的合法性,在兩個(gè)賬戶之間按照訂單上的匯率進(jìn)行轉(zhuǎn)賬;
那么磁力合約的整個(gè)流程就簡易很多:
1. Maker創(chuàng)建一個(gè)磁力合約(在磁力合約中放入自己的資產(chǎn),并指定要兌換的資產(chǎn)和數(shù)量);
2. Taker創(chuàng)建一個(gè)磁力合約(在磁力合約中放入自己的資產(chǎn),并指定要兌換的資產(chǎn)和數(shù)量);
3. 共識節(jié)點(diǎn)根據(jù)合約中的價(jià)格和數(shù)量,觸發(fā)能夠匹配的磁力合約,并交換兩者的資產(chǎn);
不僅在流程上簡單,手續(xù)費(fèi)因?yàn)榱鞒痰暮喕矔?,我們只要在用戶設(shè)置磁力合約的時(shí)候收取手續(xù)費(fèi)即可,事實(shí)上,我們還可以嘗試0手續(xù)費(fèi),因?yàn)槭褂肈PoS的模式,關(guān)于手續(xù)費(fèi),各個(gè)節(jié)點(diǎn)之間的博弈也不會太復(fù)雜。
跨鏈資產(chǎn)的生態(tài)
我們觀察現(xiàn)行以太坊上的去中心化交換協(xié)議,還停留在以太坊本身的生態(tài)上,雖然不能否認(rèn)以太坊生態(tài)的強(qiáng)大,但其實(shí)外面才是更大的世界,當(dāng)然跨鏈?zhǔn)呛罄m(xù)的主旋律,包括Cosmos和Polkdot都是想做跨鏈的事情,所以MOV在一開始就考慮到了跨鏈的事情,通過OFMF將比原鏈之外的資產(chǎn)映射到比原鏈上來,然后形成囊括所有數(shù)字資產(chǎn)的大生態(tài),用戶在MOV中體驗(yàn)的是跟中心化一樣的體驗(yàn),可以交易多種資產(chǎn),這些資產(chǎn)也不單獨(dú)是在某一個(gè)鏈的生態(tài)。
MOV磁力合約詳解
這里再詳細(xì)展開一下MOV磁力合約,看它到底是如何實(shí)現(xiàn)的。
MOV磁力合約本質(zhì)上是一個(gè)掛單合約,不管是Taker還是Maker都需要生成這樣的一個(gè)合約,本質(zhì)上其實(shí)并不區(qū)分Maker和Taker,只是根據(jù)掛單的先后來區(qū)分Maker和Taker,兩者在相反的交易對上提升了交易深度,實(shí)際上也可以認(rèn)為都是Maker。
掛單交易合約是高級版的幣幣交易合約,合約的本質(zhì)目的是鎖定任意數(shù)量的資產(chǎn)A,愿意以某特定的匯率兌換資產(chǎn)B。合約的內(nèi)部應(yīng)該保存有四個(gè)常量(資產(chǎn)A的ID不需要存因?yàn)楹霞s鎖定的是資產(chǎn)A):期望兌換的資產(chǎn)B的ID, 期望兌換的匯率(使用分子分母方式解決浮點(diǎn)支持問題),和掛單用戶的公鑰,掛單用戶接受資產(chǎn)B的地址。
合約可以通過三種模式解鎖:全部解鎖:所有合約中的資產(chǎn)A都被兌換成了資產(chǎn)B并轉(zhuǎn)入掛單用戶的地址中。部分解決:部分合約中的資產(chǎn)A被兌換成了資產(chǎn)B并轉(zhuǎn)入掛單用戶的地址中,剩余的資產(chǎn)A通過遞歸合約的模式從新鎖定回合約本身(新生成的UTXO)。取消掛單:掛單用戶通過私鑰簽名將合約中的資產(chǎn)A都轉(zhuǎn)回自己的地址。
磁力合約Equity的代碼如下:
contract MagneticContract(requestedAsset: Asset,
ratioNumerator: Integer,
ratioDenominator: Integer,
sellerProgram: Program,
standardProgram: Program,
sellerKey: PublicKey) locks valueAmount of valueAsset {
clause partialTrade(exchangeAmount: Amount) {
define actualAmount: Integer = exchangeAmount * ratioDenominator / ratioNumerator
verify actualAmount 》 0 && actualAmount 《 valueAmount
lock exchangeAmount of requestedAsset with sellerProgram
lock valueAmount-actualAmount of valueAsset with standardProgram
unlock actualAmount of valueAsset
}
clause fullTrade() {
define requestedAmount: Integer = valueAmount * ratioNumerator / ratioDenominator
verify requestedAmount 》 0
lock requestedAmount of requestedAsset with sellerProgram
unlock valueAmount of valueAsset
}
clause cancel(sellerSig: Signature) {
verify checkTxSig(sellerKey, sellerSig)
unlock valueAmount of valueAsset
}
fullTrade()就是全部解鎖方法,partialTrade()是部分解鎖,當(dāng)觸發(fā)部分解鎖時(shí),會講為解鎖的資產(chǎn)放入一個(gè)新生成磁力合約中去,從而等待下一次匹配;cancel()方法將用戶的資產(chǎn)轉(zhuǎn)回自己的地址,取消這個(gè)合約。
我們再看看磁力合約的輸入參數(shù):
type MagneticContractArgs struct {
RequestedAsset bc.AssetID
RatioMolecule int64
RatioDenominator int64
SellerProgram []byte
SellerKey []byte
}
RequestedAsset是想要兌換的的資產(chǎn),RatioMolecule,RatioDenominator是想要兌換資產(chǎn)的匯率(RatioMolecule/RatioDenominator 就是匯率),因?yàn)楫?dāng)前BVM不支持浮點(diǎn)型,所以額外采用這個(gè)參數(shù)作為比例,SellerProgram,SellerKey就是合約創(chuàng)建者自己的合約和地址,目標(biāo)資產(chǎn)就要鎖定到合約創(chuàng)建者自己的賬戶里面。
細(xì)心的朋友可能發(fā)現(xiàn),這里面和Equity合約少了一個(gè)參數(shù),也就是standardProgram,那么這個(gè)參數(shù)不用用戶自己輸入,系統(tǒng)會默認(rèn)補(bǔ)齊,standardProgram 其實(shí)就代表原合約,因?yàn)椴糠制ヅ鋾挂徊糠仲Y產(chǎn)仍然沒有使用,就仍然返回到合約中。
最后通過一張圖來更直白的描述一下磁力合約:
總結(jié)
我們來對比一下當(dāng)前的幾種去中心化交換協(xié)議:
最早的完全去中心化交換協(xié)議Etherdelta對交換的干擾最少,但完全上鏈的機(jī)制使得成本消耗高且體驗(yàn)較差。
之后的幾類去中心化交換協(xié)議可謂都是在魚和熊掌之間權(quán)衡取舍:Bancor和kyber為代表的儲備池模式,管理員在整個(gè)過程中參與度較高,如果儲備池合約中管理員權(quán)限較高比如之前Bancor可以提走用戶資產(chǎn),將會對用戶的資金安全造成威脅;二者上鏈過程比較簡單,成本控制表現(xiàn)不錯(cuò),交易效率也比較高,只是功能性與有orderbook的交換協(xié)議相比略遜一籌。
0x的中繼模式,平臺不觸碰用戶資產(chǎn),相對而言去中心化程度是較高的,但這也導(dǎo)致成本效益相對較低;交體驗(yàn)整體不錯(cuò),但如果需要共享訂單,就無法實(shí)現(xiàn)瞬時(shí)成交。
MOV在結(jié)合這幾個(gè)前人的基礎(chǔ)上,通過提升基礎(chǔ)設(shè)施的性能,通過DPoS提升撮合準(zhǔn)入門檻,并實(shí)現(xiàn)鏈上訂單共享,還很好的提升了用戶體驗(yàn),除了通過DPoS犧牲了一定去中心化外,在其他方面都得到了一定提升,隨著MOV的進(jìn)一步開發(fā)和完善,必將發(fā)揮該方案的優(yōu)勢,從而讓區(qū)塊鏈能在資產(chǎn)交換領(lǐng)域發(fā)揮巨大的價(jià)值,能夠讓去中心化的資產(chǎn)兌換落地。
責(zé)任編輯;zl
評論
查看更多