DTeam 技术日志

Doer、Delivery、Dream

0x:基于以太坊的去中心化交易开放协议

胡键 Posted at — Jan 12, 2019 阅读

0x是基于以太坊的去中心化交易开放协议,它的特点在于:

基于0x,开发者可以很轻松地构建去中心化交易所。相比起中心化交易所,去中心化的交易所有以下特点:

这里请读者注意一点:0x != 去中心化交易所,它只是一个协议,去中心化交易所可以选择0x来完成构建。中心化交易所、去中心化交易所和0x三者之间的对比在这篇文章中以表格的形式呈现出来了。

image.png

由上表可知,去中心化交易所和中心化交易所并非不共戴天。恰恰相反,两者完全可以互补:

有经验的读者可能会疑惑,0x似乎与“状态通道”的作用有些类似:双方都将一部分工作转移到链外,最后在链上完成交易。然而,两者之间还是存在区别:

从架构上来讲,0x是一组支撑其运转的智能合约,可被任何应用直接使用,如下图。

image.png

根据0x白皮书的介绍,0x协议实现了下图的交互流程:

image.png

其中:

整个交互流程:

  1. Maker授权DEX合约访问自己的Token A余额
  2. Maker创建订单(订单有固定的格式)并用私钥签名
  3. Maker使用任意通信手段广播订单
  4. Taker接收订单并愿意执行
  5. Taker授权DEX合约访问自己的Token B余额
  6. Taker提交订单给DEX
  7. DEX验证订单的合法性,在两个账户之间按照订单上的汇率进行转账

就买卖双方而言,存在两种流程,并分别对应两类订单:

前者对应买卖双方已经线下达成协议,直接在线上进行实际操作,订单消息中包含有对方的地址;后者则是通过Relayer将订单广播出去,由有意者完成订单。这两种订单消息的主要差异:

其中Relayer的作用主要是用于记录发起方发起的订单,相当于交易大厅,保存了所有的交易订单。但它与中心化交易所的差别在于:仅记录订单,不会代表买卖双方执行交易。这也是其被称为relayer,而非exchange的原因。

前面提到,交易费采用0x发行的ZRX进行交易。它除了作为交易手续费,另一个作用是用于协议治理。期望通过一种经济激励的方式来完成协议的去中心化治理,以保证协议的升级可以兼顾各方利益。这一点可以参见其白皮书中的叙述。

理论上,既然0x是有一组智能合约组成,那么只有知道智能协议的地址和相应的abi之后,其他Dapp就可以直接使用了。这一点的确没错,但出于简化开发的目的,0x项目提供了相应的工具:

使用这些工具,Dapp开发者可以非常快捷的构建基于0x的去中心化交易所。关于0x智能合约和开发细节,在后续的文章中将会详细结束,敬请期待。

参考


相关文章