> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# IntentionKernel

> Die Ausführungsschicht: ein geschlossener Befehlssatz von Finanzoperationen, ausgeführt als feste Folge von Stufen über einem konsensbestätigten Block.

Im IntentionKernel wird ein festgeschriebener Block zu Handelszustand. Er ist keine virtuelle Allzweckmaschine, die beliebige Programme ausführt – sein Befehlssatz ist die abschließend aufgezählte Menge der Finanzoperationen, die ein Derivate-Handelsplatz braucht, und jede von ihnen hat eine definierte Wirkung, die das Protokoll versteht.

Dieser Unterschied ist der Grund, warum das Netzwerk überhaupt Aussagen über den Handel treffen kann. Eine Allzweck-Chain kann Ihnen sagen, dass eine Transaktion signiert wurde und nicht abgebrochen ist. Sie kann Ihnen nicht sagen, dass die Transaktion die Stornierung einer bestimmten Order an einer bestimmten Stelle im Buch war, denn die Bedeutung des Aufrufs ist ihr undurchsichtig. Hier ist die Bedeutung der Befehl.

<h2 id="closed-world-execution">
  Closed-World-Ausführung
</h2>

Das Schließen des Instruktionssatzes ist nur ein Fall eines Zuges, den der Kernel viermal macht. Jedes Mal wird der Raum des Möglichen vorab aufgezählt, und was außerhalb liegt, wird abgelehnt statt behandelt.

