# CLI Cheatsheet

<figure><img src="https://pbs.twimg.com/profile_images/1455116847024586757/T9o06sNM_400x400.png" alt="" width="188"><figcaption></figcaption></figure>

### Key Management

Add new key

```
bcnad keys add wallet
```

Recover existing key

```
bcnad keys add wallet --recover
```

List All key

```
bcnad keys list
```

Delete key

```
bcnad keys delete wallet
```

Export Key (save to wallet.backup)

```
bcnad keys export wallet
```

Import key

```
bcnad keys import wallet wallet.backup
```

Query Wallet Balance

```
bcnad q bank balances $(bcnad keys show wallet -a)
```

### Validator Management

Create Validator

```sh
bcnad tx staking create-validator \
  --amount "1000000ubcna" \
  --pubkey $(bcnad tendermint show-validator) \
  --moniker "MONIKER" \
  --identity "KEYBASE_ID" \
  --details "YOUR DETAILS" \
  --website "YOUR WEBSITE" \
  --chain-id bitcanna-1 \
  --commission-rate "0.05" \
  --commission-max-rate "0.20" \
  --commission-max-change-rate "0.01" \
  --min-self-delegation "1" \
  --gas-prices "0ubcna" \
  --gas "auto" \
  --gas-adjustment "1.5" \
  --from wallet \
  -y

```

Edit Validator

```sh
bcnad tx staking edit-validator \
--new-moniker="MONIKER" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL" \
--chain-id bitcanna-1 \
--commission-rate=0.05 \
--gas-prices "0ubcna" \
--gas="auto" \
--gas-adjustment="1.5" \
--from wallet \
-y
```

Unjail Validator

```sh
bcnad tx slashing unjail --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Signing Info

```sh
bcnad query slashing signing-info $(bcnad tendermint show-validator) 
```

List all active validators

```sh
bcnad q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl 
```

List all inactive validators

```sh
bcnad q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED") or .status=="BOND_STATUS_UNBONDING")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl 
```

View validators details

```
bcnad q staking validator $(bcnad keys show wallet --bech val -a) 
```

### Token Management

Withdraw rewards from all validators

```sh
bcnad tx distribution withdraw-all-rewards --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Withdraw comission and rewards from your validator

```sh
bcnad tx distribution withdraw-rewards $(bcnad keys show wallet --bech val -a) --commission --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Delegate to your validator

```sh
bcnad tx staking delegate $(bcnad keys show wallet --bech val -a) 1000000ubcna --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Delegate to other

```sh
c4ed tx staking delegate TO_VALOPER_ADDRESS 1000000ubcna --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Redelegate your stake to other validators

```sh
bcnad tx staking redelegate $(bcnad keys show wallet --bech val -a) TO_VALOPER_ADDRESS 1000000ubcna --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Unbond stake

```sh
bcnad tx staking unbond $(bcnad keys show wallet --bech val -a) 1000000ubcna --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Send tokens

```sh
bcnad tx bank send wallet TO_WALLET_ADDRESS 1000000ubcna --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

### Governance

List all proposals

<pre class="language-sh"><code class="lang-sh"><strong>bcnad query gov proposals
</strong></code></pre>

Vote **YES / NO / ABSTAIN / NO\_WITH\_VETO**

```sh
bcnad tx gov vote 1 yes --from wallet --chain-id bitcanna-1 --gas-prices "0ubcna" --gas-adjustment 1.5 --gas "auto" -y 
```

Create new text proposal

```sh
bcnad tx gov submit-proposal \
--title="Title" \
--description="Description" \
--deposit=100000000ubcna \
--type="Text" \
--from=wallet \
--gas-prices 0ubcna\ 
--gas-adjustment 1.5 \
--gas "auto" \
-y 
```

### Utility

Set Indexer **NULL / KV**

```sh
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.bcna/config/config.toml
```

Set Custom Port

```sh
CUSTOM_PORT=13
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}660\"%" $HOME/.bcna/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}317\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}091\"%; s%^address = \"0.0.0.0:8545\"%address = \"0.0.0.0:${CUSTOM_PORT}545\"%; s%^ws-address = \"0.0.0.0:8546\"%ws-address = \"0.0.0.0:${CUSTOM_PORT}546\"%" $HOME/.bcna/config/app.toml
```

Get Validator info

```sh
bcnad status 2>&1 | jq .ValidatorInfo
```

Get denom info

```sh
bcnad q bank denom-metadata -oj | jq
```

Get sync status

```sh
bcnad status 2>&1 | jq .SyncInfo.catching_up
```

Get latest height

```sh
bcnad status 2>&1 | jq .SyncInfo.latest_block_height
```

Reset Node

```sh
bcnad tendermint unsafe-reset-all --home $HOME/.bcna --keep-addr-book
```

Delete Node

```sh
sudo systemctl stop bcnad && sudo systemctl disable bcnad && sudo rm /etc/systemd/system/bcnad.service && sudo systemctl daemon-reload && rm -rf $HOME/.bcna && sudo rm -rf $(which bcnad) 
```

### Services Management

```sh
# Reload Service
sudo systemctl daemon-reload

# Enable Service
sudo systemctl enable bcnad

# Disable Service
sudo systemctl disable bcnad

# Start Service
sudo systemctl start bcnad

# Stop Service
sudo systemctl stop bcnad

# Restart Service
sudo systemctl restart bcnad

# Check Service Status
sudo systemctl status bcnad

# Check Service Logs
sudo journalctl -u bcnad -f --no-hostname -o cat
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.indonode.net/mainnet/bitcanna/cheat.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
