本地开发
学习如何在本地机器上使用 Anchor 框架构建 Solana 程序。
Anchor 框架是一个简化构建 Solana 程序流程的工具。无论你是区块链开发新手还是经验丰富的程序员,Anchor 都简化了编写、测试和部署 Solana 程序的过程。
在本节中,我们将逐步介绍:
- 创建一个新的 Anchor 项目
- 构建和测试你的程序
- 部署到 Solana 集群
- 理解项目文件结构
先决条件
有关详细的安装说明,请访问 安装 页面。
在开始之前,请确保你已经安装了以下内容:
- Rust:用于构建 Solana 程序的编程语言。
- Solana CLI:用于 Solana 开发的命令行工具。
- Anchor CLI:Anchor 框架的命令行工具。
要验证 Anchor CLI 是否已安装,请打开终端并运行:
预期输出:
开始使用
本节介绍了创建、构建和测试你的第一个本地 Anchor 程序的基本步骤。
创建一个新项目
要启动一个新项目,请使用 anchor init
命令,后跟你的项目名称。此命令将创建一个具有指定名称的新目录,并设置默认的程序和测试文件。
导航到新项目目录并在代码编辑器中打开它。
默认的 Anchor 程序位于 /programs/my-project/src/lib.rs
。
默认的 Typescript 测试文件位于 /tests/my-project.ts
。
如果你更喜欢使用 Rust 进行测试,可以使用 --test-template rust
(Anchor Rust 客户端) 或 --test-template mollusk
(Mollusk 测试库) 标志初始化你的项目。
Rust 测试文件将位于 /tests/src/test_initialize.rs
。
构建程序
通过运行 anchor build
来构建程序。
编译后的程序将位于 /target/deploy/my_project.so
。当你部署程序时,此文件的内容将被存储到 Solana 网络上(作为一个可执行账户)。
测试程序
要测试程序,请运行 anchor test
。
默认情况下,Anchor.toml
配置文件指定了 localnet
集群。在 localnet
上开发时,anchor test
将自动:
- 启动一个本地 Solana 验证器
- 构建并将你的程序部署到本地集群
- 运行
tests
文件夹中的测试 - 停止本地 Solana 验证器
或者,你可以手动启动一个本地 Solana 验证器并对其进行测试。这对于你在迭代程序时希望保持验证器运行很有用。它允许你在开发时在 Solana Explorer 上检查账户和交易日志。
打开一个新终端并通过运行 solana-test-validator
命令启动一个本地 Solana 验证器。
在另一个终端中,针对本地集群运行测试。使用 --skip-local-validator
标志跳过启动本地验证器,因为它已经在运行。
部署到 Devnet
默认情况下,Anchor 项目中的 Anchor.toml
配置文件指定了 localnet 集群。
要将你的程序部署到 devnet,请将 cluster
值更改为 Devnet
。
请注意,部署到 devnet 需要你的钱包中有足够的 SOL 来支付部署成本。你可以使用 Web Faucet 获取 devnet SOL。
现在,当你运行 anchor deploy
时,你的程序将被部署到 devnet 集群。anchor test
命令也将使用 Anchor.toml
文件中指定的集群。
要部署到主网,只需更新 Anchor.toml
文件以指定主网集群。
更新程序
Solana 程序可以通过将程序重新部署到相同的程序 ID 来更新。
要更新程序,只需对你的程序代码进行更改,并运行 anchor build
命令以生成更新的 .so
文件。
然后运行 anchor deploy
命令以重新部署更新的程序。
关闭程序
要回收分配给程序账户的 SOL,你可以关闭你的 Solana 程序。
要关闭程序,请使用 solana program close <PROGRAM_ID>
命令。例如:
请注意,一旦程序关闭,程序 ID 将不能用于部署新程序。
项目文件结构
以下是 Anchor 工作区中的默认文件结构概览:
程序文件夹
/programs
目录包含你项目的 Anchor 程序。单个工作区可以包含多个程序。
测试文件夹
/tests
目录包含你项目的测试文件。当你创建项目时,系统会为你创建一个默认的测试文件。
目标文件夹
/target
目录包含构建输出。主要的子文件夹包括:
/deploy
:包含你程序的密钥对和程序二进制文件。/idl
:包含你程序的 JSON IDL。/types
:包含 IDL 的 TypeScript 类型。
Anchor.toml 文件
Anchor.toml
文件配置了你的项目的工作区设置。
.anchor 文件夹
包含一个 program-logs
文件,该文件包含最后一次运行测试文件时的交易日志。
App 文件夹
/app
文件夹是一个空文件夹,可选用于存放你的前端代码。