Solana 文档参考文献

Solana CLI 参考

solana 命令行界面可用于配置集群连接、读取网络状态、发送 SOL、管理持久 nonce、部署程序,以及操作质押账户和投票账户。

本参考文档基于 Agave v4.2.1。运行 solana --version 可查看已安装的版本,并使用 --help 查看该版本中可用的具体选项。

创建、转账、授权、提取或部署类命令会提交交易。运行这些命令之前,请先确认已配置的集群和签名者。Devnet 和 Testnet 的代币没有价值;Mainnet 命令使用的是真实的 SOL。

命令结构

solana [GLOBAL_OPTIONS] <COMMAND> [COMMAND_OPTIONS]

在任意层级获取帮助:

solana --help
solana transfer --help
solana address-lookup-table extend --help

全局选项

全局选项可以放在命令之前。特定命令的帮助信息会重复列出适用于该命令的选项。

选项用途
-u, --url <URL_OR_MONIKER>选择 RPC URL,或 mainnet-beta、testnet、devnet、localhost。
--ws <URL>覆盖 WebSocket 端点。
-k, --keypair <KEYPAIR>选择 keypair 文件、ASK、标准输入(-)或受支持的签名者 URL。
-C, --config <FILEPATH>使用其他 CLI 配置文件。
--commitment <LEVEL>以 processed、confirmed 或 finalized 确认级别读取。
--output <FORMAT>在支持的情况下返回 json 或 json-compact。
--skip-preflight跳过 RPC 模拟直接发送。仅在了解失败风险与取舍时使用。
--use-tpu-client通过 TPU 客户端发送交易。
--no-address-labels打印不带本地标签的地址。
--skip-seed-phrase-validation允许使用不在 BIP39 英文词表中的助记词。
-v, --verbose显示更多命令输出。
-V, --version打印已安装的 CLI 版本。

配置 CLI

# Inspect the effective configuration.
solana config get
# Use Devnet and a specific signer by default.
solana config set --url devnet
solana config set --keypair ./devnet-keypair.json
# Override defaults for one command.
solana --url mainnet-beta --keypair usb://ledger address

配置包含 RPC URL、WebSocket URL、默认签名者和确认级别。命令行选项会在本次调用中覆盖已保存的值。

常见账户与交易工作流

# Print the default signer's address and balance.
solana address
solana balance
# Read an account as JSON.
solana account <ACCOUNT_ADDRESS> --output json
# Request Devnet SOL.
solana airdrop 1 --url devnet
# Send SOL and then confirm the returned signature.
solana transfer <RECIPIENT_ADDRESS> 0.1 --allow-unfunded-recipient
solana confirm <TRANSACTION_SIGNATURE>
# Inspect recent activity and stream logs mentioning an address.
solana transaction-history <ADDRESS> --limit 20
solana logs <ADDRESS>

transfer 默认转账 SOL。将金额设为 ALL 可转出扣除手续费后的全部可用余额。有关代币的示例,请参阅代币快速入门。

程序工作流

# Deploy or upgrade an SBF program.
solana program deploy ./target/deploy/my_program.so
# Inspect the deployed program and list programs controlled by the signer.
solana program show <PROGRAM_ID>
solana program show --programs
# Close a program buffer and recover its lamports.
solana program close <BUFFER_ADDRESS>

当部署必须使用已知的程序 ID 时,请传入 --program-id <KEYPAIR_OR_ADDRESS>。--final 会使新部署变为不可变;使用前请仔细阅读其帮助信息,因为升级权限无法恢复。

持久 nonce 工作流

solana-keygen new --outfile nonce-account.json
solana create-nonce-account nonce-account.json 0.1
solana nonce nonce-account.json
solana new-nonce nonce-account.json
solana withdraw-from-nonce-account nonce-account.json <RECIPIENT_ADDRESS> ALL

使用 authorize-nonce-account 更改 nonce 权限,使用 nonce-account 查看完整的账户状态。在受支持的命令中,使用 nonce 的交易还可接受 --nonce 和 --nonce-authority。

质押工作流

solana-keygen new --outfile stake-account.json
solana create-stake-account stake-account.json 1
solana delegate-stake stake-account.json <VOTE_ACCOUNT_ADDRESS>
solana stake-account stake-account.json
solana deactivate-stake stake-account.json
solana withdraw-stake stake-account.json <RECIPIENT_ADDRESS> ALL

停用会在 epoch 边界完成,可能需要超过一个 epoch。在提交更改之前,请使用 stakes、validators、stake-history 和 stake-minimum-delegation 查看集群和委托状态。

地址工具

# Derive a PDA from typed seeds.
solana find-program-derived-address \
<PROGRAM_ID> \
string:profile \
pubkey:<OWNER_ADDRESS>
# Create and extend an address lookup table.
solana address-lookup-table create
solana address-lookup-table extend \
<LOOKUP_TABLE_ADDRESS> \
--addresses <ADDRESS_1>,<ADDRESS_2>

PDA seed 使用 PREFIX:VALUE 格式。支持的前缀包括 string、pubkey、hex、u8,以及诸如 u64le 之类的定宽有符号或无符号整数编码。

链下消息与 Shell 补全

