> ## 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 capa de ejecución: un conjunto cerrado de instrucciones de operaciones financieras, ejecutado como una secuencia fija de etapas sobre un bloque confirmado por el consenso.

IntentionKernel es donde un bloque confirmado se convierte en estado de trading. No es una máquina virtual de propósito general que ejecuta programas arbitrarios: su conjunto de instrucciones es el conjunto enumerado de operaciones financieras que necesita un exchange de derivados, y cada una de ellas tiene un efecto definido que el protocolo entiende.

Esa distinción es la razón por la que la red puede afirmar algo sobre el trading. Una cadena de propósito general puede decirte que una transacción se firmó y no abortó. No puede decirte que la transacción era la cancelación de una orden concreta en una posición concreta del libro, porque el significado de la llamada le resulta opaco. Aquí el significado es la instrucción.

<h2 id="closed-world-execution">
  Ejecución de mundo cerrado
</h2>

Cerrar el conjunto de instrucciones es solo una instancia de un movimiento que el kernel hace cuatro veces. Cada vez, el espacio de lo que puede ocurrir se enumera de antemano, y lo que queda fuera se rechaza en lugar de gestionarse.

<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">Operaciones</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">Una carga que no pertenece al conjunto enumerado: rechazada en la validación, no en tiempo de ejecución</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">Qué se pidió realmente</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">Verdad</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">Tratar el conjunto de trabajo del bloque como autoritativo. Es un diario; la fuente es el estado del motor</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">Qué es cierto ahora mismo</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">Entradas</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">Todo lo que puede diferir entre dos máquinas: reloj, entropía, coma flotante, orden de 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">Si otro nodo obtiene los mismos bytes</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">Causalidad</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 cambio de estado sin dueño. Los efectos que no pertenecen a ninguna transacción van por un canal de sistema, no por una excepción</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">Por qué ocurrió justo este cambio</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"20.8333%"}}><div className="dg-n">Cerrado</div></div>
    <div className="dg-free" style={{left:"22.5000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Rechazado</div></div>
    <div className="dg-free" style={{left:"65.8333%",top:"0.0000%",width:"34.1667%"}}><div className="dg-n">Así el ledger puede responder</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.0625%",width:"100.0000%"}}><div className="dg-n">Cuatro cierres, un solo movimiento: enumerar el espacio de antemano y rechazar lo que queda fuera.</div></div>
  </div>
</div>

No son cuatro virtudes independientes. Cada una sostiene a la siguiente: cerrar las operaciones es lo que hace recuperable el *significado* de una instrucción; un único estado autoritativo es lo que da sentido a la palabra «resultado»; cerrar las entradas es lo que hace ese resultado reproducible fuera de esta máquina; y cerrar la causalidad es lo que permite remontar de un resultado a la petición que lo produjo. Quita una y la cadena de responsabilidad se rompe justo en ese eslabón.

Lo que las cuatro compran juntas merece un nombre, porque los mercados tradicionales compran lo mismo mucho más caro. La pista de auditoría de una bolsa se ensambla **al lado** del sistema de negociación y se reporta aguas abajo: por eso puede discrepar del sistema, por eso la conciliación es un oficio permanente, y por eso la sincronización de relojes entre mercados es un requisito regulatorio y no un detalle de implementación. Aquí no hay un segundo registro con el que conciliar. La pista de auditoría es la ejecución.

El resto de esta página son esos cuatro cierres en detalle.

<h2 id="the-instruction-set">
  El conjunto de instrucciones
</h2>

Todo lo que un participante o un validador puede hacer es una de un conjunto fijo de operaciones tipadas:

| Grupo                          | Operaciones                                                                                                                                                                              |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Órdenes**                    | Colocar, cancelar, reemplazar y modificar — en las formas límite, de mercado y condicional, con vigencia de la orden, solo reducción y estructuras vinculadas de take-profit / stop-loss |
| **Configuración de la cuenta** | Creación de subcuentas, selección de apalancamiento, modo de margen, modo de posición                                                                                                    |
| **Transferencias**             | Entre subcuentas, entre cuentas, y de entrada y salida a través del [puente](/es/protocol/architecture/bridge)                                                                           |
| **Autorización de agentes**    | Autorizar y revocar un agente que opera en nombre de una cuenta                                                                                                                          |
| **Operaciones de bóveda**      | Creación, depósitos, retiros, configuración                                                                                                                                              |
| **Configuración del sistema**  | Listado de mercados, configuración de comisiones, tramos de apalancamiento, parámetros de riesgo — autorizados por la gobernanza                                                         |
| **Emitidas por validadores**   | Actualizaciones de precios certificados y reconfiguración                                                                                                                                |

Una transacción cuyo payload no pertenece a este conjunto se rechaza en la validación. El conjunto solo cambia mediante una actualización del protocolo, nunca desplegando algo nuevo.

<h2 id="executing-a-block">
  Ejecutar un bloque
</h2>

La ejecución es una secuencia fija de etapas. El orden no es un detalle de implementación: es lo que determina si una liquidación ve el precio que la activó y si una cancelación le gana a una orden agresora entrante.

<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">Precio</span><span className="dg-s">fijar las marcas del bloque</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">Carga</span><span className="dg-s">ingerir cuentas y órdenes del bloque</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">Financiación</span><span className="dg-s">saldar los flujos</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">Riesgo</span><span className="dg-s">desapalancar bóvedas → liquidación → 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">Casación</span><span className="dg-s">previa → casación → posterior</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">Finalizar</span><span className="dg-s">recoger salidas, purgar estado muerto</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">Cada etapa posterior razona sobre un único precio por instrumento, no sobre uno móvil</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">Saldada contra las posiciones como se cargaron, no como acaban</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">El flujo forzoso se resuelve antes de admitir flujo discrecional nuevo</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">Al ir después de Riesgo, ninguna orden del mismo bloque puede adelantarse a una liquidación</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">Las posiciones a cero y las cuentas vacías no persisten</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"41.6667%"}}><div className="dg-n">Un bloque, seis etapas</div></div>
    <div className="dg-free" style={{left:"45.8333%",top:"0.0000%",width:"54.1667%"}}><div className="dg-n">Lo que depende de ese orden</div></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.4009%",width:"100.0000%"}}><div className="dg-n">Las órdenes condicionales se revisan y avanzan en esta secuencia: una activación por las marcas de este bloque surte efecto en este bloque, no en el siguiente.</div></div>
  </div>
</div>

**Precio** se ejecuta primero y fija las marcas que usará el resto del bloque, de modo que cada etapa posterior razona sobre un único precio por instrumento y no sobre uno en movimiento. **Carga** ingiere las cuentas y órdenes del bloque. **Financiación** salda la financiación contra las posiciones tal y como se cargaron. **Riesgo** ejecuta tres fases en orden (desapalancamiento de bóvedas, luego liquidación, luego desapalancamiento automático) para que el flujo forzoso quede resuelto antes de admitir flujo discrecional nuevo. **Casación** ejecuta entonces sus propias tres fases y produce ejecuciones. **Finalizar** recoge lo que cambió y purga el estado que ya no necesita existir, como las posiciones a cero y las cuentas vacías.

Las órdenes condicionales se revisan y avanzan por su ciclo de vida dentro de esta secuencia, de modo que una activación provocada por las marcas de este bloque surte efecto en este bloque y no en el siguiente.

<Note>
  Que la liquidación se ejecute antes que la casación es la razón por la que ninguna orden del mismo bloque puede adelantarse a una liquidación. El flujo de liquidación ya está resuelto cuando se casan las órdenes discrecionales.
</Note>

<h2 id="two-kinds-of-state">
  Dos clases de estado
</h2>

El kernel mantiene una separación estricta entre lo que persiste y lo que es temporal.

<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">al ejecutarse un bloque</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">Estado del motor</span><span className="dg-s">mercados · cuentas · libros · posiciones · cámara de compensación</span><span className="dg-n">vive entre bloques</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">Conjunto de trabajo</span><span className="dg-s">marcas · cuentas tocadas · ejecuciones · salida preparada</span><span className="dg-n">vive un solo bloque</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">Estado confirmado de la cadena</span><span className="dg-s">versionado · autenticado</span><span className="dg-n">la autoridad</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"87.3333%",width:"100.0000%"}}><div className="dg-n">Es fácil confundir el seguimiento de cambios con la autoridad. Lo que cambió en un bloque construye la salida determinista — no es donde vive el estado.</div></div>
    <div className="dg-lbl" style={{left:"49.3056%",top:"77.3333%"}}>la autoridad de la que se reconstruye el motor</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"30.0000%"}}>lectura</div>
    <div className="dg-lbl" style={{left:"31.6667%",top:"55.3333%"}}>aplicar</div>
    <div className="dg-lbl" style={{left:"66.2500%",top:"37.3333%"}}>materializar</div>
  </div>
</div>

**El estado del motor** vive entre bloques: metadatos de mercado, cuentas, libros de órdenes, estado de los instrumentos, estado de la cámara de compensación. Es la respuesta a “qué es cierto ahora mismo”.

**El conjunto de trabajo por bloque** existe solo mientras se ejecuta un bloque: las entradas del bloque, las marcas fijadas al inicio, las cuentas y órdenes tocadas y las salidas que se están ensamblando. Es un diario, no una fuente de verdad.

La distinción importa porque el seguimiento de cambios se confunde con facilidad con la autoridad. Lo que cambió durante un bloque sirve para construir la salida determinista; no es donde vive el estado. Invertirlo produce un sistema en el que la respuesta depende de cómo preguntaste.

<h2 id="why-the-result-is-reproducible">
  Por qué el resultado es reproducible
</h2>

Aquí el determinismo se impone, no se espera. Todo nodo honesto que ejecuta el mismo bloque contra el mismo estado previo produce el mismo resultado byte a byte, porque nada en la ruta de ejecución puede leer algo que difiera entre nodos:

* **Aritmética de punto fijo en todo el recorrido.** Los cálculos de compensación se hacen en punto fijo entero con semántica de redondeo explícita: redondeo hacia arriba en los exponentes negativos del margen, truncamiento (floor) y techo (ceiling) en las comisiones. No hay punto flotante en la ruta de compensación, porque una diferencia de redondeo entre dos máquinas es una bifurcación.
* **Sin reloj de pared.** El orden dentro de un bloque usa la posición canónica confirmada por el consenso y la marca de tiempo del bloque, nunca la hora local.
* **Sin aleatoriedad en tiempo de ejecución.** Todo lo que requiere aleatoriedad la deriva de forma determinista del estado de la cadena.
* **Iteración determinista.** Toda colección cuyo orden de iteración sea observable en la salida está ordenada, no aleatorizada por hash.

Una consecuencia que conviene nombrar: como el “tiempo” dentro de un bloque es la posición intrabloque confirmada, no existe ninguna ventaja de colocation (proximidad de servidores) por debajo del milisegundo *dentro* de un bloque. Combinado con el calendario de prioridad, que ejecuta las cancelaciones antes que las colocaciones agresivas, esto es una defensa estructural frente a que una orden llegada en el mismo bloque le arrebate una cotización que está en el libro.

<h2 id="risk-formulas-are-pure">
  Las fórmulas de riesgo son puras
</h2>

Las fórmulas que deciden los requisitos de margen, los precios de liquidación, la selección para el desapalancamiento, las comisiones y los límites de interés abierto están implementadas como **funciones puras y sin estado**. Toman valores y devuelven valores; no leen ni modifican el estado del ledger.

Los cambios de estado los dirige exclusivamente la [cámara de compensación](/es/protocol/architecture/clearinghouse), que llama a esas funciones y aplica los resultados. Los módulos que guardan estado (cuentas, posiciones, libros de órdenes) almacenan datos y exponen mutadores, pero no dirigen ellos mismos el flujo de negocio.

Es un límite deliberado. Significa que un cálculo de margen se puede comprobar de forma aislada contra una tabla de entradas y salidas, y significa que hay exactamente una ruta de código por la que puede cambiar el saldo de alguien.

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

La ejecución produce escrituras de estado y eventos, cada uno ligado a la transacción que lo causó, más un canal para los efectos de nivel de sistema que no pertenecen a ninguna transacción de usuario concreta: financiación, movimientos del seguro, contadores de bloque. Esos se convierten en las salidas de transacción que la [capa de estado](/es/protocol/architecture/state/model) confirma y el [indexador](/es/protocol/architecture/indexer) sirve.

Nada de lo que ocurre dentro del kernel es invisible aguas abajo. Si cambió el estado, está en la salida de alguien o en el canal del sistema.

<h2 id="where-to-go-next">
  Qué leer a continuación
</h2>

<CardGroup cols={2}>
  <Card title="Casación" href="/es/protocol/architecture/matching">
    El libro de órdenes, la prioridad precio-tiempo y cómo se resuelven la vigencia de la orden y la prevención de autoejecución.
  </Card>

  <Card title="Cámara de compensación" href="/es/protocol/architecture/clearinghouse">
    La única ruta por la que cambian los saldos, las posiciones y el margen.
  </Card>

  <Card title="Modelo de estado" href="/es/protocol/architecture/state/model">
    En qué se convierte la salida del kernel una vez confirmada.
  </Card>

  <Card title="IntentionBFT" href="/es/protocol/architecture/intention-bft">
    De dónde vinieron el orden y los precios.
  </Card>
</CardGroup>
