Skip to main content
Das Matching ist eine Stufe innerhalb der Kernel-Ausführung, kein Dienst, mit dem die Chain spricht. Es nimmt die Orders des Blocks in ihrer festgeschriebenen Reihenfolge, arbeitet sie gegen das Buch ab und erzeugt Ausführungen. Es bewegt niemandes Guthaben – das ist Aufgabe der Clearingstelle und geschieht, nachdem das Matching abgeschlossen ist. Erst diese Trennung macht die Engine testbar. Das Matching beantwortet, was gegen was gehandelt wurde. Die Clearingstelle beantwortet, was das kostet und wer wem jetzt was schuldet.

Das Buch

Jedes Instrument hat sein eigenes Buch, im Arbeitsspeicher gehalten als drei zusammenwirkende Strukturen:
Slab Arena – vorab reservierter Bereich mit Order-Slots
Preisebenengeordnet, Preis → Ebenedie Spitze findet man am Ende, nicht durch Suchen
Order-IndexOrder-ID → SlotStornieren, Ändern: konstante Zeit
Order
Order
Order
Order
Order
Doppelt verkettet in Eintreffreihenfolge – die Priorität in einer Ebene ergibt sich aus der Position, nicht aus einer Rechnung.
Warum feste WiederverwendungFreigegebene Slots werden in fester Reihenfolge wiederverwendet, der Index hat festen Seed. Keine Performance-Frage: Zwei Validatoren mit anderer Reihenfolge forken.
Kopf jeder Ebene
direkter Zugriff
Orders liegen in einer Slab Arena – einem vorab reservierten Bereich mit Allokation und Freigabe in konstanter Zeit. Orderbuchoperationen allokieren deshalb nicht auf dem heißen Pfad, und freigegebene Slots werden in einer festen Reihenfolge wiederverwendet und nicht dort, wo der Allokator sie zufällig ablegt. Dieses letzte Detail ist keine Performance-Entscheidung: Würden zwei Validatoren Slots in unterschiedlicher Reihenfolge wiederverwenden, liefe alles auseinander, was das Slot-Layout beobachtet. Dieselbe Disziplin gilt für den Order-Index, dessen Seed fest und nicht zufällig ist. Eine Hash-Map mit prozessindividuellem Seed ist ein üblicher Schutz gegen Kollisionsangriffe; auf einem Konsens-Ausführungspfad ist sie ein Fork. Preise sind durchgehend ganze Zahlen – Subtick-Einheiten, keine Dezimalzahlen. Wie sich das auf das abbildet, was Sie absenden, steht unter Präzision.

Priorität

Priorität ist zuerst der Preis, dann die Position in der Kette zu diesem Preis. „Zeit“ ist die kanonische Position der Order in der festgeschriebenen Blockreihenfolge, nicht der Moment, in dem sie bei einer Node ankam. Das beseitigt das Latenzrennen innerhalb eines Blocks. Zwei Orders im selben Block haben einen definierten Vorrang, den jeder Validator identisch berechnet, und keine noch so große Nähe zu einer bestimmten Node ändert daran etwas. Zwischen Blöcken zählt das Eintreffen weiterhin – aber die Einheit des Wettbewerbs ist der Block, nicht die Mikrosekunde. Die Stufenreihenfolge des Kernels verstärkt das: Stornierungen werden innerhalb eines Blocks vor aggressiven Platzierungen ausgeführt, sodass eine liegende Quotierung nicht von einer Order genommen werden kann, die im selben Block eintraf wie ihre Stornierung.

Eine Order matchen

Eingehende Order
Kreuzt das Buch?
Beste Gegenebene abarbeiten
Ausführung erzeugen
Fertig
Liegen bleiben oder ablehnen, je GültigkeitsdauerGTC bleibt liegen · IOC storniert · FOK führt nur vollständig aus · Post-only wird abgelehnt statt zu kreuzen
Restmenge – nächste Ebene
nichts übrig
Der Matcher arbeitet wiederholt den Kopf der Gegenseite ab und erzeugt für jeden genommenen Maker eine Ausführung, bis die eingehende Order erschöpft ist oder das Buch nicht mehr kreuzt. Was mit einer Restmenge geschieht, entscheidet die Gültigkeitsdauer:
  • GTC – die Restmenge bleibt im Buch liegen.
  • IOC – die Restmenge wird storniert.
  • FOK – kann die Order nicht vollständig ausgeführt werden, wird überhaupt nichts ausgeführt.
  • ALO – Post-only: Würde die Order Liquidität nehmen, wird sie abgelehnt, statt zu kreuzen.
Jede Ausführung bringt ihre Zurechnung schon bei der Entstehung mit. Jede Ausführung hält fest, wo sie in der Folge der Ausführungen ihres Instruments sitzt, und diese Positionen je Instrument werden beim Zusammenstellen der Ausgabe in eine einzige Reihenfolge über den ganzen Block aufgelöst. Genau das erlaubt es, ein Event später auf exakt die Transaktion und exakt die Stelle im Block zurückzuführen, die es verursacht hat.

Selbstausführungsschutz

Trifft eine eingehende Order auf liegende Liquidität desselben Inhabers, wird das Match unterdrückt statt ausgeführt. Welche Seite weicht, ist konfigurierbar: Auf diese Weise stornierte Maker-Orders werden während des Matchings gesammelt und im selben Block entfernt, sodass das Buch keine Order führt, die bereits unterdrückt wurde. Für diese Prüfung gilt die Kontoebene, die das Buch mitführt. Die Sicht aus der Handelsperspektive steht unter Selbstausführungsschutz.

Was das Matching nicht tut

Es berechnet keine Gebühren, realisiert keine Gewinne und Verluste, passt keine Positionen an und prüft keine Margin. Das geschieht nach dem Matching in der Clearingstelle, angetrieben von den Ausführungen, die das Matching erzeugt hat. Es entscheidet auch nicht, ob eine Order überhaupt existieren durfte. Margin-Deckung, Limits für offene Orders, Reduce-only-Bedingungen und die Umwandlung von Market in Limit sind geklärt, bevor eine Order das Buch erreicht. Wenn der Matcher eine Order sieht, ist die einzige Frage, wohin sie im Buch gehört.

Wie es weitergeht

Clearingstelle

Was mit Guthaben und Positionen geschieht, sobald Ausführungen vorliegen.

Ordertypen

Die Sicht aus der Handelsperspektive: was Sie absenden können und wie sich das jeweils verhält.

Orderbuch

Markttiefe, Ebenen und das Buch als Trader lesen.

IntentionKernel

Wo das Matching in der Blockausführung sitzt.