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

> Отправляйте транзакции и бандлы Solana через самый быстрый уровень Helius Sender — при каждой отправке используются все маршруты, а минимальные чаевые составляют 0.001 SOL.

## Обзор

<Note>
  **Обновление цен:** теперь для Sender Max требуются минимальные чаевые в размере **0.001 SOL**. Это
  добавляет вашу отправку в буфер приоритетных чаевых для включения в начало блока — увеличьте чаевые, чтобы попасть в блок раньше.
</Note>

Sender Max — это самый производительный уровень [Helius Sender](/docs/ru/sending-transactions/sender), предназначенный для отправок, которые должны попасть в блок раньше конкурентов. Он направляет вашу отправку по всем доступным высокоскоростным маршрутам и добавляет ее в буфер приоритетных чаевых, где предпочтение отдается самым высоким чаевым.

Sender Max поддерживает как **одиночные транзакции, так и бандлы**. В обоих случаях используются все маршруты (Helius, Jito, Harmonic, Rakurai и т. д.). Различается только полезная нагрузка: отправьте одну транзакцию с помощью `sendTransaction` или до четырех с помощью `sendBundle`.

Для этого уровня требуются минимальные чаевые в размере **0.001 SOL**. Если вам нужна экономичная отправка по одному маршруту, используйте уровень [только SWQOS](/docs/ru/sending-transactions/sender-swqos-only).

<CardGroup cols={2}>
  <Card title="Fastest Landing" icon="trophy">
    Отправка по всем высокоскоростным маршрутам обеспечивает максимальную вероятность
    включения в блок
  </Card>

  <Card title="Priority Tip Buffer" icon="arrow-up-wide-short">
    Ваша отправка попадает в буфер приоритетных чаевых, где приоритет получают
    отправки с самыми высокими чаевыми — увеличьте чаевые, чтобы попасть в блок раньше
  </Card>

  <Card title="No Credits" icon="coins">
    Доступно на всех тарифах без расходования кредитов API
  </Card>

  <Card title="0.001 SOL Minimum Tip" icon="dollar-sign">
    Минимальные чаевые, необходимые для попадания в буфер приоритетных чаевых и использования всех
    маршрутов
  </Card>
</CardGroup>

## Как это работает

Если вы указываете чаевые не менее **0.001 SOL**, ваша отправка — одиночная транзакция или бандл — направляется по всем доступным высокоскоростным маршрутам и попадает в буфер приоритетных чаевых. Буфер отдает предпочтение самым высоким чаевым, поэтому увеличение суммы сверх минимума повышает вероятность попасть в блок первым.

<Note>
  Отправки с чаевыми ниже 0.001 SOL не попадают в буфер приоритетных чаевых — они отправляются по меньшему числу маршрутов
  без гарантии результата. Для предсказуемой отправки с низкой задержкой и меньшими
  чаевыми используйте уровень [только SWQOS](/docs/ru/sending-transactions/sender-swqos-only)
  (0.000005 SOL).
</Note>

## Когда использовать Max

<CardGroup cols={2}>
  <Card title="Good fit" icon="circle-check">
    Транзакции с крайне востребованными аккаунтами, конкурентные запуски токенов, ликвидации и любые
    транзакции, для которых первоочередное включение в блок оправдывает более высокие чаевые.
  </Card>

  <Card title="Consider SWQOS-only instead" icon="dollar-sign" href="/docs/ru/sending-transactions/sender-swqos-only">
    Чувствительные к стоимости или высоконагруженные потоки, для которых надежно работает один быстрый маршрут.
  </Card>
</CardGroup>

## Требования

Каждая отправка через Sender Max должна включать:

* **Чаевые**: перевод не менее **0.001 SOL** на указанный [аккаунт для чаевых](/docs/ru/sending-transactions/sender#требования). В бандле чаевые должна содержать хотя бы одна транзакция.
* **Приоритетная комиссия**: инструкция цены вычислительной единицы с приоритетной комиссией не менее **5 000 лампортов**. См. раздел [Приоритетные комиссии](#приоритетные-комиссии).

Пропуск предварительной проверки (`skipPreflight: true`) необязателен, но рекомендуется, поскольку предварительные проверки увеличивают задержку.

<Warning>
  Транзакции без чаевых или приоритетной комиссии будут отклонены. Правила для
  бандлов приведены в разделе [Бандлы](#бандлы).
</Warning>

## Приоритетные комиссии

Каждая транзакция должна включать приоритетную комиссию не менее **5 000 лампортов**. Для более надежного включения в блок мы рекомендуем **не менее 10 000 лампортов**. Чаевые добавляют транзакцию в буфер приоритетных чаевых, а приоритетная комиссия повышает ее приоритет в планировщике валидатора. Вместе они максимально увеличивают вероятность включения транзакции в блок.

Задайте приоритетную комиссию с помощью инструкции цены вычислительной единицы. Общая приоритетная комиссия равна цене вычислительной единицы (в микролампортах), умноженной на лимит вычислительных единиц:

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

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

Используйте [Helius Priority Fee API](/docs/ru/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/ru/sending-transactions/sender#конечные-точки).

<Tip>
  Хотите избегать валидаторов, связанных с сэндвич-атаками? Добавьте
  [`mev-protect=true`](/docs/ru/sending-transactions/mev-protect) в URL конечной точки —
  это работает как для `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>
  **Указывайте только чаевые Sender в размере 0.001 SOL.** Sender Max направляет ваш бандл
  по всем высокоскоростным маршрутам и добавляет чаевые для каждого маршрута от вашего имени — вам
  не нужно добавлять отдельные чаевые Jito, использовать аккаунты чаевых Jito или задавать заголовок `jito-region`.
  Это требуется только для [базовых
  бандлов](/docs/ru/sending-transactions/send-bundle).
</Warning>

### Требования

* **До 4 транзакций**, полностью подписанных. Они выполняются последовательно и атомарно: если какая-либо транзакция завершится ошибкой, весь бандл будет отклонен.
* **Чаевые**: хотя бы одна транзакция должна переводить не менее **0.001 SOL** на указанный [аккаунт чаевых Sender](/docs/ru/sending-transactions/sender#требования). Это те же чаевые Sender, которые используются для одиночных транзакций. Helius добавляет за вас чаевые для всех маршрутов, включая Jito, поэтому отдельные чаевые Jito добавлять не нужно.
* **Приоритетная комиссия**: каждая транзакция должна включать [приоритетную комиссию](#приоритетные-комиссии) не менее **5 000 лампортов**.

### Отправка

Отправьте запрос в конечную точку Sender с помощью `method: "sendBundle"`. Для фронтендов используйте глобальную конечную точку 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` или идентификатор бандла.

Используйте способ, подходящий для вашего стека:

* Опрашивайте [`getSignatureStatuses`](/docs/ru/api-reference/rpc/http/getsignaturestatuses), пока подпись не будет подтверждена.
* Подпишитесь на [LaserStream](/docs/ru/laserstream) или [LaserStream WebSocket](/docs/ru/rpc/websocket) и отслеживайте включенную в блок подпись.
* Используйте [Shred Delivery](/docs/ru/shred-delivery/raw-shreds) или любой другой потоковый продукт Helius, предоставляющий включенные в блок подписи.

## Рекомендации

* **Выбор конечной точки**: используйте `https://sender.helius-rpc.com/fast` для фронтенд-приложений, чтобы избежать проблем с CORS. Для бэкенд-приложений используйте ближайшую к вашим серверам региональную конечную точку HTTP.
* **Динамические чаевые**: для транзакций с высокой конкуренцией увеличьте чаевые сверх 0.001 SOL, чтобы повысить приоритет в буфере чаевых.
* **Прогрев соединения**: используйте [конечную точку `/ping`](/docs/ru/sending-transactions/sender#прогрев-соединения), если период бездействия превышает 5 секунд.
* **Приоритетные комиссии**: используйте [Helius Priority Fee API](/docs/ru/priority-fee-api) для получения рекомендаций в реальном времени.
* **Повторные попытки**: задайте `maxRetries: 0` и реализуйте собственную логику повторных попыток.

## Связанные материалы

<CardGroup cols={2}>
  <Card title="Sender Overview" icon="rocket" href="/docs/ru/sending-transactions/sender">
    Общие понятия: конечные точки, прогрев соединения, ограничения частоты запросов и настраиваемый TPS.
  </Card>

  <Card title="SWQOS-Only Tier" icon="dollar-sign" href="/docs/ru/sending-transactions/sender-swqos-only">
    Экономичная отправка с низкой задержкой по одному маршруту (минимальные чаевые — 0.000005 SOL).
  </Card>

  <Card title="MEV Protect" icon="shield-halved" href="/docs/ru/sending-transactions/mev-protect">
    Обход валидаторов, статистически связанных с сэндвич-атаками.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.