<div className="dg" data-dg="kernel-closure">
  <div className="dg-c" style={{aspectRatio:"720 / 384"}}>
    <svg className="dg-w" viewBox="0 0 720 384" aria-hidden="true" />

    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"7.8125%",width:"20.8333%",height:"17.1875%"}}><span className="dg-t">Operationen</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"22.5000%",top:"7.8125%",width:"41.6667%",height:"17.1875%"}}><span className="dg-s">Eine Payload, die nicht Element der aufgezählten Menge ist – abgelehnt bei der Validierung, nicht zur Laufzeit</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"65.8333%",top:"7.8125%",width:"34.1667%",height:"17.1875%"}}><span className="dg-s dg-ink--blue">Was tatsächlich verlangt wurde</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"28.1250%",width:"20.8333%",height:"17.1875%"}}><span className="dg-t">Wahrheit</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"22.5000%",top:"28.1250%",width:"41.6667%",height:"17.1875%"}}><span className="dg-s">Den Arbeitssatz eines Blocks als maßgeblich zu behandeln. Er ist ein Journal; die Quelle ist der Engine-Zustand</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"65.8333%",top:"28.1250%",width:"34.1667%",height:"17.1875%"}}><span className="dg-s dg-ink--sky">Was gerade wahr ist</span></div>
    <div className="dg-b dg--yellow" style={{left:"0.0000%",top:"48.4375%",width:"20.8333%",height:"17.1875%"}}><span className="dg-t">Eingaben</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"22.5000%",top:"48.4375%",width:"41.6667%",height:"17.1875%"}}><span className="dg-s">Alles, was sich zwischen zwei Maschinen unterscheiden kann: Uhr, Entropie, Gleitkomma, Hash-Reihenfolge</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"65.8333%",top:"48.4375%",width:"34.1667%",height:"17.1875%"}}><span className="dg-s dg-ink--yellow">Ob eine andere Node dieselben Bytes erhält</span></div>
    <div className="dg-b dg--green" style={{left:"0.0000%",top:"68.7500%",width:"20.8333%",height:"17.1875%"}}><span className="dg-t">Kausalität</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"22.5000%",top:"68.7500%",width:"41.6667%",height:"17.1875%"}}><span className="dg-s">Eine Zustandsänderung ohne Urheber. Effekte, die zu keiner Nutzertransaktion gehören, laufen über einen Systemkanal, nicht über eine Ausnahme</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"65.8333%",top:"68.7500%",width:"34.1667%",height:"17.1875%"}}><span className="dg-s dg-ink--green">Warum genau diese Änderung geschah</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"20.8333%"}}><div className="dg-n">Geschlossen</div></div>
    <div className="dg-free" style={{left:"22.5000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Abgelehnt</div></div>
    <div className="dg-free" style={{left:"65.8333%",top:"0.0000%",width:"34.1667%"}}><div className="dg-n">Damit beantwortet das Ledger</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.0625%",width:"100.0000%"}}><div className="dg-n">Vier Schließungen, ein Zug: den Raum vorab aufzählen und alles ablehnen, was außerhalb liegt.</div></div>
  </div>
</div>

Das sind keine vier unabhängigen Tugenden. Jede trägt die nächste: Erst das Schließen der Operationen macht die *Bedeutung* einer Instruktion rekonstruierbar; erst ein einziger maßgeblicher Zustand gibt dem Wort „Ergebnis" einen Sinn; erst geschlossene Eingaben machen dieses Ergebnis auf einer anderen Maschine reproduzierbar; und erst geschlossene Kausalität erlaubt es, von einem Ergebnis zur Anforderung zurückzugehen, die es erzeugt hat. Nimmt man eine weg, reißt die Kette der Zurechenbarkeit genau dort.

Was die vier zusammen einkaufen, verdient einen Namen, denn traditionelle Handelsplätze kaufen dasselbe weit teurer. Der Prüfpfad einer Börse wird **neben** dem Handelssystem zusammengesetzt und weitergemeldet — deshalb kann er vom System abweichen, deshalb ist Abstimmung eine Daueraufgabe, und deshalb ist die Uhrensynchronisation zwischen Handelsplätzen eine regulatorische Anforderung und kein Implementierungsdetail. Hier gibt es keinen zweiten Datensatz, gegen den abgestimmt werden müsste. Der Prüfpfad ist die Ausführung.

Der Rest dieser Seite sind diese vier Schließungen im Detail.

<h2 id="the-instruction-set">
  Der Befehlssatz
</h2>

Alles, was ein Teilnehmer oder ein Validator tun kann, stammt aus einer festen Menge typisierter Operationen:

| Gruppe                      | Operationen                                                                                                                                                                        |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Orders**                  | Platzieren, stornieren, ersetzen und ändern – über Limit-, Market- und bedingte Formen hinweg, mit Gültigkeitsdauer, Reduce-only und verknüpften Take-Profit-/Stop-Loss-Strukturen |
| **Kontokonfiguration**      | Anlegen von Unterkonten, Hebelwahl, Margin-Modus, Positionsmodus                                                                                                                   |
| **Transfers**               | Zwischen Unterkonten, zwischen Konten sowie hinein und hinaus über die [Bridge](/de/protocol/architecture/bridge)                                                                  |
| **Agenten-Autorisierung**   | Autorisieren und Widerrufen eines Agenten, der im Auftrag eines Kontos handelt                                                                                                     |
| **Vault-Operationen**       | Anlegen, Einzahlungen, Auszahlungen, Konfiguration                                                                                                                                 |
| **Systemkonfiguration**     | Listing von Märkten, Gebührenkonfiguration, Hebelstufen, Risikoparameter – von der Governance autorisiert                                                                          |
| **Von Validatoren erzeugt** | Zertifizierte Preisaktualisierungen und Rekonfiguration                                                                                                                            |

Eine Transaktion, deren Nutzlast nicht zu dieser Menge gehört, wird bei der Validierung abgelehnt. Die Menge ändert sich nur durch ein Protokoll-Upgrade, nie dadurch, dass jemand etwas Neues deployt.

<h2 id="executing-a-block">
  Einen Block ausführen
</h2>

Die Ausführung ist eine feste Folge von Stufen. Die Reihenfolge ist kein Implementierungsdetail – sie entscheidet, ob eine Liquidation den Preis sieht, der sie ausgelöst hat, und ob eine Stornierung einer eingehenden aggressiven Order zuvorkommt.

<div className="dg" data-dg="kernel-stages">
  <div className="dg-c" style={{aspectRatio:"720 / 434"}}>
    <svg className="dg-w" viewBox="0 0 720 434" aria-hidden="true">
      <path className="dg-wire" d="M 150.00 69.33 L 150.00 80.93" />

      <path className="dg-head" d="M 150.00 87.33 L 145.60 80.93 L 154.40 80.93 Z" />

      <path className="dg-wire" d="M 150.00 130.67 L 150.00 142.27" />

      <path className="dg-head" d="M 150.00 148.67 L 145.60 142.27 L 154.40 142.27 Z" />

      <path className="dg-wire" d="M 150.00 192.00 L 150.00 203.60" />

      <path className="dg-head" d="M 150.00 210.00 L 145.60 203.60 L 154.40 203.60 Z" />

      <path className="dg-wire" d="M 150.00 253.33 L 150.00 264.93" />

      <path className="dg-head" d="M 150.00 271.33 L 145.60 264.93 L 154.40 264.93 Z" />

      <path className="dg-wire" d="M 150.00 314.67 L 150.00 326.27" />

      <path className="dg-head" d="M 150.00 332.67 L 145.60 326.27 L 154.40 326.27 Z" />
    </svg>

    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"6.9124%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Preis</span><span className="dg-s">Marks für den Block fixieren</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"21.0445%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Laden</span><span className="dg-s">Konten und Orders des Blocks einlesen</span></div>
    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"35.1767%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Funding</span><span className="dg-s">Funding-Ströme abrechnen</span></div>
    <div className="dg-b dg--orange" style={{left:"0.0000%",top:"49.3088%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Risiko</span><span className="dg-s">Vault-Deleveraging → Liquidation → ADL</span></div>
    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"63.4409%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Matching</span><span className="dg-s">Vorstufe → Matching → Nachstufe</span></div>
    <div className="dg-b dg--green" style={{left:"0.0000%",top:"77.5730%",width:"41.6667%",height:"8.1413%"}}><span className="dg-t">Finalisieren</span><span className="dg-s">Ausgaben sammeln, toten Zustand löschen</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"45.8333%",top:"6.9124%",width:"54.1667%",height:"8.1413%"}}><span className="dg-s">Jede weitere Stufe rechnet mit einem Preis je Instrument statt mit einem laufenden</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"45.8333%",top:"35.1767%",width:"54.1667%",height:"8.1413%"}}><span className="dg-s">Abgerechnet gegen die geladenen Positionen, nicht die späteren</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"45.8333%",top:"49.3088%",width:"54.1667%",height:"8.1413%"}}><span className="dg-s">Erzwungener Fluss ist aufgelöst, bevor neuer diskretionärer zugelassen wird</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"45.8333%",top:"63.4409%",width:"54.1667%",height:"8.1413%"}}><span className="dg-s">Weil es nach Risiko läuft, kann keine Order im selben Block einer Liquidation zuvorkommen</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"45.8333%",top:"77.5730%",width:"54.1667%",height:"8.1413%"}}><span className="dg-s">Genullte Positionen und leere Konten bleiben nicht</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Ein Block, sechs Stufen</div></div>
    <div className="dg-free" style={{left:"45.8333%",top:"0.0000%",width:"54.1667%"}}><div className="dg-n">Was der Platz bestimmt</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.4009%",width:"100.0000%"}}><div className="dg-n">Bedingte Orders werden in dieser Folge geprüft und weitergeführt: Ein von den Marks dieses Blocks gefeuerter Auslöser wirkt hier, nicht erst im nächsten Block.</div></div>
  </div>
