# Useful CLI Commands

Get standard debug info from the `source` daemon:

```bash
sourced status
```

Check if your node is catching up:

```bash
# Query via the RPC (default port: 26657)
curl http://localhost:26657/status | jq .result.sync_info.catching_up
```

Get your node ID:

```bash
sourced tendermint show-node-id
```

{% hint style="info" %}
Your peer address will be the result of this plus host and port, i.e. `<id>@<host>:26656` if you are using the default port.
{% endhint %}

Check if you are jailed or tombstoned:

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

Set the default chain for commands to use:

```bash
sourced config chain-id source-1
```

Get your `valoper` address:

```bash
sourced keys show <your-key-name> -a --bech val
```

See keys on the current box:

```bash
sourced keys list
```

Import a key from a mnemonic:

```bash
sourced keys add <new-key-name> --recover
```

Export a private key (warning: don't do this unless you know what you're doing!)

```bash
sourced keys export <your-key-name> --unsafe --unarmored-hex
```

Withdraw rewards (including validator commission), where `sourcevaloper1...` is the validator address:

```bash
sourced tx distribution withdraw-rewards <sourcevaloper1...> --from <your-key>  --commission
```

Stake:

```bash
sourced tx staking delegate <sourcevaloper1...> <AMOUNT>usource --from <your-key>
```

Find out what the JSON for a command would be using `--generate-only`:

```bash
sourced tx bank send $(sourced keys show <your-key-name> -a) <recipient addr> <AMOUNT>usource --generate-only
```

Add Funds to Community Pool

```
sourced tx distribution fund-community-pool <AMOUNT>usource --from $(sourced keys show <your-key-name> -a) --chain-id source-1
```

Delegate to Gov proposal

```
sourced query gov deposit <proposal-id> <AMOUNT>usource --from <your-key> --chain-id source-1
```

Vote on Proposal

```
sourced tx gov vote <proposal-id> <Option,yes/no/etc> --from <your-key> --chain-id source-1
```

Query the results of a gov vote that has ended, from a remote RPC (NB - you have to specify a height before the vote ended):

```bash
 sourced q gov votes 1 --height <height-before-vote-ended> --node https://testnet.sourceprotocol.io:26657/
```

Query the validator set (and jailed status) via CLI:

```bash
sourced query staking validators --limit 1000 -o json | jq -r '.validators[] | [.operator_address, (.tokens|tonumber / pow(10; 6)), .description.moniker, .jail, .status] | @csv' | column -t -s"," | sort -k2 -n -r | nl
```

Query Staking Delegations

```
sourced query staking delegations-to <sourcevaloper1...> --chain-id source-1
```

Unjail Validator

```
sourced tx slashing unjail --from=source-user --chain-id=source-1
```

Get contract state:

```bash
sourced q wasm contract-state all <contract-address>
```
