Anchor 是领先的 Solana 开发框架,用于在 Solana 上编写安全、可靠且高效的高级程序。Anchor 中的程序是 Solana 区块链上的智能合约,使用户能够将数据锚定到 Solana 区块链。由于 Solana 拥有庞大的开发者社区,Solana 上经过验证的程序托管在 Anchor 程序注册表中,以方便访问。
本文将帮助您了解如何使用最重要的 Solana 开发工具之一Anchor 和 Anchor Program Registry 在 Solana 上进行构建。我们还将比较 Anchor 和 Seahorse(用于与 Solana 交互的基于 Python 的开发框架)。
Solana 账户模型是什么?
开发人员在 Solana 区块链上构建的所有内容都涉及程序和账户,它们在区块链上执行并存储数据。Solana中有不同的帐户类别,包括:
数据账户——存储数据
程序帐户-存储可执行程序
原生账户- 表示 Solana 上的原生程序
每个帐户都存储了一组信息:
lampors - 该账户拥有的 lampors 数量
所有者- 帐户的程序所有者
可执行文件-检查账户是否可以处理指令
数据- 帐户存储的原始数据字节数组
rent_epoch - 账户欠租金的下一个时期
什么是 Anchor?
Anchor是一个用于在 Solana 上编写安全、可靠和高级程序的框架,它抽象了账户的低级构建和对 Solana 程序接口的修改。
框架充当基础,使用户不必从头开始创建不必要的逻辑,帮助用户避免冗余代码,并帮助他们编写干净安全的程序。具体来说,Anchor 通过样板、命令行界面 (CLI) 和用于开发 Solana dapps 的工作区提供反序列化的帐户和指令数据。
Anchor 如何工作?
Anchor 使用宏和特征为开发人员生成样板 Rust 代码。每个 Anchor 程序由三个组件组成:
declared_id - 用于声明程序链上地址的宏
#[program] - 用于表示包含程序指令逻辑的模块的属性宏
#[account] - 用于定义程序的自定义帐户类型的属性宏
以下是 Anchor 程序的基本结构:
1. 创建默认密钥对
当我们第一次构建 Anchor 程序时,它会生成一个新的密钥对,作为部署程序的默认密钥对。
公钥应该作为declare_id!中指定的programID。
2. 指导程序
然后,我们可以使用 #[program] 属性单独指示程序。每个指令函数都需要一个Context类型的参数,并且可以选择包含表示指令数据的附加函数参数。Anchor 将自动处理指令数据反序列化,以便用户可以将指令数据用作 Rust 类型。
3. 实现帐户反序列化器
#[derive(Accounts)]在给定结构上实现帐户反序列化器,无需手动反序列化每个帐户。它负责执行所有必要的约束检查,并确保帐户满足程序安全运行所需的条件。
4. 调用初始化函数
当调用 Initialize 函数时,程序:
检查指令中传递的账户是否与初始化结构中指定的账户类型匹配
检查账户是否符合任何指定的附加限制
这就是 Anchor 程序的工作原理,它允许您开始构建 Anchor 程序。要了解有关 Anchor 程序的更多信息,强烈建议查看其文档。
什么是锚定计划注册表 (APR)?
Anchor 程序注册表(APR)是已在 Solana 区块链上注册的 Anchor 程序的目录,可让用户轻松找到并访问它们。APR 确保 Anchor 程序在区块链上注册并经过身份验证。
锚定程序注册表中有许多程序可让您的工作更轻松。让我们考虑其中的几个例子:
token_signer——为 Solana 密钥管理和安全提供一套程序。
spl_governance——针对Sealevel 并行运行时的链上程序集合。
crate_token-允许任何人创建、管理和交易代币化的资产篮子。
Solana 开发人员如何使用 Anchor Program Registry?
Solana 开发人员使用 Anchor Program Registry 访问 Solana 区块链上经过验证的程序。Anchor Program Registry 为经过验证的程序编录源代码,使开发人员可以访问工作代码的存储库。
您可以按照下面提供的流程来使用 Anchor Program Registry:
访问锚定程序的地址
连接你的钱包
访问 UI
签署并发送交易以执行指令
APR 接口提供了 Anchor 程序支持的指令列表和可用于配置给定指令的输入的表单字段。
什么是海马?
Seahorse 是一个类似 Anchor 的 Solana 开发框架,但它是为 Python 开发人员构建的。Seahorse提供了一套工具,用于在 Solana 区块链上构建、部署和与程序和帐户交互。它支持 JavaScript、Rust 和 Python 等不同的编程语言,并为新开发人员提供资源和文档。
锚与海马
学习 Anchor 的资源
有几种资源可帮助你了解 Anchor 框架:
Anchor Docs - 查找最相关、最新的信息
Soldev - 使用示例代码开始使用 Anchor 开发智能合约
Sol Playground - 使用在线 IDE 开始使用 Anchor 开发程序
有大量资源可帮助您了解 Anchor 框架并开始构建自己的分散式应用程序。
开始使用 Anchor 和 Alchemy 进行开发
Anchor 框架是构建可靠且安全的 Solana 程序(智能合约)的宝贵工具。此外,Anchor Program Registry 是 Solana 区块链上经过验证的程序的目录,是实现更好可组合性的关键资源。