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

# Opera con Preconfirmations

> Reacciona a las transacciones de Solana antes de que se incorporen: suscríbete a los filtros de preconfSubscribe, decodifica la carga útil binaria y actúa con Sender Max.

[Preconfirmations](/docs/es/pre-confirmations/overview) transmite las transacciones antes de que se fragmenten en shreds: Helius las preconfirma en el instante en que el líder las ejecuta, junto con su estado de ejecución. Esta guía crea un listener que monitorea una cuenta objetivo, decodifica cada transacción y reacciona con [Sender Max](/docs/es/sending-transactions/sender-max).

<Tip>
  Preconfirmations requiere un [plan Professional o superior](/docs/es/billing/plans) y cuesta 10 créditos por mensaje.
</Tip>

## Limita el alcance del stream antes de conectarte

Un `preconfSubscribe` sin filtrar entrega cada transacción a un costo de 10 créditos, así que filtra en el servidor y paga solo por las transacciones con las que operes.

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "preconfSubscribe",
  "params": [
    {
      "failed": false,
      "regionInclude": ["ewr"],
      "accountInclude": ["TARGET_WALLET_OR_PROGRAM"]
    }
  ]
}
```

Tres filtros cubren la mayoría de los listeners de operaciones:

* `failed: false` descarta las transacciones que ya se sabe que se revirtieron y por las que no tienes motivo para competir.
* `regionInclude` fija el stream a la [región](/docs/es/pre-confirmations/preconf-subscribe#filtrado-por-ubicación) más cercana a tu infraestructura para que un salto entre regiones no consuma tu ventaja inicial.
* `accountInclude` coincide con cualquier transacción que haga referencia a tu objetivo: una billetera, un pool de AMM, un programa, etc. Helius resuelve las tablas de búsqueda de direcciones en el servidor, por lo que el filtro coincide incluso cuando la cuenta se carga mediante una ALT.

## Conéctate, suscríbete y decodifica

`preconfSubscribe` se proporciona desde el endpoint de Gatekeeper (`wss://beta.helius-rpc.com`), y las notificaciones llegan como frames binarios, no como JSON.

Cada frame consta de un prefijo fijo de 18 bytes seguido de la transacción serializada con bincode:

```javascript listener.js theme={"system"}
const WebSocket = require('ws');
const { VersionedTransaction } = require('@solana/web3.js');

const ws = new WebSocket('wss://beta.helius-rpc.com/?api-key=YOUR_API_KEY');

ws.on('open', () => {
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'preconfSubscribe',
    params: [{
      failed: false,
      regionInclude: ['ewr'],
      accountInclude: ['TARGET_WALLET_OR_PROGRAM']
    }]
  }));
  setInterval(() => ws.ping(), 30_000); // keep the connection alive
});

ws.on('message', (data, isBinary) => {
  if (!isBinary) {
    const msg = JSON.parse(data.toString());
    if (msg.id === 1) console.log('Subscribed, ID:', msg.result);
    return;
  }

  // version (u8) | slot (u64 LE) | tx_index (u64 LE) | status (u8) | bincode(VersionedTransaction)
  const buf = Buffer.from(data);
  if (buf.readUInt8(0) !== 1) return; // unknown schema version; update your decoder
  const slot = buf.readBigUInt64LE(1);
  const status = buf.readUInt8(17); // 0 = failed, 1 = success, 2 = unknown
  const tx = VersionedTransaction.deserialize(buf.subarray(18));

  onScheduledTransaction({ slot, status, tx });
});

ws.on('error', console.error);
ws.on('close', () => process.exit(1)); // let your supervisor restart and resubscribe
```

Primero, comprueba el byte de versión. Si Helius actualiza el formato de la carga útil, la versión aumenta. Crear una rama según este valor mantiene tu decodificador en funcionamiento. La transacción deserializada te proporciona las instrucciones, las cuentas y la firma.

## Actúa con Sender Max

Una preconfirmación solo resulta útil si tu respuesta se incorpora primero.

Envía tu reacción mediante [Sender Max](/docs/es/sending-transactions/sender-max): la propina de 0.001 SOL entra en el búfer de propinas prioritarias y se enruta a través de todas las vías de alta velocidad:

```javascript theme={"system"}
async function onScheduledTransaction({ slot, status, tx }) {
  if (!strategy.shouldReact(tx)) return;

  // strategy is your own code: it decides whether to react and returns a
  // signed, base64-encoded transaction that includes the tip and priority fee
  const reaction = await strategy.buildTransaction(tx);
  await fetch('http://ewr-sender.helius-rpc.com/fast', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: Date.now().toString(),
      method: 'sendTransaction',
      params: [reaction, { encoding: 'base64', skipPreflight: true, maxRetries: 0 }]
    })
  });
}
```

Mantén breve este controlador. Decide y envía; traslada el registro, la contabilidad y la conciliación fuera de la ruta de recepción. Consulta [Logra que tus operaciones se incorporen con Sender](/docs/es/sending-transactions/guides/land-trades-with-sender) para ver el ciclo de envío completo, incluido el calentamiento de conexiones y la estimación de comisiones.

## Confirma la incorporación y prevé interrupciones

Una preconfirmación es un vistazo anticipado. La transacción aún no se ha incorporado y todavía puede fallar o descartarse, por lo que se aplican dos reglas:

* Confirma mediante comprobaciones de compromiso estándar (`getSignatureStatuses` o un stream con compromiso `processed`) antes de considerar definitiva la transacción observada o tu reacción.
* Prevé interrupciones. La cobertura aumenta según la proporción de stake que se reenvía a Helius, por lo que algunos slots no generan mensajes. Este es un [comportamiento esperado](/docs/es/pre-confirmations/overview#cobertura), no una conexión inactiva; el ping de keepalive permite distinguirlos. Vuelve a suscribirte cuando se cierre la conexión.

## Guías relacionadas

<CardGroup cols={2}>
  <Card title="preconfSubscribe API reference" icon="code" href="/docs/es/pre-confirmations/preconf-subscribe">
    Semántica completa de los filtros, códigos de región y estructura de la carga útil binaria
  </Card>

  <Card title="Trade on Preprocessed Transactions" icon="bolt" href="/docs/es/preprocessed-transactions/guides/trade-on-preprocessed">
    Cobertura previa a la ejecución a 0.1 créditos por mensaje, en todos los planes de pago
  </Card>
</CardGroup>
