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

> Đọc bất kỳ tài khoản Solana nào tại một slot trong quá khứ hoặc ngay sau một giao dịch cụ thể, với các kiểu mã hóa của getAccountInfo và vị trí của lần ghi gần nhất.

> [!NOTE]
>
> `getHistoricalAccountInfo` đang ở giai đoạn Beta. Các tham số, mức giá, định dạng phản hồi và phạm vi dữ liệu có thể thay đổi.

## Tổng quan

`getHistoricalAccountInfo` trả về một tài khoản Solana tại một slot trong quá khứ hoặc ngay sau một giao dịch cụ thể trong slot đó. Đây là phương thức RPC độc quyền của Helius. `getAccountInfo` tiêu chuẩn chỉ trả về trạng thái hiện tại.

Phản hồi có các trường tài khoản giống như `getAccountInfo`, cộng thêm `lastUpdatedAt`: slot và giao dịch đã ghi lần gần nhất trạng thái mà bạn nhận được.

Dữ liệu lịch sử có từ slot 444,959,999 (ngày 7 tháng 9 năm 2026) trở đi, tương ứng với trạng thái tại thời điểm bắt đầu epoch 1030. Các yêu cầu cho những slot trước đó trả về lỗi `-32018`.

`getHistoricalAccountInfo` khả dụng trên mainnet đối với gói Business trở lên và có chi phí 0 credit cho mỗi lần gọi trong giai đoạn beta. Mức giá có thể thay đổi.

## Chọn một vị trí trong lịch sử

Tham số thứ hai là một đối tượng truy vấn dùng để chọn thời điểm cần đọc trong lịch sử:

| Truy vấn | Tài khoản được trả về |
| - | - |
| Bỏ qua hoặc `{}` | Tại slot mới nhất đã được lập chỉ mục, giới hạn theo mức commitment được yêu cầu |
| `{ "slot": 445000000 }` | Tại cuối slot 445,000,000 |
| `{ "slot": 445000000, "transactionIndex": 10 }` | Ngay sau khi giao dịch ở chỉ mục 10 trong slot 445,000,000 được thực thi |

`transactionIndex` yêu cầu `slot`. Để đọc một tài khoản ngay trước giao dịch tại chỉ mục `N`, hãy truy vấn `transactionIndex: N - 1`. Đối với giao dịch đầu tiên trong một slot, hãy truy vấn slot trước đó mà không có `transactionIndex`.

Các thao tác ghi không thuộc giao dịch, chẳng hạn như phần thưởng epoch, được áp dụng ở cuối slot. Truy vấn có `transactionIndex` không bao giờ bao gồm các thao tác này.

## Ví dụ về yêu cầu

```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" }
    ]
  }'
```

## Đọc phản hồi

* **`value`** là tài khoản tại vị trí được yêu cầu, hoặc `null` nếu tài khoản chưa tồn tại vào thời điểm đó: tài khoản chưa được tạo hoặc đã bị đóng. Phản hồi `null` không có `lastUpdatedAt`.
* **`lastUpdatedAt.slot`** và **`lastUpdatedAt.transactionIndex`** xác định thao tác ghi đã tạo ra trạng thái này. Thao tác ghi diễn ra tại hoặc trước vị trí bạn yêu cầu.
* **`lastUpdatedAt.transactionIndex` là `null`** khi thao tác ghi diễn ra bên ngoài một giao dịch, chẳng hạn như phần thưởng epoch.
* **`lastUpdatedAt.slot` bằng 444,959,999 với `transactionIndex` là `null`** nghĩa là tài khoản chưa thay đổi kể từ khi phạm vi dữ liệu lịch sử bắt đầu. Điều này không có nghĩa là tài khoản đã được ghi trong slot đó.
* **`context.slot`** là slot mới nhất mà Helius đã lập chỉ mục khi xử lý yêu cầu, không phải slot bạn đã truy vấn.
* **Tài khoản token `jsonParsed`** sử dụng số chữ số thập phân của mint tại vị trí được yêu cầu. Nếu không thể đọc mint tại vị trí đó, tài khoản sẽ chuyển sang dùng base64.

Để liệt kê mọi trạng thái trước đây của một tài khoản, hãy dùng `lastUpdatedAt` làm con trỏ. Xem [Duyệt ngược lịch sử tài khoản](https://www.helius.dev/docs/vi/rpc/historical-accounts.md#duyệt-ngược-lịch-sử-tài-khoản).

## Lỗi

| Mã | Ý nghĩa |
| - | - |
| `-32018` | Slot nằm trước thời điểm bắt đầu phạm vi dữ liệu lịch sử (slot 444,959,999) |
| `-32004` | Slot mới hơn mức commitment được yêu cầu cho phép. Hãy dùng `confirmed` hoặc truy vấn một slot cũ hơn |
| `-32602` | Tham số không hợp lệ, chẳng hạn như `transactionIndex` không có `slot`, kiểu mã hóa `base58` hoặc trường cấu hình không xác định |
| `-32601` | Không tìm thấy phương thức. Hãy gọi endpoint mainnet hoặc Gatekeeper của Helius; phương thức này không khả dụng trên devnet |

## Phương thức liên quan

> [card] [Historical Accounts Guide](https://www.helius.dev/docs/vi/rpc/historical-accounts.md)
>
> Cách vị trí, phạm vi dữ liệu và lastUpdatedAt hoạt động đối với các phương thức tài khoản lịch sử

> [card] [getHistoricalTokenAccountsByOwner](https://www.helius.dev/docs/vi/api-reference/rpc/http/gethistoricaltokenaccountsbyowner.md)
>
> Liệt kê các tài khoản token của một ví tại một slot trong quá khứ

> [card] [getTransactionsForAddress](https://www.helius.dev/docs/vi/rpc/gettransactionsforaddress.md)
>
> Tìm slot và transactionIndex của các giao dịch bạn muốn kiểm tra

> [card] [getAccountInfo](https://www.helius.dev/docs/vi/api-reference/rpc/http/getaccountinfo.md)
>
> Đọc trạng thái hiện tại của một tài khoản

## Tham số yêu cầu

**pubkey** `string` *required*

Địa chỉ được mã hóa Base-58 của tài khoản cần đọc.

**slot** `number`

Slot cần đọc trạng thái. Trả về tài khoản tại thời điểm kết thúc slot này. Slot sớm nhất được hỗ trợ là 444959999, tương ứng với trạng thái tại thời điểm bắt đầu epoch 1030. Khi bị bỏ qua, hệ thống đọc slot mới nhất đã được lập chỉ mục, giới hạn theo mức commitment được yêu cầu.

**transactionIndex** `number`

Vị trí của một giao dịch trong slot. Trả về trạng thái tài khoản ngay sau khi giao dịch đó được thực thi, thay vì ở cuối slot. Yêu cầu slot.

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

Định dạng mã hóa cho dữ liệu tài khoản. base58 và binary không được hỗ trợ.

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

**dataSlice** `object`

Chỉ trả về một phần dữ liệu của mỗi tài khoản. Áp dụng cho kiểu mã hóa base64 và base64+zstd.

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

Độ lệch byte nơi bắt đầu đọc.

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

Số byte cần trả về.

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

Mức commitment. processed không được hỗ trợ.

* `finalized`
* `confirmed`

**minContextSlot** `number`

Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá.


## OpenAPI

````yaml vi/openapi/rpc-http/getHistoricalAccountInfo.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    API trạng thái tài khoản Solana trong quá khứ để đọc bất kỳ tài khoản nào
    tại một slot trước đây hoặc ngay sau một giao dịch cụ thể trong slot.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Điểm cuối RPC Mainnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getHistoricalAccountInfo
      description: >
        **Beta.** Các tham số, định dạng phản hồi và phạm vi dữ liệu có thể thay
        đổi.


        Trả về một tài khoản Solana tại một slot trong quá khứ hoặc ngay sau một
        giao dịch cụ thể

        trong slot đó. Phương thức RPC Helius này nhận cùng địa chỉ và các tùy
        chọn mã hóa

        như getAccountInfo, cùng với một đối tượng truy vấn dùng để chọn vị trí
        cần đọc

        trong lịch sử.


        Dữ liệu lịch sử bao phủ từ slot 444959999 (thời điểm bắt đầu epoch 1030)
        trở đi. Mỗi tài khoản được trả về

        bao gồm lastUpdatedAt, slot và giao dịch đã ghi lần cuối trạng thái mà
        bạn

        nhận được.
      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: Phiên bản giao thức JSON-RPC.
                  default: '2.0'
                id:
                  type: string
                  example: '1'
                  description: Mã định danh duy nhất cho yêu cầu.
                  default: '1'
                method:
                  type: string
                  enum:
                    - getHistoricalAccountInfo
                  example: getHistoricalAccountInfo
                  description: Tên của phương thức RPC cần gọi.
                  default: getHistoricalAccountInfo
                params:
                  type: array
                  description: >-
                    Mảng chứa địa chỉ tài khoản, một đối tượng truy vấn tùy chọn
                    dùng để chọn vị trí trong lịch sử và một đối tượng cấu hình
                    tùy chọn.
                  minItems: 1
                  maxItems: 3
                  default:
                    - EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                    - slot: 445000000
                    - encoding: jsonParsed
                  items:
                    oneOf:
                      - type: string
                        title: Khóa công khai
                        description: Địa chỉ được mã hóa Base-58 của tài khoản cần đọc.
                        example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                      - $ref: '#/components/schemas/HistoricalAccountQuery'
                        title: Truy vấn
                      - type: object
                        title: Cấu hình
                        description: Đối tượng cấu hình tùy chọn.
                        properties:
                          encoding:
                            type: string
                            description: >-
                              Định dạng mã hóa cho dữ liệu tài khoản. base58 và
                              binary không được hỗ trợ.
                            enum:
                              - base64
                              - base64+zstd
                              - jsonParsed
                            default: base64
                            example: jsonParsed
                          dataSlice:
                            $ref: '#/components/schemas/DataSliceConfig'
                          commitment:
                            type: string
                            description: Mức cam kết. processed không được hỗ trợ.
                            enum:
                              - finalized
                              - confirmed
                            default: finalized
                            example: finalized
                          minContextSlot:
                            type: integer
                            description: >-
                              Slot tối thiểu mà tại đó yêu cầu có thể được đánh
                              giá.
                            example: 445000000
                        additionalProperties: false
      responses:
        '200':
          description: Đã truy xuất thành công trạng thái tài khoản trong quá khứ.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: Phiên bản giao thức JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Mã định danh khớp với yêu cầu.
                    example: '1'
                  result:
                    type: object
                    properties:
                      context:
                        $ref: '#/components/schemas/HistoricalContext'
                      value:
                        oneOf:
                          - $ref: '#/components/schemas/HistoricalAccount'
                          - type: 'null'
                        description: >-
                          Tài khoản tại vị trí được yêu cầu hoặc null nếu tài
                          khoản không tồn tại vào thời điểm đó.
        '400':
          description: >-
            Yêu cầu không hợp lệ - Tham số yêu cầu không hợp lệ hoặc yêu cầu sai
            định dạng.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Tham số không hợp lệ
                id: '1'
        '401':
          description: Không được phép - Khóa API không hợp lệ hoặc bị thiếu.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Không được phép
                id: '1'
        '429':
          description: Quá nhiều yêu cầu - Đã vượt quá giới hạn tốc độ.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Quá nhiều yêu cầu
                id: '1'
        '500':
          description: Lỗi máy chủ nội bộ - Đã xảy ra lỗi trên máy chủ.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Lỗi nội bộ
                id: '1'
        '503':
          description: Dịch vụ không khả dụng - Dịch vụ tạm thời không khả dụng.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Dịch vụ không khả dụng
                id: '1'
        '504':
          description: Hết thời gian chờ cổng kết nối - Yêu cầu đã hết thời gian chờ.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32003
                  message: Hết thời gian chờ cổng kết nối
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    HistoricalAccountQuery:
      type: object
      description: >-
        Vị trí trong lịch sử cần đọc. Bỏ qua trường này hoặc gửi một đối tượng
        rỗng để đọc slot mới nhất đã được lập chỉ mục.
      properties:
        slot:
          type: integer
          description: >-
            Slot cần đọc trạng thái. Trả về tài khoản tại thời điểm cuối slot
            này. Slot sớm nhất được hỗ trợ là 444959999, tức trạng thái tại thời
            điểm bắt đầu epoch 1030. Khi bỏ qua, hệ thống đọc slot mới nhất đã
            được lập chỉ mục, giới hạn theo mức cam kết được yêu cầu.
          minimum: 444959999
          example: 445000000
        transactionIndex:
          type: integer
          description: >-
            Vị trí của một giao dịch trong slot. Trả về trạng thái tài khoản
            ngay sau khi giao dịch đó thực thi, thay vì tại thời điểm cuối slot.
            Yêu cầu phải có slot.
          minimum: 0
          maximum: 16777214
          example: 10
      additionalProperties: false
    DataSliceConfig:
      type: object
      description: >-
        Chỉ trả về một phần dữ liệu của từng tài khoản. Áp dụng cho kiểu mã hóa
        base64 và base64+zstd.
      properties:
        offset:
          type: integer
          description: Độ lệch byte bắt đầu đọc.
          example: 0
        length:
          type: integer
          description: Số byte cần trả về.
          example: 8
      required:
        - offset
        - length
    HistoricalContext:
      type: object
      description: Siêu dữ liệu phản hồi.
      properties:
        slot:
          type: integer
          description: >-
            Slot mới nhất mà kho lưu trữ lịch sử đã lập chỉ mục khi xử lý yêu
            cầu. Đây không phải là slot bạn đã truy vấn.
          example: 468129571
    HistoricalAccount:
      type: object
      description: >-
        Tài khoản tại vị trí được yêu cầu, cùng với vị trí mà trạng thái đó được
        ghi lần cuối.
      properties:
        lamports:
          type: integer
          description: Số lamport được gán cho tài khoản này.
          example: 531589475273
        owner:
          type: string
          description: >-
            Khóa công khai được mã hóa Base-58 của chương trình mà tài khoản này
            được gán cho.
          example: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
        data:
          description: >-
            Dữ liệu tài khoản. Với base64 hoặc base64+zstd, đây là một mảng gồm
            hai phần tử: dữ liệu đã mã hóa và kiểu mã hóa. Với jsonParsed, đây
            là một đối tượng gồm program, parsed và space. Các tài khoản không
            thể phân tích sẽ dùng mảng base64 dự phòng.
          oneOf:
            - type: array
              items:
                type: string
            - type: object
              properties:
                program:
                  type: string
                  description: Tên của chương trình sở hữu tài khoản.
                  example: spl-token
                parsed:
                  type: object
                  description: >-
                    Trạng thái tài khoản đã phân tích dành riêng cho chương
                    trình.
                space:
                  type: integer
                  description: Kích thước dữ liệu của tài khoản.
                  example: 82
        executable:
          type: boolean
          description: Cho biết tài khoản có chứa chương trình hay không.
          example: false
        rentEpoch:
          type: integer
          description: >-
            Epoch tiếp theo mà tài khoản này phải trả phí thuê. Các tài khoản
            được miễn phí thuê báo cáo giá trị u64 tối đa.
        space:
          type: integer
          description: Kích thước dữ liệu của tài khoản tính bằng byte.
          example: 82
        lastUpdatedAt:
          $ref: '#/components/schemas/AccountWritePosition'
      required:
        - lamports
        - owner
        - data
        - executable
        - rentEpoch
        - space
        - lastUpdatedAt
    ErrorResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          description: Phiên bản giao thức JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: Mã lỗi.
              example: -32602
            message:
              type: string
              description: Thông báo lỗi.
            data:
              type: object
              description: Dữ liệu bổ sung về lỗi.
        id:
          type: string
          description: Mã định danh khớp với yêu cầu.
          example: '1'
    AccountWritePosition:
      type: object
      description: >-
        Vị trí mà trạng thái được trả về được ghi lần cuối, tại hoặc trước vị
        trí được yêu cầu.
      properties:
        slot:
          type: integer
          description: >-
            Slot của lần ghi cuối cùng. Giá trị 444959999 với transactionIndex
            là null có nghĩa là tài khoản chưa thay đổi kể từ khi phạm vi dữ
            liệu lịch sử bắt đầu.
          example: 444999837
        transactionIndex:
          oneOf:
            - type: integer
            - type: 'null'
          description: >-
            Vị trí của giao dịch thực hiện lần ghi cuối cùng. Là null khi lần
            ghi xảy ra ngoài một giao dịch (ví dụ: phần thưởng epoch) hoặc khi
            tài khoản chưa thay đổi kể từ khi phạm vi dữ liệu lịch sử bắt đầu.
          example: 700
      required:
        - slot
        - transactionIndex
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Khóa API Helius của bạn. Bạn có thể nhận khóa miễn phí trong [bảng điều
        khiển](https://dashboard.helius.dev/api-keys).

````

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