Справочник по Solana CLI

Интерфейс командной строки solana настраивает подключение к кластеру, считывает состояние сети, отправляет SOL, управляет durable 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>Выбрать URL RPC или mainnet-beta, testnet, devnet, либо localhost.
--ws <URL>Переопределить конечную точку WebSocket.
-k, --keypair <KEYPAIR>Выбрать файл keypair, ASK, stdin (-) или поддерживаемый 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

Конфигурация содержит URL RPC, URL WebSocket, подписанта по умолчанию и уровень подтверждения. Опция командной строки переопределяет сохраненное значение для данного вызова.

Типовые сценарии работы с аккаунтами и транзакциями

# 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>

Передайте --program-id <KEYPAIR_OR_ADDRESS>, если при развертывании нужно использовать известный идентификатор программы. --final делает новое развертывание неизменяемым; внимательно прочитайте справку по этой опции, прежде чем ее использовать, так как полномочия на обновление (upgrade authority) восстановить нельзя.

Сценарии работы с durable 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, чтобы изменить полномочия (authority) 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>

Значения seed для PDA задаются в формате PREFIX:VALUE. Поддерживаемые префиксы: string, pubkey, hex, u8, а также кодировки знаковых или беззнаковых целых чисел фиксированной ширины, например u64le.

Офчейн-сообщения и автодополнение в оболочке

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Показать lamports, владельца, данные и исполняемое состояние аккаунта.
addressВывести публичный ключ выбранного подписанта.
address-lookup-tableСоздавать, расширять, замораживать, деактивировать, закрывать и просматривать таблицы поиска адресов.
airdropЗапросить SOL из faucet кластера.
alpenglow-genesis-infoПолучить информацию о genesis-сертификате Alpenglow.
authorize-nonce-accountНазначить authority для аккаунта durable nonce.
balanceПоказать баланс SOL аккаунта.
blockПолучить подтвержденный блок по slot.
block-heightПоказать текущую высоту блока.
block-productionПоказать статистику производства блоков лидерами за диапазон slot.
block-timeОценить время создания блока.
catchupДождаться, пока validator догонит кластер.
close-vote-accountЗакрыть аккаунт голосования и вывести оставшиеся средства.
cluster-dateОценить дату кластера по времени genesis и времени сети.
cluster-versionПоказать версию программного обеспечения точки входа кластера.
completionСгенерировать скрипт автодополнения для оболочки.
configПолучить или задать значения CLI по умолчанию.
confirmПроверить статус подтверждения подписи транзакции.
create-address-with-seedВычислить системный адрес из base, seed и идентификатора программы.
create-nonce-accountСоздать и инициализировать аккаунт durable nonce.
create-stake-accountСоздать аккаунт стейкинга.
create-stake-account-checkedСоздать аккаунт стейкинга с проверкой withdraw authority как подписанта.
create-vote-accountСоздать аккаунт голосования validator.
deactivate-stakeНачать деактивацию делегированного стейка.
decode-transactionДекодировать сериализованную транзакцию.
delegate-stakeДелегировать аккаунт стейкинга аккаунту голосования.
epochПоказать номер текущего epoch.
epoch-infoПоказать информацию об epoch, slot, высоте блока и количестве транзакций.
featureПросматривать аккаунты функций среды выполнения и управлять ими.
find-program-derived-addressВычислить PDA и канонический bump по типизированным seed.
first-available-blockПоказать первый полный блок, сохраненный узлом RPC.
genesis-hashПоказать genesis-хеш кластера.
gossipВывести список узлов, видимых через gossip.
helpВывести общую справку или справку по команде.
inflationПоказать информацию об управляющем инфляцией, ставке инфляции или вознаграждениях.
largest-accountsВывести список крупнейших аккаунтов кластера.
leader-scheduleПоказать расписание лидеров.
live-slotsТранслировать ход текущих slot.
logsТранслировать логи транзакций с возможной фильтрацией по адресу.
merge-stakeОбъединить совместимые аккаунты стейкинга.
new-nonceОбновить durable nonce.
nonceВывести значение durable nonce.
nonce-accountПоказать полное состояние аккаунта durable nonce.
programРазвертывать, обновлять, просматривать и выгружать программы и буферы, задавать для них authority или закрывать их.
recent-prioritization-feesПоказать недавние приоритетные комиссии для аккаунтов, доступных для записи.
rentРассчитать минимальный баланс для освобождения от rent при заданном размере данных аккаунта.
resolve-signerПреобразовать общую ссылку на подписанта, например URL Ledger, в конкретный путь.
sign-offchain-messageПодписать офчейн-сообщение в кодировке UTF-8.
slotПоказать текущий slot.
split-stakeПеренести lamports из одного аккаунта стейкинга в другой.
stake-accountПоказать authority, баланс и состояние делегирования аккаунта стейкинга.
stake-authorizeИзменить stake authority или withdraw authority.
stake-authorize-checkedИзменить stake authority с проверкой нового authority как подписанта.
stake-historyПоказать историю активации и деактивации стейка в кластере.
stake-minimum-delegationПоказать минимальную сумму делегирования стейка в кластере.
stake-set-lockupЗадать блокировку (lockup) аккаунта стейкинга.
stake-set-lockup-checkedЗадать lockup с проверкой нового custodian как подписанта.
stakesВывести список аккаунтов стейкинга с возможной фильтрацией по validator или authority.
supplyПоказать циркулирующее, нециркулирующее и общее предложение SOL.
transaction-countПоказать количество транзакций в кластере.
transaction-historyВывести список транзакций с участием адреса от новых к старым.
transferПеревести SOL между системными аккаунтами.
upgrade-nonce-accountИдемпотентно обновить устаревший аккаунт nonce.
validator-infoОпубликовать или прочитать информацию о validator.
validatorsПоказать сводку по validator: стейк, комиссию, долю пропусков и версию.
verify-offchain-signatureПроверить подписанное офчейн-сообщение.
vote-accountПоказать authority, комиссию, кредиты и голоса аккаунта голосования.
vote-authorize-voterИзменить voter authority аккаунта голосования.
vote-authorize-voter-checkedИзменить voter authority с проверкой нового authority как подписанта.
vote-authorize-withdrawerИзменить withdraw authority аккаунта голосования.
vote-authorize-withdrawer-checkedИзменить withdraw authority с проверкой нового authority как подписанта.
vote-update-commissionИзменить комиссию аккаунта голосования.
vote-update-validatorИзменить идентификатор validator, привязанный к аккаунту голосования.
withdraw-from-nonce-accountВывести часть или все SOL из аккаунта durable nonce.
withdraw-from-vote-accountВывести lamports из аккаунта голосования.
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?