创建订单

用户愿意以某个价格来交易一定数量的某个币种的请求称为订单。订单簿是按价格和下单时间排序的订单集合。当两个订单可以用相同价格撮合时,就会产生一次「成交」,每个订单可以和多个订单撮合,每个订单可以有多次成交。每次成交会根据订单的下单时间来决定订单的角色,下单时间较早的订单角色为Maker,较晚的一方为Taker。

ZK-Rollup技术允许DeGate下单体验犹如中心化交易所般顺滑。用户通过资产私钥签名创建订单,属于链下请求,所以下单免费并且立即执行。DeGate节点收到订单签名以后根据订单簿情况完成撮合和挂单。每次撮合产生的成交信息,会通过零知识证明rollup上链。

限价单

用户通过指定价格和数量来下单。限价单支持Post-Only功能,Post-Only开启时,限价单只能做Maker,如果下单时会以Taker成交,则整个订单下单失败。为避免输错价格,DeGate网站提供了「价格偏离提示」的风险管理功能,当输入价格与订单簿最优价格相差5%或更多时,会出现友情提示,但不会阻止用户下单。

市价单

用户仅指定数量,下单后根据订单簿最优价格进行成交。为了减少市价单被DeGate节点Frontrun攻击,DeGate提供了另一个风险管理功能「滑点保护」。允许成交价格与订单簿最优价格至多相差10%,超出的部分订单会被取消,遭到Frontrun攻击时至多损失10%。如果用户本来就无所谓价格,只想以最快方式成交,可以用市价单模式。

最小订单价值

限价单的订单数量和成交额需要满足最小订单价值要求。而市价单矿工费由下单用户支付,所以市价单无需满足最小订单价值,只要账户内矿工费能满足预授权要求,交易数量至少为币种最小精度即可下单。

预授权矿工费

DeGate订单每一次成交时,Maker完全免费,Taker需支付矿工费和交易手续费。根据订单类型,市价单的成交一定都是Taker,而限价单的成交,视限价单价格与当时的订单簿挂单情况,可能部分是Taker,剩余部分都为Maker。

下单之时无法确定之后会是Maker还是Taker,因此无论限价单还是市价单,用户都需要在下单请求中预先授权愿意支付的最大矿工费数量。该授权自动完成,用户无需手动设置。DeGate节点根据以太坊主网的Gas价格、ETH价格、每次成交的Gas消耗,实时计算所需预授权。预授权不等于实际花费,实际用了多少矿工费,由下单成功时订单是否立即作为Taker成交而定。作为Taker支付矿工费,且不会超过预授权总数。作为Maker则无需支付矿工费。

目前配置了可满足6次成交所需的矿工费。这意味着下单后能作为Taker完成6次成交,如果需要6次以上的成交,则前6次已成交部分仍然保持成交不变,剩余未成交部分的订单会被自动取消。参考下列不同场景:

  1. 下了市价单,成交了4次后,订单完全成交。

  2. 下了市价单,成交了6次后,订单还未完全成交,于是剩余订单自动取消。

  3. 下了限价单,没有作为Taker成交,挂单进入订单簿等待作为Maker被撮合。

  4. 下了限价单,立即作为Taker成交了3次,剩余订单进入订单簿等待作为Maker被撮合。

  5. 下了限价单,立即作为Taker成交了6次,并且下一次成交也是Taker,于是剩余订单自动取消。

  6. 下了限价单,立即作为Taker成交了6次,没有第7次Taker成交,那剩余订单都作为Maker进入订单簿。

矿工费需要以交易对的计价币种来支付。为减少使用门槛,DeGate协议规定,卖出订单可以成交后得到的计价币种来支付矿工费。

例如DG/USDC交易对,用户只有DG没有USDC时,也可以卖出DG,从得到的USDC中扣除实际所需的矿工费。

最后,点击交易界面下单区域的「高级」,能查看最新的预授权矿工费参数。

交易手续费

交易手续费是DeGate协议的主要收入。从每次订单成交时Taker可得到的资产中,按手续费率收取相应比例,点击查看费率

订单有效期

DeGate协议规定了订单需要设定有效期。电路校验成交会检查订单过期状态,如果订单已过期,这笔成交无法通过验证。原因是订单没被完全撮合前签名始终有效,可以用来成交。订单有效期目的就是降低攻击者得到订单签名带来的风险。

限价单和市价单均设置了默认有效期。用户可以在「高级」修改限价单的有效期,而市价单因为会立即完成,默认有效期非常短,无需用户修改。

取消订单

用户能随时取消订单。取消是免费的,立即完成。这是因为DeGate节点验证用户取消订单请求后,交易系统会从订单簿撤回相应的订单,并丢弃订单签名。这一切基于用户信任DeGate节点会如实执行取消操作,也不会再次使用订单签名来撮合。为了取消订单也能够实现无需信任,DeGate协议提供了「链上取消订单」与「链上取消网格策略」的功能。

用户可选择已取消的订单,发起追加链上取消的请求。DeGate节点处理请求的结果会rollup,这笔订单被标记为已关闭,无法再进行撮合。用户可根据calldata来判断节点是否如实处理了链上取消请求。链上取消订单时,用户需要支付一笔矿工费。如果订单已经过期,签名也无法再进行撮合,此时就没有必要做链上取消了。

非默认币种的风险提示

区分默认币种和非默认币种,能帮用户快速分辨真实的常见币种,点击这里查看两者区别。进入交易界面和网格策略界面时,如果交易币种是非默认的,用户会看到「风险提示」。开始交易前请确认币种合约地址是否正确,避免买到假币。

如何确定币种是否真实?

最准确可靠的方法就是检查合约地址

  1. 通常在行情网站查询币种,看合约地址、图标、符号、名称等信息是否一致。比如

  2. 找币种项目官方的渠道,如官网、Discord,来确认合约地址。

对账修正

根据系统设计,交易系统撮合订单时会先扣除手续费和矿工费,然后Operator打包成交请求,进行电路验证时会更新默克尔树资产节点。交易系统的数字精度比电路要高,所以电路更新资产时的数值变化有可能少于交易系统的数值。用户真实的资产余额以默克尔树资产为准,并会定期rollup到DeGate智能合约。为了确保用户的DeGate余额正确无误,当rollup交易确认完成后,会根据实际数值来更新用户在DeGate网站内看到的余额,这个过程称为「对账修正」。修正数量非常微小,不会影响正常使用。

Last updated