# Learn Solana CLI ###### tags: `solana` ### Wallet types - file - paper - hardware ### Create wallet create wallet (key-pair) ```shell // file wallet solana-keygen new --outfile YOUR-PRIVATE-KEY-FILE-PATH // paper wallet solana-keygen new --no-outfile ``` the public key will display on the terminal if you didn't save the pubkey, it's fine. we can get the pubkey from private-key ```shell solana-keygen pubkey YOUR-PRIVATE-KEY-FILE-PATH ``` Verify key-pair ```shell solana-keygen verify PUBKEY PRIVATE-KEY-FILE-PATH ``` ### Interact with wallet - `pubkey` aka. `address` aka. `wallet address` config ``` solana config get ``` set URL to dev-net for developing ``` solana config set --url https://api.devnet.solana.com ``` send 1 SOL to address ``` solana airdrop 1 PUBKEY ``` get balance of address ``` solana balance PUBKEY ``` transfer - from - to - amount - fee-payer ``` solana transfer --from <KEYPAIR> \ <RECIPIENT_ACCOUNT_ADDRESS> <AMOUNT> \ --fee-payer <KEYPAIR> ``` ## Stake ### create stake account ``` // first create a keypair for account address solana-keygen new --no-passphrase -o stake-account.json // then create account solana create-stake-account --from <KEYPAIR> stake-account.json <AMOUNT> \ --stake-authority <KEYPAIR> --withdraw-authority <KEYPAIR> \ --fee-payer <KEYPAIR> ``` ### get account ``` solana stake-account <STAKE_ACCOUNT_ADDRESS> ``` ### update account auth ``` solana stake-authorize <STAKE_ACCOUNT_ADDRESS> \ --stake-authority <KEYPAIR> --new-stake-authority <PUBKEY> \ --fee-payer <KEYPAIR> ``` ## Delegate Stake (質押) ### list available validators ``` solana validators ``` ### delegate ``` solana delegate-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <VOTE_ACCOUNT_ADDRESS> \ --fee-payer <KEYPAIR> ``` ### deactive ``` solana deactivate-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> \ --fee-payer <KEYPAIR> ``` ### withdraw sol only work when the stake-account deactived ``` solana withdraw-stake --withdraw-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <RECIPIENT_ADDRESS> <AMOUNT> \ --fee-payer <KEYPAIR> ``` ### split You may want to delegate stake to additional validators while your existing stake is not eligible for withdrawal. It might not be eligible because it is currently staked, cooling down, or locked up. To transfer tokens from an existing stake account to a new one ``` solana split-stake --stake-authority <KEYPAIR> <STAKE_ACCOUNT_ADDRESS> <NEW_STAKE_ACCOUNT_KEYPAIR> <AMOUNT> \ --fee-payer <KEYPAIR> ``` ## ref - https://docs.solana.com/cli/usage