> ## 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: 가장 빠른 Solana 트랜잭션 착지

> Helius Sender의 가장 빠른 착지 등급을 통해 Solana 트랜잭션과 번들을 전송하세요. 제출할 때마다 모든 경로(Helius, Jito, Harmonic, Rakurai 등)에 액세스하며 최소 0.001 SOL의 팁이 필요합니다.

## 개요

<Note>
  **가격 업데이트:** Sender Max는 이제 **0.001 SOL**의 최소 팁을 사용합니다. 이로 인해 블록의 우선 팁 버퍼에 들어가며, 더 많은 팁을 주면 먼저 착지할 수 있습니다.
</Note>

Sender Max는 경쟁자보다 먼저 착지해야 하는 제출을 위해 설계된 최고의 [Helius Sender](/docs/ko/sending-transactions/sender) 등급입니다. 모든 이용 가능한 고속 경로로 제출이 라우팅되며, 높은 팁을 우대하는 우선 팁 버퍼에 들어갑니다.

Sender Max는 **단일 트랜잭션과 번들** 모두를 처리합니다. 둘 다 모든 경로(Helius, Jito, Harmonic, Rakurai 등)를 사용하며, 유일한 차이점은 페이로드입니다: `sendTransaction`로 하나의 트랜잭션을 제출하거나 `sendBundle`로 최대 네 개까지 제출할 수 있습니다.

이 등급은 **0.001 SOL**의 최소 팁이 필요합니다. 단일 경로에서 비용 최적화된 전송을 하려면 [SWQOS 전용](/docs/ko/sending-transactions/sender-swqos-only) 등급을 사용하세요.

<CardGroup cols={2}>
  <Card title="가장 빠른 착지" icon="trophy">
    최상의 착지 가능성을 위해 모든 고속 경로로 라우팅됩니다
  </Card>

  <Card title="우선 팁 버퍼" icon="arrow-up-wide-short">
    제출물은 가장 높은 팁을 우선하는 우선 팁 버퍼에 들어갑니다 — 더 많은 팁을 주면 먼저 착지합니다
  </Card>

  <Card title="크레딧 없음" icon="coins">
    API 크레딧을 소모하지 않고 모든 플랜에서 가능합니다
  </Card>

  <Card title="0.001 SOL 최소 팁" icon="dollar-sign">
    우선 팁 버퍼에 들어가고 모든 라우팅 경로를 사용하기 위해 필요한 최소 팁
  </Card>
</CardGroup>

## 작동 방식

**0.001 SOL** 이상의 팁을 주면, 단일 트랜잭션 또는 번들은 모든 이용 가능한 고속 경로로 라우팅되며 우선 팁 버퍼에 들어갑니다. 버퍼는 가장 높은 팁을 우대하므로 최소 금액 이상으로 팁을 올리면 처음 착지할 가능성이 높아집니다.

<Note>
  0.001 SOL 이하의 팁은 우선 팁 버퍼에 들어가지 않으며, 더 적은 경로로 최선을 다해 전송됩니다. 예측 가능한 저지연 전송을 위해서는 [SWQOS 전용](/docs/ko/sending-transactions/sender-swqos-only) 등급(0.000005 SOL)을 사용하세요.
</Note>

## Max를 사용할 때

<CardGroup cols={2}>
  <Card title="적합한 경우" icon="circle-check">
    경쟁이 치열한 계정, 경쟁적인 토큰 출시, 청산 등 높은 팁이 가치 있는 트랜잭션
  </Card>

  <Card title="SWQOS 전용 고려" icon="dollar-sign" href="/docs/ko/sending-transactions/sender-swqos-only">
    비용 민감 또는 대량 흐름에서 단일 빠른 경로가 안정적으로 착지하는 경우
  </Card>
</CardGroup>

## 요구 사항

모든 Sender Max 제출에는 다음이 포함되어야 합니다:

