概要
核心程序为网络提供基础功能:账户管理(System Program)、共识(Vote、Stake)、交易优化(Compute Budget、Address Lookup Table)以及隐私保护(ZK ElGamal Proof)。包含 System Program 指令参考和全部 7 个程序的源码链接。
System Program
System
Program(11111111111111111111111111111111)是唯一可以创建新账户的程序。所有新账户最初都归 System
Program 所有,但通常在创建时会重新分配所有权。System Program 每条指令会消耗
DEFAULT_COMPUTE_UNITS(150
CUs)。
System Program 指令参考
| 指令 | 描述 |
|---|---|
CreateAccount | 创建新账户。分配 space 字节,指定 owner,并从付款人处转移 lamports。新账户和付款人都必须签名。 |
CreateAccountWithSeed | 与 CreateAccount 类似,但新账户地址由账户 pubkey、seed 字符串和 owner program 派生。用于派生地址的账户 pubkey 和付款人都必须签名。 |
Assign | 设置账户所有者。账户必须签名。如果已经是该所有者则无操作。 |
AssignWithSeed | 与 Assign 类似,但用于 seed 派生地址。用于派生地址的账户 pubkey 必须签名。 |
Transfer | 在账户之间转移 lamports。发送方必须签名。 |
TransferWithSeed | 与 Transfer 类似,但从 seed 派生地址转出。用于派生地址的账户 pubkey 必须签名。 |
Allocate | 设置账户数据长度。账户必须签名,数据需为空,且归 System Program 所有。最大 10 MiB。 |
AllocateWithSeed | 与 Allocate 类似,但用于 seed 派生地址。同时指定所有者。用于派生地址的账户 pubkey 必须签名。 |
AdvanceNonceAccount | 推进 nonce 值到当前 blockhash。nonce 权限人必须签名。 |
InitializeNonceAccount | 将账户初始化为 nonce 账户并指定权限人。账户必须满足 rent 免除条件。 |
AuthorizeNonceAccount | 更改 nonce 权限人。当前权限人必须签名。 |
WithdrawNonceAccount | 从 nonce 账户提取 lamports。权限人必须签名。如果不是关闭账户,剩余余额必须覆盖 rent。 |
UpgradeNonceAccount | 将 nonce 账户从旧版本升级到当前版本格式。账户必须可写且包含旧版 nonce。 |
所有核心程序
| 程序 | 程序 ID | 描述 | 源码 |
|---|---|---|---|
| System | 11111111111111111111111111111111 | 创建账户、转移 SOL、分配数据并分配所有权 | Source |
| Vote | Vote111111111111111111111111111111111111111 | 创建和管理用于跟踪 validator 投票状态和奖励的账户 | Source |
| Stake | Stake11111111111111111111111111111111111111 | 创建和管理对 validator 的质押委托 | Source |
| Config | Config1111111111111111111111111111111111111 | 在链上以基于密钥的访问控制方式存储配置信息 | Source |
| Compute Budget | ComputeBudget111111111111111111111111111111 | 为交易设置计算单元限制和优先级费用 | Source |
| Address Lookup Table | AddressLookupTab1e1111111111111111111111111 | 管理用于引用多个账户的交易的地址查找表 | Source |
| ZK ElGamal Proof | ZkE1Gama1Proof11111111111111111111111111111 | 验证 ElGamal 加密数据的零知识证明 | Source |
加载器程序
每个程序都归属于一个加载器程序。加载器负责其所拥有程序的部署、升级和执行。完整的加载器及其地址列表,请参见 加载器程序。
Is this page helpful?