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

> Il livello di esecuzione: un insieme chiuso di istruzioni finanziarie, eseguite come sequenza fissa di fasi su un blocco confermato dal consenso.

IntentionKernel è il punto in cui un blocco confermato diventa stato di trading. Non è una macchina virtuale generalista che esegue programmi arbitrari: il suo insieme di istruzioni è l'insieme enumerato delle operazioni finanziarie di cui ha bisogno una piattaforma di derivati, e ognuna ha un effetto definito che il protocollo comprende.

È questa distinzione a permettere alla rete di affermare qualcosa sul trading. Una catena generalista può dirti che una transazione è stata firmata e non si è interrotta. Non può dirti che quella transazione era l'annullamento di un ordine specifico in una posizione specifica del book, perché il significato della chiamata le è opaco. Qui il significato è l'istruzione.

<h2 id="closed-world-execution">
  Esecuzione a mondo chiuso
</h2>

Chiudere l'insieme di istruzioni è solo un'istanza di una mossa che il kernel compie quattro volte. Ogni volta lo spazio di ciò che può accadere è enumerato in anticipo, e ciò che ne resta fuori viene rifiutato anziché gestito.

<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">Operazioni</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">Un payload che non appartiene all'insieme enumerato: rifiutato in validazione, non a runtime</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">Che cosa è stato davvero chiesto</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">Verità</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">Trattare come autorevole il working set del blocco. Quello è un giornale; la fonte è lo stato del motore</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">Che cosa è vero adesso</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">Input</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">Tutto ciò che può differire fra due macchine: orologio, entropia, virgola mobile, ordine di hash</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">Se un altro nodo ottiene gli stessi byte</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 cambiamento di stato senza titolare. Gli effetti che non appartengono a nessuna transazione passano da un canale di sistema, non da un'esenzione</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">Perché è avvenuto proprio questo cambiamento</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"20.8333%"}}><div className="dg-n">Chiuso</div></div>
    <div className="dg-free" style={{left:"22.5000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Rifiutato</div></div>
    <div className="dg-free" style={{left:"65.8333%",top:"0.0000%",width:"34.1667%"}}><div className="dg-n">Così il ledger può rispondere</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.0625%",width:"100.0000%"}}><div className="dg-n">Quattro chiusure, una sola mossa: enumerare lo spazio in anticipo e rifiutare ciò che ne resta fuori.</div></div>
  </div>
</div>

Non sono quattro virtù indipendenti. Ciascuna regge la successiva: chiudere le operazioni è ciò che rende recuperabile il *significato* di un'istruzione; un unico stato autorevole è ciò che dà senso alla parola «risultato»; chiudere gli input è ciò che rende quel risultato riproducibile fuori da questa macchina; e chiudere la causalità è ciò che permette di risalire da un risultato alla richiesta che lo ha prodotto. Toglietene una e la catena di responsabilità si spezza proprio lì.

Ciò che le quattro comprano insieme merita un nome, perché le sedi tradizionali comprano la stessa cosa a un costo assai maggiore. La pista di controllo di una borsa è assemblata **accanto** al sistema di negoziazione e poi segnalata a valle: per questo può divergere dal sistema, per questo la riconciliazione è un mestiere permanente, e per questo la sincronizzazione degli orologi fra sedi è un requisito regolamentare e non un dettaglio implementativo. Qui non esiste un secondo registro con cui riconciliare. La pista di controllo è l'esecuzione.

Il resto di questa pagina sono quelle quattro chiusure in dettaglio.

<h2 id="the-instruction-set">
  L'insieme di istruzioni
</h2>

Tutto ciò che un partecipante o un validatore può fare rientra in un insieme fisso di operazioni tipizzate:

| Gruppo                          | Operazioni                                                                                                                                                                            |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ordini**                      | Immissione, annullamento, sostituzione e modifica — nelle forme limite, a mercato e condizionata, con validità dell'ordine, reduce-only e strutture take-profit / stop-loss collegate |
| **Configurazione del conto**    | Creazione di sottoconti, scelta della leva, modalità di margine, modalità di posizione                                                                                                |
| **Trasferimenti**               | Tra sottoconti, tra conti e in entrata e in uscita attraverso il [bridge](/it/protocol/architecture/bridge)                                                                           |
| **Autorizzazione degli agenti** | Autorizzare e revocare un agente che opera per conto di un conto                                                                                                                      |
| **Operazioni sui vault**        | Creazione, depositi, prelievi, configurazione                                                                                                                                         |
| **Configurazione di sistema**   | Quotazione dei mercati, configurazione delle commissioni, livelli di leva, parametri di rischio — autorizzati dalla governance                                                        |
| **Emesse dai validatori**       | Aggiornamenti di prezzo certificati e riconfigurazione                                                                                                                                |

Una transazione il cui payload non appartiene a questo insieme viene rifiutata in fase di validazione. L'insieme cambia solo con un aggiornamento di protocollo, mai mettendo in produzione qualcosa di nuovo.

<h2 id="executing-a-block">
  Eseguire un blocco
</h2>

L'esecuzione è una sequenza fissa di fasi. L'ordine non è un dettaglio implementativo: è ciò che determina se una liquidazione vede il prezzo che l'ha innescata e se un annullamento batte un ordine aggressivo in arrivo.

<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">Prezzo</span><span className="dg-s">fissa i mark del blocco</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">Carico</span><span className="dg-s">acquisisce conti e ordini del blocco</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">regola il funding</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">Rischio</span><span className="dg-s">deleveraging vault → liquidazione → 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">pre-match → matching → post-match</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">Finalizzazione</span><span className="dg-s">raccoglie output, pulisce stato morto</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">Ogni fase a valle ragiona su un prezzo per strumento, non su uno in movimento</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">Regolato sulle posizioni come caricate, non come finiscono</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">Il flusso forzato è risolto prima che entri quello discrezionale</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">Girando dopo Rischio, una liquidazione non è anticipabile da un ordine dello stesso blocco</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">Posizioni azzerate e conti svuotati non persistono</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Un blocco, sei fasi</div></div>
    <div className="dg-free" style={{left:"45.8333%",top:"0.0000%",width:"54.1667%"}}><div className="dg-n">Che cosa determina la posizione</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.4009%",width:"100.0000%"}}><div className="dg-n">Gli ordini condizionati sono scanditi e fatti avanzare in questa sequenza: un'attivazione scattata dai mark di questo blocco ha effetto qui, non nel blocco successivo.</div></div>
  </div>
</div>

**Prezzo** viene eseguito per primo e fissa i mark che il resto del blocco userà, così ogni fase a valle ragiona su un prezzo per strumento invece che su uno in movimento. **Carico** acquisisce i conti e gli ordini del blocco. **Funding** regola il funding sulle posizioni così come sono state caricate. **Rischio** esegue tre fasi in ordine — deleveraging dei vault, poi liquidazione, poi auto-deleveraging — in modo che il flusso forzato sia risolto prima che venga ammesso nuovo flusso discrezionale. **Matching** esegue poi le sue tre fasi, producendo esecuzioni. **Finalizzazione** raccoglie ciò che è cambiato e ripulisce lo stato che non ha più ragione di esistere, come le posizioni azzerate e i conti svuotati.

Gli ordini condizionati vengono scanditi e fatti avanzare nel loro ciclo di vita all'interno di questa sequenza, così un'attivazione scattata dai mark di questo blocco ha effetto in questo blocco e non nel successivo.

<Note>
  Il fatto che la liquidazione giri prima del matching è la ragione per cui una liquidazione non può essere anticipata da un ordine nello stesso blocco. Il flusso di liquidazione è già risolto nel momento in cui gli ordini discrezionali vengono incrociati.
</Note>

<h2 id="two-kinds-of-state">
  Due tipi di stato
</h2>

Il kernel mantiene una separazione rigida tra ciò che persiste e ciò che è temporaneo.

<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">esecuzione del blocco</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">Stato del motore</span><span className="dg-s">mercati · conti · book · posizioni · stanza di compensazione</span><span className="dg-n">vive tra i blocchi</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">Working set del blocco</span><span className="dg-s">mark · conti toccati · esecuzioni · output in corso</span><span className="dg-n">vive per un blocco</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">Stato della catena</span><span className="dg-s">versionato · autenticato</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">Tracciare le modifiche è facile da scambiare per autorità. Ciò che cambia in un blocco costruisce output deterministico — non è dove risiede lo stato.</div></div>
    <div className="dg-lbl" style={{left:"49.3056%",top:"77.3333%"}}>l'autorità da cui il motore è ricostruito</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"30.0000%"}}>lettura</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"55.3333%"}}>applica</div>
    <div className="dg-lbl" style={{left:"66.2500%",top:"37.3333%"}}>materializza</div>
  </div>
</div>

**Lo stato del motore** sopravvive da un blocco all'altro: metadati dei mercati, conti, book degli ordini, stato degli strumenti, stato della stanza di compensazione. È la risposta alla domanda «che cosa è vero adesso».

**Il working set per blocco** esiste solo mentre un blocco è in esecuzione: gli input del blocco, i mark fissati all'inizio, i conti e gli ordini toccati e gli output in via di assemblaggio. È un registro di lavoro, non una fonte di verità.

La distinzione conta perché è facile scambiare il tracciamento delle modifiche per autorità. Ciò che è cambiato durante un blocco serve a costruire output deterministico: non è il luogo in cui lo stato risiede. Invertire le due cose produce un sistema in cui la risposta dipende da come hai fatto la domanda.

<h2 id="why-the-result-is-reproducible">
  Perché il risultato è riproducibile
</h2>

Qui il determinismo è imposto, non sperato. Ogni nodo onesto che esegue lo stesso blocco sullo stesso stato precedente produce lo stesso risultato byte per byte, perché nulla sul percorso di esecuzione può leggere qualcosa che differisca da nodo a nodo:

* **Aritmetica a virgola fissa ovunque.** I calcoli di regolamento girano su interi a virgola fissa con semantica di arrotondamento esplicita: per eccesso sugli esponenti negativi nel margine, per difetto e per eccesso sulle commissioni. Sul percorso di regolamento non c'è virgola mobile, perché una differenza di arrotondamento tra due macchine è un fork.
* **Nessun orologio di sistema.** L'ordinamento dentro un blocco usa la posizione canonica confermata dal consenso e il timestamp del blocco, mai l'ora locale.
* **Nessuna casualità a runtime.** Tutto ciò che richiede casualità la deriva in modo deterministico dallo stato della catena.
* **Iterazione deterministica.** Ogni collezione il cui ordine di iterazione è osservabile nell'output è ordinata, non randomizzata sull'hash.

Vale la pena nominare una conseguenza: poiché il «tempo» dentro un blocco è la posizione intra-blocco confermata, *dentro* un blocco non esiste alcun vantaggio di colocation sotto il millisecondo. Unito all'ordine di priorità — che esegue gli annullamenti prima delle immissioni aggressive — questa è una difesa strutturale contro il rischio che un prezzo esposto in book venga colpito da un ordine arrivato nello stesso blocco.

<h2 id="risk-formulas-are-pure">
  Le formule di rischio sono pure
</h2>

Le formule che decidono requisiti di margine, prezzi di liquidazione, selezione per il deleveraging, commissioni e limiti di open interest sono implementate come **funzioni pure e senza stato**. Prendono valori e restituiscono valori; non leggono né modificano lo stato del ledger.

I cambiamenti di stato sono guidati esclusivamente dalla [stanza di compensazione](/it/protocol/architecture/clearinghouse), che chiama quelle funzioni e ne applica i risultati. I moduli che detengono stato — conti, posizioni, book degli ordini — memorizzano dati ed espongono mutatori, ma non guidano da soli il flusso applicativo.

È un confine deliberato. Significa che un calcolo di margine si può verificare in isolamento su una tabella di input e output, e significa che esiste esattamente un percorso di codice attraverso cui il saldo di chiunque può cambiare.

## Output

L'esecuzione produce scritture di stato ed eventi, ciascuno legato alla transazione che lo ha causato, più un canale per gli effetti a livello di sistema che non appartengono a nessuna singola transazione utente: funding, movimenti del fondo assicurativo, contatori di blocco. Diventano gli output di transazione che il [livello di stato](/it/protocol/architecture/state/model) conferma e l'[indexer](/it/protocol/architecture/indexer) serve.

Niente di ciò che accade dentro il kernel è invisibile a valle. Se ha cambiato lo stato, è nell'output di qualcuno o nel canale di sistema.

<h2 id="where-to-go-next">
  Dove proseguire
</h2>

<CardGroup cols={2}>
  <Card title="Matching" href="/it/protocol/architecture/matching">
    Il book degli ordini, la priorità prezzo-tempo e come si risolvono validità dell'ordine e prevenzione dell'auto-negoziazione.
  </Card>

  <Card title="Stanza di compensazione" href="/it/protocol/architecture/clearinghouse">
    L'unica strada attraverso cui cambiano saldi, posizioni e margine.
  </Card>

  <Card title="Modello di stato" href="/it/protocol/architecture/state/model">
    Che cosa diventa l'output del kernel una volta confermato.
  </Card>

  <Card title="IntentionBFT" href="/it/protocol/architecture/intention-bft">
    Da dove arrivano l'ordinamento e i prezzi.
  </Card>
</CardGroup>
