首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JOYSO—混合式去中心化交易所

前言

JOYSO 是我们公司最近在做的产品,是一个基于以太币智能合约的混合式去中心化交易所。支持ERC20代币与以太币之间的交换。这篇文章是要介绍 JOYSO 智能合约。更多消息可以到 joyso.io 查看。

JOYSO 为混合式去中心化交易所,用以太坊智能合约处理使用者账号, 余额, 以及撮合逻辑。中心化的撮和服务来撮合可以 match 的单子。先简略写一下JOYSO 的特性,后续再一一说明。

中心化撮合,链上结算

实时确认

近中心化交易所的用户体验

防止 front-running attack

Joyso 架构

流程:

使用者根据当前的挂单簿下单,若有可以撮合的单子,会由 matching server 撮合并送到区块链上等待确认。而剩下的余额会转为相对应的买/卖单,回到挂单簿上

如果没有可以撮合的单子,这个挂单会停留在挂单簿上,等待有缘人挂单撮合。

细节:

由于 JOYSO 可以确定 matching server 每笔撮合一定会上链。所以会实时更新挂单簿,可以让使用者不用等待区块确认直接做下一笔交易。

也因为由 matching server 负责撮合,所以不会像其他去中心交易所一样会有多笔撮合同时抢单的状况,同时也确保矿池不会影响交易顺序,因为只会有一笔合法的撮合。

matching server 会跟据区块链上智能合约以及当下 JOYSO 已撮合却未上链的信息,还有已经下单却未被撮合的信息来分析用户下单是否合法。若合法则会接受该笔挂单。

除了把链上链下当下信息整合算出来的合约状态来接受挂单之外,我们还要确保在交易未确认前,智能合约的状态没有受到不可预期的更新。更细一点的说法,因为我们是交易所,我们要防止的是当智能合约在做交易时,其中一方使用者的余额不足。所以我们要确保交易未确认前,智能合约的状态没有受到不可预期的余额”减少”。所以我们在智能合约里多做一层权限管控,只能由 JOYSO 认定的地址对合约发起这些交易。

即使只有 JOYSO 可以发起这些交易,智能合约仍会检查 JOYSO 送到合约上的内容是否含有该使用者的签章,会由这个方法来确认使用者签过章接受由 JOYSO 帮忙撮单的结果。

除了验证使用者签章之外,智能合约还会检查该单的状态,不会乱扣使用者的余额。比如,当一笔挂单为”卖 JOY 10 个,每个为 1 Ether”,那智能合约最多只会交易掉该用户10个 JOY,并且每个 JOY 的金额不会“小于” 1 Ether。反之若挂单为“买 JOY 10 个,每个为 1 Ether”,那智能合约最多只会交易掉该用户 10 个 Ether,并且每个 JOY 的收购金额不会“大于” 1 Ether。

使用者仍可直接对智能合约出金,智能合约若接收某使用者直接提领的要求,会给 JOYSO 一定的时间完成在未确认列表里与该用户有关的交易。而 JOYSO 在接收到智能合约送出的 event 之后也会下架该使用者的挂单,以免出金后影响交易正确性。

Joyso 智能合约概观

其他

从架构图来看,前半部是跟中心化服务器一样,会需要标准的服务器服务以向使用者提供好的体验。后半为去中心化的部分,用智能合约确保使用者权益。惟在送上区块链的部分,以太坊因为每个区块有 gas 使用上限,且 15 秒才产生一个区块。现在去中心化交易所已占掉以太坊大部分的交易,若再更多的话,往后的吞吐量是不够的。

相比于其他完全去中心化系统,JOYSO 服务器已避免了错勿的撮单会浪费 gas。除此之外,降低每笔撮合所需要的 gas,以及降低需要上链撮合的交易数量,是我们尝试要增加 JOYSO 合约吞吐量的两个方式。

为了要降低每笔撮合所需要的 gas 量,JOYSO 每笔撮合里面会有多个挂单。只要符合使用者利益的可以同时撮合,相比于其他去中心化交易所每个撮合都是两个挂单,当无法完全撮合会需要多余的交易。另外,由于交易由 JOYSO 服务器负责送出,我们可以自己计算event的通知以及内容,不用写在区块链上。最后是区块链上空间的共享,我们尽可能压缩智能合约结账所需的数据。

安全性

Joyso 为中心化撮合,所以这边要特别分析中心化撮合会对使用者的影响。

因为智能合约上的规则,JOYSO 无法在没有取得使用者同意下,随意乱动使用者的余额。即使有使用者的签章,智能合约也会检查签章内容,不会发生用户没允许的交易。

就像一般交易所一样,所有的挂单以及未确认交易都会公布让所有使用者知道。当有两笔挂单可以撮合,大家都会看到,所以不用担心 JOYSO 会不帮某些地址撮单。

JOYSO “可以” 屏蔽某些特定 address 的挂单,若是这个状况,该 address 仍可以直接向智能合约出金。

JOYSO “可以” 做套利,但因为所有挂单布都会公开,且交易成功会实时回复,如同中心化交易所一样。除此之外,即使 JOYSO 成功套利,智能合约仍确保该使用者买卖单价不会劣于当初用户所签的价位。(注:套利是指当现在有一个挂卖单为1 Joy换1 Ether,若此时有使用者挂买单用1 Ether换0.5 Joy,JOYSO 注意到这个状况而产生两个单子,一为买单用1 Ether换1 Joy, 另一为卖单 0.5 Joy 换 1 Ether,如此 JOYSO 可以从中获利 0.5 Joy)。

总结

JOYSO为混合式去中心化交易所,提供近乎中心化交易所的使用体验。并由智能合约保障使用者资产,不会因为被骇或恶意倒闭而造成损失。

干货 | 闲聊以太坊的去中心化交易所:

http://ethfans.org/toya/articles/626

0x初学者指南:

http://ethfans.org/elisa/articles/597

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180124B0PJRO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券