一笔交易包含一个或多个 指令、授权更改的账户签名,以及一个最新区块哈希。网络会将交易中的所有指令一起处理。如果任何指令失败,整个交易将失败,所有状态更改都会被回滚。
一个展示两笔交易的简化图示
交易结构
签名、消息格式(头部、账户地址、区块哈希、已编译指令)、二进制编码、大小限制,以及 SOL 转账示例。
版本化交易
传统格式与 V0 格式、地址查找表(ALT)、ALT 解析和版本对比。
交易处理流程
完整的 8 阶段处理流程(从接收到提交)、从网络读取交易详情,以及验证错误参考。
持久随机数
使用持久随机数进行离线签名、随机数生命周期、检测、验证流程及失败行为。
关键要点
- 原子执行:所有指令全部成功或全部回滚。即使失败也会收取手续费。
- 大小限制:最大 1,232 字节,来源于 IPv6 最小 MTU(1,280 字节)减去 48 字节网络头部。
- 签名:每个签名者提供一个 64 字节的 Ed25519 签名。
- 区块哈希过期:交易的最新区块哈希在 150 个 slot 内有效。
限制
| 限制 | 数值 | 来源 |
|---|---|---|
| 最大交易大小 | 1,232 字节 | PACKET_DATA_SIZE |
| 每笔交易最大账户数 | 64 | 强制限制(当 increase_tx_account_lock_limit 激活时为 128,目前未激活) |
| 区块哈希过期 | 150 个 slot | MAX_PROCESSING_AGE |
| 签名大小 | 64 字节(Ed25519) | -- |
| 每个签名的基础手续费 | 5,000 lamport | 手续费 |
| 最大执行指令数 | 64(顶层 + CPI) | MAX_INSTRUCTION_TRACE_LENGTH |
| 每个数据包最大签名数 | 12 | MAX_SIGNATURES_PER_PACKET |
Is this page helpful?