LogoAnchor 中文文档

本地开发

学习如何在本地机器上使用 Anchor 框架构建 Solana 程序。

Anchor 框架是一个简化构建 Solana 程序流程的工具。无论你是区块链开发新手还是经验丰富的程序员,Anchor 都简化了编写、测试和部署 Solana 程序的过程。

在本节中,我们将逐步介绍:

  • 创建一个新的 Anchor 项目
  • 构建和测试你的程序
  • 部署到 Solana 集群
  • 理解项目文件结构

先决条件

有关详细的安装说明,请访问 安装 页面。

在开始之前,请确保你已经安装了以下内容:

  • Rust:用于构建 Solana 程序的编程语言。
  • Solana CLI:用于 Solana 开发的命令行工具。
  • Anchor CLI:Anchor 框架的命令行工具。

要验证 Anchor CLI 是否已安装,请打开终端并运行:

anchor --version

预期输出:

anchor-cli 0.30.1

开始使用

本节介绍了创建、构建和测试你的第一个本地 Anchor 程序的基本步骤。

创建一个新项目

要启动一个新项目,请使用 anchor init 命令,后跟你的项目名称。此命令将创建一个具有指定名称的新目录,并设置默认的程序和测试文件。

anchor init my-program

导航到新项目目录并在代码编辑器中打开它。

cd my-project

默认的 Anchor 程序位于 /programs/my-project/src/lib.rs

默认的 Typescript 测试文件位于 /tests/my-project.ts

如果你更喜欢使用 Rust 进行测试,可以使用 --test-template rust (Anchor Rust 客户端) 或 --test-template mollusk (Mollusk 测试库) 标志初始化你的项目。

anchor init --test-template rust my-program

Rust 测试文件将位于 /tests/src/test_initialize.rs

构建程序

通过运行 anchor build 来构建程序。

anchor build

编译后的程序将位于 /target/deploy/my_project.so。当你部署程序时,此文件的内容将被存储到 Solana 网络上(作为一个可执行账户)。

测试程序

要测试程序,请运行 anchor test

anchor test

默认情况下,Anchor.toml 配置文件指定了 localnet 集群。在 localnet 上开发时,anchor test 将自动:

  1. 启动一个本地 Solana 验证器
  2. 构建并将你的程序部署到本地集群
  3. 运行 tests 文件夹中的测试
  4. 停止本地 Solana 验证器

或者,你可以手动启动一个本地 Solana 验证器并对其进行测试。这对于你在迭代程序时希望保持验证器运行很有用。它允许你在开发时在 Solana Explorer 上检查账户和交易日志。

打开一个新终端并通过运行 solana-test-validator 命令启动一个本地 Solana 验证器。

solana-test-validator

在另一个终端中,针对本地集群运行测试。使用 --skip-local-validator 标志跳过启动本地验证器,因为它已经在运行。

anchor test --skip-local-validator

部署到 Devnet

默认情况下,Anchor 项目中的 Anchor.toml 配置文件指定了 localnet 集群。

[toolchain]
 
[features]
resolution = true
skip-lint = false
 
[programs.localnet]
my_program = "3ynNB373Q3VAzKp7m4x238po36hjAGFXFJB4ybN2iTyg"
 
[registry]
url = "https://api.apr.dev"
 
[provider]
cluster = "Localnet"
wallet = "~/.config/solana/id.json"
 
[scripts]
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"

要将你的程序部署到 devnet,请将 cluster 值更改为 Devnet

请注意,部署到 devnet 需要你的钱包中有足够的 SOL 来支付部署成本。你可以使用 Web Faucet 获取 devnet SOL。

-cluster = "Localnet"
+cluster = "Devnet"
[provider]
cluster = "Devnet"
wallet = "~/.config/solana/id.json"

现在,当你运行 anchor deploy 时,你的程序将被部署到 devnet 集群。anchor test 命令也将使用 Anchor.toml 文件中指定的集群。

anchor deploy

要部署到主网,只需更新 Anchor.toml 文件以指定主网集群。

[provider]
cluster = "Mainnet"
wallet = "~/.config/solana/id.json"

更新程序

Solana 程序可以通过将程序重新部署到相同的程序 ID 来更新。

要更新程序,只需对你的程序代码进行更改,并运行 anchor build 命令以生成更新的 .so 文件。

anchor build

然后运行 anchor deploy 命令以重新部署更新的程序。

anchor deploy

关闭程序

要回收分配给程序账户的 SOL,你可以关闭你的 Solana 程序。

要关闭程序,请使用 solana program close <PROGRAM_ID> 命令。例如:

solana program close 3ynNB373Q3VAzKp7m4x238po36hjAGFXFJB4ybN2iTyg --bypass-warning

请注意,一旦程序关闭,程序 ID 将不能用于部署新程序。

项目文件结构

以下是 Anchor 工作区中的默认文件结构概览:

lib.rs
Cargo.toml
Xargo.toml
[project-name].ts
Anchor.toml
Cargo.toml
package.json

程序文件夹

/programs 目录包含你项目的 Anchor 程序。单个工作区可以包含多个程序。

测试文件夹

/tests 目录包含你项目的测试文件。当你创建项目时,系统会为你创建一个默认的测试文件。

目标文件夹

/target 目录包含构建输出。主要的子文件夹包括:

  • /deploy:包含你程序的密钥对和程序二进制文件。
  • /idl:包含你程序的 JSON IDL。
  • /types:包含 IDL 的 TypeScript 类型。

Anchor.toml 文件

Anchor.toml 文件配置了你的项目的工作区设置。

.anchor 文件夹

包含一个 program-logs 文件,该文件包含最后一次运行测试文件时的交易日志。

App 文件夹

/app 文件夹是一个空文件夹,可选用于存放你的前端代码。

On this page

在GitHub上编辑