即时交易

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

‌ Alice希望以1 ETH交换400 DAI, Bob希望以400 DAI交换1 ETH。 两者都向链下应用发送相应的(已签名的)限价订单请求,其中包含两个vaultId(用于扣除售出的资金的保险库Id,以及用于接收购买到的资金的保险库Id),两个相关的资产Id,两个相关的 (量化)金额,订单的失效时间戳(纪元后的小时数)和随机数(以防止重放攻击)。
‌请参阅此处了解限价单的结构。

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

该应用程序将Alice和Bob的限价订单相匹配,并将结算交易(其中包括两人订单以及Alice和Bob的保险库之间的实际转移金额)发送给StarkEx。
支持完成部分订单。 即只要比率与他们签名的金额一致,在Alice和Bob之间转移的金额可能会小于他们签名的金额。 我们使用orders_tree监视订单的完成状态。
‌ StarkEx验证结算的有效性:
两笔订单的assetId(资产ID)匹配(即,其中一个买家购买的assetId(资产ID)正是另一个卖家出售的assetId(资产ID)
Alice和Bob的卖出金额与买入金额的比率至少要像各自签署的比率一样好。
结算中的每个订单均由starkKey签名,该starkKey对应于订单的vaultId(保险库ID)
每个vaultId(保险库ID)中的余额足以保证完成交易。
尚未完成的两个订单,交易的金额将不会导致Alice和Bob转移的金额超过他们在订单中签名的金额。
订单的失效时间戳指向将来。

第三步:批处理中的结算

如果结算有效,则将其与有效性证明一起打包到批处理中待提交到链上。 有关链上状态更新的完整详细信息,请参见 此处