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

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

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

Метод RPC [`getLatestBlockhash`](https://www.helius.dev/docs/api-reference/rpc/http/getlatestblockhash) необходим для подготовки и отправки транзакций в сети Solana. Он получает последний хеш блока, обработанный узлом, а также последнюю высоту блока, до которой этот хеш блока будет действителен. Подробнее об эффективном использовании хешей блоков и [успешном включении транзакций в блок](https://www.helius.dev/blog/how-to-land-transactions-on-solana) читайте в нашем подробном руководстве.

Каждая транзакция в Solana должна ссылаться на недавний хеш блока. Этот механизм помогает предотвратить некоторые типы атак, например повторное воспроизведение транзакции в ответвлении цепочки.

**Примечание о версии:** этот метод доступен в `solana-core` версии 1.9 или новее. Для узлов, использующих `solana-core` версии 1.8 или старше, вместо него используйте метод `getRecentBlockhash`.

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

* **Создание транзакции:** получите недавний хеш блока, чтобы включить его в новую транзакцию перед подписанием и отправкой.
* **Управление временем жизни транзакции:** используйте `lastValidBlockHeight`, чтобы определить, как долго транзакция, ссылающаяся на полученный хеш блока, будет оставаться действительной.
* **Предварительные проверки:** хотя `simulateTransaction` может выполнять их автоматически, приложения могут получать хеш блока, чтобы вручную подготовить транзакцию к симуляции.

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

Метод может принимать необязательный объект конфигурации со следующими параметрами:

* **`commitment`** (строка, необязательный): задает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels) для запроса. Если параметр не указан, используется уровень подтверждения узла по умолчанию. Для транзакций обычно используют `confirmed` или `finalized`, чтобы получить хеш блока из достаточно стабильной части цепочки.
* **`minContextSlot`** (целое число, необязательный): минимальный слот, на котором может быть выполнен запрос. Это гарантирует, что запрос выполняется к состоянию реестра, обработавшему данные как минимум до этого слота.

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

Поле `result` ответа JSON-RPC будет объектом `RpcResponse`. Поле `value` этого объекта содержит:

* **`blockhash`** (строка): строка в кодировке base58, представляющая последний хеш блока.
* **`lastValidBlockHeight`** (u64): высота блока, на которой истекает срок действия `blockhash`. Транзакция, ссылающаяся на этот `blockhash`, действительна, пока сеть не достигнет `lastValidBlockHeight`.

Ответ также содержит объект `context` со значением `slot`, на котором была получена информация.

## Примеры

### 1. Получение последнего хеша блока с уровнем подтверждения по умолчанию

В этом примере последний хеш блока запрашивается с уровнем подтверждения узла по умолчанию.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash"
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchLatestBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
      console.log('Latest Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
      // This blockhash can now be used in a transaction
    } catch (error) {
      console.error('Error fetching latest blockhash:', error);
    }
  }

  fetchLatestBlockhash();
  ```
</CodeGroup>

### 2. Получение последнего хеша блока с уровнем подтверждения 'confirmed'

В этом примере последний хеш блока явно запрашивается с уровнем подтверждения `confirmed`.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash",
      "params": [{ "commitment": "confirmed" }]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchConfirmedBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
      console.log('Confirmed Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
    } catch (error) {
      console.error('Error fetching confirmed blockhash:', error);
    }
  }

  fetchConfirmedBlockhash();
  ```
</CodeGroup>

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

* **Срок действия хеша блока:** хеш блока действителен в течение ограниченного времени — примерно 2 минут, хотя это значение может меняться. Транзакции должны быть подтверждены сетью до достижения их `lastValidBlockHeight`. Всегда запрашивайте новый хеш блока, если с момента получения предыдущего прошло значительное время.
* **Выбор уровня подтверждения:** для критически важных транзакций уровень подтверждения `finalized` дает наиболее надежную гарантию того, что хеш блока относится к основному ответвлению цепочки, но сам хеш может быть немного старее. `confirmed` обеспечивает хороший баланс. Подробности см. в материале об [уровнях подтверждения](https://www.helius.dev/blog/solana-commitment-levels).
* **Комиссии за транзакции:** не забудьте также рассчитать и указать подходящую комиссию за транзакцию. Сам хеш блока не определяет размер комиссии.
* **Логика повторных попыток:** если срок действия транзакции истек из-за достижения `lastValidBlockHeight`, необходимо повторно подписать ее с новым, более свежим хешем блока и отправить снова.

В этом руководстве описано, как эффективно использовать `getLatestBlockhash` — один из ключевых компонентов для взаимодействия с сетью Solana посредством транзакций.

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

<CardGroup cols={2}>
  <Card title="simulateTransaction" href="/docs/ru/api-reference/rpc/http/simulatetransaction">
    Выполните симуляцию транзакции перед отправкой
  </Card>

  <Card title="isBlockhashValid" href="/docs/ru/api-reference/rpc/http/isblockhashvalid">
    Проверьте, действителен ли хеш блока
  </Card>
</CardGroup>


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