指令自省

概要

Instructions sysvar(Sysvar1nstructions1111111111111111111111111)允许程序通过索引或相对偏移读取当前交易中的所有顶层指令。CPI 内部指令不可访问。

Instructions sysvar

程序可以通过 Instructions sysvarSysvar1nstructions1111111111111111111111111)检查当前交易中的所有顶层指令。这使得程序能够检查同一笔交易中的其他指令,例如验证某个特定指令是否与当前正在执行的指令在同一笔交易中。

Instructions sysvar 仅包含交易消息中的顶层指令。通过 CPI 调用的内部指令无法通过该 sysvar 访问。

instructions sysvar 不是通过常规的 Sysvar trait 访问的,而是通过 solana_instructions_sysvar crate 中的自由函数访问。

sysvar 数据采用自定义二进制布局进行序列化:

偏移量大小描述
02num_instructions(u16,小端序)
22 * N每个指令的字节偏移量(每个 u16)
可变可变序列化的指令数据
最后 2 字节2当前指令索引(u16,小端序)

每个序列化的指令包含:账户数量(u16)、账户(每个为 33 字节,1 个标志字节 + 32 字节 pubkey)、程序 ID(32 字节)、数据长度(u16)以及原始数据字节。

主要功能:

Is this page helpful?

Table of Contents

Edit Page

管理者

©️ 2026 Solana 基金会版权所有
取得联系