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

# Lấy IDL

> Lấy IDL có hiệu lực cho một chương trình Solana tại bất kỳ slot nào từ danh mục mà Sự kiện đã phân tích sử dụng để giải mã các lệnh.

Các tham số đường dẫn, lược đồ phản hồi và ví dụ trên trang này được tạo từ định nghĩa OpenAPI.

Lấy IDL trả về IDL của chương trình tại một slot: phiên bản mới nhất bắt đầu có hiệu lực tại hoặc trước `slot`. `slot` không cần khớp chính xác với một phiên bản, vì vậy bạn có thể truyền bất kỳ thời điểm nào trong lịch sử. Để lấy một phiên bản cụ thể, hãy truyền `slot` của phiên bản đó từ [Liệt kê các phiên bản IDL](https://www.helius.dev/docs/vi/api-reference/parsed-events/idl-versions.md).

IDL đến từ cùng danh mục mà Sự kiện đã phân tích và [Luồng đã phân tích](https://www.helius.dev/docs/vi/parsed-streams.md) sử dụng để giải mã các lệnh. [Trình khám phá Orb](https://www.helius.dev/docs/vi/orb/explore-programs.md) sử dụng các endpoint này để hiển thị IDL của chương trình.

## Trường hợp sử dụng

* **Giải mã lịch sử bằng đúng giao diện.** Truyền slot của một giao dịch để lấy IDL đang có hiệu lực khi giao dịch đó được thực thi. Các chương trình thay đổi lệnh và tài khoản theo thời gian, vì vậy IDL hiện tại có thể diễn giải sai các giao dịch cũ.
* **Tìm tên chính xác cho bộ lọc.** [Quét lịch sử giao dịch](https://www.helius.dev/docs/vi/api-reference/parsed-events/scan.md) `match.programs[].instructions` chấp nhận tên lệnh đúng như cách chúng được ghi trong IDL.
* **Xem xét các thay đổi về giao diện.** Lấy hai phiên bản và so sánh `instructions` của chúng để xem bản nâng cấp đã thêm hoặc xóa những gì. Xem ví dụ tại [Liệt kê các phiên bản IDL](https://www.helius.dev/docs/vi/api-reference/parsed-events/idl-versions.md#ví-dụ-phát-hiện-phiên-bản-idl-mới).

## Định dạng IDL

Phản hồi là tài liệu IDL đúng như được lưu trữ. Các chương trình trong danh mục sử dụng một trong hai định dạng Anchor và các phiên bản của cùng một chương trình có thể sử dụng cả hai. Hãy kiểm tra định dạng bạn nhận được trước khi đọc:

| | Anchor cũ (trước 0.30) | Anchor 0.30+ |
| - | - | - |
| Tên và phiên bản chương trình | `name` và `version` ở cấp cao nhất | `metadata.name` và `metadata.version` |
| Địa chỉ chương trình | Không có `address` ở cấp cao nhất | `address` ở cấp cao nhất |
| Bộ phân biệt lệnh | Không được bao gồm | `instructions[].discriminator` |
| Cờ tài khoản của lệnh | `isMut`, `isSigner` | `writable`, `signer` |

Cả hai định dạng đều có `instructions`. Hầu hết IDL cũng có `accounts`, `types` và `errors`; nhiều IDL còn có `events`.

## Credit

Mỗi yêu cầu tốn **10 credit** và khả dụng trong tất cả các gói. Xem [Credit](https://www.helius.dev/docs/vi/billing/credits.md#sự-kiện-đã-phân-tích).

## Lỗi

| Trạng thái | Khi nào |
| - | - |
| `400` | `programId` không phải là địa chỉ base58 hợp lệ hoặc `slot` không phải là số nguyên 64 bit không dấu. |
| `401` | API key bị thiếu hoặc không hợp lệ. Nội dung phản hồi là văn bản thuần túy: `Unauthorized`. |
| `404` | Danh mục không có IDL cho chương trình hoặc không có phiên bản nào có hiệu lực tại hoặc trước `slot`. |

Các lỗi khác trả về nội dung JSON có thông báo `error`, chẳng hạn như `{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}`.

## Tham số yêu cầu

**programId** `string` *required*

Địa chỉ chương trình, được mã hóa bằng base58.

**slot** `number` *required*

Slot cần tra cứu. Slot này không cần khớp với slot kích hoạt của một phiên bản. Truyền `slot` từ Liệt kê các phiên bản IDL để lấy chính xác phiên bản đó hoặc truyền slot của một giao dịch để lấy IDL có hiệu lực khi giao dịch được thực thi.


## OpenAPI

````yaml vi/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: Sự kiện đã phân tích
  version: 0.1.0
  description: >-
    Phân tích cú pháp các giao dịch Solana và lịch sử giao dịch đã phân tích
    bằng Sự kiện đã phân tích.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - Sự kiện đã phân tích
      summary: Lấy IDL
      description: >-
        Lấy IDL có hiệu lực cho một chương trình tại một slot, tức là phiên bản
        mới nhất được kích hoạt tại hoặc trước `slot`.
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            Slot cần tra cứu. Slot này không cần khớp với slot kích hoạt của một
            phiên bản. Truyền một `slot` từ Liệt kê các phiên bản IDL để lấy
            chính xác phiên bản đó, hoặc slot của một giao dịch để lấy IDL có
            hiệu lực khi giao dịch được thực thi.
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            Tài liệu IDL được trả về đúng như khi lưu trữ. Cả định dạng Anchor
            cũ và định dạng Anchor 0.30+ đều có thể xuất hiện, vì vậy hãy kiểm
            tra định dạng đã nhận trước khi đọc.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: >-
                    Kamino Lend tại slot 182747476 (đã rút gọn còn một lệnh và
                    một lỗi)
                  value:
                    name: kamino_lending
                    version: 0.1.0
                    instructions:
                      - name: refreshObligation
                        accounts:
                          - name: lendingMarket
                            isMut: false
                            isSigner: false
                          - name: obligation
                            isMut: true
                            isSigner: false
                        args: []
                    errors:
                      - code: 6000
                        name: InvalidMarketAuthority
                        msg: Market authority is invalid
                Anchor 0.30+ IDL:
                  summary: >-
                    Pump AMM tại slot 454326107 (đã rút gọn còn một lệnh và một
                    lỗi)
                  value:
                    address: pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
                    metadata:
                      name: pump_amm
                      version: 0.1.0
                      spec: 0.1.0
                      description: Created with Anchor
                    instructions:
                      - name: toggle_boost
                        discriminator:
                          - 117
                          - 161
                          - 160
                          - 74
                          - 223
                          - 137
                          - 118
                          - 99
                        accounts:
                          - name: admin
                            signer: true
                            relations:
                              - global_config
                          - name: global_config
                            writable: true
                        args:
                          - name: enabled
                            type: bool
                    errors:
                      - code: 6000
                        name: FeeBasisPointsExceedsMaximum
        '400':
          $ref: '#/components/responses/IdlBadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            Danh mục không có IDL cho chương trình hoặc không có phiên bản nào
            có hiệu lực tại hoặc trước `slot`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      no IDL found for program
                      KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before
                      slot 1
components:
  parameters:
    ProgramId:
      name: programId
      in: path
      required: true
      description: Địa chỉ chương trình, được mã hóa bằng base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        Một tài liệu IDL, được trả về đúng như khi lưu trữ. Có hai định dạng:


        - **Anchor cũ** (trước 0.30): có `name` và `version` ở cấp cao nhất. Các
        tài khoản của lệnh sử dụng `isMut` và `isSigner`.

        - **Anchor 0.30+**: có `address` và `metadata` (`name`, `version`,
        `spec`, `description`) ở cấp cao nhất. Các lệnh chứa một
        `discriminator`, còn tài khoản của lệnh sử dụng `writable` và `signer`.


        Cả hai định dạng đều có `instructions`. Hầu hết IDL cũng có `accounts`,
        `types` và `errors`; nhiều IDL còn có `events`. Các phiên bản của cùng
        một chương trình có thể sử dụng các định dạng khác nhau.
    ErrorResponse:
      type: object
      description: Phản hồi lỗi ở cấp yêu cầu.
      properties:
        error:
          type: string
          description: Thông báo lỗi.
  responses:
    IdlBadRequest:
      description: >-
        `programId` không phải là một địa chỉ hợp lệ hoặc `slot` không phải là
        số nguyên 64 bit không dấu.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Invalid program ID:
              value:
                error: 'invalid program id: notanaddress: String is the wrong size'
            Invalid slot:
              value:
                error: 'invalid activation slot: abc: invalid digit found in string'
    Unauthorized:
      description: >-
        Khóa API bị thiếu hoặc không hợp lệ. Nội dung phản hồi là văn bản thuần
        túy.
      content:
        text/plain:
          schema:
            type: string
          examples:
            default:
              value: Unauthorized
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

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