Le carnet
Chaque instrument a son propre carnet, tenu en mémoire sous la forme de trois structures coopérantes :Slab arena — une région préallouée d’emplacements
Niveaux de prixtable ordonnée, prix → niveaula meilleure limite se trouve à l’extrémité, sans balayage
Index des ordresid ordre → emplacementannuler et modifier en temps constant
ordre
ordre
ordre
ordre
ordre
Chaîne doublement liée dans la séquence d’arrivée : la priorité dans un niveau est positionnelle, non calculée.
Pourquoi la séquence est fixeLes emplacements libérés sont réutilisés dans une séquence fixe, avec une graine d’index fixe. Pas un choix de performance : deux validateurs qui feraient autrement forkeraient.
tête de chaque niveau
accès direct
Les ordres vivent dans un slab arena — une région préallouée dont l’allocation et la libération se font en temps constant. Les opérations sur le carnet n’allouent donc pas sur le chemin critique, et les emplacements libérés sont réutilisés selon une séquence fixe, et non là où l’allocateur se trouve les placer. Ce dernier détail n’est pas un choix de performance : si deux validateurs réutilisaient les emplacements dans des séquences différentes, tout ce qui observe la disposition des emplacements divergerait.
La même discipline s’applique à l’index des ordres, dont la graine est fixe et non aléatoire. Une table de hachage avec une graine par processus est une défense classique contre les attaques par collision ; sur un chemin d’exécution soumis au consensus, c’est un fork.
Les prix sont des entiers de bout en bout — des unités de subtick, pas des décimaux. Voir Précision pour la correspondance avec ce que vous soumettez.
La priorité
La priorité, c’est le prix d’abord, puis la position dans la chaîne à ce prix. Le « temps » est la position canonique de l’ordre dans la séquence entérinée du bloc, non le moment où il est arrivé sur un nœud. C’est ce qui supprime la course à la latence intra-bloc. Deux ordres d’un même bloc ont une préséance définie que chaque validateur calcule à l’identique, et aucune proximité avec un nœud donné n’y change quoi que ce soit. D’un bloc à l’autre, l’arrivée compte encore — mais l’unité de compétition est le bloc, pas la microseconde. L’enchaînement des étapes du noyau renforce cela : les annulations s’exécutent avant les placements agressifs à l’intérieur d’un bloc, de sorte qu’une cotation en carnet ne peut pas être prise par un ordre arrivé dans le même bloc que son annulation.Apparier un ordre
Ordre entrant
Croise le carnet ?
Consommer meilleur niveau opposé
Émettre exécution
Terminé
Reposer ou rejeter, selon la durée de validitéGTC repose · IOC annule · FOK n’exécute rien sauf en totalité · post-only est rejeté plutôt que de croiser
reliquat — niveau suivant
plus rien
- GTC — le reliquat reste en carnet.
- IOC — le reliquat est annulé.
- FOK — si l’ordre ne peut pas être exécuté intégralement, rien ne s’exécute du tout.
- ALO — post-only (exclusivement maker) : si l’ordre devait prendre de la liquidité, il est rejeté plutôt que de croiser.
Prévention de l’auto-exécution
Quand un ordre entrant s’apparierait avec de la liquidité en carnet appartenant au même propriétaire, l’appariement est supprimé au lieu d’être exécuté. Le côté qui cède est configurable :
Les makers annulés de cette façon sont collectés pendant l’appariement et retirés dans le même bloc, de sorte que le carnet ne porte pas un ordre déjà supprimé.
Pour ce contrôle, la propriété se résout au niveau de compte que suit le carnet. Voir Prévention de l’auto-exécution pour la vue côté trading.
Ce que l’appariement ne fait pas
Il ne calcule pas les frais, ne réalise pas de P&L, n’ajuste pas les positions et ne contrôle pas la marge. Tout cela se produit après l’appariement, dans la chambre de compensation, à partir des exécutions que l’appariement a produites. Il ne décide pas non plus si un ordre avait le droit d’exister. La suffisance de marge, les limites d’ordres ouverts, les contraintes reduce-only et la conversion des ordres au marché en ordres limités sont réglées avant qu’un ordre n’atteigne le carnet. Quand le moteur voit un ordre, la seule question est de savoir où il se place dans le carnet.Pour aller plus loin
Chambre de compensation
Ce qui arrive aux soldes et aux positions une fois les exécutions produites.
Types d’ordres
La vue côté trading : ce que vous pouvez soumettre et comment chaque type se comporte.
Carnet d’ordres
La profondeur, les niveaux, et la lecture du carnet en tant que trader.
IntentionKernel
Où se place l’appariement dans l’exécution du bloc.