跳转到主要内容
GET
获取 IDL
本页中的路径参数、响应模式和示例均根据 OpenAPI 定义生成。 “获取 IDL”会返回程序在某个时隙的 IDL:即在 slot 或之前生效的最新版本。slot 无需与某个版本完全匹配,因此你可以传入历史上的任意时间点。要获取特定版本,请传入其在列出 IDL 版本中的 slot。 该 IDL 来自解析事件和解析流用于解码指令的同一目录。Orb 浏览器使用这些端点显示程序 IDL。

使用场景

  • 使用正确的接口解码历史记录。 传入交易的时隙,即可获取交易执行时生效的 IDL。程序的指令和账户会随时间变化,因此当前 IDL 可能会错误解析较早的交易。
  • 查找用于筛选器的准确名称。 扫描交易历史记录 match.programs[].instructions 接受 IDL 中定义的指令名称。
  • 审查接口变更。 获取两个版本并比较其 instructions,了解升级添加或移除了哪些内容。请参阅列出 IDL 版本中的示例。

IDL 格式

响应是按存储形式返回的 IDL 文档。目录中的程序使用两种 Anchor 格式之一,同一程序的不同版本可能同时使用这两种格式。读取前,请先确认收到的格式: 两种格式都包含 instructions。大多数 IDL 还包含 accounts、types 和 errors,许多 IDL 还包含 events。

积分

每个请求消耗 10 积分,所有套餐均可使用。请参阅积分。

错误

其他错误会返回包含 error 消息的 JSON 正文,例如 {"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}。

请求参数

string
必填
程序地址,使用 base58 编码。
number
必填
要查询的时隙。它无需与某个版本的激活时隙匹配。传入“列出 IDL 版本”中的 slot 可获取该确切版本;传入交易的时隙可获取该交易执行时生效的 IDL。

授权

api-key
string
query
必填

路径参数

programId
string
必填

程序地址,使用 base58 编码。

示例:

"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"

slot
integer<uint64>
必填

要查询的时隙。它不需要与某个版本的激活时隙一致。传入“列出 IDL 版本”返回的 slot 可获取该确切版本,传入交易的时隙则可获取交易执行时生效的 IDL。

必填范围: x >= 0
示例:

205509752

响应

按存储时的原样返回 IDL 文档。可能返回旧版 Anchor 格式或 Anchor 0.30+ 格式,因此请在读取前检查收到的是哪种格式。

按存储时的原样返回 IDL 文档。可能出现两种格式:

  • 旧版 Anchor(0.30 之前):顶层包含 name 和 version。指令账户使用 isMut 和 isSigner。
  • Anchor 0.30+:顶层包含 address 和 metadata(name、version、spec、description)。指令包含 discriminator,指令账户使用 writable 和 signer。

两种格式都包含 instructions。大多数 IDL 还包含 accounts、types 和 errors,许多 IDL 还包含 events。同一程序的不同版本可以使用不同格式。