# CLI Cheatsheet

<figure><img src="https://pbs.twimg.com/profile_images/1721764048403116032/rIoQhC14_400x400.jpg" alt="" width="188"><figcaption></figcaption></figure>

### Key Management

Add new key

```
sourced keys add wallet
```

Recover existing key

```
sourced keys add wallet --recover
```

List All key

```
sourced keys list
```

Delete key

```
sourced keys delete wallet
```

Export Key (save to wallet.backup)

```
sourced keys export wallet
```

Import key

```
sourced keys import wallet wallet.backup
```

Query Wallet Balance

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

### Validator Management

Create Validator

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

```

Edit Validator

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

Unjail Validator

```sh
sourced tx slashing unjail --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Signing Info

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

List all active validators

```sh
sourced 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
sourced 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

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

### Token Management

Withdraw rewards from all validators

```sh
sourced tx distribution withdraw-all-rewards --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Withdraw comission and rewards from your validator

```sh
sourced tx distribution withdraw-rewards $(sourced keys show wallet --bech val -a) --commission --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Delegate to your validator

```sh
sourced tx staking delegate $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Delegate to other

```sh
c4ed tx staking delegate TO_VALOPER_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Redelegate your stake to other validators

```sh
sourced tx staking redelegate $(sourced keys show wallet --bech val -a) TO_VALOPER_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Unbond stake

```sh
sourced tx staking unbond $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Send tokens

```sh
sourced tx bank send wallet TO_WALLET_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

### Governance

List all proposals

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

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

```sh
sourced tx gov vote 1 yes --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 
```

Create new text proposal

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

### Utility

Set Indexer **NULL / KV**

```sh
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.source/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/.source/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/.source/config/app.toml
```

Get Validator info

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

Get denom info

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

Get sync status

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

Get latest height

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

Reset Node

```sh
sourced tendermint unsafe-reset-all --home $HOME/.source --keep-addr-book
```

Delete Node

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

### Services Management

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

# Enable Service
sudo systemctl enable sourced

# Disable Service
sudo systemctl disable sourced

# Start Service
sudo systemctl start sourced

# Stop Service
sudo systemctl stop sourced

# Restart Service
sudo systemctl restart sourced

# Check Service Status
sudo systemctl status sourced

# Check Service Logs
sudo journalctl -u sourced -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/source/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.
