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

# Как использовать requestAirdrop

> Узнайте о сценариях использования requestAirdrop, примерах кода, параметрах запроса, структуре ответа и рекомендациях.

Метод RPC [`requestAirdrop`](https://www.helius.dev/docs/api-reference/rpc/http/requestairdrop) позволяет запросить аирдроп SOL (лампортов) на указанный аккаунт. Этот метод предназначен **исключительно для сред, отличных от основной сети**, таких как Devnet и Testnet. В них он выполняет роль крана, предоставляющего разработчикам бесплатные SOL для тестирования приложений.

**Важно: этот метод не работает в Mainnet Beta.**

## Распространенные сценарии использования

* **Пополнение тестовых кошельков:** получение SOL для оплаты комиссий за транзакции и развертывания программ в Devnet или Testnet.
* **Автоматизированное тестирование:** скрипты могут использовать `requestAirdrop`, чтобы перед запуском наборов тестов убедиться, что на тестовых аккаунтах достаточно SOL.
* **Разработка и эксперименты:** быстрое получение SOL для взаимодействия с ончейн-программами во время разработки.

## Параметры запроса

1. **`pubkey`** (строка, обязательный): публичный ключ аккаунта, который получит лампорты из аирдропа, в виде строки с кодировкой base58.
2. **`lamports`** (u64, обязательный): запрашиваемое количество лампортов. (1 SOL = 1 000 000 000 лампортов).
3. **`options`** (объект, необязательный): необязательный объект конфигурации, который может включать:
   * **`commitment`** (строка, необязательный): задает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels), которого необходимо дождаться при подтверждении транзакции аирдропа (например, `"finalized"`, `"confirmed"`, `"processed"`). Если параметр не указан, используется заданный на узле по умолчанию уровень подтверждения для аирдропов.

## Структура ответа

Поле `result` в ответе JSON-RPC представляет собой одну строку с подписью транзакции аирдропа в кодировке base58.

**Пример ответа:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW",
  "id": 1
}
```

Затем эту подпись можно использовать с `getTransaction` или в обозревателе Solana для отслеживания состояния транзакции аирдропа.

## Примеры кода

<CodeGroup>
  ```bash cURL theme={"system"}
  # Request 1 SOL (1,000,000,000 lamports) to a Devnet address
  # Replace <YOUR_WALLET_ADDRESS> with an actual base-58 public key
  # Ensure you are targeting a Devnet RPC URL
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "requestAirdrop",
      "params": [
        "<YOUR_WALLET_ADDRESS>",
        1000000000
      ]
    }' \
    https://devnet.helius-rpc.com/?api-key=<api-key> 

  # Request 0.5 SOL with "confirmed" commitment
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "requestAirdrop",
      "params": [
        "<YOUR_WALLET_ADDRESS>",
        500000000,
        {
          "commitment": "confirmed"
        }
      ]
    }' \
    https://devnet.helius-rpc.com/?api-key=<api-key>
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection, PublicKey, LAMPORTS_PER_SOL } = require('@solana/web3.js');

  async function getAirdrop(walletAddress) {
    // Connect to Devnet
    const connection = new Connection('https://devnet.helius-rpc.com/?api-key=<api-key>', 'confirmed');
    const publicKey = new PublicKey(walletAddress);

    try {
      console.log(`Requesting airdrop of 1 SOL to ${walletAddress} on Devnet...`);
      
      // Request an airdrop of 1 SOL
      const airdropSignature = await connection.requestAirdrop(
        publicKey,
        LAMPORTS_PER_SOL // 1 SOL
      );

      console.log(`Airdrop requested. Transaction signature: ${airdropSignature}`);

      // Confirm the transaction
      // Note: The `confirmTransaction` method in web3.js has evolved.
      // For newer versions, you might use `connection.confirmTransaction({ signature: airdropSignature, blockhash: latestBlockhash.blockhash, lastValidBlockHeight: latestBlockhash.lastValidBlockHeight }, 'confirmed');`
      // For simplicity, we'll log the signature and you can check on an explorer.
      // Or, more robustly, you can poll getSignatureStatuses.

      await connection.confirmTransaction(airdropSignature);
      console.log(`Airdrop successful for ${walletAddress}!`);

      const balance = await connection.getBalance(publicKey);
      console.log(`Current balance for ${walletAddress}: ${balance / LAMPORTS_PER_SOL} SOL`);

    } catch (error) {
      console.error(`Error requesting airdrop for ${walletAddress}:`, error);
    }
  }

  // Replace with a Devnet wallet address you control
  const myDevnetWallet = 'REPLACE_WITH_YOUR_DEVNET_WALLET_ADDRESS'; 
  // Example: const myDevnetWallet = new Keypair().publicKey.toBase58(); // For a new temporary wallet

  if (myDevnetWallet === 'REPLACE_WITH_YOUR_DEVNET_WALLET_ADDRESS') {
    console.warn("Please replace 'REPLACE_WITH_YOUR_DEVNET_WALLET_ADDRESS' with an actual Devnet wallet address to run the example.");
  } else {
    // getAirdrop(myDevnetWallet);
    console.log("Uncomment the line above and replace the placeholder to run the airdrop example.");
  }
  ```
</CodeGroup>

## Рекомендации для разработчиков

* **Зависимость от сети:** этот метод работает только в тестовых сетях (Devnet, Testnet), где включен кран. В Mainnet Beta он завершится ошибкой.
* **Ограничение частоты запросов:** краны для аирдропов часто ограничивают частоту запросов для предотвращения злоупотреблений. Если отправить слишком много запросов за короткий период, могут возникнуть ошибки.
* **Ограничения суммы:** могут действовать ограничения на количество SOL, запрашиваемое за один аирдроп или за определенный период времени.
* **Подтверждение:** после того как `requestAirdrop` вернет подпись, транзакция должна быть обработана и подтверждена сетью. Чтобы дождаться подтверждения, используйте `confirmTransaction` (из `@solana/web3.js`) или периодически опрашивайте `getSignatureStatuses`.

В этом руководстве объясняется, как использовать `requestAirdrop` для пополнения тестовых аккаунтов в сетях разработки Solana.

## Связанные методы

<CardGroup cols={2}>
  <Card title="getBalance" href="/docs/ru/api-reference/rpc/http/getbalance">
    Проверьте баланс SOL после получения аирдропа
  </Card>

  <Card title="getSignatureStatuses" href="/docs/ru/api-reference/rpc/http/getsignaturestatuses">
    Опрашивайте состояние транзакции, чтобы подтвердить аирдроп
  </Card>
</CardGroup>


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