Solana —— 环境搭建与基础命令

1. 环境安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 更新系统
sudo apt-get update && sudo apt upgrade -y

# 安装基础依赖
sudo apt-get install -y \
build-essential \
pkg-config \
libudev-dev llvm libclang-dev \
protobuf-compiler libssl-dev

# 安装 Solana 开发组件
curl --proto '=https' --tlsv1.2 -sSfL https://solana-install.solana.workers.dev | bash

# 验证安装
rustc --version && solana --version && anchor --version && node --version && yarn --version

2. Solana CLI 基础

2.1 网络配置

查看当前配置

1
solana config get

切换网络

1
2
3
4
solana config set --url mainnet-beta    # 主网
solana config set --url devnet # 开发网
solana config set --url testnet # 测试网
solana config set --url localhost # 本地网络

2.2 钱包管理

创建钱包

1
2
3
4
5
6
7
8
# 生成新钱包(保存到默认路径)
solana-keygen new

# 生成新钱包到指定路径
solana-keygen new --outfile ~/.config/solana/wallet.json

# 从助记词恢复钱包
solana-keygen recover --outfile ~/.config/solana/wallet.json --force

配置钱包

1
2
3
4
5
6
7
8
# 设置默认钱包
solana config set --keypair ~/.config/solana/wallet.json

# 查看当前钱包地址
solana address

# 查看钱包公钥
solana-keygen pubkey ~/.config/solana/wallet.json

2.3 账户操作

余额和转账

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看余额
solana balance

# 查看指定地址余额
solana balance <ADDRESS>

# 请求测试币(仅限 devnet/testnet)
solana airdrop 2

# 转账 SOL
solana transfer <RECIPIENT_ADDRESS> <AMOUNT>

# 带备注转账
solana transfer <RECIPIENT_ADDRESS> <AMOUNT> --with-memo "转账备注"

账户信息查询

1
2
3
4
5
6
7
8
9
# 查看账户详细信息
solana account <ADDRESS>

# 查看账户数据(以 JSON 格式)
solana account <ADDRESS> --output json

# 查看账户租金状态
solana rent 16 # Output: Rent-exempt minimum: 0.00100224 SOL
# 表示一个 16 字节大小的账户需要至少 0.00100224 SOL 的余额才能成为租金豁免账户

2.4 交易和日志

交易操作

1
2
3
4
5
6
7
8
# 查看交易详情
solana transaction <SIGNATURE>

# 确认交易状态
solana confirm <SIGNATURE>

# 查看最近交易
solana transaction-history <ADDRESS> --limit 10

日志监控

1
2
3
4
5
# 实时查看程序日志
solana logs <PROGRAM_ID>

# 查看所有交易日志
solana logs --all

2.5 网络和验证节点

网络信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看集群版本
solana cluster-version

# 查看网络状态
solana cluster-date

# 查看区块产出情况
solana block-production

# 查看区块高度
solana block-height

# 查看验证节点列表
solana validators

2.6 本地测试链

启动和管理

1
2
3
4
5
6
7
8
9
10
11
# 启动本地验证节点
solana-test-validator

# 后台运行
solana-test-validator --detach

# 重置本地链数据
solana-test-validator --reset

# 指定端口
solana-test-validator --rpc-port 8899 --ws-port 8900

预加载程序和账户

1
2
3
4
5
# 克隆主网账户到本地
solana-test-validator --clone <ACCOUNT_ADDRESS>

# 加载程序
solana-test-validator --bpf-program <PROGRAM_ID> <PROGRAM_PATH>

2.7 智能合约操作

程序部署

1
2
3
4
5
6
7
8
# 部署程序
solana program deploy <PROGRAM_FILE.so>

# 部署到指定程序 ID
solana program deploy <PROGRAM_FILE.so> --program-id <PROGRAM_KEYPAIR>

# 升级程序
solana program deploy <NEW_PROGRAM_FILE.so> --program-id <EXISTING_PROGRAM_ID>

程序管理

1
2
3
4
5
6
7
8
9
10
11
# 查看程序信息
solana program show <PROGRAM_ID>

# 导出程序
solana program dump <PROGRAM_ID> <OUTPUT_FILE>

# 关闭程序(回收租金)
solana program close <PROGRAM_ID>

# 设置程序升级权限
solana program set-upgrade-authority <PROGRAM_ID> --new-upgrade-authority <NEW_AUTHORITY>

3. Anchor 基础

3.1 项目管理

创建项目

1
2
3
4
5
# 创建新项目
anchor init <project-name>

# 使用模板创建: 创建一个包含多个程序的 Anchor 项目结构
anchor init <project-name> --template multiple

项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
project-name/
├── Anchor.toml # Anchor 项目配置文件,包含程序 ID、网络配置、项目名称等
├── Cargo.toml # Rust 项目依赖配置文件,用于智能合约编译
├── app # 前端应用目录,存放与 Solana 交互的前端代码
├── migrations # 部署脚本目录
│ └── deploy.ts # 部署合约到指定网络的 TypeScript 脚本
├── package.json # JavaScript/TypeScript 项目依赖和脚本配置
├── programs # 智能合约代码目录
│ └── firewords # 具体智能合约子目录
├── target # Rust 编译输出目录
│ └── deploy # 编译后的程序文件,用于部署
├── tests # 测试文件目录
│ └── firewords.ts # 针对 firewords 合约的测试脚本
├── tsconfig.json # TypeScript 编译配置
└── yarn.lock # 锁定 JavaScript/TypeScript 依赖版本,确保一致性

3.2 开发流程

编译、部署和测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 编译项目
anchor build

# 部署到当前网络
anchor deploy

# 运行测试
anchor test

# 运行测试(跳过构建)
anchor test --skip-build

# 运行特定测试
anchor test --grep "test_name"

密钥管理

1
2
3
4
5
# 生成程序密钥对
anchor keys list

# 同步程序 ID
anchor keys sync

Hooray!Solana 开发环境准备就绪!!!