Exchange

Exchange

去中心化交易所(Decentralized Exchange, DEX)发展到现在,衍生出了很多不同的模型。因为自己有在做项目,无意研究了一些,分享一些我觉得有创新点的项目。

交易数字货币主要有两种方式,一个是order book的撮合机制,另一个则是做市商。(当然目前又衍生出了OTC,不过OTC不在本文讨论范围)

Order Book的模式是,一边是ask book(卖单),另一边是bid book(买单),交易所买入ask的单子,卖给bid下的单子来进行撮合。不同的交易所盈利方式不同,有的会赚取成交的万分之几作为手续费,而有的交易所所声称的“0”元手续费,则是将卖单和买单的差价作为了交易的手续费用。

中心化的交易所的优点是快速,因为交易量足够大,所以很容易就能够成交。而对于那些热度不高的新成立的交易所,则是通过高频交易来“搬砖”。

去中心化的交易所的优势是安全,当然这个安全也要打一个问号因为像EtherDelta(现在是ForkDelta)这类的交易所,网站是中心化的,所以整体的安全性没法得到有效的保证。但是去中心化交易所面临的主要问题就是交易速度过慢,看EtherDelta的K线图给人感觉是这个交易所是不是挂掉了。。。

因为下单和成交都是由smart contract来完成的,这样整个交易就受限于以太网路的速度,导致整个交易过程过慢。

0x protocol就是致力去解决交易速度过慢的问题。国内做相同事情的是路印协议和NEX(NEO的交易所)。

0x protocol 来源于一个非常简单的想法,线下挂单撮合,线上成交。user下单时,会签下一份smart contract,标明交易费率,结束时间以及下单数量。而0x protocol 上层的DEX收到这些samrt contract就会按照费率从高到低排在ask book或者bid book里面,用户在选择交易时就选择自己接受的费率签单,然后由于smart contract的特性,第一个用户签章后就会把他的地址和签章保存在contract内部,第二个用户签下去时就p2p的进行数字货币的交换。

不过目前为止,0x protocol只支持ERC-20 token的交换,由于ETH不是contract token,0x发行了自己的WETH(ERC-20)的token和用户的ETH兑换,这样,WETH就能够和其他ERC-20的token进行交换. 而smart contract的特性也保证了签章后能够直接从双方的地址进行token的交换。

不过对于BTC这类UTXO base的数字货币,没有合约的功能,只能够进行交易的签章,无法实现这种p2p互换的功能。但是线下挂单撮合,线上成交的想法却能够非常有效的解决交易速度的问题。

详细介绍,请看VIMEO:

https://vimeo.com/235936621

另一个有趣的想法来源于做市商。我们都应该有见过电影里股票交易员在电话里和想要买股票的人谈论价格,最终达成交易。这种卖股票的机构就是做市商。做市商能够保证你买到想要的股票,但是与之对应的,你也要付出更多的钱。做市商实际上是通过提升价格来增加流动性。

而到了自动化交易时代,自动交易(Automated Market Maker)取代了做市商。价格不再由股票交易员谈判决定,而是机器根据不同的数据,自动计算出价格。在数字货币里,Bancor产生了这样的价格公式,由此推出了AMM来刺激市场的流动性。

Bancor从银行准备金和外汇储备里获得了灵感。当准备金多的时候,因为更少的钱参与到流通过程,经济就收缩;而当准备金减少,就有更多的钱参与流动,刺激经济膨胀。而对于外汇储备而言,如果更多的人想要把手中呢人民币换成美金,说明对美金的需求更高,那么美金对人民币的价格就要上涨;如果更多的人想要把美金换成人民币,那么人民币对美金的价格也要升高。

与之类似的,bancor的价格计算公式也就模仿了这一模式,当Bancor自己的准备金储备(ETH)增多的时候,就说明人们更想要Bancor而不是ETH,Bancor对ETH的价格就会上升,当Bancor准备金储备减少的时候,Bancor对ETH价格也随之下跌。

兑换时,例如用ETH换Bancor,人们只需要把钱打入ETH准备金库中,Bancor protocol就会增发Bancor给用户来兑换。用Bancor换ETH,Bancor protocol就会把用户手中的Bancor销毁,并从准备金库中取出ETH给用户。

很明显,在这种做市商的模型中,兑换价格和准备金总量成正比。一个简单的价格计算公式如下:

Price =connector/(supply X weight)

connector是准备金总价,supply是bancor流通总数,weight是准备金率
通过这个简单的价格计算公式,就能够通过Bancor总的代币数来反应市场供需的变化(需要就增发,不需要就销毁)。当然考虑到每一小部分的数目变化都有一个对应的价格,最终的价格是用积分算出来的,数学证明如下:

https://drive.google.com/file/d/0B3HPNP-GDn7aRkVaV3dkVl9NS2M/view

而其他满足Bancor protocol标准的新发行数字货币就可以通过持有Bancor作为准备金来实现兑换。这种做市商的方式虽然牺牲了价格,但增强了流通性。对于小型的数字货币(无法上交易所的)是一个不错的选择。

评论