solana sign-offchain-message "terms accepted"
solana verify-offchain-signature \
"terms accepted" \
<SIGNATURE> \
--signer <SIGNER_ADDRESS>
# Print a completion script for the current shell.
solana completion --shell zsh

完整命令索引

以下索引包含 Agave v4.2.1 中的所有顶层命令。program、config、feature 和 address-lookup-table 等命令包含嵌套命令;运行 <command> --help 可列出它们。

命令说明
account显示账户的 lamport、所有者、数据和可执行状态。
address打印所选签名者的公钥。
address-lookup-table创建、扩展、冻结、停用、关闭和查看地址查找表。
airdrop从集群水龙头申请 SOL。
alpenglow-genesis-info读取有关 Alpenglow 创世证书的信息。
authorize-nonce-account指定持久 nonce 账户的权限方。
balance显示账户的 SOL 余额。
block按 slot 获取已确认的区块。
block-height显示当前区块高度。
block-production显示某个 slot 范围内的领导者出块情况。
block-time估算区块的生成时间。
catchup等待 validator 追上集群进度。
close-vote-account关闭投票账户并提取其剩余资金。
cluster-date根据创世时间和网络时间估算集群日期。
cluster-version显示集群入口节点的软件版本。
completion生成 Shell 补全脚本。
config获取或设置 CLI 默认值。
confirm检查交易签名的确认状态。
create-address-with-seed根据 base、seed 和程序 ID 派生系统地址。
create-nonce-account创建并初始化持久 nonce 账户。
create-stake-account创建质押账户。
create-stake-account-checked创建质押账户,同时检查提取权限方是否作为签名者。
create-vote-account创建 validator 投票账户。
deactivate-stake开始停用已委托的质押。
decode-transaction解码序列化的交易。
delegate-stake将质押账户委托给投票账户。
epoch显示当前 epoch 编号。
epoch-info显示 epoch、slot、区块高度和交易数量信息。
feature查看和管理运行时功能账户。
find-program-derived-address根据带类型的 seed 派生 PDA 及规范 bump。
first-available-block显示 RPC 节点保留的第一个完整区块。
genesis-hash显示集群的创世哈希。
gossip列出通过 gossip 可见的节点。
help打印根命令或指定命令的帮助信息。
inflation显示通胀管理者、通胀率或奖励信息。
largest-accounts列出集群中余额最大的账户。
leader-schedule显示领导者调度表。
live-slots实时输出当前 slot 的推进情况。
logs实时输出交易日志,可按地址过滤。
merge-stake合并兼容的质押账户。
new-nonce推进持久 nonce。
nonce打印持久 nonce 的值。
nonce-account显示持久 nonce 账户的完整状态。
program部署、升级、查看、导出、设置权限方或关闭程序和缓冲区。
recent-prioritization-fees显示可写账户近期的优先费用。
rent计算指定账户数据大小的租金豁免最低额度。
resolve-signer将 Ledger URL 等通用签名者引用解析为其具体路径。
sign-offchain-message对 UTF-8 链下消息进行签名。
slot显示当前 slot。
split-stake将一个质押账户中的 lamport 拆分到另一个质押账户。
stake-account显示质押账户的权限方、余额和委托状态。
stake-authorize更改质押权限方或提取权限方。
stake-authorize-checked更改质押权限方,同时检查新权限方是否作为签名者。
stake-history显示集群质押的激活与停用历史。
stake-minimum-delegation显示集群的最低质押委托额。
stake-set-lockup设置质押账户的锁定期。
stake-set-lockup-checked设置锁定期,同时检查新的托管方是否作为签名者。
stakes列出质押账户,可按 validator 或权限方过滤。
supply显示 SOL 的流通量、非流通量和总供应量。
transaction-count显示集群的交易数量。
transaction-history按从新到旧的顺序列出涉及某地址的交易。
transfer在系统账户之间转账 SOL。
upgrade-nonce-account以幂等方式升级旧版 nonce 账户。
validator-info发布或读取 validator 信息。
validators显示 validator 的质押、佣金、跳过率和版本摘要。
verify-offchain-signature验证已签名的链下消息。
vote-account显示投票账户的权限方、佣金、积分和投票。
vote-authorize-voter更改投票账户的投票权限方。
vote-authorize-voter-checked更改投票权限方,同时检查新权限方是否作为签名者。
vote-authorize-withdrawer更改投票账户的提取权限方。
vote-authorize-withdrawer-checked更改提取权限方,同时检查新权限方是否作为签名者。
vote-update-commission更改投票账户的佣金。
vote-update-validator更改分配给投票账户的 validator 身份。
withdraw-from-nonce-account从持久 nonce 账户中提取部分或全部 SOL。
withdraw-from-vote-account从投票账户中提取 lamport。
withdraw-stake从质押账户中提取未激活的 SOL。

脚本输出

在支持的情况下,请使用 --output json 或 --output json-compact,而不是解析供人阅读的输出:

solana epoch-info --output json
solana account <ACCOUNT_ADDRESS> --output json-compact
solana validators --output json > validators.json

并非所有命令都支持结构化输出。在自动化流程中依赖该功能之前,请先查看命令的帮助信息,并将非零退出状态视为失败。

Is this page helpful?

Table of Contents

Edit Page
©️ 2026 Solana 基金会版权所有