去中心化交易所是怎么交易的?

去中心化交易所是怎么交易的?

首先,我们先谈一下交易所的核心环节。很简单,即充值、下单、订单撮合、资金结算、提现,中心化交易所上述所有环节均由交易平台本身完成。而完美的去中心化交易所则是把以上所有环节都置于链上,由智能合约执行全部操作,这样我们的交易过程就无需任何信任的第三方。但现实很骨感,目前区块链的性能决定了现阶段区块链网络无法处理高并发交易,所以聪明的开发者们开始把上述部分环节(下单及撮合环节,因为这部分需要的tx实在太多)放在链下。根据这一环节的实现差异,目前市面上的去中心化交易所可大体分三类,机制各不相同:

1.Etherdelta&Forkdelta:

在以德“撕逼”事件前,曾是交易量最大的去中心化交易所。以德的做法是充值、提现、结算全部由智能合约完成:Ethereum Accounts, Address and Contracts

但是订单簿放在了交易所数据库,且其设计规则为由taker负责将交易广播到区块链进行确认,即:maker用私钥签名下了一笔订单,是瞬时的,因为写入了交易所链下数据库并没有发送交易至链上,此时taker过来吃掉这笔订单,其过程是由taker发送交易至以德智能合约,智能合约验证该订单是由maker签名及订单有效时间(maker下单可以选择在多少个区块后订单未成交自动取消),待确认过后,由智能合约进行双方资金结算。随便去以德找一笔交易,然后点击查看其在区块链的状态都可以看到相关交易参数:

注意,以德不会自动撮合订单,所以你会发现orderbook上面经常有卖1价低于买1价的情况。另外,由于每笔交易需链上确认,导致其交易效率受以太坊网络影响,同时存在成交失败情况(甲和乙去吃A订单,由于下单先后及Gas price高低会导致有一方先成交而另一方交易失败)

2.0x协议

0x协议无充值/提现过程,直接授权智能合约进行token转账(ETH要先wrap成为ERC20的WETH)。0x的机制为链下订单中继、链上最终结算。我们假设Maker想要用a代币换b代币,那么在0x的体系下流程如下:1)Maker授权智能合约读取a代币的余额(签名)

2)Maker 创建一个订单,要用a交换b,确定具体的汇率、有效期,并用私钥加密签名订单

3)Maker广播订单(可以在任何地方广播),如下图:

4)Taker确定接受订单,授权智能合约获取b代币的余额

5)Taker提交带有Maker签名的订单至DEX智能合约,智能合约认证Maker的签名、过期时间,然后按照既定汇率完成兑换。

0x引入relayer的概念,即中继者,进行订单的托管和维护(即交易所的概念)上述的案例是我个人在0x上面进行的交易,全部是json格式的文件,当你接入0x的api建立一个交易所时,其将展示在orderbook上面。

虽然其共享订单簿、无充提过程、任何人均可以在协议上面自己搭建交易所,但是由于其每笔订单均需链上确认,所以仍然存在效率问题及成交失败情况。

3.Kyber

Kyber严格来讲不算交易所,因为没有订单簿,更像是去中心化的shapeshift。其核心参与角色有:

Kyber智能合约:Ethereum Accounts, Address and Contracts

储备库:简单可以理解为做市商,提供流动性。关系如下图:

我在etherscan上面随便找了一笔发生在Kyber网络的交易,相信看完很直观能了解到其模式了:

但是Kyber、Bancor等去中心化的币币交换汇率要高于交易所。比如上图,用户用0.128451个以太坊兑换了5.0046859个OMG,汇率为0.2567,同期交易所的汇率为0.2537,高出1.2%左右。

至于如何保证安全:

首先,必须要保管好自己的钱包私钥(建议新用户先把以太坊钱包体验一遍再接触去中心化交易所)。至于平台方面,由于资金存放于智能合约及用户个人钱包,所以即使发生被攻击事件,只要你保存好自己的私钥,资金依然是安全的。具体来说,一家靠谱的去中心化交易所要具备:

1.开源。不开源的去中心化交易所都是耍流氓,智能合约要经过第三方审查。

2.平台不碰用户私钥。

3.交易验签。

当然,最重要的是你一定要保管好自己的私钥!

最后,说句题外话:眼下制约去中心化交易所发展的主要有两点:

1.交易效率差

2.交易对受限

交易对拓展需要伟大的跨链技术来解决,但交易效率问题预计很快就会有聪明的开发者把瞬时成交引入到去中心化交易所之中。拭目以待。

2018.06.11修改

原答案提到了瞬时成交的去中心化交易所模式,就是DEx.top

官网:DEx.top | Decentralized Exchange