</div>

**Preis** läuft zuerst und fixiert die Marks, die der Rest des Blocks verwendet, sodass jede nachgelagerte Stufe mit einem Preis je Instrument rechnet statt mit einem laufenden. **Laden** liest die Konten und Orders des Blocks ein. **Funding** rechnet das Funding gegen die Positionen ab, wie sie geladen wurden. **Risiko** durchläuft drei Phasen in fester Reihenfolge – Vault-Deleveraging, dann Liquidation, dann Auto-Deleveraging –, damit erzwungener Fluss aufgelöst ist, bevor neuer diskretionärer Fluss zugelassen wird. **Matching** durchläuft danach seine eigenen drei Phasen und erzeugt Ausführungen. **Finalisieren** sammelt ein, was sich geändert hat, und löscht Zustand, der nicht mehr existieren muss, etwa auf null gestellte Positionen und geleerte Konten.

Bedingte Orders werden innerhalb dieser Folge geprüft und in ihrem Lebenszyklus weitergeführt, sodass ein Auslöser, den die Marks dieses Blocks feuern, in diesem Block wirkt und nicht erst im nächsten.

<Note>
  Dass die Liquidation vor dem Matching läuft, ist der Grund, warum einer Liquidation keine Order im selben Block zuvorkommen kann. Der liquidierende Fluss ist bereits aufgelöst, wenn diskretionäre Orders gematcht werden.
</Note>

