美文网首页DTeam团队日志HiBlock区块链社区开源工具技巧
0x:基于以太坊的去中心化交易开放协议

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

作者: 胡键 | 来源:发表于2019-01-12 21:43 被阅读41次

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

    • 与应用无关。
    • 链下协商,链上交易。

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

    • 交易双方无需信任交易所,换句话讲,不需要将私钥托管于交易所。
    • 双方可直接交易,不需要中间人。
    • 相比起中心化交易所,去中心化交易所的交易速度要慢的多。

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

    image.png

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

    • 用户通过中心化交易所将法币兑换成数字货币,由此进入数字货币的世界。
    • 接下来,用户可以使用去中心化交易所完成与其他数字货币的交易。

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

    • 状态通道涉及到通道的打开和关闭,在通道中积累中间状态,最后在区块链上完成真正交易。它并不需要借助智能合约,适合“bar tab”类型交易,对于一次性交易来讲成本过高。
    • 0x协议相对来讲更轻量级,通过智能合约完成交易,适合“OTC”交易,直接在区块链上完成。

    从架构上来讲,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将订单广播出去,由有意者完成订单。这两种订单消息的主要差异:

    • 前者直接指定了对方的地址
    • 后者则没有指定,但是指定了交易手续费相关的三个属性(手续费采用由0x发行的ZRX支付):
      • 手续费接收者地址
      • 发起方的手续费
      • 接收方的手续费

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

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

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

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

    参考

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/vzoqdqtx.html