> ## 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

> La couche d’exécution : un jeu d’instructions fermé d’opérations financières, exécuté comme une séquence fixe d’étapes sur un bloc entériné par le consensus.

IntentionKernel est l’endroit où un bloc entériné se transforme en état de trading. Ce n’est pas une machine virtuelle généraliste qui exécute des programmes arbitraires — son jeu d’instructions est l’ensemble énuméré des opérations financières dont a besoin une plateforme de dérivés, et chacune d’elles a un effet défini que le protocole comprend.

Cette distinction est la raison pour laquelle le réseau peut affirmer quoi que ce soit sur le trading. Une chaîne généraliste peut vous dire qu’une transaction a été signée et n’a pas échoué. Elle ne peut pas vous dire que cette transaction était l’annulation d’un ordre précis à une place précise dans le carnet, parce que le sens de l’appel lui est opaque. Ici, le sens est l’instruction.

<h2 id="closed-world-execution">
  Exécution en monde clos
</h2>

Fermer le jeu d'instructions n'est qu'une occurrence d'un geste que le noyau répète quatre fois. À chaque fois, l'espace de ce qui peut arriver est énuméré à l'avance, et ce qui tombe en dehors est refusé plutôt que traité.

<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">Opérations</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">Une charge utile qui n'appartient pas à l'ensemble énuméré — rejetée à la validation, pas à l'exécution</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">Ce qui a réellement été demandé</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">Vérité</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">Traiter le jeu de travail du bloc comme faisant autorité. C'est un journal ; la source est l'état du moteur</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">Ce qui est vrai en ce moment</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">Entrées</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">Tout ce qui peut différer d'une machine à l'autre : horloge, entropie, virgule flottante, ordre de hachage</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">Si un autre nœud obtient les mêmes octets</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">Causalité</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">Un changement d'état sans propriétaire. Les effets qui n'appartiennent à aucune transaction passent par un canal système, pas par une dérogation</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">Pourquoi ce changement précis a eu lieu</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"20.8333%"}}><div className="dg-n">Fermé</div></div>
    <div className="dg-free" style={{left:"22.5000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Refusé</div></div>
    <div className="dg-free" style={{left:"65.8333%",top:"0.0000%",width:"34.1667%"}}><div className="dg-n">Le registre peut donc répondre</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.0625%",width:"100.0000%"}}><div className="dg-n">Quatre clôtures, un seul geste : énumérer l'espace à l'avance et refuser ce qui tombe en dehors.</div></div>
  </div>
</div>

Ce ne sont pas quatre vertus indépendantes. Chacune porte la suivante : fermer les opérations rend le *sens* d'une instruction récupérable ; un état unique et faisant autorité donne un sens au mot « résultat » ; fermer les entrées rend ce résultat reproductible ailleurs que sur cette machine ; et fermer la causalité permet de remonter d'un résultat à la demande qui l'a produit. Retirez-en une et la chaîne de responsabilité casse à ce maillon.

Ce que les quatre achètent ensemble mérite un nom, car les places traditionnelles achètent la même chose bien plus cher. La piste d'audit d'une bourse est assemblée **à côté** du système de négociation puis déclarée en aval — c'est pourquoi elle peut diverger du système, pourquoi le rapprochement est un métier permanent, et pourquoi la synchronisation des horloges entre places relève de la réglementation et non du détail d'implémentation. Ici il n'y a pas de second registre à rapprocher. La piste d'audit est l'exécution.

Le reste de cette page détaille ces quatre clôtures.

<h2 id="the-instruction-set">
  Le jeu d’instructions
</h2>

Tout ce qu’un participant ou un validateur peut faire relève d’un ensemble fixe d’opérations typées :

| Groupe                         | Opérations                                                                                                                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ordres**                     | Placer, annuler, remplacer et modifier — sous les formes limitée, au marché et conditionnelle, avec durée de validité, reduce-only et structures take-profit / stop-loss liées |
| **Configuration du compte**    | Création de sous-compte, choix du levier, mode de marge, mode de position                                                                                                      |
| **Transferts**                 | Entre sous-comptes, entre comptes, et entrées et sorties via le [bridge](/fr/protocol/architecture/bridge)                                                                     |
| **Autorisation d’agent**       | Autoriser et révoquer un agent qui trade au nom d’un compte                                                                                                                    |
| **Opérations de vault**        | Création, dépôts, retraits, configuration                                                                                                                                      |
| **Configuration système**      | Cotation de marché, configuration des frais, paliers de levier, paramètres de risque — autorisés par la gouvernance                                                            |
| **Émises par les validateurs** | Mises à jour de prix certifiés et reconfiguration                                                                                                                              |

Une transaction dont la charge utile n’appartient pas à cet ensemble est rejetée à la validation. L’ensemble ne change que par mise à niveau du protocole, jamais par le déploiement de quelque chose de nouveau.

<h2 id="executing-a-block">
  Exécuter un bloc
</h2>

L’exécution est une séquence fixe d’étapes. Cet enchaînement n’est pas un détail d’implémentation — c’est lui qui détermine si une liquidation voit le prix qui l’a déclenchée, et si une annulation devance un ordre agressif entrant.

<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">Prix</span><span className="dg-s">fixer les marquages du bloc</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">Chargement</span><span className="dg-s">ingérer les comptes et ordres du bloc</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">Financement</span><span className="dg-s">régler les flux</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">Risque</span><span className="dg-s">levier vaults → 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">Appariement</span><span className="dg-s">pré → appariement → post</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">Finalisation</span><span className="dg-s">collecter sorties, purger état mort</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">Chaque étape en aval raisonne sur un prix par instrument, non sur un prix mouvant</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">Réglé sur les positions telles que chargées, pas en fin de bloc</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">Le flux forcé est résolu avant l’admission de tout flux discrétionnaire</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">S’exécuter après Risque est ce qui empêche de devancer une liquidation dans le même bloc</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">Positions à zéro et comptes vidés ne persistent pas</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Un bloc, six étapes</div></div>
    <div className="dg-free" style={{left:"45.8333%",top:"0.0000%",width:"54.1667%"}}><div className="dg-n">Ce que la place détermine</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.4009%",width:"100.0000%"}}><div className="dg-n">Les ordres conditionnels sont balayés dans cette séquence : un déclenchement provoqué par les marquages de ce bloc prend effet dans ce bloc, pas dans le suivant.</div></div>
  </div>
</div>

**Prix** s’exécute en premier et fixe les prix de marquage que le reste du bloc utilisera, de sorte que chaque étape en aval raisonne sur un prix par instrument plutôt que sur un prix mouvant. **Chargement** ingère les comptes et les ordres du bloc. **Financement** règle le financement contre les positions telles que chargées. **Risque** exécute trois phases successivement — réduction du levier des vaults, puis liquidation, puis réduction automatique du levier (ADL) — pour que le flux forcé soit résolu avant l’admission de tout nouveau flux discrétionnaire. **Appariement** exécute ensuite ses propres trois phases et produit des exécutions. **Finalisation** collecte ce qui a changé et purge l’état qui n’a plus lieu d’être, comme les positions ramenées à zéro et les comptes vidés.

Les ordres conditionnels sont balayés et font avancer leur cycle de vie à l’intérieur de cette séquence, de sorte qu’un déclenchement provoqué par les prix de marquage de ce bloc prend effet dans ce bloc plutôt que dans le suivant.

<Note>
  C’est parce que la liquidation s’exécute avant l’appariement qu’une liquidation ne peut pas être devancée par un ordre du même bloc. Le flux de liquidation est déjà résolu au moment où les ordres discrétionnaires sont appariés.
</Note>

<h2 id="two-kinds-of-state">
  Deux sortes d’état
</h2>

Le noyau maintient une séparation stricte entre ce qui persiste et ce qui est éphémère.

<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">pendant l’exécution d’un bloc</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">État du moteur</span><span className="dg-s">marchés · comptes · carnets · positions · chambre de compensation</span><span className="dg-n">vit entre les blocs</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">Ensemble de travail</span><span className="dg-s">marquages · comptes touchés · exécutions · sortie</span><span className="dg-n">vit le temps d’un bloc</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">État de la chaîne entériné</span><span className="dg-s">versionné · authentifié</span><span className="dg-n">l’autorité</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"87.3333%",width:"100.0000%"}}><div className="dg-n">On confond facilement suivi des modifications et autorité. Ce qui change pendant un bloc construit la sortie déterministe — ce n’est pas là que vit l’état.</div></div>
    <div className="dg-lbl" style={{left:"49.3056%",top:"77.3333%"}}>l’autorité qui reconstruit le moteur</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"30.0000%"}}>lecture</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"55.3333%"}}>application</div>
    <div className="dg-lbl" style={{left:"66.2500%",top:"37.3333%"}}>matérialisation</div>
  </div>
