账户约束
Anchor 账户约束示例
Anchor 账户的极简参考示例 约束.
查看账户约束的 源代码 以获取实现细节。
常规约束
#[account(signer)]
描述:检查给定账户是否签署了交易。如果只需要对账户使用此约束,请考虑使用 Signer 类型。
示例:Github
|
Solpg
#[account(mut)]
描述:检查给定账户是否可变。使 Anchor 持久化任何状态更改。
示例:Github
|
Solpg
#[account(init)]
描述:通过向系统程序进行 CPI 创建账户并初始化它(设置其账户判别器)。
示例:Github
|
Solpg
#[account(init_if_needed)]
描述:与 init 相同,但仅在账户尚不存在时运行。需要 init-if-needed cargo 特性。
示例:Github
|
Solpg
#[account(seeds, bump)]
描述:检查给定账户是否是从当前执行程序、种子和(如果提供)bump 派生的 PDA。
示例:Github
|
Solpg
#[account(has_one = target)]
描述:检查账户上的目标字段是否与 Accounts 结构体中目标字段的键匹配。
示例:Github
|
Solpg
#[account(address = expr)]
描述:检查账户密钥是否与公钥匹配。
示例:[Github](https://github.com/solana-developers/anchor-examples/t极简参考示例[极简参考示例](https://github.com/solana-developers/anchor-examples/tree/main/account-constraints/address)
|
Solpg
#[account(owner = expr)]
描述:检查账户所有者是否匹配 expr。
示例:Github
|
Solpg
#[account(executable)]
描述:检查账户是否可执行(即账户是一个程序)。
示例:Github
|
Solpg
#[account(zero)]
描述:检查账户判别器是否为零。用于大于 10 Kibibyte 的账户。
示例:Github
|
Solpg
#[account(close = target)]
描述:通过将 lamports 发送到目标并重置数据来关闭账户。
示例:Github
|
Solpg
#[account(constraint = expr)]
描述:自定义约束,检查给定表达式是否评估为 true。
示例:Github
|
Solpg
#[account(realloc)]
描述:用于在指令开始时重新分配程序账户空间。
示例:Github
|
Solpg
SPL 约束
#[account(token::*)]
描述:使用指定的 mint 和 authority 创建或验证 token 账户。
示例:Github
|
Solpg
#[account(mint::*)]
描述:使用指定参数创建或验证 mint 账户。
示例:Github
|
Solpg
#[account(associated_token::*)]
描述:创建或验证关联的 token 账户。
示例:Github
|
Solpg
#[account(*::token_program = expr)]
描述:可以可选地覆盖 token_program。
示例:Github
|
Solpg
指令属性
#[instruction(...)]
描述:你可以使用 #[instruction(..)]
属性访问指令的参数。你极简参考示例极简参考示例极简参考示例必须按照与指令处理程序相同的顺序列出它们,但可以省略你需要的最后一个参数之后的所有参数。跳过参数将导致错误。
有效用法:
无效用法,将导致错误: