永续交易

第一步:Alice和Bob向应用程序发送限价单

‌让我们看下面的例子。 Alice想出售1个合成BTC以获得30000 USDC,并支付最高5 USDC作为交易费用。 Bob希望以30000 USDC的价格获得 0.99合成BTC,并支付最高10 USDC的费用。 两人都将其相应的(签名的)限价单请求发送到链下应用程序。 限价订单包含用户的vaultId(保险库ID)assetId(资产ID)和交易资产的amount数量(合成和抵押),以及feeAmount手续费额,订单的expirationTimestamp失效时间戳nonce一次性随机值(以防止重放攻击)。
‌请参阅此处了解限价单的结构。

第二步:应用程序将结算交易发送到StarkEx

该应用程序匹配Alice和Bob的限价订单,并创建结算交易。 此交易包括双方订单,以及Alice和Bob的保险库之间的实际转移金额。 在上面的示例中,将0.99BTC从Alice转移到Bob,以换取30,000 USDC。
请注意,在结算之后,Alice仍然有一个未清订单,剩余的0.01 BTC仍可以出售(并且至少要换取300 USDC),该金额可以与其他订单相匹配。
支持部分平仓。 也就是说只要比率与他们签名的一致,在Alice和Bob之间转移的金额可能会小于他们签名的金额。 在此示例中,结算后,Alice仍然有一个未平仓订单,剩余的0.01 BTC可以出售(并且至少要换取300 USDC),并且该金额可以与其他订单相匹配。StarkEx使用orders_tree监视订单的完成状态。
StarkEx永续交易将始终确保结算所转移的合成资产数量与订单中指定的数量相同。 实际转移的抵押品数量可能与订单中指定的数量不同,具体取决于应用程序订单匹配输出。 对于出售合成代币订单,转移的金额可以等于或大于订单中指定的金额;对于买入合成代币订单,金额可以等于或小于订单中指定的金额。
StarkEx检验结算的有效性:
  • ‌两笔订单的assetId(资产ID)匹配(即,其中一个买家购买的assetId正是另一个卖家出售的assetId
  • 交易的AssetId(资产ID)之一恰好是抵押品。
  • Alice和Bob的卖出金额与买入金额的比率至少要像各自签署的比率一样好。
  • 实际收取的手续费与实际转移的抵押品金额之间的比率等于或小于用户签名的总手续费与转移的抵押品总额之间的比率。
  • 结算中的每个订单均由starkKey签名,该starkKey对应于订单的vaultId(保险库ID)
  • 交易中涉及的仓位(在交易结束时)高于维持保证金,或者因为交易而提高了仓位价值与维持保证金之间的比率。
  • 尚未完成的两个订单,交易的金额将不会导致Alice和Bob转移的金额超过他们在订单中签名的金额。
  • 订单的expirationTimestamp失效时间戳指向将来。

第三步:批处理中的结算

如果结算有效,则将其与有效性证明一起打包到批处理中待提交到链上。 有关链上状态更新的完整详细信息,请参见此处
.像任何其他交易类型一样,资金影响出现在结算被执行在该仓位之前。
Last modified 1yr ago