* **팁**: 최소 **0.001 SOL**을 지정된 [팁 계정](/docs/ko/sending-transactions/sender#요구사항)으로 전송하는 SOL 전송. 번들에서는 최소 하나의 트랜잭션이 팁을 포함해야 합니다.
* **우선 요금**: 최소 **5,000 lamports**의 우선 요금이 포함된 컴퓨트 유닛 가격 명령어. [우선 요금](#우선-요금) 참조.

프리플라이트 건너뛰기(`skipPreflight: true`)는 선택 사항이지만 권장됩니다 — 프리플라이트 검사는 지연 시간을 증가시킵니다.

<Warning>
  팁이나 우선 요금이 없는 트랜잭션은 거부됩니다. 번들 전용 규칙은 [번들](#번들)을 참조하세요.
</Warning>

## 우선 요금

모든 트랜잭션은 최소 **5,000 lamports**의 우선 요금을 포함해야 하며, 보다 신뢰할 수 있는 착지를 위해 최소 **10,000 lamports**를 권장합니다. 팁은 우선 팁 버퍼에 트랜잭션을 입력하며, 우선 요금은 검증자의 스케줄러에서 우선순위를 높입니다 — 이 두 가지를 함께 사용하여 착지 가능성을 극대화합니다.

우선 요금은 컴퓨트 유닛 가격 명령어로 설정하세요. 전체 우선 요금은 컴퓨트 유닛 가격(마이크로-lamports)과 컴퓨트 유닛 한도를 곱한 값입니다:

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

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

현재 네트워크 조건에 따른 실시간 요금 추천을 위해 [Helius Priority Fee API](/docs/ko/priority-fee-api)를 사용하세요.

## 엔드포인트

프론트엔드에는 글로벌 HTTPS 엔드포인트를 사용하고, 백엔드에는 서버와 가장 가까운 지역 HTTP 엔드포인트를 사용하세요.

**프론트엔드 / 브라우저 (글로벌 HTTPS):**

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

**백엔드 / 서버 (지역 HTTP):**

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

연결 예열 및 세부 정보를 위해 [Sender 엔드포인트 참조](/docs/ko/sending-transactions/sender#엔드포인트)를 참조하세요.

<Tip>
  샌드위치 공격과 연결된 검증자를 피하고 싶으신가요? 엔드포인트 URL에 [`mev-protect=true`](/docs/ko/sending-transactions/mev-protect)를 추가하세요 — `sendTransaction`와 `sendBundle` 모두 사용 가능합니다: `https://sender.helius-rpc.com/fast?mev-protect=true`.
</Tip>

## 코드 예제

<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>
  경쟁적인 트랜잭션의 경우 0.001 SOL 최소치는 경쟁력이 없을 가능성이 큽니다. 착지하려는 트랜잭션의 가치에 가까운 가격으로 팁을 설정하세요 — 성공적인 착지가 당신에게 가치가 클수록 더 높은 팁을 주어야 합니다. 최소값은 목표가 아니라 바닥입니다.
</Tip>

## 번들

번들은 Sender Max가 허용하는 또 다른 페이로드입니다. 최대 4개의 완전히 서명된 트랜잭션을 제출하고 그들은 원자적으로 순서대로 실행되며, 단일 트랜잭션과 같은 **우선 팁 버퍼**에 입력됩니다 — 버퍼는 가장 높은 팁을 주는 번들을 우선시하여 가장 빠른 착지를 보장합니다.

<Warning>
  **0.001 SOL Sender 팁만 제공하세요.** Sender Max는 번들을 모든 고속 경로로 라우팅하며 경로 팁을 대신 추가합니다 — 별도의 Jito 팁을 추가하거나 Jito 팁 계정을 사용하지 않으며 `jito-region` 헤더를 설정하지 않습니다. 이는 [기본 번들](/docs/ko/sending-transactions/send-bundle)에만 적용됩니다.
</Warning>

### 요구 사항

* **최대 4개의 트랜잭션**, 완전히 서명됨. 순차적으로 원자적으로 실행되며, 하나라도 실패하면 전체 번들이 거부됩니다.
* **팁**: 최소 하나의 트랜잭션이 최소 **0.001 SOL**을 지정된 [Sender 팁 계정](/docs/ko/sending-transactions/sender#요구사항)으로 전송해야 합니다. 이는 단일 트랜잭션에 사용되는 Sender 팁과 동일합니다 — Helius가 모든 경로 팁(Jito 포함)을 대신 추가하므로 별도의 Jito 팁을 추가하지 않습니다.
* **우선 요금**: 각 트랜잭션은 최소 **5,000 lamports**의 [우선 요금](#우선-요금)을 포함해야 합니다.

### 제출

`method: "sendBundle"`와 함께 Sender 엔드포인트로 보내세요. 프론트엔드에는 글로벌 HTTPS 엔드포인트를 사용하고 백엔드에는 [지역 엔드포인트](#엔드포인트)를 사용하세요 — 모든 Sender 지역이 지원됩니다.

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

### 착지 추적

단일 트랜잭션을 추적하는 것과 동일한 방식으로 번들을 추적하세요 — 각 트랜잭션의 서명이 착지될 때까지 관찰하세요. 번들은 원자적이므로 하나의 트랜잭션이 확인되면 전체 번들이 착지된 것입니다. `getBundleStatuses`나 번들 ID를 사용하지 않습니다.

스택에 맞는 방법을 사용하세요:

* 서명이 확인될 때까지 [`getSignatureStatuses`](/docs/ko/api-reference/rpc/http/getsignaturestatuses)를 폴링합니다.
* [LaserStream](/docs/ko/laserstream) 또는 [LaserStream WebSocket](/docs/ko/rpc/websocket)을 구독하고 착륙한 서명을 관찰합니다.
* [Shred Delivery](/docs/ko/shred-delivery/raw-shreds) 또는 착륙한 서명을 노출하는 다른 Helius 스트리밍 제품을 사용하세요.

## 모범 사례

* **엔드포인트 선택**: CORS 문제를 피하기 위해 프론트엔드 앱에서는 `https://sender.helius-rpc.com/fast`를 사용하세요. 백엔드 앱에서는 서버와 가장 가까운 지역 HTTP 엔드포인트를 사용하세요.
* **동적 팁 설정**: 경쟁이 치열한 트랜잭션에 대해 0.001 SOL 이상의 팁을 올려 팁 버퍼에서의 우선순위를 높이세요.
* **연결 예열**: 5초 이상의 유휴 시간 동안 [`/ping` 엔드포인트](/docs/ko/sending-transactions/sender#연결-예열)를 사용하세요.
* **우선 요금**: 실시간 추천을 위해 [Helius Priority Fee API](/docs/ko/priority-fee-api)를 사용하세요.
* **재시도**: `maxRetries: 0`를 설정하고 자체 재시도 로직을 구현하세요.

## 관련

<CardGroup cols={2}>
  <Card title="Sender 개요" icon="rocket" href="/docs/ko/sending-transactions/sender">
    공유 개념: 엔드포인트, 연결 예열, 속도 제한, 사용자 지정 TPS.
  </Card>

  <Card title="SWQOS 전용 등급" icon="dollar-sign" href="/docs/ko/sending-transactions/sender-swqos-only">
    단일 경로에서 비용 최적화된 저지연 전송(0.000005 SOL 최소 팁).
  </Card>

  <Card title="MEV 보호" icon="shield-halved" href="/docs/ko/sending-transactions/mev-protect">
    샌드위치 공격과 통계적으로 연결된 검증자를 우회합니다.
  </Card>
</CardGroup>