</div>

**L’état du moteur** vit d’un bloc à l’autre : métadonnées de marché, comptes, carnets d’ordres, état des instruments, état de la chambre de compensation. C’est la réponse à « qu’est-ce qui est vrai en ce moment ».

**L’ensemble de travail du bloc** n’existe que pendant l’exécution d’un bloc : les entrées du bloc, les prix de marquage fixés au départ, les comptes et les ordres touchés, et les sorties en cours d’assemblage. C’est un journal, pas une source de vérité.

La distinction compte parce qu’il est facile de prendre le suivi des modifications pour l’autorité. Ce qui a changé pendant un bloc sert à construire une sortie déterministe — ce n’est pas là que vit l’état. Prendre cela à l’envers produit un système où la réponse dépend de la façon dont on a posé la question.

<h2 id="why-the-result-is-reproducible">
  Pourquoi le résultat est reproductible
</h2>

Le déterminisme est ici imposé, non espéré. Tout nœud honnête qui exécute le même bloc contre le même état antérieur produit le même résultat, octet pour octet, parce que rien sur le chemin d’exécution ne peut lire quoi que ce soit qui diffère d’un nœud à l’autre :

* **Arithmétique en virgule fixe partout.** Les calculs de règlement se font en virgule fixe entière avec une sémantique d’arrondi explicite — arrondi vers le haut sur les exposants négatifs pour la marge, plancher et plafond pour les frais. Il n’y a pas de virgule flottante sur le chemin de règlement, parce qu’une différence d’arrondi entre deux machines est un fork.
* **Aucune horloge murale.** Le séquencement à l’intérieur d’un bloc utilise la position canonique entérinée par le consensus et l’horodatage du bloc, jamais l’heure locale.
* **Aucun aléa à l’exécution.** Tout ce qui exige de l’aléa le dérive de façon déterministe de l’état de la chaîne.
* **Itération déterministe.** Toute collection dont l’ordre de parcours est observable dans la sortie est triée, et non randomisée par hachage.

