LogoAnchor 中文文档

Anchor.toml 配置

Anchor 工作区配置参考文档

provider (必填)

用于所有命令的钱包和集群。

示例:

[provider]
cluster = "localnet"                    # 用于所有命令的集群。
wallet = "~/.config/solana/id.json"     # 用于所有命令的密钥对。

scripts (测试时必填)

可以通过 anchor run <script> 运行的脚本。test 脚本由 anchor test 执行。

示例:

[scripts]
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"

features

resolution

这告诉 IDL 支持账户解析。默认为 true

示例:

[features]
resolution = true

workspace

types

添加一个目录,当运行 anchor build 时,<idl>.ts 文件将被复制到该目录。这在你希望将该文件保存在版本控制中时很有用,比如在前端使用它时,前端可能无法访问 Anchor 生成的 target 目录。

示例:

[workspace]
types = "app/src/idl/"

members

设置本地工作区中所有程序的路径——相对于 Anchor.toml 的位置,即与可以由 anchor CLI 编译的每个程序相关联的 Cargo.toml 清单的路径。对于使用标准 Anchor 工作流的程序,可以省略此项。对于未使用 Anchor 编写但仍希望发布的程序,应添加此项。

示例:

[workspace]
members = [
    "programs/*",
    "other_place/my_program"
]

exclude

workspace.members 相反。

示例:

[workspace]
exclude = [
    "programs/my_program"
]

programs

示例:

[programs.localnet]
my_program = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"

工作区中程序的地址。

programs.localnet 用于在 localnet 上进行测试时,可以在 genesis 时通过 solana-test-validator--bpf-program 选项加载程序。

test

startup_wait

增加 Anchor 等待 solana-test-validator 启动的时间。例如,如果你正在克隆许多账户(参见 test.validator.clone),这会增加验证器的启动时间,这时就很有用。

示例:

[test]
startup_wait = 10000

genesis

使得 anchor test 等命令启动 solana-test-validator 时,已加载给定程序。

示例

[[test.genesis]]
address = "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"
program = "dex.so"
 
[[test.genesis]]
address = "22Y43yTVxuUkoRKdm9thyRhQ3SdgQS7c7kB6UNCiaczD"
program = "swap.so"
upgradeable = true

upgradeable

使用 --upgradeable-program 部署要测试的程序。这使得可以测试某些指令只能由程序的升级权限执行。初始升级权限将设置为 provider.wallet

如果未指定或明确设置为 false,则测试程序将使用 --bpf-program 部署,这会禁用对其的升级。

示例:

[test]
upgradeable = true

test.validator

这些选项会以相同的名称传递到 solana-test-validator cli 的选项中(参见 solana-test-validator --help),在 anchor test 等命令中使用。

[test.validator]
url = "https://api.mainnet-beta.solana.com"     # 这是克隆账户的集群的 URL(参见 `test.validator.clone`)。
warp_slot = 1337                                # 启动验证器后将账本提前到 `warp_slot`。
slots_per_epoch = 5                             # 覆盖一个 epoch 中的插槽数。
rpc_port = 1337                                 # 在此端口上设置 JSON RPC,下一个端口用于 RPC websocket。
limit_ledger_size = 1337                        # 在根插槽中保留此数量的 shreds。
ledger = "test-ledger"                          # 设置账本位置。
gossip_port = 1337                              # 验证器的 Gossip 端口号。
gossip_host = "127.0.0.1"                       # 验证器在 gossip 中宣传的 Gossip DNS 名称或 IP 地址。
faucet_sol = 1337                               # 在 genesis 中为 faucet 地址提供这么多 SOL。
faucet_port = 1337                              # 在此端口上启用 faucet。
dynamic_port_range = "1337 - 13337"             # 用于动态分配端口的范围。
bind_address = "0.0.0.0"                        # 绑定验证器端口的 IP 地址。

test.validator.clone

使用此选项从 test.validator.clone.url 集群克隆账户到测试集群。如果 address 指向一个由“BPF 可升级加载程序”拥有的程序,Anchor(>= 0.23.0)会自动为你克隆程序的数据账户。

示例:

[test.validator]
url = "https://api.mainnet-beta.solana.com"
 
[[test.validator.clone]]
address = "7NL2qWArf2BbEBBH1vTRZCsoNqFATTddH6h8GkVvrLpG"
[[test.validator.clone]]
address = "2RaN5auQwMdg5efgCaVqpETBV8sacWGR8tkK4m9kjo5r"
[[test.validator.clone]]
address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" # 隐式地也克隆 PwDiXFxQsGra4sFFTT8r1QWRMd4vfumiWC1jfWNfdYT

test.validator.account

使用此选项从 .json 文件上传账户。

示例:

[[test.validator.account]]
address = "Ev8WSPQsGb4wfjybqff5eZNcS3n6HaMsBkMk9suAiuM"
filename = "some_account.json"
 
[[test.validator.account]]
address = "Ev8WSPQsGb4wfjybqff5eZNcS3n6HaMsBkMk9suAiuM"
filename = "some_other_account.json"

toolchain

覆盖工作区中的工具链数据,类似于 rust-toolchain.toml

[toolchain]
anchor_version = "0.30.1"    # 使用的 `anchor-cli` 版本(需要 `avm`)
solana_version = "1.18.17"    # 使用的 Solana 版本(适用于所有 Solana 工具)

On this page

在GitHub上编辑