Anchor框架中Account InterfaceAccount Program Interface SystemAccount Signer 账户类型简单解析

  • 曲弯
  • 发布于 10小时前
  • 阅读 32

SolanaAnchor框架通过不同类型的账户结构体,在编译时自动完成大量安全和一致性检查,这能极大提升开发效率与合约安全性。账户类型核心作用安全性验证主要应用场景**Account<'info,

<!--StartFragment-->

Solana Anchor 框架通过不同类型的账户结构体,在编译时自动完成大量安全和一致性检查,这能极大提升开发效率与合约安全性。

账户类型 核心作用 安全性验证 主要应用场景
Account&lt;'info, T> 存储程序自定义数据结构 自动验证所有者是否为当前程序 程序的主要状态账户,如用户资料、游戏状态
InterfaceAccount&lt;'info, T> 与特定接口规范交互的账户容器 验证账户符合接口预期(如代币标准) 操作符合代币标准(SPL Token)的账户,如 Mint(代币铸造账户)、TokenAccount(代币账户)
Program&lt;'info, T> 验证交互的目标程序 验证账户是否为指定的程序 声明跨程序调用(CPI)中需要的程序,如 system_program(系统程序)、token_program(代币程序)
Interface&lt;'info, T> 验证程序接口,支持多版本兼容 验证程序ID是否属于一组给定程序之一 声明支持多种代币程序(如 TokenToken2022)的接口
SystemAccount&lt;'info> 代表由系统程序拥有的基础账户 验证账户所有者是否为系统程序 作为普通的SOL接收方,不涉及程序特定数据结构
Signer&lt;'info> 声明交易签名者 验证该账户是否对当前交易进行了签名 权限控制,确保调用者已授权

实际应用

  • 如何选择:选择依据主要取决于账户的目的所需的安全检查级别

    • 如果账户用于存储你程序自己定义的数据,使用 Account&lt;'info, T>
    • 如果需要与外部标准(如代币)交互,使用 InterfaceAccount&lt;'info, T>Interface&lt;'info, T>
    • 如果账户只是交易的签名者,使用 Signer&lt;'info>
    • 如果账户是一个普通的目的地(如接收SOL),且不需要解析特定数据,使用 SystemAccount&lt;'info>或经过注释的 UncheckedAccount&lt;'info>

<!--EndFragment-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
曲弯
曲弯
0xb51E...CADb
江湖只有他的大名,没有他的介绍。