Une conséquence mérite d’être nommée : comme le « temps » à l’intérieur d’un bloc est la position intra-bloc entérinée, aucun avantage de colocation sous la milliseconde n’existe *à l’intérieur* d’un bloc. Combiné à l’ordonnancement des priorités — qui exécute les annulations avant les placements agressifs —, c’est une défense structurelle contre le fait de se faire prendre une cotation en carnet par un ordre arrivé dans le même bloc.

<h2 id="risk-formulas-are-pure">
  Les formules de risque sont pures
</h2>

Les formules qui décident des exigences de marge, des prix de liquidation, de la sélection pour la réduction du levier, des frais et des limites d’encours sont implémentées comme des **fonctions pures et sans état**. Elles prennent des valeurs et renvoient des valeurs ; elles ne lisent ni ne modifient l’état du registre.

Les changements d’état sont pilotés exclusivement par la [chambre de compensation](/fr/protocol/architecture/clearinghouse), qui appelle ces fonctions et applique les résultats. Les modules qui détiennent de l’état — comptes, positions, carnets d’ordres — stockent les données et exposent des mutateurs, mais ne pilotent pas eux-mêmes la logique métier.

C’est une frontière délibérée. Elle fait qu’un calcul de marge peut être vérifié isolément contre une table d’entrées et de sorties, et qu’il existe exactement un chemin de code par lequel le solde de qui que ce soit peut changer.

<h2 id="output">
  La sortie
</h2>

L’exécution produit des écritures d’état et des événements, chacun lié à la transaction qui l’a causé, plus un canal pour les effets de niveau système qui n’appartiennent à aucune transaction utilisateur en particulier — financement, mouvements du fonds d’assurance, compteurs de bloc. Ceux-ci deviennent les sorties de transaction que la [couche d’état](/fr/protocol/architecture/state/model) entérine et que l’[indexeur](/fr/protocol/architecture/indexer) sert.

Rien de ce qui se passe à l’intérieur du noyau n’est invisible en aval. Si cela a changé l’état, cela se trouve dans la sortie de quelqu’un ou dans le canal système.

<h2 id="where-to-go-next">
  Pour aller plus loin
</h2>

<CardGroup cols={2}>
  <Card title="Appariement" href="/fr/protocol/architecture/matching">
    Le carnet d’ordres, la priorité prix-temps, et la résolution de la durée de validité et de la prévention de l’auto-exécution.
  </Card>

  <Card title="Chambre de compensation" href="/fr/protocol/architecture/clearinghouse">
    L’unique chemin par lequel changent les soldes, les positions et la marge.
  </Card>

  <Card title="Modèle d’état" href="/fr/protocol/architecture/state/model">
    Ce que devient la sortie du noyau une fois entérinée.
  </Card>

  <Card title="IntentionBFT" href="/fr/protocol/architecture/intention-bft">
    D’où viennent le séquencement et les prix.
  </Card>
</CardGroup>
