学习记录
https://solana.com/docs/programs/anchor
查看当前配置: solana config get
开启本地网络
cd ~/validator && solana-test-validator
如果RPC错误: https://github.com/solana-labs/solana/issues/32332
solana-keygen new 创建钱包
solana config set --url mainnet-beta
solana config set --url devnet
solana config set --url localhost
solana config set --url testnet
solana config set -um # For mainnet-beta
solana config set -ud # For devnet
solana config set -ul # For localhost
solana config set -ut # For testnet
切换测试: solana config set -ud
创建钱包: solana-keygen new
Wrote new keypair to /Users/anbang/.config/solana/id.json
==========================================================================
pubkey: BgBZjD6gACnWQcvS1UAyaw1sL9wVcvNme9hBaW9ir81s
==========================================================================
Save this seed phrase and your BIP39 passphrase to recover your new keypair:
what choice flip snap afford wave actual theory helmet tourist client room
==========================================================================
查看当前地址: solana address
空投SOL: solana airdrop 2
查看余额: solana balance
anchro 命令大全
% rustc --version
rustc 1.83.0 (90b35a623 2024-11-26)
% solana --version
solana-cli 1.18.21 (src:0df68a97; feat:4215500110, client:Agave)
% anchor --version
anchor-cli 0.30.1
$ anchor
Usage: anchor-0.30.1 [OPTIONS] <COMMAND>
Commands:
- init 初始化工作区
- build 构建工作区
- expand 展开宏 (包装 cargo expand)
- verify 验证链上的字节码是否与本地编译的工件匹配。请在程序子目录中运行此命令,即包含程序的 `Cargo.toml` 文件的目录。
- test 运行集成测试
- new 创建一个新程序
- idl 与接口定义交互的命令
- clean 移除目标目录中的所有工件,但保留程序的密钥对
- deploy 部署工作区中的每个程序
- migrate 运行部署迁移脚本
- upgrade 一次性部署、初始化IDL并进行迁移。升级单个程序。配置的钱包必须是升级权限持有者
- cluster 集群命令
- shell 启动一个节点Shell,使用本地配置设置的 Anchor 客户端
- run 运行当前工作区的 `Anchor.toml` 文件中定义的脚本
- login 保存来自注册表的API令牌到本地
- publish 将已验证的构建发布到 Anchor 注册表
- keys 密钥对命令
- localnet 本地网络命令
- account 使用提供的IDL提取并反序列化账户
- help 打印此消息或给定子命令的帮助信息
### 选项:
- `--provider.cluster <CLUSTER>` 集群覆盖
- `--provider.wallet <WALLET>` 钱包覆盖
- `-h, --help` 打印帮助信息
- `-V, --version` 打印版本信息
DEBUG
RUST_LOG=DEBUG anchor deploy
常见命令
Solana
solana-test-validator
: 启动本地网络
Anchor
- anchor init hello : 权限的Anchor模版
- anchor new my_program : 在现有项目中创建一个新的智能合约程序
- anchor build
--skip-lint
: 跳过代码静态检查。--features <features>
: 指定编译特性。
- anchor deploy
anchor deploy --env devnet
: 部署到开发网络anchor deploy --env mainnet-beta
: 部署到主网 (Mainnet Beta)- 包括 localnet、devnet、testnet 和 mainnet-beta。
- 目录下的 Anchor.toml 文件
- anchor test
--skip-build
: 跳过构建步骤,仅运行测试。--bpf
: 使用 BPF 测试,更接近实际部署环境。--features <features>
: 指定编译特性。
- anchor verify: 验证部署的程序
- 需要在包含 Cargo.toml 文件的程序目录中运行此命令。
--url <url>
: 指定 Solana 节点的 RPC URL。--address <address>
: 指定要验证的程序地址。
- anchor upgrade: 升级已经部署的程序,支持
--env
- 其他:
anchor clean
: 清除缓存anchor idl init <program_id>
: 生成 IDL
问题:
- anchor build 出错:
- Failed to install platform-tools: HTTP status client error (404 Not Found) for url (https://github.com/anza-xyz/platform-tools/releases/download/v1.42/platform-tools-osx-x86_64.tar.bz2)
- lock file version 4 requires
-Znext-lockfile-bump
- error: package
bytemuck_derive v1.9.2
cannot be built because it requires rustc 1.84 or newer, while the currently active rustc version is 1.75.0-dev- 这种时候,需要降级:
cargo update -p bytemuck_derive --precise 1.7.0
- 这种时候,需要降级: