> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
> Use this file to discover all available pages before exploring further.

# getRecentBlockhash

> [УСТАРЕЛО] Возвращает недавний blockhash и его расписание комиссий

# getRecentBlockhash

<Warning>
  Этот метод устарел. Пожалуйста, используйте [`getLatestBlockhash`](/rpc/methods/getLatestBlockhash) вместо него, который предоставляет более точную и надёжную информацию о blockhash.
</Warning>

Возвращает недавний blockhash и его расписание комиссий. Этот метод будет удалён в будущем релизе.

## Параметры

<ResponseField name="config" type="object" optional>
  <Expandable title="поля конфигурации">
    <ResponseField name="commitment" type="string" optional>
      Уровень подтверждения (processed, confirmed, finalized)
    </ResponseField>
  </Expandable>
</ResponseField>

## Ответ

<ResponseField name="result" type="object">
  <Expandable title="поля результата">
    <ResponseField name="context" type="object">
      <ResponseField name="slot" type="number">
        Слот, в котором был обработан запрос
      </ResponseField>
    </ResponseField>

    <ResponseField name="value" type="object">
      <ResponseField name="blockhash" type="string">
        Недавний blockhash (в кодировке base-58)
      </ResponseField>

      <ResponseField name="feeCalculator" type="object">
        <ResponseField name="lamportsPerSignature" type="number">
          Комиссия в lamports за подпись
        </ResponseField>
      </ResponseField>
    </ResponseField>
  </Expandable>
</ResponseField>

## Руководство по миграции

Для перехода с `getRecentBlockhash` на `getLatestBlockhash`:

1. Замените вызовы метода:

```diff theme={null}
- const { blockhash, feeCalculator } = await connection.getRecentBlockhash();
+ const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
```

2. Обновите расчёты комиссий:

```typescript theme={null}
// Old way
const fee = feeCalculator.lamportsPerSignature * numSignatures;

// New way
const fee = await connection.getFeeForMessage(message);
```

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

### Базовый запрос (устаревший)

```bash theme={null}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getRecentBlockhash",
  "params": []
}'
```

### Запрос с уровнем подтверждения (устаревший)

```bash theme={null}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getRecentBlockhash",
  "params": [
    {
      "commitment": "confirmed"
    }
  ]
}'
```

### Использование web3.js (устаревший)

```typescript theme={null}
import { Connection } from '@solana/web3.js';

const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');

// Get recent blockhash (deprecated)
const { value: { blockhash, feeCalculator } } = await connection.getRecentBlockhash();
console.log('Blockhash:', blockhash);
console.log('Fee per signature:', feeCalculator.lamportsPerSignature);
```

## Примечания

1. Этот метод устарел и будет удалён в будущем релизе
2. Используйте `getLatestBlockhash` для новой разработки
3. Blockhash действителен в течение ограниченного времени (обычно 150 слотов)
4. Можно указывать разные уровни подтверждения
5. Рассмотрите обновление существующего кода для использования новых методов

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

1. Перейдите на `getLatestBlockhash` для новой разработки
2. Используйте `getFeeForMessage` для расчёта комиссий
3. Отслеживайте истечение blockhash с помощью `lastValidBlockHeight`
4. Обрабатывайте сетевые ошибки и выполняйте повторные попытки при необходимости
5. Используйте подходящий уровень подтверждения в зависимости от ваших потребностей

## Распространённые ошибки

| Код    | Сообщение                         | Решение                                                   |
| ------ | --------------------------------- | --------------------------------------------------------- |
| -32601 | Method not found                  | Убедитесь, что вы подключены к узлу Solana RPC            |
| -32602 | Invalid params                    | Проверьте параметры конфигурации                          |
| -32007 | Blockhash information unavailable | Узел может выполнять начальную загрузку или синхронизацию |

## Сценарии использования

1. **Расчёт комиссии за транзакцию**
   ```typescript theme={null}
   interface TransactionFee {
     blockhash: string;
     feePerSignature: number;
     totalFee: number;
     metadata: {
       timestamp: number;
       slot: number;
     };
   }

   async function calculateTransactionFees(
     numSignatures: number
   ): Promise<TransactionFee> {
     const { context, value } = await connection.getRecentBlockhash();
     
     return {
       blockhash: value.blockhash,
       feePerSignature: value.feeCalculator.lamportsPerSignature,
       totalFee: numSignatures * value.feeCalculator.lamportsPerSignature,
       metadata: {
         timestamp: Date.now(),
         slot: context.slot
       }
     };
   }
   ```

2. **Мониторинг blockhash**
   ```typescript theme={null}
   interface BlockhashInfo {
     blockhash: string;
     slot: number;
     feePerSignature: number;
     metadata: {
       timestamp: number;
       age: number;
     };
   }

   class BlockhashMonitor {
     private currentBlockhash: string | null = null;
     private currentSlot: number | null = null;
     
     async monitorBlockhash(
       interval: number = 5000
     ): Promise<BlockhashInfo | null> {
       const { context, value } = await connection.getRecentBlockhash();
       
       if (this.currentBlockhash === value.blockhash) {
         return null;
       }
       
       this.currentBlockhash = value.blockhash;
       this.currentSlot = context.slot;
       
       return {
         blockhash: value.blockhash,
         slot: context.slot,
         feePerSignature: value.feeCalculator.lamportsPerSignature,
         metadata: {
           timestamp: Date.now(),
           age: 0
         }
       };
     }
   }
   ```

3. **Планирование транзакций**
   ```typescript theme={null}
   interface TransactionPlan {
     blockhash: string;
     feePerSignature: number;
     estimatedFees: {
       single: number;
       batch: number;
     };
     metadata: {
       timestamp: number;
       slot: number;
     };
   }

   async function planTransactions(
     numTransactions: number,
     signaturesPerTransaction: number
   ): Promise<TransactionPlan> {
     const { context, value } = await connection.getRecentBlockhash();
     const feePerSignature = value.feeCalculator.lamportsPerSignature;
     
     return {
       blockhash: value.blockhash,
       feePerSignature,
       estimatedFees: {
         single: signaturesPerTransaction * feePerSignature,
         batch: numTransactions * signaturesPerTransaction * feePerSignature
       },
       metadata: {
         timestamp: Date.now(),
         slot: context.slot
       }
     };
   }
   ```