<h2 id="two-kinds-of-state">
  Zwei Arten von Zustand
</h2>

Der Kernel trennt strikt zwischen dem, was fortbesteht, und dem, was nur Zwischenstand ist.

<div className="dg" data-dg="kernel-state">
  <div className="dg-c" style={{aspectRatio:"720 / 300"}}>
    <svg className="dg-w" viewBox="0 0 720 300" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 195.00 104.00 L 254.60 104.00" />

      <path className="dg-head dg--blue" d="M 261.00 104.00 L 254.60 108.40 L 254.60 99.60 Z" />

      <path className="dg-wire dg--yellow" d="M 261.00 152.00 L 201.40 152.00" />

      <path className="dg-head dg--yellow" d="M 195.00 152.00 L 201.40 147.60 L 201.40 156.40 Z" />

      <path className="dg-wire dg--green" d="M 449.00 128.00 L 498.60 128.00" />

      <path className="dg-head dg--green" d="M 505.00 128.00 L 498.60 132.40 L 498.60 123.60 Z" />

      <path className="dg-wire dg--green dg-dash" d="M 615.00 177.00 L 615.00 232.00 L 95.00 232.00 L 95.00 183.40" />

      <path className="dg-head dg--green" d="M 95.00 177.00 L 99.40 183.40 L 90.60 183.40 Z" />
    </svg>

    <div className="dg-band" style={{left:"34.7222%",top:"18.6667%",width:"29.1667%",height:"46.6667%"}}><span className="dg-cap">während ein Block läuft</span></div>
    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"26.6667%",width:"26.3889%",height:"30.6667%"}}><span className="dg-t">Engine-Zustand</span><span className="dg-s">Märkte · Konten · Bücher · Positionen · Clearingstelle</span><span className="dg-n">über Blöcke hinweg</span></div>
    <div className="dg-b dg--yellow dg-dashed" style={{left:"36.9444%",top:"26.6667%",width:"24.7222%",height:"30.6667%"}}><span className="dg-t">Block-Working-Set</span><span className="dg-s">Marks · berührte Konten · Ausführungen · Ausgaben</span><span className="dg-n">nur für einen Block</span></div>
    <div className="dg-b dg--green" style={{left:"70.8333%",top:"26.6667%",width:"29.1667%",height:"30.6667%"}}><span className="dg-t">Festgeschriebener Chain-Zustand</span><span className="dg-s">versioniert · authentifiziert</span><span className="dg-n">maßgeblich</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"87.3333%",width:"100.0000%"}}><div className="dg-n">Änderungsverfolgung ist nicht Maßgeblichkeit. Was sich im Block geändert hat, baut deterministische Ausgaben – dort liegt der Zustand nicht.</div></div>
    <div className="dg-lbl" style={{left:"49.3056%",top:"77.3333%"}}>maßgeblich – die Engine wird daraus gebaut</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"30.0000%"}}>liest</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"55.3333%"}}>anwenden</div>
    <div className="dg-lbl" style={{left:"66.2500%",top:"37.3333%"}}>materialisieren</div>
  </div>
</div>

**Der Engine-Zustand** überdauert Blöcke: Marktmetadaten, Konten, Orderbücher, Instrumentenzustand, Zustand der Clearingstelle. Er ist die Antwort auf „was ist gerade wahr“.

**Das Working Set je Block** existiert nur, solange ein Block ausgeführt wird: die Eingaben des Blocks, die zu Beginn fixierten Marks, die berührten Konten und Orders und die entstehenden Ausgaben. Es ist ein Journal, keine Quelle der Wahrheit.

Der Unterschied zählt, weil sich Änderungsverfolgung leicht mit Maßgeblichkeit verwechseln lässt. Was sich während eines Blocks geändert hat, dient dazu, deterministische Ausgaben zu bauen – dort liegt der Zustand nicht. Wer das vertauscht, baut ein System, in dem die Antwort davon abhängt, wie gefragt wurde.

<h2 id="why-the-result-is-reproducible">
  Warum das Ergebnis reproduzierbar ist
</h2>

Determinismus wird hier erzwungen, nicht erhofft. Jede ehrliche Node, die denselben Block gegen denselben Vorzustand ausführt, erzeugt Byte für Byte dasselbe Ergebnis, weil nichts auf dem Ausführungspfad etwas lesen kann, das sich zwischen Nodes unterscheidet:

