• 【转】JOYSO — 混合式去中心化交易所



    前言

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


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

    1. 中心化撮合,链上结算
    2. 实时确认
    3. 近中心化交易所的用户体验
    4. 防止 front-running attack

    -Joyso 架构-

    流程:

    1. 使用者根据当前的挂单簿下单,若有可以撮合的单子,会由 matching server 撮合并送到区块链上等待确认。而剩下的余额会转为相对应的买/卖单,回到挂单簿上
    2. 如果没有可以撮合的单子,这个挂单会停留在挂单簿上,等待有缘人挂单撮合。

    细节:

    1. 由于 JOYSO 可以确定 matching server 每笔撮合一定会上链。所以会实时更新挂单簿,可以让使用者不用等待区块确认直接做下一笔交易。
    2. 也因为由 matching server 负责撮合,所以不会像其他去中心交易所一样会有多笔撮合同时抢单的状况,同时也确保矿池不会影响交易顺序,因为只会有一笔合法的撮合。
    3. matching server 会跟据区块链上智能合约以及当下 JOYSO 已撮合却未上链的信息,还有已经下单却未被撮合的信息来分析用户下单是否合法。若合法则会接受该笔挂单。
    4. 除了把链上链下当下信息整合算出来的合约状态来接受挂单之外,我们还要确保在交易未确认前,智能合约的状态没有受到不可预期的更新。更细一点的说法,因为我们是交易所,我们要防止的是当智能合约在做交易时,其中一方使用者的余额不足。所以我们要确保交易未确认前,智能合约的状态没有受到不可预期的余额”减少”。所以我们在智能合约里多做一层权限管控,只能由 JOYSO 认定的地址对合约发起这些交易。
    5. 即使只有 JOYSO 可以发起这些交易,智能合约仍会检查 JOYSO 送到合约上的内容是否含有该使用者的签章,会由这个方法来确认使用者签过章接受由 JOYSO 帮忙撮单的结果。
    6. 除了验证使用者签章之外,智能合约还会检查该单的状态,不会乱扣使用者的余额。比如,当一笔挂单为”卖 JOY 10 个,每个为 1 Ether”,那智能合约最多只会交易掉该用户10个 JOY,并且每个 JOY 的金额不会“小于” 1 Ether。反之若挂单为“买 JOY 10 个,每个为 1 Ether”,那智能合约最多只会交易掉该用户 10 个 Ether,并且每个 JOY 的收购金额不会“大于” 1 Ether。
    7. 使用者仍可直接对智能合约出金,智能合约若接收某使用者直接提领的要求,会给 JOYSO 一定的时间完成在未确认列表里与该用户有关的交易。而 JOYSO 在接收到智能合约送出的 event 之后也会下架该使用者的挂单,以免出金后影响交易正确性。

    3-Joyso 智能合约概观-

    其他

    1. 从架构图来看,前半部是跟中心化服务器一样,会需要标准的服务器服务以向使用者提供好的体验。后半为去中心化的部分,用智能合约确保使用者权益。惟在送上区块链的部分,以太坊因为每个区块有 gas 使用上限,且 15 秒才产生一个区块。现在去中心化交易所已占掉以太坊大部分的交易,若再更多的话,往后的吞吐量是不够的。
    2. 相比于其他完全去中心化系统,JOYSO 服务器已避免了错勿的撮单会浪费 gas。除此之外,降低每笔撮合所需要的 gas,以及降低需要上链撮合的交易数量,是我们尝试要增加 JOYSO 合约吞吐量的两个方式。
    3. 为了要降低每笔撮合所需要的 gas 量,JOYSO 每笔撮合里面会有多个挂单。只要符合使用者利益的可以同时撮合,相比于其他去中心化交易所每个撮合都是两个挂单,当无法完全撮合会需要多余的交易。另外,由于交易由 JOYSO 服务器负责送出,我们可以自己计算event的通知以及内容,不用写在区块链上。最后是区块链上空间的共享,我们尽可能压缩智能合约结账所需的数据。

    安全性

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

    1. 因为智能合约上的规则,JOYSO 无法在没有取得使用者同意下,随意乱动使用者的余额。即使有使用者的签章,智能合约也会检查签章内容,不会发生用户没允许的交易。
    2. 就像一般交易所一样,所有的挂单以及未确认交易都会公布让所有使用者知道。当有两笔挂单可以撮合,大家都会看到,所以不用担心 JOYSO 会不帮某些地址撮单。
    3. JOYSO “可以” 屏蔽某些特定 address 的挂单,若是这个状况,该 address 仍可以直接向智能合约出金。
    4. 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为混合式去中心化交易所,提供近乎中心化交易所的使用体验。并由智能合约保障使用者资产,不会因为被骇或恶意倒闭而造成损失。


    链接: https://medium.com/taipei-ethereum-meetup/joyso-%E6%B7%B7%E5%90%88%E5%BC%8F%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96%E4%BA%A4%E6%98%93%E6%89%80-89c0afcb8744

     

  • 相关阅读:
    springboot整合mybatis增删改查(一):项目创建
    springboot结合开源editor.md集成markdonw编辑器
    springboot发送邮件
    史上最全web.xml配置文件元素详解
    一套简约漂亮的响应式博客园主题皮肤分享给你们(二)
    一套简约漂亮的响应式博客园主题皮肤分享给你们(一)
    IDEA中项目统一编码格式设置
    windows上安装Gradle并配置环境变量
    linux自学(九)之开始centos学习,安装数据库MariaDB
    linux自学(七)之开始ccentos学习,安装jdk
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312948.html
Copyright © 2020-2023  润新知