solana 명령줄 인터페이스는 클러스터 연결을 구성하고, 네트워크 상태를 조회하며,
SOL을 전송하고, durable 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, 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 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은 새 배포를 불변 상태로 만듭니다. 업그레이드 권한은 복구할 수 없으므로
사용하기 전에 도움말을 주의 깊게 읽으세요.
Durable 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
nonce 권한을 변경하려면 authorize-nonce-account를, 전체 계정 상태를 확인하려면
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와 같은 고정 너비 부호 있는 정수 또는 부호 없는 정수 인코딩이
있습니다.
오프체인 메시지 및 셸 자동 완성
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 | 클러스터 faucet에 SOL을 요청합니다. |
alpenglow-genesis-info | Alpenglow 제네시스 인증서에 대한 정보를 읽습니다. |
authorize-nonce-account | durable nonce 계정 권한을 지정합니다. |
balance | 계정의 SOL 잔액을 표시합니다. |
block | slot으로 확정된 블록을 가져옵니다. |
block-height | 현재 블록 높이를 표시합니다. |
block-production | slot 범위에 대한 리더의 블록 생성 현황을 표시합니다. |
block-time | 블록의 생성 시간을 추정합니다. |
catchup | validator가 클러스터를 따라잡을 때까지 대기합니다. |
close-vote-account | 투표 계정을 닫고 남은 자금을 인출합니다. |
cluster-date | 제네시스 시간과 네트워크 시간으로 클러스터 날짜를 추정합니다. |
cluster-version | 클러스터 엔트리포인트의 소프트웨어 버전을 표시합니다. |
completion | 셸 자동 완성 스크립트를 생성합니다. |
config | CLI 기본값을 조회하거나 설정합니다. |
confirm | 트랜잭션 서명의 확인 상태를 점검합니다. |
create-address-with-seed | base, seed, 프로그램 ID로 시스템 주소를 파생합니다. |
create-nonce-account | durable 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 | durable nonce를 갱신합니다. |
nonce | durable nonce 값을 출력합니다. |
nonce-account | durable 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 | 새 custodian을 서명자로 확인하면서 락업을 설정합니다. |
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 | 투표 계정의 voter 권한을 변경합니다. |
vote-authorize-voter-checked | 새 권한을 서명자로 확인하면서 voter 권한을 변경합니다. |
vote-authorize-withdrawer | 투표 계정의 인출 권한을 변경합니다. |
vote-authorize-withdrawer-checked | 새 권한을 서명자로 확인하면서 인출 권한을 변경합니다. |
vote-update-commission | 투표 계정의 수수료를 변경합니다. |
vote-update-validator | 투표 계정에 할당된 validator ID를 변경합니다. |
withdraw-from-nonce-account | durable 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
모든 명령어가 구조화된 출력을 지원하는 것은 아닙니다. 자동화에 의존하기 전에 명령어의 도움말을 확인하고, 0이 아닌 종료 상태는 실패로 처리하세요.
Is this page helpful?