メインコンテンツへスキップ
GET
IDL の取得
このページのパスパラメータ、レスポンススキーマ、例は、OpenAPI 定義から生成されています。 「IDL を取得」は、指定したスロット時点のプログラムの IDL、つまり slot 以前に有効になった最新バージョンを返します。slot はバージョンと完全に一致する必要はないため、履歴上の任意の時点を指定できます。特定のバージョンを取得するには、IDL バージョン一覧にあるそのバージョンの slot を指定します。 IDL は、Parsed Events と Parsed Streams が命令のデコードに使用するものと同じカタログから取得されます。Orb エクスプローラーは、これらのエンドポイントを使用してプログラムの IDL を表示します。

ユースケース

  • 適切なインターフェースで履歴をデコードします。 トランザクションのスロットを指定すると、その実行時に有効だった IDL を取得できます。プログラムの命令やアカウントは時間の経過とともに変わるため、現在の IDL では古いトランザクションを誤って解釈する可能性があります。
  • フィルター用の正確な名前を確認します。 トランザクション履歴をスキャンの match.programs[].instructions は、IDL に記載されている命令名を受け付けます。
  • インターフェースの変更を確認します。 2 つのバージョンを取得して instructions を比較すると、アップグレードで追加または削除された内容を確認できます。IDL バージョン一覧の例を参照してください。

IDL 形式

レスポンスは、保存されている IDL ドキュメントそのものです。カタログ内のプログラムは 2 種類の Anchor 形式のいずれかを使用しており、1 つのプログラムの各バージョンで両方の形式が使われる場合もあります。内容を読み取る前に、受け取った形式を確認してください。 どちらの形式にも instructions があります。ほとんどの IDL には accounts、types、errors もあり、多くの IDL には events もあります。

クレジット

各リクエストには 10 クレジットが必要で、すべてのプランで利用できます。クレジットを参照してください。

エラー

その他のエラーは、{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"} などの error メッセージを含む JSON 本文を返します。

リクエストパラメータ

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 ドキュメントです。次の 2 つの形式があります。

  • 従来の Anchor(0.30 より前):トップレベルに name と version があります。命令アカウントでは isMut と isSigner を使用します。
  • Anchor 0.30+:トップレベルに address と metadata(name、version、spec、description)があります。命令には discriminator が含まれ、命令アカウントでは writable と signer を使用します。

どちらの形式にも instructions があります。ほとんどの IDL には accounts、types、errors もあり、多くには events があります。同じプログラムでも、バージョンごとに異なる形式が使用される場合があります。