* **Durchgehend Festkommaarithmetik.** Die Abrechnungsmathematik läuft auf ganzzahligem Festkomma mit expliziter Rundungssemantik – Aufrunden bei negativen Exponenten in der Margin, Abrunden (floor) und Aufrunden (ceiling) bei Gebühren. Auf dem Abrechnungspfad gibt es kein Gleitkomma, denn ein Rundungsunterschied zwischen zwei Maschinen ist ein Fork.
* **Keine Systemzeit.** Die Reihenfolge innerhalb eines Blocks nutzt die vom Konsens festgeschriebene kanonische Position und den Block-Zeitstempel, nie die lokale Systemzeit.
* **Kein Zufall zur Laufzeit.** Was Zufall braucht, leitet ihn deterministisch aus dem Chain-Zustand ab.
* **Deterministische Iteration.** Jede Sammlung, deren Iterationsreihenfolge in der Ausgabe beobachtbar ist, ist sortiert und nicht hash-randomisiert.

Eine Folge verdient es, benannt zu werden: Weil „Zeit“ innerhalb eines Blocks die festgeschriebene Position im Block ist, gibt es *innerhalb* eines Blocks keinen Colocation-Vorteil im Submillisekundenbereich. Zusammen mit der Prioritätsreihenfolge – die Stornierungen vor aggressiven Platzierungen ausführt – ist das ein struktureller Schutz davor, dass eine liegende Quotierung von einer Order abgegriffen wird, die im selben Block eingetroffen ist.

<h2 id="risk-formulas-are-pure">
  Risikoformeln sind rein
</h2>

Die Formeln, die über Margin-Anforderungen, Liquidationspreise, Deleveraging-Auswahl, Gebühren und Open-Interest-Limits entscheiden, sind als **reine, zustandslose Funktionen** umgesetzt. Sie nehmen Werte entgegen und geben Werte zurück; sie lesen und verändern keinen Ledger-Zustand.

Zustandsänderungen werden ausschließlich von der [Clearingstelle](/de/protocol/architecture/clearinghouse) angestoßen, die diese Funktionen aufruft und die Ergebnisse anwendet. Die Module, die Zustand halten – Konten, Positionen, Orderbücher –, speichern Daten und stellen Mutatoren bereit, treiben aber selbst keinen fachlichen Ablauf.

Das ist eine bewusste Grenze. Sie bedeutet, dass sich eine Margin-Berechnung isoliert gegen eine Tabelle aus Eingaben und Ausgaben prüfen lässt, und sie bedeutet, dass es genau einen Codepfad gibt, über den sich das Guthaben von irgendjemandem ändern kann.

<h2 id="output">
  Ausgabe
</h2>

Die Ausführung erzeugt Zustandsschreibvorgänge und Events, jeweils gebunden an die Transaktion, die sie verursacht hat, dazu einen Kanal für Effekte auf Systemebene, die zu keiner einzelnen Nutzertransaktion gehören – Funding, Bewegungen des Versicherungsfonds, Blockzähler. Daraus werden die Transaktionsausgaben, die die [Zustandsschicht](/de/protocol/architecture/state/model) festschreibt und der [Indexer](/de/protocol/architecture/indexer) ausliefert.

Nichts, was im Kernel geschieht, bleibt nachgelagert unsichtbar. Wenn es Zustand geändert hat, steht es in der Ausgabe von jemandem oder im Systemkanal.

<h2 id="where-to-go-next">
  Wie es weitergeht
</h2>

<CardGroup cols={2}>
  <Card title="Matching" href="/de/protocol/architecture/matching">
    Das Orderbuch, die Preis-Zeit-Priorität und wie Gültigkeitsdauer und Selbstausführungsschutz aufgelöst werden.
  </Card>

  <Card title="Clearingstelle" href="/de/protocol/architecture/clearinghouse">
    Der einzige Pfad, über den sich Guthaben, Positionen und Margin ändern.
  </Card>

  <Card title="Zustandsmodell" href="/de/protocol/architecture/state/model">
    Was aus der Ausgabe des Kernels wird, sobald sie festgeschrieben ist.
  </Card>

  <Card title="IntentionBFT" href="/de/protocol/architecture/intention-bft">
    Woher die Reihenfolge und die Preise stammen.
  </Card>
</CardGroup>
