JavaScript 不可用。

我们检测到浏览器禁用了 JavaScript。请启用 JavaScript 或改用支持的浏览器来继续访问

TODO: 准备空闲时间做 Anchor 系列教程 (持续更新)

作者:Anban Chu

发表日期:2025年05月15日

所属目录:其他

标签:

教程的分类

  • Anchor 文档教程 (偏向入门)
  • Anchor SPL Tokens (SPL专题)
  • Anchor AMM Swap 合约程序 (项目应用)
  • Anchor Staking (项目应用)
  • Anchor GMGN 类的合约程序 (项目应用)
    • 手续费扣留等 Wrap 包装

《Anchor 文档教程》的大纲

主要依靠官方文档和API,初步的大纲:

  • 环境安装
  • Hello Anchor
  • Anchor 程序结构
  • Anchor 账户类型
    • Signer<'info>: 验证账户已签署交易的类型
    • Program<'info, T>: 验证账户是指定程序类型
    • Account<'info, T>: 在反序列化时检查所有权的账户容器
    • UncheckedAccount<'info>: AccountInfo 类型的显式包装器,强调不执行检查
      • 添加 /// CHECK: 文档注释,解释为什么无需进行类型检查。
    • AccountInfo<'info>: 可以作为类型使用,但应改用 Unchecked Account
    • SystemAccount<'info>: 验证账户由系统程序拥有的类型
    • AccountLoader<'info, T>: 用于按需零拷贝反序列化的类型
    • Box<Account<'info, T>>: 用于节省栈空间的 Box 类型
    • Interface<'info, T>: 验证账户属于给定程序集之一的类型
    • InterfaceAccount<'info, T>: 在反序列化时检查所有权的账户容器
    • Option<Account<'info, T>>: 用于可选账户的 Option 类型
    • Sysvar<'info, T>: 验证账户是 sysvar 并对其进行反序列化的类型
  • Anchor 账户约束
    • Anchor PDA
    • 详细的约束:
    • 初始化账户 init / init_if_needed
      • #[account(init)]
      • #[account(init_if_needed)]
      • #[account(signer)] (支付者 payer / 空间 space
        • 常被 Signer<'info> 取代
    • 可变性(mut)与只读: #[account(mut)]
    • 种子与 PDA
      • #[account(seeds, bump)] 验证 PDA
      • #[account(realloc)] 重分配
      • #[account(zero)] 重分配
    • 零拷贝账户: #[account(zero_copy)]
    • 关闭账户:#[account(close = target)]
    • 所有权相关约束 owner / has_one / constraint
      • #[account(owner = expr)]
      • #[account(has_one = target)]
      • #[account(constraint = expr)]
      • #[account(address = expr)]
      • #[account(executable)]
    • SPL 约束
      • SPL#[account(token::*)]
      • SPL#[account(mint::*)]
      • SPL#[account(associated_token::*)]
      • SPL#[account(*::token_program = expr)]
    • 指令属性
      • #[instruction(...)]
  • Anchor 账户空间
  • Anchor IDL
  • Anchor CPI
    • Solana转账
    • 调用其他程序,无依赖组合 declare_program
  • Anchor 错误
  • Anchor 事件
    • emit / emit_cpi
  • 零拷贝
  • Anchor Cli
  • Anchor 智能合约安全知识
  • Anchor 测试
  • 简单的应用:
    • program-derived-addresses
    • repository-layo

第一个教程完成之后,再考虑搞后面的教程。规划太多,容易偏离初心。

🌹 送人玫瑰,手留余香;人人为我,我为人人。加油,奥利给!🌹

《Anchor SPL Tokens 专题》

《Anchor AMM Swap 合约程序编写》

《Anchor Staking 合约程序编写》

《Anchor GMGN 类合约程序编写》





以上就是本篇文章的全部内容了,希望对你有帮助。

>> 本站不提供评论服务,技术交流请在 Twitter 上找我