Skip to main content
区块内的一切都按固定的优先级顺序执行。不按手续费,不按到达某个节点的时间,也不按与验证者的距离——按类别,由协议决定,在每个节点上完全一致。
1
系统操作上线市场 · 风险参数 · 费率表 · 账户创建 · 本区块的标记价格
下游的一切都对着同一个价格推理
2
非撮合操作资金优先 · 账户配置 · 只挂单订单 · 强制平仓
能改善账户健康度的钱,在任何评估健康度的动作之前落地
3
撤单区块内的每一笔撤单
过期报价撤得掉,和撤单同时到达的订单吃不到它
4
可能吃掉流动性的订单一切主动吃单,排在最后
区块内部的亚毫秒级竞赛不存在
在每个节点上,按此顺序执行
这个位置换来什么
这个顺序本身就是机制:挂着的报价守得住,强制平仓抢不了跑,亚毫秒级的延迟竞赛也被赶出了区块内部。

1 · 系统操作

管理性和协议级的变更:上线与下线市场、风险参数更新、费率表变更、账户与子账户创建,以及本区块的标记价格更新。 标记价格先更新,下游的一切才能对着同一个价格推理。同一个区块里,强平检查和新提交的订单,看到的是同一个数。

2 · 非撮合操作

不触及订单簿、但会改变状态的操作,内部顺序如下: 资金优先——充值、给逐仓仓位手动加保证金,以及资金费结算。凡是能改善账户健康度的钱,都在任何评估健康度的动作之前落地。 账户配置——保证金模式、持仓模式、杠杆,以及代理授权的变更。 Post-only(只挂单)订单——唯一放在这里、不放到第 4 阶段的订单类型,因为只挂单按定义就吃不到流动性。这些订单被保证是挂单方,按到达顺序先入簿,之后才轮到别的订单来跟它们成交。 强制平仓——先撤掉受影响账户的订单,再查一遍,还有必要就接管仓位。接管直接按破产价格执行,不进订单簿。
强制平仓放在这里跑——排在任何自主订单前面——区块内的强平抢不了跑,原因就在这儿。等第 4 阶段开始,被迫产生的流动早就处理完了。

3 · 撤单

用户发起的撤单,排在任何可能吃掉流动性的订单之前。 对任何做报价的人来说,这是最要紧的一个阶段。撤单和主动吃单在同一区块提交,撤单赢。价格一动你撤掉过期报价,和撤单同时到的订单就吃不到它。 在多数场所,这是一场“谁先到撮合引擎”的竞赛,拼的是延迟。在这里由协议说了算:基础设施再好再差,结果对所有人都一样。

4 · 可能吃掉流动性的订单

一切可能与订单簿交叉的操作:任何订单有效期下的限价单、市价单、TWAP 分片、非只挂单的阶梯订单,以及订单修改。在这个阶段内部,按先进先出处理。

什么会进到这个阶段

这个阶段内部按先到先服务处理。关于「什么会到这里」,有两点值得点名。 Post-only(只挂单)订单永远不会到。 它们在第 2 阶段处理,本来也吃不到流动性。 在链上触发的条件单,会在同一个区块里到。 由本区块标记价格触发的止损或止盈,会在这里转换并进入撮合,而不是等到下一个区块。触发是协议依据已提交状态作的决定,不是某个能挑时点的人提交的。

这改变了什么

区块内部,延迟不再重要。同一个区块里的两笔订单有确定的先后,每个节点算出来都一样。区块之间,到达时间仍然重要,但竞争的单位是区块。 报价守得住。你可以撤掉过期报价,赢过同一时刻到达的订单。这是结构上的性质,不是花钱做主机托管买来的运营优势。 被迫产生的流动先于自主流动结算。强制平仓和资金费在任何人能围着它们做交易之前就已经完成。

后续阅读

订单类型

哪些类型能吃掉流动性,哪些不能。

修改订单

为什么就地减少数量会立即生效。

强制平仓

在撮合之前完成的第 2 阶段流程。

IntentionKernel

这份时序表在区块执行中的位置。