交易和指令 (Transactions and Instructions)
Solana 交易包含一个或多个指令,指令指定目标程序、账户元数据和操作数据。程序定义对应的指令处理逻辑,运行时按交易中的顺序执行。 以下是关于事务处理的关键细节:
- 如果一笔交易包含多个指令,则指令将按照它们被添加到交易中的顺序执行
- 交易是“原子性”的——要么所有指令都成功处理,要么整个交易失败且不进行任何更改 为了简化,可以将交易视为处理一个或多个指令的请求
交易按序执行指令,指令失败时业务状态变化回滚。交易手续费及 durable nonce 的特殊处理与业务回滚分别定义,不能把失败概括为所有状态都没有变化。
关键点
- Solana 交易包括在网络上调用程序的指令请求。
- 交易是原子的 - 如果任何指令失败,整个交易将失败且不会发生任何更改。
- 一笔交易的最大大小为 1232 字节。
- 每条指令需要 3 个信息:
- 被调用程序所在的地址
- 指令将发起读或写操作的目标账户列表
- 任何被指令所需要的附加数据(如函数参数)
基本示例
以下是一个表示单条指令将 SOL 从发送者转移到接收者的交易的图示。