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

# Berdagang dengan Preconfirmations

> Bereaksi terhadap transaksi Solana sebelum transaksi tersebut masuk: berlangganan filter preconfSubscribe, dekode payload biner, dan bertindak dengan Sender Max.

[Preconfirmations](/docs/id/pre-confirmations/overview) mengalirkan transaksi sebelum transaksi tersebut dipecah menjadi shred — Helius mengirimkan preconfirmation segera setelah leader mengeksekusinya, beserta status eksekusinya. Panduan ini membuat listener yang memantau akun target, mendekode setiap transaksi, dan bereaksi menggunakan [Sender Max](/docs/id/sending-transactions/sender-max).

<Tip>
  Preconfirmations memerlukan [paket Professional atau yang lebih tinggi](/docs/id/billing/plans) dan dikenai biaya 10 kredit per pesan.
</Tip>

## Batasi cakupan aliran sebelum Anda terhubung

`preconfSubscribe` tanpa filter mengirimkan setiap transaksi dengan biaya masing-masing 10 kredit. Karena itu, gunakan filter di sisi server dan bayar hanya untuk transaksi yang akan Anda tindak lanjuti.

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

Tiga filter mencakup sebagian besar listener perdagangan:

* `failed: false` menghapus transaksi yang sudah diketahui telah dibatalkan, sehingga Anda tidak perlu berlomba memprosesnya.
* `regionInclude` menetapkan aliran ke [wilayah](/docs/id/pre-confirmations/preconf-subscribe#pemfilteran-lokasi) yang paling dekat dengan infrastruktur Anda agar perpindahan lintas wilayah tidak menghabiskan keunggulan waktu Anda.
* `accountInclude` mencocokkan transaksi apa pun yang mereferensikan target Anda: dompet, pool AMM, program, dan sebagainya. Helius me-resolve address lookup table di sisi server, sehingga filter tetap cocok meskipun akun dimuat melalui ALT.

## Hubungkan, berlangganan, dan dekode

`preconfSubscribe` disediakan melalui endpoint Gatekeeper (`wss://beta.helius-rpc.com`), dan notifikasi diterima sebagai frame biner, bukan JSON.

Setiap frame terdiri dari prefiks tetap sepanjang 18 byte yang diikuti transaksi yang diserialisasi dengan 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
```

Periksa byte versi terlebih dahulu. Jika Helius memperbarui format payload, nomor versi akan bertambah. Membuat percabangan berdasarkan versi tersebut akan menjaga dekoder Anda tetap berfungsi. Transaksi yang telah dideserialisasi menyediakan instruksi, akun, dan tanda tangan.

## Bertindak dengan Sender Max

Preconfirmation hanya bermanfaat jika respons Anda masuk lebih dahulu.

Kirim reaksi Anda melalui [Sender Max](/docs/id/sending-transactions/sender-max): tip sebesar 0,001 SOL masuk ke buffer tip prioritas dan dirutekan melalui setiap jalur berkecepatan tinggi:

```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 }]
    })
  });
}
```

Jaga agar handler ini tetap ringkas. Ambil keputusan dan kirim, lalu pindahkan pencatatan log, akuntansi, dan rekonsiliasi dari jalur penerimaan. Lihat [Pastikan Perdagangan Masuk dengan Sender](/docs/id/sending-transactions/guides/land-trades-with-sender) untuk loop pengiriman lengkap, termasuk pemanasan koneksi dan estimasi biaya.

## Konfirmasikan transaksi telah masuk dan antisipasi celah

Preconfirmation adalah informasi awal. Transaksi belum masuk dan masih dapat gagal atau dibatalkan, sehingga ada dua aturan yang berlaku:

* Konfirmasikan melalui pemeriksaan commitment standar (`getSignatureStatuses`, atau aliran dengan commitment `processed`) sebelum menganggap transaksi yang diamati atau reaksi Anda sebagai final.
* Antisipasi celah. Cakupan meningkat sesuai proporsi stake yang diteruskan ke Helius, sehingga beberapa slot tidak menghasilkan pesan. Ini adalah [perilaku yang diperkirakan](/docs/id/pre-confirmations/overview#cakupan), bukan koneksi yang terputus. Ping keepalive membantu membedakan keduanya. Berlangganan kembali saat koneksi ditutup.

## Panduan terkait

<CardGroup cols={2}>
  <Card title="preconfSubscribe API reference" icon="code" href="/docs/id/pre-confirmations/preconf-subscribe">
    Semantik filter lengkap, kode wilayah, dan tata letak payload biner
  </Card>

  <Card title="Trade on Preprocessed Transactions" icon="bolt" href="/docs/id/preprocessed-transactions/guides/trade-on-preprocessed">
    Cakupan praeksekusi dengan biaya 0,1 kredit per pesan, tersedia di semua paket berbayar
  </Card>
</CardGroup>
