指令是对 Solana 程序执行特定功能的请求。指令是链上操作的基本构建块。每条指令只指定一个要调用的程序、所需的账户,以及由程序解析的字节数组数据(通常包括用于识别要运行的指令处理器的 discriminator,以及序列化参数)。每条指令的执行逻辑都存储在程序中,每个程序定义了自己的指令集。要与 Solana 网络交互,需要将一条或多条指令添加到交易中,并发送到网络进行处理。
展示一笔包含指令的交易及其三大组成部分的示意图
指令结构
指令的三个字段(program_id、accounts、data),AccountMeta,已编译指令,以及 SOL 转账示例。
指令自省
程序如何通过 Instructions sysvar 检查当前交易中的同级指令。
关键要点
- 单一程序:每条指令仅针对一个程序,通过
program_id。 - 账户元数据:
accounts数组为指令读取或写入的每个账户提供账户元数据。 - 不透明数据:
data字段是一个字节数组,其格式由目标程序定义。
Is this page helpful?