# Gaia CLI `gaiacli` is the command line interface to manage accounts and transactions on Cosmos testnets. Here is a list of useful `gaiacli` commands, including usage examples. ## Key Types There are three types of key representations that are used: - `cosmosaccaddr` * Derived from account keys generated by `gaiacli keys add` * Used to receive funds * e.g. `cosmosaccaddr15h6vd5f0wqps26zjlwrc6chah08ryu4hzzdwhc` - `cosmosaccpub` * Derived from account keys generated by `gaiacli keys add` * e.g. `cosmosaccpub1zcjduc3q7fu03jnlu2xpl75s2nkt7krm6grh4cc5aqth73v0zwmea25wj2hsqhlqzm` - `cosmosvalpub` * Generated when the node is created with `gaiad init`. * Get this value with `gaiad tendermint show_validator` * e.g. `cosmosvalpub1zcjduc3qcyj09qc03elte23zwshdx92jm6ce88fgc90rtqhjx8v0608qh5ssp0w94c` ## Generate Keys You'll need an account private and public key pair \(a.k.a. `sk, pk` respectively\) to be able to receive funds, send txs, bond tx, etc. To generate a new key \(default _ed25519_ elliptic curve\): ```bash gaiacli keys add ``` Next, you will have to create a passphrase to protect the key on disk. The output of the above command will contain a _seed phrase_. Save the _seed phrase_ in a safe place in case you forget the password! If you check your private keys, you'll now see ``: ```bash gaiacli keys show ``` You can see all your available keys by typing: ```bash gaiacli keys list ``` View the validator pubkey for your node by typing: ```bash gaiad tendermint show_validator ``` ::: danger Warning We strongly recommend *NOT* using the same passphrase for multiple keys. The Tendermint team and the Interchain Foundation will not be responsible for the loss of funds. ::: ## Get Tokens The best way to get tokens is from the [Cosmos Testnet Faucet](https://faucetcosmos.network). If the faucet is not working for you, try asking [#cosmos-validators](https://riot.im/app/#/room/#cosmos-validators:matrix.org). The faucet needs the `cosmosaccaddr` from the account you wish to use for staking. After receiving tokens to your address, you can view your account's balance by typing: ```bash gaiacli account ``` ::: warning Note When you query an account balance with zero tokens, you will get this error: `No account with address was found in the state.` This can also happen if you fund the account before your node has fully synced with the chain. These are both normal. We're working on improving our error messages! ::: ## Send Tokens ```bash gaiacli send \ --amount=10faucetToken \ --chain-id=gaia-6002 \ --name= \ --to= ``` ::: warning Note The `--amount` flag accepts the format `--amount=`. ::: Now, view the updated balances of the origin and destination accounts: ```bash gaiacli account gaiacli account ``` You can also check your balance at a given block by using the `--block` flag: ```bash gaiacli account --block= ``` ## Delegate On the upcoming mainnet, you can delegate `atom` to a validator. These [delegators](/resources/delegators-faq) can receive part of the validator's fee revenue. Read more about the [Cosmos Token Model](https://github.com/cosmos/cosmos/raw/master/Cosmos_Token_Model.pdf). ### Bond Tokens On the testnet, we delegate `steak` instead of `atom`. Here's how you can bond tokens to a testnet validator: ```bash gaiacli stake delegate \ --amount=10steak \ --address-delegator= \ --address-validator=$(gaiad tendermint show_validator) \ --name= \ --chain-id=gaia-6002 ``` While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool. ::: tip Note Don't use more `steak` thank you have! You can always get more by using the [Faucet](https://faucetcosmos.network/)! ::: ### Unbond Tokens If for any reason the validator misbehaves, or you want to unbond a certain amount of tokens, use this following command. You can unbond a specific amount of`shares`\(eg:`12.1`\) or all of them \(`MAX`\). ```bash gaiacli stake unbond \ --address-delegator= \ --address-validator=$(gaiad tendermint show_validator) \ --shares=MAX \ --name= \ --chain-id=gaia-6002 ``` You can check your balance and your stake delegation to see that the unbonding went through successfully. ```bash gaiacli account gaiacli stake delegation \ --address-delegator= \ --address-validator=$(gaiad tendermint show_validator) \ --chain-id=gaia-6002 ```