什么是 Anchor 和 Anchor Program Registry?
作者 Pari
Anchor 是领先的 Solana 开发框架,用于在 Solana 上编写安全、可靠且高效的高级程序。Anchor 中的 program 是 Solana 区块链上的智能合约,使用户能够将数据锚定到 Solana 区块链上。得益于 Solana 庞大的开发者社区,Solana 上经过验证的 program 会托管在 Anchor Program Registry 上,方便访问。
本文将帮助你了解如何使用最重要的 Solana 开发者工具之一——Anchor,以及用于在 Solana 上构建应用的 Anchor Program Registry。我们还将对比 Anchor 与 Seahorse(一个基于 Python 的、用于与 Solana 交互的开发框架)。
什么是 Solana 账户模型?
开发者在 Solana 区块链上构建的一切都涉及程序(programs)和账户(accounts),它们负责在区块链上执行代码和存储数据。Solana 中有多种账户类别,包括:
- 数据账户(Data accounts) - 存储数据
- 程序账户(Program accounts) - 存储可执行程序
- 原生账户(Native accounts) - 表示 Solana 上的原生程序
每个账户都存储一组信息:
- lamports - 账户所持有的 lamport 数量
- owner - 该账户的程序所有者
- executable - 用于检查该账户是否可以处理指令
- data - 账户存储的原始数据字节数组
- rent_epoch - 该账户下一次需要缴纳租金费用的 epoch
什么是 anchor?
Anchor 是一个用于在 Solana 上编写安全、可靠的高级程序的框架,它抽象了账户的底层构造以及 Solana 程序接口的修改逻辑。
框架的作用是提供一个基础,使用户无需从零开始编写不必要的逻辑,帮助用户避免冗余代码,并帮助他们编写简洁、安全的程序。具体来说,Anchor 通过样板代码提供反序列化的账户和指令数据、一个命令行界面(CLI),以及一个用于开发 Solana 应用的工作区。
anchor 是如何工作的?
Anchor 使用宏(macros)和 trait 为开发者生成样板 Rust 代码。每个 Anchor 程序由三个部分组成:
- declare_id - 用于声明程序链上地址的宏
- #[program] - 用于标记包含程序指令逻辑的模块的属性宏
- #[account] - 用于为程序定义自定义账户类型的属性宏
以下是 Anchor 程序的基本结构:

1. 创建默认密钥对
当我们第一次构建 Anchor 程序时,它会生成一个新的密钥对,作为部署该程序的默认密钥对。
该公钥应作为 declare_id! 宏中指定的 programID 使用。
2. 编写程序指令
接着,我们可以使用 #[program] 属性单独为程序编写指令。每个指令函数都需要一个 Context 类型的参数,并且可以选择性地包含表示指令数据的其他函数参数。Anchor 会自动处理指令数据的反序列化,因此用户可以将指令数据当作 Rust 类型来使用。
3. 实现账户反序列化器
#[derive(Accounts)] 会在给定的 struct 上实现一个账户反序列化器,从而无需手动对每个账户进行反序列化。它负责执行所有必要的约束检查,确保各账户满足程序安全运行所需的条件。
4. 调用 initialize 函数
当 Initialize 函数被调用时,程序会:
- 检查传入指令的账户是否与 Initialize struct 中指定的账户类型匹配
- 根据额外指定的约束条件检查账户
以上就是 Anchor 程序的工作原理,让你能够开始构建 Anchor 程序。想要了解更多关于 Anchor 程序的信息,强烈建议查阅其官方文档。
什么是 anchor program registry (apr)?
Anchor Program Registry(APR)是一个目录,收录了已在 Solana 区块链上注册的 Anchor 程序,方便用户查找和访问。APR 确保 Anchor 程序在区块链上完成注册和身份验证。
Anchor Program Registry 中有许多程序可以简化你的工作,我们来看几个例子:
- token_signer - 提供一套用于 Solana 密钥管理和安全的程序。
- spl_governance - 一组面向 Sealevel 并行运行时 的链上程序。
- crate_token - 允许任何人创建、管理和交易一篮子代币化资产。
Solana 开发者如何使用 anchor program registry?
Solana 开发者使用 Anchor Program Registry 访问 Solana 区块链上经过验证的程序。Anchor Program Registry 收录了经过验证程序的源代码,让开发者可以访问一个可用代码的仓库。
你可以按照以下流程使用 Anchor Program Registry:
- 访问某个 Anchor Program 的地址
- 连接你的钱包
- 进入 UI 界面
- 签名并发送交易以执行某条指令
APR 界面会列出该 Anchor 程序支持的指令列表,以及供你为特定指令配置输入参数的表单字段。
什么是 Seahorse?
Seahorse 是一个类似 Anchor 的 Solana 开发框架,但它是为 Python 开发者构建的。Seahorse 提供了一套用于在 Solana 区块链上构建、部署程序和账户并与之交互的工具。它支持 JavaScript、Rust、Python 等多种编程语言,并为新开发者配备了完整的资源和文档。
Anchor 与 Seahorse 对比
学习 anchor 的相关资源
以下是一些可以帮助你学习 Anchor 框架的资源:
- Anchor Docs - 查找最相关、最新的信息
- Soldev - 通过示例代码开始使用 Anchor 开发智能合约
- Sol Playground - 使用在线 IDE 开始用 Anchor 开发程序
还有大量资源可以帮助你学习 Anchor 框架,并开始构建自己的去中心化应用。
开始使用 anchor 和 Alchemy 进行开发
Anchor 框架是构建**可靠且安全的 Solana 程序(智能合约)**的宝贵工具。此外,Anchor Program Registry 是 Solana 区块链上经过验证程序的目录,是实现更好可组合性的关键资源。
Anchor 框架的多功能性和可扩展性使其成为 Solana 开发者的理想选择。如果你已准备好开启 Solana 开发之旅,现在就注册一个免费的 Solana RPC 账户 吧!
相关概览
Solana2026年7月27日
Solana 节点:验证者节点、RPC 节点与自建节点
Solana 节点是什么,验证者节点、RPC 节点与辅助数据系统有何区别,以及何时应自建节点、何时应使用第三方服务。
Solana2026年7月22日
Solana 归档数据:如何查询完整的区块与交易历史
Solana 归档数据详解:节点为何修剪历史数据、哪些 RPC 方法需要归档访问权限,以及如何大规模查询完整的区块与交易历史。
Solana2026年5月28日
Solana Agent Kit 与 GOAT 与 ElizaOS:该选哪个框架?
对比 Solana Agent Kit、GOAT 与 ElizaOS:Solana 原生深度、多链广度还是完整的 agent 运行时。包含代码示例与决策框架。

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。