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

# Sender Max: Pemrosesan Transaksi Solana Tercepat

> Kirim transaksi dan bundel Solana melalui tingkat Helius Sender dengan pemrosesan tercepat — menggunakan setiap jalur perutean pada setiap pengiriman, dengan tip minimum 0.001 SOL.

## Ringkasan

<Note>
  **Pembaruan harga:** Sender Max kini menggunakan tip minimum **0.001 SOL**. Tip ini
  memasukkan pengiriman Anda ke buffer tip prioritas untuk posisi teratas dalam blok — berikan tip lebih besar agar masuk lebih dahulu.
</Note>

Sender Max adalah tingkat [Helius Sender](/docs/id/sending-transactions/sender) dengan performa tertinggi, yang dibuat untuk pengiriman yang harus masuk lebih dahulu daripada pesaing. Tingkat ini merutekan pengiriman Anda melalui setiap jalur berkecepatan tinggi yang tersedia dan memasukkannya ke buffer tip prioritas yang mengutamakan tip tertinggi.

Sender Max menangani **transaksi tunggal dan bundel**. Keduanya menggunakan semua jalur (Helius, Jito, Harmonic, Rakurai, dan sebagainya) — satu-satunya perbedaan adalah payload-nya: kirim satu transaksi dengan `sendTransaction`, atau hingga empat transaksi dengan `sendBundle`.

Tingkat ini memerlukan tip minimum **0.001 SOL**. Untuk pengiriman yang dioptimalkan dari segi biaya melalui satu jalur, gunakan tingkat [khusus SWQOS](/docs/id/sending-transactions/sender-swqos-only).

<CardGroup cols={2}>
  <Card title="Fastest Landing" icon="trophy">
    Dirutekan melalui setiap jalur berkecepatan tinggi untuk memberikan probabilitas
    tertinggi agar berhasil masuk
  </Card>

  <Card title="Priority Tip Buffer" icon="arrow-up-wide-short">
    Pengiriman Anda masuk ke buffer tip prioritas yang mengutamakan pengiriman
    dengan tip tertinggi — berikan tip lebih besar agar masuk lebih dahulu
  </Card>

  <Card title="No Credits" icon="coins">
    Tersedia di semua paket tanpa menggunakan kredit API
  </Card>

  <Card title="0.001 SOL Minimum Tip" icon="dollar-sign">
    Tip minimum yang diperlukan untuk masuk ke buffer tip prioritas dan menggunakan setiap
    jalur perutean
  </Card>
</CardGroup>

## Cara kerjanya

Ketika Anda memberikan tip minimal **0.001 SOL**, pengiriman Anda — baik berupa transaksi tunggal maupun bundel — dirutekan melalui setiap jalur berkecepatan tinggi yang tersedia dan dimasukkan ke buffer tip prioritas. Buffer tersebut mengutamakan tip tertinggi, sehingga menaikkan tip di atas nilai minimum akan meningkatkan peluang Anda untuk masuk lebih dahulu.

<Note>
  Tip di bawah 0.001 SOL tidak masuk ke buffer tip prioritas — tip tersebut dikirim atas dasar upaya terbaik
  melalui lebih sedikit jalur. Untuk pengiriman berlatensi rendah yang dapat diprediksi dengan tip lebih
  rendah, gunakan tingkat [khusus SWQOS](/docs/id/sending-transactions/sender-swqos-only)
  (0.000005 SOL).
</Note>

## Kapan menggunakan Max

<CardGroup cols={2}>
  <Card title="Good fit" icon="circle-check">
    Akun yang sangat diperebutkan, peluncuran token kompetitif, likuidasi, dan setiap
    transaksi yang layak diberi tip lebih tinggi agar masuk lebih dahulu.
  </Card>

  <Card title="Consider SWQOS-only instead" icon="dollar-sign" href="/docs/id/sending-transactions/sender-swqos-only">
    Alur yang sensitif terhadap biaya atau bervolume tinggi, saat satu jalur cepat dapat memproses transaksi secara andal.
  </Card>
</CardGroup>

## Persyaratan

Setiap pengiriman Sender Max harus menyertakan:

* **Tip**: Transfer SOL minimal **0.001 SOL** ke [akun tip](/docs/id/sending-transactions/sender#persyaratan) yang ditentukan. Dalam bundel, setidaknya satu transaksi harus menyertakan tip.
* **Biaya prioritas**: Instruksi harga unit komputasi dengan biaya prioritas minimal **5.000 lamport**. Lihat [Biaya prioritas](#biaya-prioritas).

Melewati prapemeriksaan (`skipPreflight: true`) bersifat opsional, tetapi direkomendasikan — pemeriksaan praproses meningkatkan latensi.

<Warning>
  Transaksi yang tidak menyertakan tip atau biaya prioritas akan ditolak. Untuk
  aturan khusus bundel, lihat [Bundel](#bundel).
</Warning>

## Biaya prioritas

Setiap transaksi harus menyertakan biaya prioritas minimal **5.000 lamport**, dan kami merekomendasikan **setidaknya 10.000 lamport** agar transaksi masuk dengan lebih andal. Tip memasukkan transaksi Anda ke buffer tip prioritas, sedangkan biaya prioritas meningkatkan prioritasnya dalam penjadwal validator — keduanya memaksimalkan peluang transaksi Anda untuk masuk.

Tetapkan biaya prioritas dengan instruksi harga unit komputasi. Total biaya prioritas Anda adalah harga unit komputasi (dalam mikro-lamport) dikalikan dengan batas unit komputasi:

```typescript theme={"system"}
import { ComputeBudgetProgram } from "@solana/web3.js";

ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 200_000 });
```

Gunakan [Helius Priority Fee API](/docs/id/priority-fee-api) untuk mendapatkan rekomendasi biaya secara real-time berdasarkan kondisi jaringan saat ini.

## Endpoint

Gunakan endpoint HTTPS global untuk frontend, atau endpoint HTTP regional yang paling dekat dengan server Anda untuk backend.

**Frontend/browser (HTTPS global):**

```
https://sender.helius-rpc.com/fast
```

**Backend/server (HTTP regional):**

```
http://slc-sender.helius-rpc.com/fast   # Salt Lake City
http://ewr-sender.helius-rpc.com/fast   # Newark
http://lon-sender.helius-rpc.com/fast   # London
http://fra-sender.helius-rpc.com/fast   # Frankfurt
http://ams-sender.helius-rpc.com/fast   # Amsterdam
http://sg-sender.helius-rpc.com/fast    # Singapore
http://tyo-sender.helius-rpc.com/fast   # Tokyo
```

Lihat [referensi endpoint Sender](/docs/id/sending-transactions/sender#endpoint) untuk detail dan pemanasan koneksi.

<Tip>
  Ingin menghindari validator yang terkait dengan serangan sandwich? Tambahkan
  [`mev-protect=true`](/docs/id/sending-transactions/mev-protect) ke URL endpoint —
  fitur ini berfungsi untuk `sendTransaction` maupun `sendBundle`:
  `https://sender.helius-rpc.com/fast?mev-protect=true`.
</Tip>

## Contoh Kode

<Tabs>
  <Tab title="@solana/web3.js">
    ```typescript [expandable] theme={"system"}
    import { 
      Connection, 
      TransactionMessage,
      VersionedTransaction,
      SystemProgram, 
      PublicKey,
      Keypair,
      LAMPORTS_PER_SOL,
      ComputeBudgetProgram
    } from '@solana/web3.js';
    import bs58 from 'bs58';

    const PRIV_B58 = 'Your Private Key';
    const RECIPIENT = 'Recipient Address';
    const HELIUS_API_KEY = 'Your API Key';
    const TIP_ACCOUNTS = [
      "4ACfpUFoaSD9bfPdeu6DBt89gB6ENTeHBXCAi87NhDEE",
      "D2L6yPZ2FmmmTKPgzaMKdhu6EWZcTpLy1Vhx8uvZe7NZ",
      "9bnz4RShgq1hAnLnZbP8kbgBg1kEmcJBYQq3gQbmnSta",
      "5VY91ws6B2hMmBFRsXkoAAdsPHBJwRfBht4DXox3xkwn",
      "2nyhqdwKcJZR2vcqCyrYsaPVdAnFoJjiksCXJ7hfEYgD",
      "2q5pghRs6arqVjRvT5gfgWfWcHWmw1ZuCzphgd5KfWGJ",
      "wyvPkWjVZz1M8fHQnMMCDTQDbkManefNNhweYk5WkcF",
      "3KCKozbAaF75qEU33jtzozcJ29yJuaLJTy2jFdzUY8bT",
      "4vieeGHPYPG2MmyPRcYjdiDmmhN3ww7hsFNap8pVN3Ey",
      "4TQLFNWK8AovT1gFvda5jfw2oJeRMKEmw7aH6MGBJ3or"
    ];

    async function sendWithSenderMax(
      keypair: Keypair,
      recipientAddress: string
    ): Promise<string> {
      const connection = new Connection(
        `https://mainnet.helius-rpc.com/?api-key=${HELIUS_API_KEY}`
      );

      const { value: { blockhash } } = await connection.getLatestBlockhashAndContext('confirmed');

      // Build transaction: priority fee + recipient transfer + 0.001 SOL tip
      const transaction = new VersionedTransaction(
        new TransactionMessage({
          instructions: [
            ComputeBudgetProgram.setComputeUnitLimit({ units: 100_000 }),
            ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 200_000 }),
            SystemProgram.transfer({
              fromPubkey: keypair.publicKey,
              toPubkey: new PublicKey(recipientAddress),
              lamports: 0.001 * LAMPORTS_PER_SOL,
            }),
            SystemProgram.transfer({
              fromPubkey: keypair.publicKey,
              toPubkey: new PublicKey(TIP_ACCOUNTS[Math.floor(Math.random() * TIP_ACCOUNTS.length)]),
              lamports: 0.001 * LAMPORTS_PER_SOL, // Minimum tip to enter the priority tip buffer
            })
          ],
          payerKey: keypair.publicKey,
          recentBlockhash: blockhash,
        }).compileToV0Message()
      );

      transaction.sign([keypair]);

      // Frontend: use the global HTTPS endpoint to avoid CORS issues
      const SENDER_ENDPOINT = 'https://sender.helius-rpc.com/fast';
      // Backend: use the regional HTTP endpoint closest to your servers
      // const SENDER_ENDPOINT = 'http://slc-sender.helius-rpc.com/fast';

      const response = await fetch(SENDER_ENDPOINT, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          jsonrpc: '2.0',
          id: Date.now().toString(),
          method: 'sendTransaction',
          params: [
            Buffer.from(transaction.serialize()).toString('base64'),
            {
              encoding: 'base64',
              skipPreflight: true, // Optional: skip for lower latency
              maxRetries: 0
            }
          ]
        })
      });

      const json = await response.json();
      if (json.error) {
        throw new Error(json.error.message);
      }

      console.log('Transaction sent:', json.result);
      return json.result;
    }

    // Usage
    sendWithSenderMax(Keypair.fromSecretKey(bs58.decode(PRIV_B58)), RECIPIENT);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    curl "https://sender.helius-rpc.com/fast" \
      -X POST \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 1,
        "method": "sendTransaction",
        "params": [
          "BASE64_ENCODED_TRANSACTION",
          {
            "encoding": "base64",
            "skipPreflight": true,
            "maxRetries": 0
          }
        ]
      }'
    ```
  </Tab>
</Tabs>

<Tip>
  Untuk transaksi kompetitif, tip minimum 0.001 SOL kemungkinan tidak akan
  kompetitif. Sesuaikan tip Anda agar lebih mendekati nilai transaksi yang ingin
  Anda masukkan — semakin bernilai keberhasilan transaksi tersebut bagi Anda, semakin tinggi
  tip yang sebaiknya Anda berikan. Nilai minimum adalah batas bawah, bukan target.
</Tip>

## Bundel

Bundel hanyalah jenis payload lain yang diterima Sender Max. Kirim hingga 4 transaksi yang telah ditandatangani sepenuhnya dan transaksi tersebut akan dieksekusi secara atomik (semua atau tidak sama sekali) sesuai urutan, serta dimasukkan ke **buffer tip prioritas yang sama** seperti transaksi tunggal — buffer tersebut mengutamakan bundel dengan tip tertinggi agar masuk paling cepat.

<Warning>
  **Berikan hanya tip Sender sebesar 0.001 SOL.** Sender Max merutekan bundel Anda
  melalui setiap jalur berkecepatan tinggi dan menambahkan tip jalur yang diperlukan untuk Anda — Anda
  tidak perlu menambahkan tip Jito terpisah, menggunakan akun tip Jito, atau mengatur header `jito-region`.
  Hal tersebut hanya berlaku untuk [bundel
  dasar](/docs/id/sending-transactions/send-bundle).
</Warning>

### Persyaratan

* **Hingga 4 transaksi**, yang telah ditandatangani sepenuhnya. Transaksi tersebut dieksekusi secara berurutan dan atomik — jika ada yang gagal, seluruh bundel akan ditolak.
* **Tip**: setidaknya satu transaksi harus mentransfer minimal **0.001 SOL** ke [akun tip Sender](/docs/id/sending-transactions/sender#persyaratan) yang ditentukan. Ini adalah tip Sender yang sama dengan yang digunakan untuk transaksi tunggal — Helius menambahkan tip jalur yang diperlukan (termasuk Jito) untuk Anda, sehingga Anda tidak perlu menambahkan tip Jito terpisah.
* **Biaya prioritas**: setiap transaksi harus menyertakan [biaya prioritas](#biaya-prioritas) minimal **5.000 lamport**.

### Mengirim

Kirim ke endpoint Sender dengan `method: "sendBundle"`. Gunakan endpoint HTTPS global untuk frontend, atau [endpoint regional](#endpoint) mana pun untuk backend — semua wilayah Sender didukung.

<Tabs>
  <Tab title="@solana/web3.js">
    ```typescript [expandable] theme={"system"}
    import { 
      Connection, 
      TransactionMessage,
      VersionedTransaction,
      SystemProgram, 
      PublicKey,
      Keypair,
      LAMPORTS_PER_SOL,
      ComputeBudgetProgram
    } from '@solana/web3.js';
    import bs58 from 'bs58';

    const PRIV_B58 = 'Your Private Key';
    const HELIUS_API_KEY = 'Your API Key';
    const TIP_ACCOUNTS = [
      "4ACfpUFoaSD9bfPdeu6DBt89gB6ENTeHBXCAi87NhDEE",
      "D2L6yPZ2FmmmTKPgzaMKdhu6EWZcTpLy1Vhx8uvZe7NZ",
      "9bnz4RShgq1hAnLnZbP8kbgBg1kEmcJBYQq3gQbmnSta",
      "5VY91ws6B2hMmBFRsXkoAAdsPHBJwRfBht4DXox3xkwn",
      "2nyhqdwKcJZR2vcqCyrYsaPVdAnFoJjiksCXJ7hfEYgD",
      "2q5pghRs6arqVjRvT5gfgWfWcHWmw1ZuCzphgd5KfWGJ",
      "wyvPkWjVZz1M8fHQnMMCDTQDbkManefNNhweYk5WkcF",
      "3KCKozbAaF75qEU33jtzozcJ29yJuaLJTy2jFdzUY8bT",
      "4vieeGHPYPG2MmyPRcYjdiDmmhN3ww7hsFNap8pVN3Ey",
      "4TQLFNWK8AovT1gFvda5jfw2oJeRMKEmw7aH6MGBJ3or"
    ];

    async function sendBundleWithSenderMax(keypair: Keypair): Promise<string[]> {
      const connection = new Connection(
        `https://mainnet.helius-rpc.com/?api-key=${HELIUS_API_KEY}`
      );

      const { value: { blockhash } } = await connection.getLatestBlockhashAndContext('confirmed');

      const tipAccount = new PublicKey(TIP_ACCOUNTS[Math.floor(Math.random() * TIP_ACCOUNTS.length)]);

      // Transaction 1: your instructions + priority fee + the 0.001 SOL Sender tip
      const tx1 = new VersionedTransaction(
        new TransactionMessage({
          instructions: [
            ComputeBudgetProgram.setComputeUnitLimit({ units: 100_000 }),
            ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 200_000 }),
            // ... your instructions here ...
            SystemProgram.transfer({
              fromPubkey: keypair.publicKey,
              toPubkey: tipAccount,
              lamports: 0.001 * LAMPORTS_PER_SOL, // Sender tip — only one tx in the bundle needs it
            })
          ],
          payerKey: keypair.publicKey,
          recentBlockhash: blockhash,
        }).compileToV0Message()
      );
      tx1.sign([keypair]);

      // Transaction 2: more instructions — executes after tx1, atomically
      const tx2 = new VersionedTransaction(
        new TransactionMessage({
          instructions: [
            ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 200_000 }),
            // ... your instructions here ...
          ],
          payerKey: keypair.publicKey,
          recentBlockhash: blockhash,
        }).compileToV0Message()
      );
      tx2.sign([keypair]);

      // Serialize each fully-signed transaction (up to 4) to base64
      const bundle = [tx1, tx2].map((tx) => Buffer.from(tx.serialize()).toString('base64'));

      const response = await fetch('https://sender.helius-rpc.com/fast', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          jsonrpc: '2.0',
          id: Date.now().toString(),
          method: 'sendBundle',
          params: [bundle, { encoding: 'base64' }]
        })
      });

      const json = await response.json();
      if (json.error) {
        throw new Error(json.error.message);
      }

      // Track landing by each transaction's signature (see below)
      const signatures = [tx1, tx2].map((tx) => bs58.encode(tx.signatures[0]));
      console.log('Bundle submitted:', signatures);
      return signatures;
    }

    // Usage
    sendBundleWithSenderMax(Keypair.fromSecretKey(bs58.decode(PRIV_B58)));
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    curl "https://sender.helius-rpc.com/fast" \
      -X POST \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 1,
        "method": "sendBundle",
        "params": [
          [
            "BASE64_SIGNED_TX_1",
            "BASE64_SIGNED_TX_2"
          ],
          { "encoding": "base64" }
        ]
      }'
    ```
  </Tab>
</Tabs>

### Melacak transaksi yang masuk

Lacak bundel dengan cara yang sama seperti Anda melacak transaksi tunggal — dengan memantau setiap tanda tangan transaksi hingga masuk. Karena bundel bersifat atomik, konfirmasi atas salah satu transaksi berarti seluruh bundel telah masuk. Anda **tidak** menggunakan `getBundleStatuses` atau ID bundel.

Gunakan metode yang paling sesuai dengan stack Anda:

* Lakukan polling pada [`getSignatureStatuses`](/docs/id/api-reference/rpc/http/getsignaturestatuses) hingga tanda tangan dikonfirmasi.
* Berlangganan [LaserStream](/docs/id/laserstream) atau [LaserStream WebSocket](/docs/id/rpc/websocket), lalu pantau tanda tangan yang telah masuk.
* Gunakan [Shred Delivery](/docs/id/shred-delivery/raw-shreds) atau produk streaming Helius lain yang menampilkan tanda tangan yang telah masuk.

## Praktik Terbaik

* **Pemilihan endpoint**: Gunakan `https://sender.helius-rpc.com/fast` untuk aplikasi frontend guna menghindari masalah CORS. Untuk aplikasi backend, gunakan endpoint HTTP regional yang paling dekat dengan server Anda.
* **Tip dinamis**: Naikkan tip Anda di atas 0.001 SOL untuk transaksi yang sangat diperebutkan guna meningkatkan prioritas Anda dalam buffer tip.
* **Pemanasan koneksi**: Gunakan [endpoint `/ping`](/docs/id/sending-transactions/sender#pemanasan-koneksi) selama periode tidak aktif yang lebih lama dari 5 detik.
* **Biaya prioritas**: Gunakan [Helius Priority Fee API](/docs/id/priority-fee-api) untuk mendapatkan rekomendasi secara real-time.
* **Percobaan ulang**: Tetapkan `maxRetries: 0` dan terapkan logika percobaan ulang Anda sendiri.

## Terkait

<CardGroup cols={2}>
  <Card title="Sender Overview" icon="rocket" href="/docs/id/sending-transactions/sender">
    Konsep bersama: endpoint, pemanasan koneksi, batas laju, dan TPS khusus.
  </Card>

  <Card title="SWQOS-Only Tier" icon="dollar-sign" href="/docs/id/sending-transactions/sender-swqos-only">
    Pengiriman berlatensi rendah yang dioptimalkan dari segi biaya melalui satu jalur (tip minimum 0.000005 SOL).
  </Card>

  <Card title="MEV Protect" icon="shield-halved" href="/docs/id/sending-transactions/mev-protect">
    Rutekan transaksi agar menghindari validator yang secara statistik terkait dengan serangan sandwich.
  </Card>
</CardGroup>
