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

# getHistoricalAccountInfo

> Получите данные любой учетной записи Solana в том виде, в котором они существовали в прошлом слоте или сразу после определенной транзакции, с кодировками getAccountInfo и позицией последней записи.

> [!NOTE]
>
> `getHistoricalAccountInfo` находится на этапе бета-тестирования. Параметры, цены, форматы ответов и охват данных могут измениться.

## Обзор

`getHistoricalAccountInfo` возвращает учетную запись Solana в том виде, в котором она существовала в прошлом слоте или сразу после определенной транзакции в этом слоте. Это эксклюзивный метод Helius RPC. Стандартный метод `getAccountInfo` возвращает только текущее состояние.

Ответ содержит те же поля учетной записи, что и `getAccountInfo`, а также `lastUpdatedAt` — слот и транзакцию, в рамках которых в последний раз было записано полученное состояние.

История доступна начиная со слота 444,959,999 (7 сентября 2026 года), то есть с состояния в начале эпохи 1030. Запросы для более ранних слотов возвращают ошибку `-32018`.

`getHistoricalAccountInfo` доступен в mainnet для тарифных планов Business и выше. В период бета-тестирования вызов не расходует кредиты. Цена может измениться.

## Выбор позиции в истории

Второй параметр — это объект запроса, который определяет, из какой точки истории нужно прочитать данные:

| Запрос | Возвращаемое состояние учетной записи |
| - | - |
| Не указан или `{}` | В последнем проиндексированном слоте с учетом запрошенного уровня подтверждения |
| `{ "slot": 445000000 }` | В конце слота 445,000,000 |
| `{ "slot": 445000000, "transactionIndex": 10 }` | Сразу после выполнения транзакции с индексом 10 в слоте 445,000,000 |

Для `transactionIndex` необходимо указать `slot`. Чтобы прочитать учетную запись непосредственно перед транзакцией с индексом `N`, отправьте запрос с `transactionIndex: N - 1`. Для первой транзакции в слоте запросите предыдущий слот без `transactionIndex`.

Записи вне транзакций, например вознаграждения за эпоху, применяются в конце слота. Запрос с `transactionIndex` никогда их не включает.

## Пример запроса

```bash theme={"system"}
curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "getHistoricalAccountInfo",
    "params": [
      "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      { "slot": 445000000 },
      { "encoding": "jsonParsed" }
    ]
  }'
```

## Чтение ответа

* **`value`** — учетная запись в запрошенной позиции или `null`, если учетная запись тогда не существовала: она еще не была создана или уже была закрыта. Ответ `null` не содержит `lastUpdatedAt`.
* **`lastUpdatedAt.slot`** и **`lastUpdatedAt.transactionIndex`** определяют запись, которая создала это состояние. Эта запись находится в запрошенной позиции или перед ней.
* **`lastUpdatedAt.transactionIndex` равен `null`**, если запись произошла вне транзакции, например при начислении вознаграждений за эпоху.
* **`lastUpdatedAt.slot` со значением 444,959,999 и `null` в `transactionIndex`** означает, что учетная запись не изменялась с начала охвата исторических данных. Это не означает, что учетная запись была записана в этом слоте.
* **`context.slot`** — последний слот, проиндексированный Helius на момент обработки запроса, а не запрошенный вами слот.
* **Учетные записи токенов `jsonParsed`** используют количество десятичных знаков минта в запрошенной позиции. Если минт невозможно прочитать в этой позиции, данные учетной записи возвращаются в base64.

Чтобы получить список всех прошлых состояний учетной записи, используйте `lastUpdatedAt` как курсор. См. раздел [Последовательный просмотр истории учетной записи в обратном порядке](https://www.helius.dev/docs/ru/rpc/historical-accounts.md#обход-истории-аккаунта-в-обратном-порядке).

## Ошибки

| Код | Значение |
| - | - |
| `-32018` | Слот предшествует началу охвата исторических данных (слот 444,959,999) |
| `-32004` | Слот новее, чем допускает запрошенный уровень подтверждения. Используйте `confirmed` или запросите более старый слот |
| `-32602` | Недопустимые параметры, например `transactionIndex` без `slot`, кодировка `base58` или неизвестное поле конфигурации |
| `-32601` | Метод не найден. Обратитесь к своей конечной точке Helius mainnet или Gatekeeper. Метод недоступен в devnet |

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

> [card] [Historical Accounts Guide](https://www.helius.dev/docs/ru/rpc/historical-accounts.md)
>
> Как работают позиции, охват и lastUpdatedAt в методах для исторических данных учетных записей

> [card] [getHistoricalTokenAccountsByOwner](https://www.helius.dev/docs/ru/api-reference/rpc/http/gethistoricaltokenaccountsbyowner.md)
>
> Получите список учетных записей токенов кошелька в прошлом слоте

> [card] [getTransactionsForAddress](https://www.helius.dev/docs/ru/rpc/gettransactionsforaddress.md)
>
> Найдите slot и transactionIndex транзакций, которые хотите проверить

> [card] [getAccountInfo](https://www.helius.dev/docs/ru/api-reference/rpc/http/getaccountinfo.md)
>
> Получите текущее состояние учетной записи

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

**pubkey** `string` *required*

Адрес учетной записи для чтения в кодировке Base58.

**slot** `number`

Слот, в котором нужно прочитать состояние. Возвращает учетную запись по состоянию на конец этого слота. Самый ранний поддерживаемый слот — 444959999, то есть состояние в начале эпохи 1030. Если параметр не указан, читается последний проиндексированный слот с учетом запрошенного уровня подтверждения.

**transactionIndex** `number`

Позиция транзакции в слоте. Возвращает состояние учетной записи сразу после выполнения этой транзакции, а не в конце слота. Требует указания slot.

**encoding** `string` (default: base64)

Формат кодирования данных учетной записи. base58 и binary не поддерживаются.

* `base64`
* `base64+zstd`
* `jsonParsed`

**dataSlice** `object`

Возвращает только фрагмент данных каждой учетной записи. Применяется к кодировкам base64 и base64+zstd.

**dataSlice.offset** `number` *required*

Смещение в байтах, с которого следует начать чтение.

**dataSlice.length** `number` *required*

Количество возвращаемых байтов.

**commitment** `string` (default: finalized)

Уровень подтверждения. processed не поддерживается.

* `finalized`
* `confirmed`

**minContextSlot** `number`

Минимальный слот, в котором может быть обработан запрос.


## OpenAPI

````yaml ru/openapi/rpc-http/getHistoricalAccountInfo.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    API исторического состояния аккаунтов Solana для чтения любого аккаунта в
    том виде, в котором он находился в прошлом слоте или непосредственно после
    определенной транзакции в слоте.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Конечная точка RPC основной сети
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getHistoricalAccountInfo
      description: >
        **Бета-версия.** Параметры, форматы ответов и охват данных могут
        измениться.


        Возвращает аккаунт Solana в состоянии на прошлый слот или
        непосредственно после определенной

        транзакции в этом слоте. Этот метод Helius RPC принимает тот же адрес и
        те же параметры

        кодирования, что и getAccountInfo, а также объект запроса, который
        выбирает позицию

        в истории для чтения.


        История охватывает данные начиная со слота 444959999 (начала эпохи
        1030). Каждый возвращенный аккаунт

        содержит lastUpdatedAt — слот и транзакцию, в которых полученное вами
        состояние

        было записано в последний раз.
      operationId: getHistoricalAccountInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jsonrpc
                - id
                - method
                - params
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  example: '2.0'
                  description: Версия протокола JSON-RPC.
                  default: '2.0'
                id:
                  type: string
                  example: '1'
                  description: Уникальный идентификатор запроса.
                  default: '1'
                method:
                  type: string
                  enum:
                    - getHistoricalAccountInfo
                  example: getHistoricalAccountInfo
                  description: Название вызываемого метода RPC.
                  default: getHistoricalAccountInfo
                params:
                  type: array
                  description: >-
                    Массив, содержащий адрес аккаунта, необязательный объект
                    запроса для выбора позиции в истории и необязательный объект
                    конфигурации.
                  minItems: 1
                  maxItems: 3
                  default:
                    - EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                    - slot: 445000000
                    - encoding: jsonParsed
                  items:
                    oneOf:
                      - type: string
                        title: Публичный ключ
                        description: Адрес аккаунта для чтения в кодировке Base58.
                        example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                      - $ref: '#/components/schemas/HistoricalAccountQuery'
                        title: Запрос
                      - type: object
                        title: Конфигурация
                        description: Необязательный объект конфигурации.
                        properties:
                          encoding:
                            type: string
                            description: >-
                              Формат кодирования данных аккаунта. base58 и
                              binary не поддерживаются.
                            enum:
                              - base64
                              - base64+zstd
                              - jsonParsed
                            default: base64
                            example: jsonParsed
                          dataSlice:
                            $ref: '#/components/schemas/DataSliceConfig'
                          commitment:
                            type: string
                            description: >-
                              Уровень подтверждения. processed не
                              поддерживается.
                            enum:
                              - finalized
                              - confirmed
                            default: finalized
                            example: finalized
                          minContextSlot:
                            type: integer
                            description: >-
                              Минимальный слот, на котором может быть обработан
                              запрос.
                            example: 445000000
                        additionalProperties: false
      responses:
        '200':
          description: Историческое состояние аккаунта успешно получено.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: Версия протокола JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Идентификатор, соответствующий запросу.
                    example: '1'
                  result:
                    type: object
                    properties:
                      context:
                        $ref: '#/components/schemas/HistoricalContext'
                      value:
                        oneOf:
                          - $ref: '#/components/schemas/HistoricalAccount'
                          - type: 'null'
                        description: >-
                          Аккаунт в запрошенной позиции или null, если в тот
                          момент он не существовал.
        '400':
          description: >-
            Некорректный запрос — недопустимые параметры или неправильный формат
            запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
                id: '1'
        '401':
          description: Не авторизовано — ключ API недействителен или отсутствует.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Слишком много запросов — превышен лимит частоты запросов.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: Внутренняя ошибка сервера — на сервере произошла ошибка.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Сервис недоступен — сервис временно недоступен.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: Истекло время ожидания шлюза — время ожидания запроса истекло.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32003
                  message: Gateway timeout
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    HistoricalAccountQuery:
      type: object
      description: >-
        Позиция в истории, из которой нужно прочитать данные. Чтобы прочитать
        последний проиндексированный слот, не указывайте этот параметр или
        передайте пустой объект.
      properties:
        slot:
          type: integer
          description: >-
            Слот, для которого нужно прочитать состояние. Возвращает аккаунт в
            состоянии на конец этого слота. Самый ранний поддерживаемый слот —
            444959999, то есть состояние на начало эпохи 1030. Если параметр не
            указан, читается последний проиндексированный слот с учетом
            запрошенного уровня подтверждения.
          minimum: 444959999
          example: 445000000
        transactionIndex:
          type: integer
          description: >-
            Позиция транзакции в слоте. Возвращает состояние аккаунта
            непосредственно после выполнения этой транзакции, а не в конце
            слота. Требует указания slot.
          minimum: 0
          maximum: 16777214
          example: 10
      additionalProperties: false
    DataSliceConfig:
      type: object
      description: >-
        Возвращает только срез данных каждого аккаунта. Применяется к кодировкам
        base64 и base64+zstd.
      properties:
        offset:
          type: integer
          description: Смещение в байтах, с которого нужно начать чтение.
          example: 0
        length:
          type: integer
          description: Количество возвращаемых байтов.
          example: 8
      required:
        - offset
        - length
    HistoricalContext:
      type: object
      description: Метаданные ответа.
      properties:
        slot:
          type: integer
          description: >-
            Последний слот, проиндексированный хранилищем истории на момент
            обработки запроса. Это не тот слот, который был указан в запросе.
          example: 468129571
    HistoricalAccount:
      type: object
      description: >-
        Аккаунт в состоянии на запрошенную позицию, а также позиция, в которой
        это состояние было записано в последний раз.
      properties:
        lamports:
          type: integer
          description: Количество лампортов, назначенных этому аккаунту.
          example: 531589475273
        owner:
          type: string
          description: >-
            Публичный ключ программы, которой назначен этот аккаунт, в кодировке
            Base58.
          example: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
        data:
          description: >-
            Данные аккаунта. Для base64 или base64+zstd это массив из двух
            элементов: закодированных данных и названия кодировки. Для
            jsonParsed это объект с полями program, parsed и space. Для
            аккаунтов, которые невозможно разобрать, возвращается массив base64.
          oneOf:
            - type: array
              items:
                type: string
            - type: object
              properties:
                program:
                  type: string
                  description: Название программы, владеющей аккаунтом.
                  example: spl-token
                parsed:
                  type: object
                  description: Разобранное состояние аккаунта, специфичное для программы.
                space:
                  type: integer
                  description: Размер данных аккаунта.
                  example: 82
        executable:
          type: boolean
          description: Указывает, содержит ли аккаунт программу.
          example: false
        rentEpoch:
          type: integer
          description: >-
            Эпоха, в которой с этого аккаунта в следующий раз будет взиматься
            арендная плата. Для аккаунтов, освобожденных от арендной платы,
            возвращается максимальное значение u64.
        space:
          type: integer
          description: Размер данных аккаунта в байтах.
          example: 82
        lastUpdatedAt:
          $ref: '#/components/schemas/AccountWritePosition'
      required:
        - lamports
        - owner
        - data
        - executable
        - rentEpoch
        - space
        - lastUpdatedAt
    ErrorResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          description: Версия протокола JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: Код ошибки.
              example: -32602
            message:
              type: string
              description: Сообщение об ошибке.
            data:
              type: object
              description: Дополнительные данные об ошибке.
        id:
          type: string
          description: Идентификатор, соответствующий запросу.
          example: '1'
    AccountWritePosition:
      type: object
      description: >-
        Позиция, в которой возвращенное состояние было записано в последний раз,
        не позднее запрошенной позиции.
      properties:
        slot:
          type: integer
          description: >-
            Слот последней записи. Значение 444959999 при null в
            transactionIndex означает, что аккаунт не изменялся с начала охвата
            исторических данных.
          example: 444999837
        transactionIndex:
          oneOf:
            - type: integer
            - type: 'null'
          description: >-
            Позиция транзакции, выполнившей последнюю запись. Значение null
            указывается, если запись произошла вне транзакции (например, при
            начислении наград за эпоху) или если аккаунт не изменялся с начала
            охвата исторических данных.
          example: 700
      required:
        - slot
        - transactionIndex
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Ваш ключ API Helius. Его можно бесплатно получить в [панели
        управления](https://dashboard.helius.dev/api-keys).

````

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