1
系统操作上线市场 · 风险参数 · 费率表 · 账户创建 · 本区块的标记价格
下游的一切都对着同一个价格推理
2
非撮合操作资金优先 · 账户配置 · 只挂单订单 · 强制平仓
能改善账户健康度的钱,在任何评估健康度的动作之前落地
3
撤单区块内的每一笔撤单
过期报价撤得掉,和撤单同时到达的订单吃不到它
4
可能吃掉流动性的订单一切主动吃单,排在最后
区块内部的亚毫秒级竞赛不存在
在每个节点上,按此顺序执行
这个位置换来什么
1 · 系统操作
管理性和协议级的变更:上线与下线市场、风险参数更新、费率表变更、账户与子账户创建,以及本区块的标记价格更新。 标记价格先更新,下游的一切才能对着同一个价格推理。同一个区块里,强平检查和新提交的订单,看到的是同一个数。2 · 非撮合操作
不触及订单簿、但会改变状态的操作,内部顺序如下: 资金优先——充值、给逐仓仓位手动加保证金,以及资金费结算。凡是能改善账户健康度的钱,都在任何评估健康度的动作之前落地。 账户配置——保证金模式、持仓模式、杠杆,以及代理授权的变更。 Post-only(只挂单)订单——唯一放在这里、不放到第 4 阶段的订单类型,因为只挂单按定义就吃不到流动性。这些订单被保证是挂单方,按到达顺序先入簿,之后才轮到别的订单来跟它们成交。 强制平仓——先撤掉受影响账户的订单,再查一遍,还有必要就接管仓位。接管直接按破产价格执行,不进订单簿。强制平仓放在这里跑——排在任何自主订单前面——区块内的强平抢不了跑,原因就在这儿。等第 4 阶段开始,被迫产生的流动早就处理完了。
3 · 撤单
用户发起的撤单,排在任何可能吃掉流动性的订单之前。 对任何做报价的人来说,这是最要紧的一个阶段。撤单和主动吃单在同一区块提交,撤单赢。价格一动你撤掉过期报价,和撤单同时到的订单就吃不到它。 在多数场所,这是一场“谁先到撮合引擎”的竞赛,拼的是延迟。在这里由协议说了算:基础设施再好再差,结果对所有人都一样。4 · 可能吃掉流动性的订单
一切可能与订单簿交叉的操作:任何订单有效期下的限价单、市价单、TWAP 分片、非只挂单的阶梯订单,以及订单修改。在这个阶段内部,按先进先出处理。什么会进到这个阶段
这个阶段内部按先到先服务处理。关于「什么会到这里」,有两点值得点名。 Post-only(只挂单)订单永远不会到。 它们在第 2 阶段处理,本来也吃不到流动性。 在链上触发的条件单,会在同一个区块里到。 由本区块标记价格触发的止损或止盈,会在这里转换并进入撮合,而不是等到下一个区块。触发是协议依据已提交状态作的决定,不是某个能挑时点的人提交的。这改变了什么
区块内部,延迟不再重要。同一个区块里的两笔订单有确定的先后,每个节点算出来都一样。区块之间,到达时间仍然重要,但竞争的单位是区块。 报价守得住。你可以撤掉过期报价,赢过同一时刻到达的订单。这是结构上的性质,不是花钱做主机托管买来的运营优势。 被迫产生的流动先于自主流动结算。强制平仓和资金费在任何人能围着它们做交易之前就已经完成。后续阅读
订单类型
哪些类型能吃掉流动性,哪些不能。
修改订单
为什么就地减少数量会立即生效。
强制平仓
在撮合之前完成的第 2 阶段流程。
IntentionKernel
这份时序表在区块执行中的位置。