SolanaAnchor框架通过不同类型的账户结构体,在编译时自动完成大量安全和一致性检查,这能极大提升开发效率与合约安全性。账户类型核心作用安全性验证主要应用场景**Account<'info,
<!--StartFragment-->
Solana Anchor 框架通过不同类型的账户结构体,在编译时自动完成大量安全和一致性检查,这能极大提升开发效率与合约安全性。
| 账户类型 | 核心作用 | 安全性验证 | 主要应用场景 |
|---|---|---|---|
Account<'info, T> |
存储程序自定义数据结构 | 自动验证所有者是否为当前程序 | 程序的主要状态账户,如用户资料、游戏状态 |
InterfaceAccount<'info, T> |
与特定接口规范交互的账户容器 | 验证账户符合接口预期(如代币标准) | 操作符合代币标准(SPL Token)的账户,如 Mint(代币铸造账户)、TokenAccount(代币账户) |
Program<'info, T> |
验证交互的目标程序 | 验证账户是否为指定的程序 | 声明跨程序调用(CPI)中需要的程序,如 system_program(系统程序)、token_program(代币程序) |
Interface<'info, T> |
验证程序接口,支持多版本兼容 | 验证程序ID是否属于一组给定程序之一 | 声明支持多种代币程序(如 Token和 Token2022)的接口 |
SystemAccount<'info> |
代表由系统程序拥有的基础账户 | 验证账户所有者是否为系统程序 | 作为普通的SOL接收方,不涉及程序特定数据结构 |
Signer<'info> |
声明交易签名者 | 验证该账户是否对当前交易进行了签名 | 权限控制,确保调用者已授权 |
如何选择:选择依据主要取决于账户的目的和所需的安全检查级别。
Account<'info, T>。InterfaceAccount<'info, T>或 Interface<'info, T>。Signer<'info>。SystemAccount<'info>或经过注释的 UncheckedAccount<'info>。<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!