solana 命令行界面可用于配置集群连接、读取网络状态、发送 SOL、管理持久 nonce、部署程序,以及操作质押账户和投票账户。
本参考文档基于 Agave v4.2.1。运行 solana --version 可查看已安装的版本,并使用 --help 查看该版本中可用的具体选项。
创建、转账、授权、提取或部署类命令会提交交易。运行这些命令之前,请先确认已配置的集群和签名者。Devnet 和 Testnet 的代币没有价值;Mainnet 命令使用的是真实的 SOL。
命令结构
solana [GLOBAL_OPTIONS] <COMMAND> [COMMAND_OPTIONS]
在任意层级获取帮助:
solana --helpsolana transfer --helpsolana 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 devnetsolana 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 addresssolana 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-recipientsolana confirm <TRANSACTION_SIGNATURE># Inspect recent activity and stream logs mentioning an address.solana transaction-history <ADDRESS> --limit 20solana 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.jsonsolana create-nonce-account nonce-account.json 0.1solana nonce nonce-account.jsonsolana new-nonce nonce-account.jsonsolana 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.jsonsolana create-stake-account stake-account.json 1solana delegate-stake stake-account.json <VOTE_ACCOUNT_ADDRESS>solana stake-account stake-account.jsonsolana deactivate-stake stake-account.jsonsolana 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 createsolana 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 jsonsolana account <ACCOUNT_ADDRESS> --output json-compactsolana validators --output json > validators.json
并非所有命令都支持结构化输出。在自动化流程中依赖该功能之前,请先查看命令的帮助信息,并将非零退出状态视为失败。
Is this page helpful?