# Introduction

Some words about myself

Hello, mate.

If you are here you probably got interested in my work in the crypto community.

I am from Ukraine, and for the last 17 years, my main job is to provide quality assurance services for different IT products in a world wide known company, mainly embedded software.

Almost 2 years ago I started to get deep into the crypto world, and one of the areas is taking part in project testing as this is my main professional area of interest.

Since then I took part in a vast number of testnets. At the current moment, I have a couple of mainnets running as well.

So, here you will find everything you are interested in specific projects.

Welcome!

P.S. And if you don't mind I would be grateful for spreading the word about me and my space.


# Supported networks

## Cosmos Mainnets

[Andromeda Protocol](/cosmos-mainnets/andromeda-protocol)

[Empower Chain](/cosmos-mainnets/empower)

[Gitopia](/cosmos-mainnets/gitopia)

[Kyve](/cosmos-mainnets/kyve)

[Nibiru](/cosmos-mainnets/nibiru)

[Nolus](/cosmos-mainnets/nolus)

[Rebus Chain](/cosmos-mainnets/rebus-chain)

[Uptick Network](/cosmos-mainnets/uptick-network)

### Info to be added

* Cosmos Hub (just node w/o validator, ibc support)
* Osmosis (just node w/o validator, ibc support)

## Cosmos Testnets

[Arkeo](/cosmos-testnets/arkeo) [Elys Network](/cosmos-testnets/elys-network) [Fiamma](/cosmos-testnets/fiamma) [Initia](/cosmos-testnets/initia) [Lava Network](/cosmos-testnets/lava-network) [Mantra Chain](/cosmos-testnets/mantra-chain) [Namada](/cosmos-testnets/namada) [Side Protocol](/cosmos-testnets/side-protocol) [Union](/cosmos-testnets/union) [Warden Protocol](/cosmos-testnets/warden-protocol) [Zero Gravity](/cosmos-testnets/zero-gravity)

### Info to be added

* althea
* andromeda
* babylon
* mande chain
* nibiru
* nolus-testnet
* ojo
* ollo
* osmosis-testnet
* uptick-testnet


# Andromeda Protocol

<figure><img src="https://github.com/Liver-23/GitBook/blob/main/.gitbook/assets/andromeda-protocol.png" alt="" width="100"><figcaption></figcaption></figure>

## About

Andromeda is an all on-chain and multi-chain suite of products, tools, and utilities enabled by a decentralized Operating System we call aOS, or Andromeda Operating System. aOS is where Web3 starts.

## Project links

* [Web](https://www.andromedaprotocol.io)
* [Discord](https://discord.gg/GBd6buKYyZ)
* [Twitter](https://twitter.com/andromedaprot)
* [GitHub](https://github.com/andromedaprotocol)

## Network parameters

| Chain ID    | Version                                                                                             |
| ----------- | --------------------------------------------------------------------------------------------------- |
| andromeda-1 | [v0.1.1-beta-patch](https://github.com/andromedaprotocol/andromedad/releases/tag/v0.1.1-beta-patch) |

## Chain Explorer

* <https://mainnet.explorer.liveraven.net/andromeda>
* [Validator stats](https://mainnet.explorer.liveraven.net/andromeda/staking/andrvaloper18gmvjaw4shpucrsts6m6q44mvaakay4efug025)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
andrvaloper18gmvjaw4shpucrsts6m6q44mvaakay4efug025
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                       |
| ---- | ------------------------------------- |
| RPC  | <https://andromeda.rpc.liveraven.net> |
| API  | <https://andromeda.api.liveraven.net> |
| gRPC | <andromeda.grpc.liveraven.net:443>    |

## Connections

### Peer

#### LiveRaveN Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
314318c86315fb9a90e7fcaf828ba746c2ff0244@23.88.5.169:35656
```

{% endcode %}

#### External Peers

{% code overflow="wrap" fullWidth="false" %}

```bash

PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/mainnet/andromeda-protocol/peers.txt")
if [ -z "$PEERS" ]; then
    echo "No peers were retrieved from the URL."
else
    echo -e "\nPEERS: "$PEERS""
    sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.andromeda/config/config.toml"
    echo -e "\nConfiguration file updated successfully.\n"
fi
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/mainnet/andromeda-protocol/addrbook.json > $HOME/.andromeda/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/mainnet/andromeda-protocol/genesis.json > $HOME/.andromeda/config/genesis.json
```

{% endcode %}


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop andromedad
cp $HOME/.andromeda/data/priv_validator_state.json $HOME/.andromeda/priv_validator_state.json.backup
andromedad tendermint unsafe-reset-all --home $HOME/.andromeda --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://andromeda.rpc.liveraven.net:443
STATE_SYNC_PEER=314318c86315fb9a90e7fcaf828ba746c2ff0244@23.88.5.169:35656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.andromeda/config/config.toml

mkdir -p $HOME/.andromeda/data && mv $HOME/.andromeda/priv_validator_state.json.backup $HOME/.andromeda/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start andromedad && sudo journalctl -u andromedad -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking create-validator \
--amount 1000000uandr \
--pubkey $(andromedad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id andromeda-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id andromeda-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx slashing unjail \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx distribution withdraw-all-rewards \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx distribution withdraw-rewards $(andromedad keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking delegate $(andromedad keys show wallet --bech val -a) 1000000uandr \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking delegate <TO_VALOPER_ADDRESS> 1000000uandr \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking redelegate $(andromedad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uandr \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx staking unbond $(andromedad keys show wallet --bech val -a) 1000000uandr \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx bank send wallet <TO_WALLET_ADDRESS> 1000000uandr \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx gov vote 1 yes \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx gov vote 1 no \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx gov vote 1 abstain \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id andromeda-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.001uandr \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

{% tabs %}
{% tab title="⚡️ Utility" %}

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.andromeda/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.andromeda/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.andromeda/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.andromeda/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.andromeda/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.andromeda/config/app.toml
```

{% endcode %}
{% endtab %}

{% tab title="🚨 Maintenance" %}

#### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

#### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad status 2>&1 | jq .SyncInfo
```

{% endcode %}

#### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(andromedad tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.andromeda/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

#### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(andromedad q staking validator $(andromedad keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(andromedad status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

#### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}'
```

{% endcode %}

#### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001uandr\"/" $HOME/.andromeda/config/app.toml
```

{% endcode %}

#### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.andromeda/config/config.toml
```

{% endcode %}

#### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
andromedad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.andromeda --keep-addr-book
```

{% endcode %}

#### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop andromedad.service
sudo systemctl disable andromedad.service
sudo rm /etc/systemd/system/andromedad.service
sudo systemctl daemon-reload
rm -f $(which andromedad)
rm -rf $HOME/.andromeda
rm -rf $HOME/andromedad
```

{% endcode %}
{% endtab %}

{% tab title="⚙️ Service Management" %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable andromedad.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable andromedad.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start andromedad.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop andromedad.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart andromedad.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status andromedad.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u andromedad.service -f --no-hostname -o cat --since 1h
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Empower Chain

<figure><img src="/files/AeGsEpNtHEVH1EIJozoc" alt=""><figcaption></figcaption></figure>

## About

Digital infrastructure for a circular economy. [Medium](https://medium.com/empowerplastic/introducing-empowerchain-989f609d12b6)

## Project links

* [Web](https://www.empowerchain.io/)
* [Discord](https://discord.gg/8PmfTcDR)
* [Twitter](https://twitter.com/empowerchain_io)
* [GitHub](https://github.com/EmpowerPlastic)

## Network parameters

| Chain ID | circulus-1                                                                   |
| -------- | ---------------------------------------------------------------------------- |
| Version  | [v2.0.0](https://github.com/EmpowerPlastic/empowerchain/releases/tag/v2.0.0) |

## Stake with me

* [Delegate with restake.app](https://restake.app/empowerchain/empowervaloper128kl7qj84c5n3wrelqdz3j9sdqt3vhdxy4j4gs)

{% code overflow="wrap" fullWidth="false" %}

```bash
empowervaloper128kl7qj84c5n3wrelqdz3j9sdqt3vhdxy4j4gs
```

{% endcode %}


# Services

## Chain Explorer

[TBD](https://explorers.liveraven.net/empower)

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://empower.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://empower.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://empower.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
a2ed6f01e454d3469a95edee6580e750d79d4297@empower.rpc.liveraven.net:22656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/empower/addrbook.json > $HOME/.empower/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop empowerd
cp $HOME/.empowerchain/data/priv_validator_state.json $HOME/.empowerchain/priv_validator_state.json.backup
rm -rf $HOME/.empowerchain/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/empower/empowerchain-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.empowerchain
mv $HOME/.empowerchain/priv_validator_state.json.backup $HOME/.empowerchain/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start empowerd && sudo journalctl -u empowerd -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop empowerd
cp $HOME/.empowerchain/data/priv_validator_state.json $HOME/.empowerchain/priv_validator_state.json.backup
empowerd tendermint unsafe-reset-all --home $HOME/.empowerchain --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://empower.rpc.liveraven.net:443
STATE_SYNC_PEER=a2ed6f01e454d3469a95edee6580e750d79d4297@empower.rpc.liveraven.net:22656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 600))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.empowerchain/config/config.toml

mkdir -p $HOME/.empowerchain/data && mv $HOME/.empowerchain/priv_validator_state.json.backup $HOME/.empowerchain/data/priv_validator_state.json
```

### \*\*Load wasm

```bash
curl -L http://snapshots.liveraven.net/snapshots/empower/wasm_circulus-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.empowerchain
```

### **Restart the service and check the log**

```bash
sudo systemctl start empowerd && sudo journalctl -u empowerd -fn 100 -o cat
```


# Gitopia

<figure><img src="/files/7rsHAZIDJ5NmlzqJOh5o" alt=""><figcaption></figcaption></figure>

## About

Gitopia is the next-generation Code Collaboration Platform fuelled by a decentralized network and interactive token economy. It is designed to optimize the open-source software development process through collaboration, transparency, and incentivize.

## Project links

* [Web](https://gitopia.com/)
* [Discord](https://discord.gg/TztGeVUj)
* [Twitter](https://twitter.com/gitopiaDAO)
* [Gitopia](https://gitopia.com/Gitopia)
* [GitHub](https://github.com/gitopia/)

## Network parameters

| Chain ID | gitopia                                                           |
| -------- | ----------------------------------------------------------------- |
| Version  | [v3.2.0](https://gitopia.com/Gitopia/gitopia/releases/tag/v3.2.0) |

## Stake with me

[Delegate](https://wallet.keplr.app/chains/gitopia?modal=validator\&chain=gitopia\&validator_address=gitopiavaloper1cu774mpayvrvp6zkxemhmvwp2vjvgklp20l34d)

{% code overflow="wrap" fullWidth="false" %}

```bash
gitopiavaloper1cu774mpayvrvp6zkxemhmvwp2vjvgklp20l34d
```

{% endcode %}


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://gitopia.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://gitopia.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://gitopia.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
d36d88508bc7cb0ed74ae06d8d1a0d23da67862b@gitopia.rpc.liveraven.net:32656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls http://snapshots.liveraven.net/snapshots/gitopia/addrbook.json > $HOME/.gitopia/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop gitopiad
cp $HOME/.gitopia/data/priv_validator_state.json $HOME/.gitopia/priv_validator_state.json.backup
rm -rf $HOME/.gitopia/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/gitopia/gitopia_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.gitopia
mv $HOME/.gitopia/priv_validator_state.json.backup $HOME/.gitopia/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start gitopiad && sudo journalctl -u gitopiad -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop gitopiad
cp $HOME/.gitopia/data/priv_validator_state.json $HOME/.gitopia/priv_validator_state.json.backup
gitopiad tendermint unsafe-reset-all --home $HOME/.gitopia --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://gitopia.rpc.liveraven.net:443
STATE_SYNC_PEER=d36d88508bc7cb0ed74ae06d8d1a0d23da67862b@gitopia.rpc.liveraven.net:32656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 700))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.gitopia/config/config.toml

mkdir -p $HOME/.gitopia/data && mv $HOME/.gitopia/priv_validator_state.json.backup $HOME/.gitopia/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start gitopiad && sudo journalctl -u gitopiad -fn 100 -o cat
```


# Kyve

<figure><img src="/files/iCmdR9daqBbdA9q2vfOr" alt="" width="100"><figcaption></figcaption></figure>

## About

KYVE Network is revolutionizing customized access to on- and off-chain data by providing fast and easy tooling for decentralized data validation, immutability, and retrieval.

## Project links

* [Web](https://www.kyve.network/)
* [Discord](https://discord.gg/kyve)
* [Twitter](https://twitter.com/KYVENetwork)
* [GitHub](https://github.com/KYVENetwork)

## Network parameters

| Chain ID | kyve-1                                                             |
| -------- | ------------------------------------------------------------------ |
| Version  | [v1.3.0](https://github.com/KYVENetwork/chain/releases/tag/v1.3.0) |

## Stake with me

* [Delegate with official explorer](https://explorer.kyve.network/kyve/staking/kyvevaloper13eduhc6ds4fvcatt8vj472rwkr5vvup79wnz2y)
* [Delegate with restake.app](https://restake.app/kyve/kyvevaloper13eduhc6ds4fvcatt8vj472rwkr5vvup79wnz2y)
* [Delegate with keplr.app](https://wallet.keplr.app/chains/kyve?modal=validator\&chain=kyve-1\&validator_address=kyvevaloper13eduhc6ds4fvcatt8vj472rwkr5vvup79wnz2y)

{% code overflow="wrap" fullWidth="false" %}

```bash
kyvevaloper13eduhc6ds4fvcatt8vj472rwkr5vvup79wnz2y
```

{% endcode %}


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://kyve.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://kyve.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://kyve.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
36afae529bd7fb07c6d0650c9acacdd4e5dad32a@kyve.rpc.liveraven.net:13656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls http://snapshots.liveraven.net/snapshots/kyve/addrbook.json > $HOME/.kyve/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

TBD


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop kyved
cp $HOME/.kyve/data/priv_validator_state.json $HOME/.kyve/priv_validator_state.json.backup
kyved tendermint unsafe-reset-all --home $HOME/.kyve --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://kyve.rpc.liveraven.net:443
STATE_SYNC_PEER=36afae529bd7fb07c6d0650c9acacdd4e5dad32a@kyve.rpc.liveraven.net:13656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 300))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
  -e "s|^enable *=.*|enable = true|" \
  -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
  -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
  -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
  -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
  $HOME/.kyve/config/config.toml

mkdir -p $HOME/.kyve/data && mv $HOME/.kyve/priv_validator_state.json.backup $HOME/.kyve/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start kyved && sudo journalctl -u kyved -fn 100 -o cat
```


# Upgrade Path

Upgrade Paths

## Osmosis

#### **Genesis**

```bash
version: 3.1.0
commit: 13916d1e10bca718b6ea7f4b84715710bc319e6d
go: go version go1.15.2 linux/amd64
```

#### **v4**

```bash
version: 4.2.0
commit: e79fc9f47f2bd4518d9e16567a369c25a0820fa6
go: go version go1.15.2 linux/amd64
```

#### **v5**

```bash
version: 6.4.0
commit: 86d1a033eb0cc5c25654e02de15df76c9c8bcc77
go: go version go1.15.2 linux/amd64
```

#### **v7**

```bash
version: 8.0.0
commit: 16e3b51f19a58f815a4eabcbcee11886eb33e026
go: go version go1.18.1 linux/amd64
```

#### **v9**

```bash
version: 10.0.0
commit: 7ca72c5fc4547f62b9984e62cd83639727691b62
go: go version go1.18.2 linux/amd64
```

#### **v11**

```bash
version: 11.0.1
commit: 50d49dd7cea50f09c7347f447bcb1e1872343220
go: go version go1.18.2 linux/amd64
```

#### **v12** - no output...v12.3.0 I guess

```bash
version: ""
commit: ""
go: go version go1.18.8 linux/amd64
```

#### **v13**

```bash
version: 13.1.2
commit: 28234a55c3cfc98f19b8b7c81902cb9e43f8e261
go: go version go1.18.9 linux/amd64
```

#### **v14**

```bash
version: 14.0.1
commit: 0a4b5bed878af2ea2167749f937e7cdde21f9031
go: go version go1.19.6 linux/amd64
```

#### **v15**

```bash
version: 15.2.0
commit: 4a4a94585872e3196b9c83286979cda11d4889e3
go: go version go1.19.10 linux/amd64
```

#### **v16**

```bash
version: 16.1.1
commit: 0dcae3392f23e44b8de436ff372c1373dc831b04
go: go version go1.20.5 linux/amd64
```

#### **v17**

```bash
version: 17.0.0
commit: ea8b7410e66f4aa7f360e1ce09e7b0cfd5e6e4bf
go: go version go1.20.5 linux/amd64
```

#### **v18**

```bash
version: 18.0.0
commit: 1c5f25d04f19d6302e0bdd585ba1d7a2cc96e397
go: go version go1.20.5 linux/amd64
```

#### **v19**

```bash
version: 19.2.0
commit: 38d1d2b748d161fd23f966d88b23b66a63c9a284
go: go version go1.20.6 linux/amd64
```

#### **v20**

```bash
version: 20.5.0
commit: 7f2097863f7a0a02f4a0758fc0a600aecf63e1f4
go: go version go1.20.6 linux/amd64
```

#### **v21**

```bash
version: 21.1.4
commit: 50c1d0b619c64817ba5d1da2d71dbeb6b7b60425
go: go version go1.20.6 linux/amd64
```

#### **v22**

```bash
version: 22.0.5
commit: 350901e523815fc34a1de1ca54e9ccd3c4d1f756
go: go version go1.21.6 linux/amd64
```

#### **v23**

```bash
version: 23.0.3
commit: 271a467dcaa3e4ee9e9a63ba0d4a5bf317650a43
go: go version go1.21.7 linux/amd64
```

## Axelar

#### **Genesis**

```bash
version: 0.10.7
commit: 44fc624a6b710b421dd9dff82d0251b94d28296f
go: go version go1.20.4 linux/amd64
```

#### **v13**

```bash
version: 0.13.6
commit: 1b1207f96dc62fcbfb64dac6f3dde633de727db1
go: go version go1.20.4 linux/amd64
```

#### **v14**

```bash
version: 0.14.1
commit: 8bc296dede83faefcafa0990704422f6d69e2398
go: go version go1.20.4 linux/amd64
```

#### **v15**

```bash
version: 0.15.0
commit: 172a2d817a2adbb3d5afff257d1a3a0d1e0096a1
go: go version go1.17.5 linux/amd64
```

#### **v16**

```bash
version: 0.16.1
commit: 19102d31f10bf10fe76dd7d14978ec71167e8043
go: go version go1.20.4 linux/amd64
```

#### **v17**

```bash
version: 0.17.3
commit: 10d666ba342534d90d4ef3a6fdc59cbe2e1a5250
go: go version go1.20.4 linux/amd64
```

#### **v18**

```bash
version: 0.18.3
commit: 6be3b60403facd827613a3c90990042f43ddb9ca
go: go version go1.20.4 linux/amd64
```

#### **v19**

```bash
version: 0.19.4
commit: 6b75266b4568f2416a323d7a4f14d4a453bc5945
go: go version go1.20.4 linux/amd64
```

#### **v20**

```bash
version: 0.20.0
commit: ac086878edc9c239d8134fce8994e29482e144f3
go: go version go1.20.4 linux/amd64
```

#### **v21**

```bash
version: 0.21.1
commit: 246984b0f5c234d4922fedf3e5078b8e58b78a3c
go: go version go1.20.4 linux/amd64
```

#### **v24**

```bash
version: 0.24.0
commit: 981196d61fea1b9ad66eab69b27ae2ff3c2524b2
go: go version go1.20.4 linux/amd64
```

#### **v26**

```bash
version: 0.26.5
commit: 08d51ffee840403e0d2602a9f1d7ff4d99ccb155
go: go version go1.20.4 linux/amd64
```

#### **v28**

```bash
version: 0.28.0
commit: b60bd0e33a54bdc5f5e4a762007a68063ca78865
go: go version go1.20.4 linux/amd64
```

#### **v29**

```bash
version: 0.29.1
commit: 0137a28b91dad368f4709eadde3361202e198688
go: go version go1.20.4 linux/amd64
```

#### **v31**

```bash
version: 0.31.2
commit: 12bda1b59e5c9f12d2b14119cd8c69e2af355585
go: go version go1.20.4 linux/amd64
```

#### **v33**

```bash
version: 0.33.2
commit: 4f16d6fe89f4c11db7597558eea65e4909dc9019
go: go version go1.20.4 linux/amd64
```

#### **v34**

```bash
version: 0.34.1
commit: 048a66e66026d42fbefe048212cd18f8ac7a2207
go: go version go1.20.4 linux/amd64
```

## Cronos

#### **Genesis - 1 \~ 2,693,800**

```bash
version: 0.6.11
commit: e6753a2ec30cef2f51f354cbd4be68483e396c46
go: go version go1.17.1 linux/amd64
```

#### **v0.7.0 - 2,693,800 \~ 3982500**

```bash
version: v0.7.1
commit: 8035ebd
go: go version go1.17.5 linux/amd64
```

**Add to app.toml**

```json
[json-rpc]
feehistory-cap = 100
logs-cap = 10000
block-range-cap = 10000
http-timeout="30s"
http-idle-timeout="120s"

[evm]
max-tx-gas-wanted=500000
```

#### **v0.7.0-hotfix - 3982500 \~ 6542800**

```bash
version: v0.8.3
commit: "5943e96"
go: go version go1.18.4 linux/amd64
```

**Add to app.toml**

```json
iavl-disable-fastnode = true
```

#### **v1.0.0 - 6542800 \~ current**

```bash
version: v1.0.15
commit: 1f5e261
go: go version go1.20.4 linux/amd64
```

**Add to config.toml**

```json
db_backend = "goleveldb"
```

or

```json
db_backend = "rocksdb"
```

**Add to app.toml according to above**

```json
app-db-backend = ""
```


# Nibiru

<figure><img src="/files/nONeke2JMe3eszIiQ7bx" alt=""><figcaption></figcaption></figure>

## About

Gitopia is the next-generation Code Collaboration Platform fuelled by a decentralized network and interactive token economy. It is designed to optimize the open-source software development process through collaboration, transparency, and incentivize.

## Project links

* [Web](https://nibiru.fi)
* [Discord](https://discord.gg/nibirufi)
* [Twitter](https://twitter.com/NibiruChain)
* [GitHub](https://github.com/NibiruChain)

## Network parameters

| Chain ID | cataclysm-1                                                         |
| -------- | ------------------------------------------------------------------- |
| Version  | [v1.0.3](https://github.com/NibiruChain/nibiru/releases/tag/v1.0.3) |


# Services

## Chain Explorer

<https://mainnet.explorer.liveraven.net/nibiru>

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://nibiru.rpc.liveraven.net>
{% endtab %}

{% tab title="API" %}
<https://nibiru.api.liveraven.net>
{% endtab %}

{% tab title="gRPC" %}
nibiru.grpc.liveraven.net:443
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
75d2372f7feecb7bf66a5c57302bea172c62a3d3@nibiru.rpc.liveraven.net:20656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/nibiru/addrbook.json > $HOME/.nibid/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop nibid
cp $HOME/.nibid/data/priv_validator_state.json $HOME/.nibid/priv_validator_state.json.backup
rm -rf $HOME/.nibid/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/nibiru/cataclysm-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nibid
mv $HOME/.nibid/priv_validator_state.json.backup $HOME/.nibid/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start nibid && sudo journalctl -u nibid -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```
sudo systemctl stop nibid
cp $HOME/.nibid/data/priv_validator_state.json $HOME/.nibid/priv_validator_state.json.backup
nibid tendermint unsafe-reset-all --home $HOME/.nibid --keep-addr-book
```

### **Get and configure the state sync information**

```
STATE_SYNC_RPC=http://nibiru.rpc.liveraven.net:443
STATE_SYNC_PEER=75d2372f7feecb7bf66a5c57302bea172c62a3d3@nibiru.rpc.liveraven.net:20656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 1500))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.nibid/config/config.toml

mkdir -p $HOME/.nibid/data && mv $HOME/.nibid/priv_validator_state.json.backup $HOME/.nibid/data/priv_validator_state.json
```

### **Restart the service and check the log**

```
sudo systemctl start nibid && sudo journalctl -u nibid -fn 100 -o cat
```


# Nolus

<figure><img src="/files/Mjz8iotcf4siya1pdH4o" alt=""><figcaption></figcaption></figure>

## About

Nolus Protocol is a Web3 financial suite that offers an innovative approach to money markets with a novel lease solution to develop the DeFi space further. The Protocol utilizes a semi-permissioned PoS blockchain built using the Cosmos SDK and a WASM smart contract engine that executes in an isolated sandbox model focused on security, performance, and interoperability. Interoperability is at the core of Nolus' offering as the Protocol utilizes IBC and Interchain Accounts to tap into a diverse set of liquidity hubs without creating fragmentation across chains.

## Project links

* [Web](hhttps://nolus.io/)
* [Discord](https://discord.gg/nolus-protocol)
* [Twitter](https://twitter.com/NolusProtocol)
* [GitHub](https://github.com/nolus-protocol/)

## Network parameters

| Chain ID | pirin-1                                                                    |
| -------- | -------------------------------------------------------------------------- |
| Version  | [v0.6.2](https://github.com/nolus-protocol/nolus-core/releases/tag/v0.6.2) |

## Stake with me

* [Delegate with official explorer](https://explorer.nolus.io/pirin-1/staking/nolusvaloper1vytpvur69pn4f356kmkwwdeqpmr9ymejf4yt5d)

```bash
nolusvaloper1vytpvur69pn4f356kmkwwdeqpmr9ymejf4yt5d
```


# Services

## Chain Explorer

[TBD](https://explorers.liveraven.net/nolus)

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://nolus.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://nolus.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://nolus.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
c9c1e043256a6fb8275a42387d21839db09d8945@nolus.rpc.liveraven.net:31656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls http://snapshots.liveraven.net/snapshots/nolus/addrbook.json > $HOME/.nolus/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop nolusd
cp $HOME/.nolus/data/priv_validator_state.json $HOME/.nolus/priv_validator_state.json.backup
rm -rf $HOME/.nolus/data $HOME/.nolus/wasm
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/nolus/pirin-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nolus
mv $HOME/.nolus/priv_validator_state.json.backup $HOME/.nolus/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start nolusd && sudo journalctl -u nolusd -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop nolusd
cp $HOME/.nolus/data/priv_validator_state.json $HOME/.nolus/priv_validator_state.json.backup
nolusd tendermint unsafe-reset-all --home $HOME/.nolus --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://nolus.rpc.liveraven.net:443
STATE_SYNC_PEER=c9c1e043256a6fb8275a42387d21839db09d8945@nolus.rpc.liveraven.net:31656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 300))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.nolus/config/config.toml

mkdir -p $HOME/.nolus/data && mv $HOME/.nolus/priv_validator_state.json.backup $HOME/.nolus/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start nolusd && sudo journalctl -u nolusd -fn 100 -o cat
```


# Rebus Chain

<figure><img src="/files/tmQxpIakOkXKXg8b0NSG" alt="" width="100"><figcaption></figcaption></figure>

## About

Rebus is a decentralized investment platform that uses a native utility coin, $REBUS, to allow a channel of asset managers and other financial institutions to manage and sell DeFi instruments along with their Traditional (TradFi) instruments.

## Project links

* [Web](https://www.rebuschain.com/)
* [Discord](https://discord.gg/rebuschain)
* [Twitter](https://twitter.com/RebusChain)
* [GitHub](https://github.com/rebuschain)

## Network parameters

| Chain ID | reb\_1111-1                                                            |
| -------- | ---------------------------------------------------------------------- |
| Version  | [v4.0.0](https://github.com/rebuschain/rebus.core/releases/tag/v0.4.0) |

## Stake with me

[Delegate with restake.app](https://restake.app/rebus/rebusvaloper1v8e7g0475sys5l54lhkk8ufmzyu4deem920ysk)

{% code overflow="wrap" fullWidth="false" %}

```bash
rebusvaloper1v8e7g0475sys5l54lhkk8ufmzyu4deem920ysk
```

{% endcode %}


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://rebus.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://rebus.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://rebus.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
66da16370c56bd1951ab85699132cde8249822b1@rebus.rpc.liveraven.net:19656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls http://snapshots.liveraven.net/snapshots/rebus/addrbook.json > $HOME/.rebus/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop rebusd
cp $HOME/.rebusd/data/priv_validator_state.json $HOME/.rebusd/priv_validator_state.json.backup
rm -rf $HOME/.rebusd/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/rebus/reb_1111-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.rebusd
mv $HOME/.rebusd/priv_validator_state.json.backup $HOME/.rebusd/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start rebusd && sudo journalctl -u rebusd -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop rebusd
cp $HOME/.rebusd/data/priv_validator_state.json $HOME/.rebusd/priv_validator_state.json.backup
rebusd tendermint unsafe-reset-all --home $HOME/.rebusd --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://rebus.rpc.liveraven.net:443
STATE_SYNC_PEER=66da16370c56bd1951ab85699132cde8249822b1@rebus.rpc.liveraven.net:19656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 500))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
  -e "s|^enable *=.*|enable = true|" \
  -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
  -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
  -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
  -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
  $HOME/.rebusd/config/config.toml

mkdir -p $HOME/.rebusd/data && mv $HOME/.rebusd/priv_validator_state.json.backup $HOME/.rebusd/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start rebusd && sudo journalctl -u rebusd -fn 100 -o cat
```


# Uptick Network

<figure><img src="/files/iNHcE14CzRw7gDod6PtH" alt="" width="100"><figcaption></figcaption></figure>

## About

Uptick Network is building business-grade infrastructure and ecosystems for non-fungible tokens (NFTs). The platform is designed with a focus on multi-chain and cross-chain interoperability, and includes three key components: the NFT infrastructure, an NFT marketplace, and NFT ecosystem applications.

These tools and services enable creators, collectors, and others to easily create, collect and trade NFTs, while also enabling the creation of a wide range of cutting-edge applications that leverage the unique properties of NFTs.

## Project links

* [Web](https://www.uptickproject.com)
* [Discord](https://discord.gg/MPmXqczu)
* [Twitter](https://twitter.com/Uptickproject)
* [GitHub](https://github.com/UptickNetwork)

## Network parameters

| Chain ID | uptick\_117-1                                                         |
| -------- | --------------------------------------------------------------------- |
| Version  | [v0.2.8](https://github.com/UptickNetwork/uptick/releases/tag/v0.2.8) |

## Stake with me

[Delegate with restake.app](https://restake.app/uptick/uptickvaloper1savps67fq9sr98uz0l9jqpstvg0nu3drza9nyu)

{% code overflow="wrap" fullWidth="false" %}

```bash
uptickvaloper1savps67fq9sr98uz0l9jqpstvg0nu3drza9nyu
```

{% endcode %}


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://uptick.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://uptick.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://uptick.grpc.liveraven.net/>
{% endtab %}

{% tab title="JSON-RPC" %}
<https://uptick.jsonrpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
c21eeb897d3fa45a81772b56038045d1d873252e@uptick.rpc.liveraven.net:30656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls http://snapshots.liveraven.net/snapshots/uptick/addrbook.json > $HOME/.uptickd/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop uptickd
cp $HOME/.uptickd/data/priv_validator_state.json $HOME/.uptickd/priv_validator_state.json.backup
rm -rf $HOME/.uptickd/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/uptick/uptick_117-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.uptickd
mv $HOME/.uptickd/priv_validator_state.json.backup $HOME/.uptickd/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start uptickd && sudo journalctl -u uptickd -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop uptickd
cp $HOME/.uptickd/data/priv_validator_state.json $HOME/.uptickd/priv_validator_state.json.backup
uptickd tendermint unsafe-reset-all --home $HOME/.uptickd --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://uptick.rpc.liveraven.net:30657
STATE_SYNC_PEER=c21eeb897d3fa45a81772b56038045d1d873252e@uptick.rpc.liveraven.net:30656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 300))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
  -e "s|^enable *=.*|enable = true|" \
  -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
  -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
  -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
  -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
  $HOME/.uptickd/config/config.toml

mkdir -p $HOME/.uptickd/data && mv $HOME/.uptickd/priv_validator_state.json.backup $HOME/.uptickd/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start uptickd && sudo journalctl -u uptickd -fn 100 -o cat
```


# Arkeo

<figure><img src="/files/FWrtOKFNVlWDysWG0jJm" alt=""><figcaption></figcaption></figure>

## About

The Decentralized Back-End For All Node Data

Arkeo was created to provide decentralized applications with increased development velocity, censorship-resistance, and most importantly to be a needed tool in fully decentralizing the UI layer of the web3 stack, all while reducing reliance on centralized data sources. In short, Arkeo is a free-market solution for decentralized infrastructure.

## Project links

* [Web](https://arkeo.network)
* [Discord](https://discord.gg/BfEHpm6uFc)
* [Twitter](https://twitter.com/arkeonetwork)
* [GitHub](https://github.com/arkeonetwork)

## Network parameters

| Chain ID | arkeo                                                        |
| -------- | ------------------------------------------------------------ |
| Version  | [v0.1.0](https://github.com/arkeonetwork/arkeo#arkeo-binary) |

## Stake with me

[Validator stats in Explorer](https://testnet.itrocket.net/arkeo/staking/tarkeovaloper1fkw65kwafurtz9ra0l8ddryz8f0jf8e9j8u7ft)

{% code overflow="wrap" fullWidth="false" %}

```bash
tarkeovaloper1fkw65kwafurtz9ra0l8ddryz8f0jf8e9j8u7ft
```

{% endcode %}


# Services

## Chain Explorer

[tarkeovaloper1fkw65kwafurtz9ra0l8ddryz8f0jf8e9j8u7ft](https://testnet.itrocket.net/arkeo/staking/tarkeovaloper1fkw65kwafurtz9ra0l8ddryz8f0jf8e9j8u7ft)

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://arkeo.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://arkeo.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://arkeo.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
60a1b4f4fe0fc0dbd84e65999c24d56ec3f7d172@arkeo.rpc.liveraven.net:24656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/arkeo/addrbook.json > $HOME/.arkeo/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop arkeod
cp $HOME/.arkeo/data/priv_validator_state.json $HOME/.arkeo/priv_validator_state.json.backup
rm -rf $HOME/.arkeo/data
```

## **Download latest snapshot**

```bash
curl -L https://snapshots.liveraven.net/snapshots/arkeo/arkeo_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.arkeo
mv $HOME/.arkeo/priv_validator_state.json.backup $HOME/.arkeo/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start arkeod && sudo journalctl -u arkeod -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop arkeod
cp $HOME/.arkeo/data/priv_validator_state.json $HOME/.arkeo/priv_validator_state.json.backup
arkeod tendermint unsafe-reset-all --home $HOME/.arkeo --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://arkeo.rpc.liveraven.net:443
STATE_SYNC_PEER=60a1b4f4fe0fc0dbd84e65999c24d56ec3f7d172@arkeo.rpc.liveraven.net:24656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 200))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.arkeo/config/config.toml

mkdir -p $HOME/.arkeo/data && mv $HOME/.arkeo/priv_validator_state.json.backup $HOME/.arkeo/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start arkeod && sudo journalctl -u arkeod -fn 100 -o cat
```


# Elys Network

<figure><img src="/files/2GEVvfumAfVn7ixI4AYt" alt=""><figcaption></figcaption></figure>

## About

### Bringing Worlds Together

NextGen oracle-based Decentralized Perpetual Trading and Leverage Lending platform, featuring ETF style multi-asset Index Pools. Highly Scalable, Interoperable and Secure with premier UX, high TPS and low Transaction Fees.

## Project links

* [Web](https://elys.network)
* [Discord](https://discord.gg/elysnetwork)
* [Twitter](https://twitter.com/elys_network)
* [GitHub](https://github.com/elys-network)

## Network parameters

| Chain ID | elystestnet-1                                                          |
| -------- | ---------------------------------------------------------------------- |
| Version  | [v0.29.12](https://github.com/elys-network/elys/releases/tag/v0.29.12) |

## Stake with me

{% code overflow="wrap" fullWidth="false" %}

```
```

{% endcode %}


# Services

## Chain Explorer

[Explorer](https://testnet.explorer.liveraven.net/elys/staking/elysvaloper1e4x9y3atxm0g833ccfz63ua470h7fakhw0udkw)

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://elys.rpc.liveraven.net>
{% endtab %}

{% tab title="API" %}
<https://elys.api.liveraven.net>
{% endtab %}

{% tab title="gRPC" %}
<elys.grpc.liveraven.net:443>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
cf22dec11ff8aa44e117f6cb8832538d597c9c68@elys.rpc.liveraven.net:22656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/elys/addrbook.json > $HOME/.elys/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/elys/genesis.json > $HOME/.elys/config/genesis.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop elysd
cp $HOME/.elysd/data/priv_validator_state.json $HOME/.elysd/priv_validator_state.json.backup
rm -rf $HOME/.elysd/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/elys-network/elystestnet-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.elysd
mv $HOME/.elysd/priv_validator_state.json.backup $HOME/.elysd/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start elysd && sudo journalctl -u elysd -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop elysd
cp $HOME/.elysd/data/priv_validator_state.json $HOME/.elysd/priv_validator_state.json.backup
elysd tendermint unsafe-reset-all --home $HOME/.elysd --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://elys.rpc.liveraven.net:443
STATE_SYNC_PEER=cf22dec11ff8aa44e117f6cb8832538d597c9c68@elys.rpc.liveraven.net:28656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 1000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.elysd/config/config.toml

mkdir -p $HOME/.elysd/data && mv $HOME/.elysd/priv_validator_state.json.backup $HOME/.elysd/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start elysd && sudo journalctl -u elysd -fn 100 -o cat
```


# Fiamma

<figure><img src="https://github.com/Liver-23/GitBook/blob/main/.gitbook/assets/fiamma.png" alt="" width="100"><figcaption></figcaption></figure>

## About

The First ZKP Verification Network Secured by Bitcoin Blockchain.

## Project links

* [Web](https://fiammachain.io/)
* [Discord](https://discord.gg/vURPeRPkHv)
* [Twitter](https://x.com/Fiamma_Chain)
* [GitHub](https://github.com/fiamma-chain)

## Network parameters

| Chain ID         | Version                                                              |
| ---------------- | -------------------------------------------------------------------- |
| fiamma-testnet-1 | [v0.1.3](https://github.com/fiamma-chain/fiamma/releases/tag/v0.1.3) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/fiamma>
* [Validator stats](https://testnet.explorer.liveraven.net/fiamma/staking/fiammavaloper1qa38mcg5nukdldc5lypz3k3crplzz2wlh0myq9)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
fiammavaloper1qa38mcg5nukdldc5lypz3k3crplzz2wlh0myq9
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                            |
| ---- | ------------------------------------------ |
| RPC  | <https://testnet.fiamma.rpc.liveraven.net> |
| API  | <https://testnet.fiamma.api.liveraven.net> |
| gRPC | <testnet.fiamma.grpc.liveraven.net:443>    |

## Connections

### Peer

#### LiveRaveN Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
7f607b5d6a5885888f65f219440c07867eee72ff@23.88.5.169:22656
```

{% endcode %}

#### External Peers

{% code overflow="wrap" fullWidth="false" %}

```bash
PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/fiamma/peers.txt")
if [ -z "$PEERS" ] || [[ "$PEERS" == *"404 Not Found"* ]] || [[ "$PEERS" == *"curl:"* ]]; then
    echo "No peers were retrieved from the URL."
else
    echo -e "\nPEERS: "$PEERS""
    sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.fiamma/config/config.toml"
    echo -e "\nConfiguration file updated successfully.\n"
fi
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/fiamma/addrbook.json > $HOME/.fiamma/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/fiamma/genesis.json > $HOME/.fiamma/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop fiammad
cp $HOME/.fiamma/data/priv_validator_state.json $HOME/.fiamma/priv_validator_state.json.backup
rm -rf $HOME/.fiamma/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/fiamma/fiamma-testnet-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.fiamma
mv $HOME/.fiamma/priv_validator_state.json.backup $HOME/.fiamma/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start fiammad && sudo journalctl -u fiammad -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop fiammad
cp $HOME/.fiamma/data/priv_validator_state.json $HOME/.fiamma/priv_validator_state.json.backup
fiammad tendermint unsafe-reset-all --home $HOME/.fiamma --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.fiamma.rpc.liveraven.net:443
STATE_SYNC_PEER=7f607b5d6a5885888f65f219440c07867eee72ff@23.88.5.169:22656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.fiamma/config/config.toml

mkdir -p $HOME/.fiamma/data && mv $HOME/.fiamma/priv_validator_state.json.backup $HOME/.fiamma/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start fiammad && sudo journalctl -u fiammad -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking create-validator \
--amount 1000000ufia \
--pubkey $(fiammad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id fiamma-testnet-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id fiamma-testnet-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx slashing unjail \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx distribution withdraw-all-rewards \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx distribution withdraw-rewards $(fiammad keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking delegate $(fiammad keys show wallet --bech val -a) 1000000ufia \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking delegate <TO_VALOPER_ADDRESS> 1000000ufia \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking redelegate $(fiammad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ufia \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx staking unbond $(fiammad keys show wallet --bech val -a) 1000000ufia \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx bank send wallet <TO_WALLET_ADDRESS> 1000000ufia \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx gov vote 1 yes \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx gov vote 1 no \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx gov vote 1 abstain \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id fiamma-testnet-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ufiaufia \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.fiamma/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.fiamma/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.fiamma/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.fiamma/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.fiamma/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.fiamma/config/app.toml
```

{% endcode %}

### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad status 2>&1 | jq .SyncInfo
```

{% endcode %}

### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(fiammad tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.fiamma/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(fiammad q staking validator $(fiammad keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(fiammad status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}' | sed -z 's|\n|,|g;s|.$||'
```

{% endcode %}

### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.00001ufiaufia\"/" $HOME/.fiamma/config/app.toml
```

{% endcode %}

### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.fiamma/config/config.toml
```

{% endcode %}

### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
fiammad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.fiamma --keep-addr-book
```

{% endcode %}

### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop fiammad.service
sudo systemctl disable fiammad.service
sudo rm /etc/systemd/system/fiammad.service
sudo systemctl daemon-reload
rm -f $(which fiammad)
rm -rf $HOME/.fiamma
rm -rf $HOME/fiammad
```

{% endcode %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable fiammad.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable fiammad.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start fiammad.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop fiammad.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart fiammad.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status fiammad.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u fiammad.service -f --no-hostname -o cat --since 1h
```

{% endcode %}


# Initia

<figure><img src="https://github.com/Liver-23/GitBook/blob/main/.gitbook/assets/initia.png" alt="" width="100"><figcaption></figcaption></figure>

## About

Initia mission is to redefine the multi-chain network experience from the ground up. By seamlessly integrating architecture, product, and economic systems, Initia offers a holistic solution that transforms how networks operate, feel, and interact. This is why we call Initia a network for interwoven rollups.

## Project links

* [Web](https://initia.xyz/)
* [Discord](https://discord.gg/initia)
* [Twitter](https://twitter.com/initiaFDN)
* [GitHub](https://github.com/initia-labs)

## Network parameters

| Chain ID     | Version                                                               |
| ------------ | --------------------------------------------------------------------- |
| initiation-1 | [v0.2.14](https://github.com/initia-labs/initia/releases/tag/v0.2.14) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/initia>
* [Validator stats](https://testnet.explorer.liveraven.net/initia/staking/initvaloper1lc05quxdqkzjc672l0zdlhcrulpltz2vxvrwcg)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
initvaloper1lc05quxdqkzjc672l0zdlhcrulpltz2vxvrwcg
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                            |
| ---- | ------------------------------------------ |
| RPC  | <https://testnet.initia.rpc.liveraven.net> |
| API  | <https://testnet.initia.api.liveraven.net> |
| gRPC | <testnet.initia.grpc.liveraven.net:443>    |

## Connections

### Peer

#### LiveRaveN Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
7c6220827ac7a331400bbdc826014b50a7818c7a@23.88.5.169:33656
```

{% endcode %}

#### External Peers

{% code overflow="wrap" fullWidth="false" %}

```bash

PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/initia/peers.txt")
if [ -z "$PEERS" ]; then
    echo "No peers were retrieved from the URL."
else
    echo -e "\nPEERS: "$PEERS""
    sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.initia/config/config.toml"
    echo -e "\nConfiguration file updated successfully.\n"
fi
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/initia/addrbook.json > $HOME/.initia/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/initia/genesis.json > $HOME/.initia/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop initiad
cp $HOME/.initia/data/priv_validator_state.json $HOME/.initia/priv_validator_state.json.backup
rm -rf $HOME/.initia/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/initia/initiation-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.initia
mv $HOME/.initia/priv_validator_state.json.backup $HOME/.initia/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start initiad && sudo journalctl -u initiad -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop initiad
cp $HOME/.initia/data/priv_validator_state.json $HOME/.initia/priv_validator_state.json.backup
initiad tendermint unsafe-reset-all --home $HOME/.initia --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.initia.rpc.liveraven.net:443
STATE_SYNC_PEER=7c6220827ac7a331400bbdc826014b50a7818c7a@23.88.5.169:33656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.initia/config/config.toml

mkdir -p $HOME/.initia/data && mv $HOME/.initia/priv_validator_state.json.backup $HOME/.initia/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start initiad && sudo journalctl -u initiad -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking create-validator \
--amount 1000000uinit \
--pubkey $(initiad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id initiation-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id initiation-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx slashing unjail \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad q mstaking 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad q mstaking validator $(initiad keys show wallet --bech val -a)
```

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx distribution withdraw-all-rewards \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx distribution withdraw-rewards $(initiad keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking delegate $(initiad keys show wallet --bech val -a) 1000000uinit \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking delegate <TO_VALOPER_ADDRESS> 1000000uinit \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking redelegate $(initiad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uinit \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx mstaking unbond $(initiad keys show wallet --bech val -a) 1000000uinit \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx bank send wallet <TO_WALLET_ADDRESS> 1000000uinit \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx gov vote 1 yes \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx gov vote 1 no \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx gov vote 1 abstain \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id initiation-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.15uinit \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

{% tabs %}
{% tab title="⚡️ Utility" %}

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.initia/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.initia/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.initia/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.initia/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.initia/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.initia/config/app.toml
```

{% endcode %}
{% endtab %}

{% tab title="🚨 Maintenance" %}

#### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

#### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad status 2>&1 | jq .SyncInfo
```

{% endcode %}

#### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(initiad tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.initia/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

#### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(initiad q mstaking validator $(initiad keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(initiad status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

#### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}'
```

{% endcode %}

#### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.15uinit\"/" $HOME/.initia/config/app.toml
```

{% endcode %}

#### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.initia/config/config.toml
```

{% endcode %}

#### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
initiad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.initia --keep-addr-book
```

{% endcode %}

#### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop initiad.service
sudo systemctl disable initiad.service
sudo rm /etc/systemd/system/initiad.service
sudo systemctl daemon-reload
rm -f $(which initiad)
rm -rf $HOME/.initia
rm -rf $HOME/initiad
```

{% endcode %}
{% endtab %}

{% tab title="⚙️ Service Management" %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable initiad.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable initiad.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start initiad.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop initiad.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart initiad.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status initiad.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u initiad.service -f --no-hostname -o cat --since 1h
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Lava Network

<figure><img src="/files/1xWNaeXT4MMuvm90i3yI" alt=""><figcaption></figcaption></figure>

## About

Web3 is only as strong as its weakest link. Today, due to complexities and lack of incentives to run your own node, apps rely on centralized services 🤷

Lava is here to fix it. Access Lava, Access Web3.

## Project links

* [Web](https://www.lavanet.xyz)
* [Discord](https://discord.gg/VUYqZWZT)
* [Twitter](https://twitter.com/lavanetxyz)
* [GitHub](https://github.com/lavanet)

## Network parameters

| Chain ID | lava-testnet-2                                                |
| -------- | ------------------------------------------------------------- |
| Version  | [v2.1.3](https://github.com/lavanet/lava/releases/tag/v2.1.3) |

## Stake with me

[Validator stats in Explorer](https://lava.explorers.guru/validator/lava@valoper1kdz7apff4enmh7ghwwza9atzqkg04072j8cayx)

{% code overflow="wrap" fullWidth="false" %}

```bash
lava@valoper1kdz7apff4enmh7ghwwza9atzqkg04072j8cayx
```

{% endcode %}


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC" %}
<https://testnet.lava.rpc.liveraven.net/>
{% endtab %}

{% tab title="API" %}
<https://testnet.lava.api.liveraven.net/>
{% endtab %}

{% tab title="gRPC" %}
<https://testnet.lava.grpc.liveraven.net/>
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
51aeaa2c757989f720c904023c2dbedfc720f75e@testnet.lava.rpc.liveraven.net:27656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/lava/addrbook.json > $HOME/.lava/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop lavad
cp $HOME/.lava/data/priv_validator_state.json $HOME/.lava/priv_validator_state.json.backup
rm -rf $HOME/.lava/data
```

## **Download latest snapshot**

```bash
curl -L https://snapshots.liveraven.net/snapshots/lava/lava-testnet-2_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.lava
mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start lavad && sudo journalctl -u lavad -fn 100 -o cat
```


# State Sync

Instructions

### **Stop the service and reset the data**

```bash
sudo systemctl stop lavad
cp $HOME/.lava/data/priv_validator_state.json $HOME/.lava/priv_validator_state.json.backup
lavad tendermint unsafe-reset-all --home $HOME/.lava --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.lava.rpc.liveraven.net:443
STATE_SYNC_PEER=51aeaa2c757989f720c904023c2dbedfc720f75e@testnet.lava.rpc.liveraven.net:27656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 200))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.lava/config/config.toml

mkdir -p $HOME/.lava/data && mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start lavad && sudo journalctl -u lavad -fn 100 -o cat
```


# Mantra Chain

<figure><img src="/files/gaaN6rPyMJ3hCbiiPyTI" alt="" width="100"><figcaption></figcaption></figure>

## About

The first RWA Layer 1 Blockchain, capable of adherence and enforcement of real world regulatory requirements.

## Project links

* [Web](https://www.mantrachain.io)
* [Discord](https://discord.gg/gfks4TwAJV)
* [Twitter](https://twitter.com/MANTRA_Chain)
* [GitHub](https://github.com/MANTRA-Finance)

## Network parameters

| Chain ID         | Version                                                                |
| ---------------- | ---------------------------------------------------------------------- |
| mantra-hongbai-1 | [v3.0.0](https://github.com/MANTRA-Finance/public/releases/tag/v3.0.0) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/mantra>
* [Validator stats](https://testnet.explorer.liveraven.net/mantra/staking/mantravaloper1308vpy5gztaxdgdx56vks83vpjwehclawqam0n)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
mantravaloper1308vpy5gztaxdgdx56vks83vpjwehclawqam0n
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                            |
| ---- | ------------------------------------------ |
| RPC  | <https://testnet.mantra.rpc.liveraven.net> |
| API  | <https://testnet.mantra.api.liveraven.net> |
| gRPC | <testnet.mantra.grpc.liveraven.net:443>    |

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
d2d67040b3bdbe7378210a51edf6a17fce405243@23.88.5.169:32656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/mantra-chain/addrbook.json > $HOME/.mantrachain/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/mantra-chain/genesis.json > $HOME/.mantrachain/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop mantrachaind
cp $HOME/.mantrachain/data/priv_validator_state.json $HOME/.mantrachain/priv_validator_state.json.backup
rm -rf $HOME/.mantrachain/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/mantra-chain/mantra-hongbai-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.mantrachain
mv $HOME/.mantrachain/priv_validator_state.json.backup $HOME/.mantrachain/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start mantrachaind && sudo journalctl -u mantrachaind -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop mantrachaind
cp $HOME/.mantrachain/data/priv_validator_state.json $HOME/.mantrachain/priv_validator_state.json.backup
mantrachaind tendermint unsafe-reset-all --home $HOME/.mantrachain --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.mantra.rpc.liveraven.net:443
STATE_SYNC_PEER=d2d67040b3bdbe7378210a51edf6a17fce405243@23.88.5.169:32656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.mantrachain/config/config.toml

mkdir -p $HOME/.mantrachain/data && mv $HOME/.mantrachain/priv_validator_state.json.backup $HOME/.mantrachain/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start mantrachaind && sudo journalctl -u mantrachaind -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking create-validator \
--amount 1000000uom \
--pubkey $(mantrachaind tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id mantra-hongbai-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id mantra-hongbai-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx slashing unjail \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx distribution withdraw-all-rewards \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx distribution withdraw-rewards $(mantrachaind keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking delegate $(mantrachaind keys show wallet --bech val -a) 1000000uom \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking delegate <TO_VALOPER_ADDRESS> 1000000uom \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking redelegate $(mantrachaind keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uom \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx staking unbond $(mantrachaind keys show wallet --bech val -a) 1000000uom \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx bank send wallet <TO_WALLET_ADDRESS> 1000000uom \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx gov vote 1 yes \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx gov vote 1 no \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx gov vote 1 abstain \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id mantra-hongbai-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0002uom \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

{% tabs %}
{% tab title="⚡️ Utility" %}

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.mantrachain/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.mantrachain/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.mantrachain/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.mantrachain/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.mantrachain/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.mantrachain/config/app.toml
```

{% endcode %}
{% endtab %}

{% tab title="🚨 Maintenance" %}

#### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

#### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind status 2>&1 | jq .SyncInfo
```

{% endcode %}

#### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(mantrachaind tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.mantrachain/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

#### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(mantrachaind q staking validator $(mantrachaind keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(mantrachaind status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

#### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}'
```

{% endcode %}

#### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0002uom\"/" $HOME/.mantrachain/config/app.toml
```

{% endcode %}

#### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.mantrachain/config/config.toml
```

{% endcode %}

#### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
mantrachaind tendermint unsafe-reset-all --keep-addr-book --home $HOME/.mantrachain --keep-addr-book
```

{% endcode %}

#### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop mantrachaind.service
sudo systemctl disable mantrachaind.service
sudo rm /etc/systemd/system/mantrachaind.service
sudo systemctl daemon-reload
rm -f $(which mantrachaind)
rm -rf $HOME/.mantrachain
rm -rf $HOME/mantrachaind
```

{% endcode %}
{% endtab %}

{% tab title="⚙️ Service Management" %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable mantrachaind.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable mantrachaind.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start mantrachaind.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop mantrachaind.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart mantrachaind.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status mantrachaind.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u mantrachaind.service -f --no-hostname -o cat --since 1h
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Namada

## About

A new era of privacy in multichain interactions: Namada is a Layer 1 blockchain solution that redefines asset-agnostic, multichain privacy.

MODULAR PRIVACY

Namada delivers an unparalleled layer of privacy across a myriad of assets, decentralized applications, and even entire blockchain networks.

## Project links

* [Web](https://namada.net)
* [Discord](https://discord.gg/aHCbzWfK)
* [Twitter](https://twitter.com/namada)
* [GitHub](https://github.com/anoma/namada)

## Network parameters

| Chain ID | shielded-expedition.88f17d1d14                                  |
| -------- | --------------------------------------------------------------- |
| Version  | [v0.31.9](https://github.com/anoma/namada/releases/tag/v0.31.9) |


# Services

## Chain Explorer

TBD

## Public Endpoint

{% tabs %}
{% tab title="RPC (requests)" %}
Can be used for the usual requests

[https://namada.rpc.liveraven.net/](https://namada.rpc.liveraven.net)
{% endtab %}

{% tab title="RPC (cli for --node)" %}
Can be used as a parameter for the CLI command:

\--node tcp\://namada.rpc80.liveraven.net:80

[http://namada.rpc80.liveraven.net/](http://namada.rpc80.liveraven.net)
{% endtab %}
{% endtabs %}

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
e5604e738b59b144d0a56c4345c2d3cb7a609e2e@namada.rpc.liveraven.net:38656
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/namada/genesis.json > $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/config/genesis.json
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/namada/addrbook.json > $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/config/addrbook.json
```

{% endcode %}


# Snapshot

Instructions

## **Stop the service and reset the data**

```bash
sudo systemctl stop namada.service
cp $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data/priv_validator_state.json $HOME/.local/share/namada/shielded-expedition.88f17d1d14/priv_validator_state.json.backup
rm -rf $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data $HOME/.local/share/namada/shielded-expedition.88f17d1d14/db $HOME/.local/share/namada/shielded-expedition.88f17d1d14/wasm
```

## **Download latest snapshot**

Take the latest you need from [Snapshots](https://snapshots.liveraven.net/snapshots/namada)

```bash
link="<above link>"
curl -L $link | tar -Ilz4 -xf - -C $HOME/.local/share/namada/shielded-expedition.88f17d1d14
mv $HOME/.local/share/namada/shielded-expedition.88f17d1d14/priv_validator_state.json.backup $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start namada.service && sudo journalctl -u namada.service -fn 100 -o cat
```


# Active IBC Channels

## Configuration proposals

Please create new PRs in this GitHub repository to propose new configurations: [link](https://github.com/Liver-23/ibc-parse-config)

## > Osmosis Testnet

* Namada: `shielded-expedition.88f17d1d14`
* Osmosis Testnet: `osmo-test-5`

| Source Channel | Target Channel | Status |
| -------------- | -------------- | ------ |
| channel-1126   | channel-6685   | Active |
| channel-1129   | channel-6686   | Active |
| channel-1131   | channel-6687   | Active |
| channel-1145   | channel-6690   | Active |
| channel-1147   | channel-6691   | Active |
| channel-1178   | channel-6696   | Active |
| channel-1181   | channel-6698   | Active |
| channel-1188   | channel-6704   | Active |
| channel-1191   | channel-6707   | Active |
| channel-1193   | channel-6709   | Active |
| channel-1266   | channel-6811   | Active |
| channel-1276   | channel-6842   | Active |
| channel-1284   | channel-6869   | Active |
| channel-1286   | channel-6872   | Active |
| channel-1294   | channel-6880   | Active |
| channel-1321   | channel-6903   | Active |
| channel-1326   | channel-6928   | Active |
| channel-1327   | channel-6929   | Active |
| channel-1329   | channel-6931   | Active |
| channel-1335   | channel-7760   | Active |

## > Celestia Testnet

* Namada: `shielded-expedition.88f17d1d14`
* Celestia Testnet: `mocha-4`

| Source Channel | Target Channel | Status |
| -------------- | -------------- | ------ |
| channel-1324   | channel-83     | Active |

## > CosmosHub Testnet

* Namada: `shielded-expedition.88f17d1d14`
* CosmosHub Testnet: `theta-testnet-001`

| Source Channel | Target Channel | Status |
| -------------- | -------------- | ------ |
| channel-1331   | channel-4197   | Active |
| channel-1332   | channel-4198   | Active |
| channel-1333   | channel-4200   | Active |
| channel-1334   | channel-4206   | Active |


# RPC Scanner

[Public RPC list](https://snapshots.liveraven.net/snapshots/namada/rpc-scanner.html)


# Side Protocol

<figure><img src="https://github.com/Liver-23/GitBook/blob/main/.gitbook/assets/side-protocol.png" alt="" width="100"><figcaption></figcaption></figure>

## About

The Exchange Layer of Web3. Discover The Unexplored Side Enter the Web of Endless Opportunities and Unleash Limitless Potential

## Project links

* [Web](https://side.one)
* [Discord](https://discord.com/invite/sideprotocol)
* [Twitter](https://twitter.com/SideProtocol)
* [GitHub](https://github.com/sideprotocol)

## Network parameters

| Chain ID            | Version                                                          |
| ------------------- | ---------------------------------------------------------------- |
| sidechain-testnet-4 | [0.9.1](https://github.com/sideprotocol/side/releases/tag/0.9.1) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/side>
* [Validator stats](https://testnet.explorer.liveraven.net/side/staking/sidevaloper1qqgsuzqarqqsx8s3z5p3zpcqrgwscxslqu8pcpqcqc03spgprypswjr3yk7)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
sidevaloper1qqgsuzqarqqsx8s3z5p3zpcqrgwscxslqu8pcpqcqc03spgprypswjr3yk7
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                          |
| ---- | ---------------------------------------- |
| RPC  | <https://testnet.side.rpc.liveraven.net> |
| API  | <https://testnet.side.api.liveraven.net> |
| gRPC | <testnet.side.grpc.liveraven.net:443>    |

## Connections

### Peer

#### LiveRaveN Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
e6575e39599afba59bbe3422284b22edfb1adafb@23.88.5.169:24656
```

{% endcode %}

#### External Peers

{% code overflow="wrap" fullWidth="false" %}

```bash
PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/side-protocol/peers.txt")
if [ -z "$PEERS" ] || [[ "$PEERS" == *"404 Not Found"* ]] || [[ "$PEERS" == *"curl:"* ]]; then
    echo "No peers were retrieved from the URL."
else
    echo -e "\nPEERS: "$PEERS""
    sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.side/config/config.toml"
    echo -e "\nConfiguration file updated successfully.\n"
fi
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/side-protocol/addrbook.json > $HOME/.side/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/side-protocol/genesis.json > $HOME/.side/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop sided
cp $HOME/.side/data/priv_validator_state.json $HOME/.side/priv_validator_state.json.backup
rm -rf $HOME/.side/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/side-protocol/sidechain-testnet-4_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.side
mv $HOME/.side/priv_validator_state.json.backup $HOME/.side/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start sided && sudo journalctl -u sided -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop sided
cp $HOME/.side/data/priv_validator_state.json $HOME/.side/priv_validator_state.json.backup
sided tendermint unsafe-reset-all --home $HOME/.side --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.side.rpc.liveraven.net:443
STATE_SYNC_PEER=e6575e39599afba59bbe3422284b22edfb1adafb@23.88.5.169:24656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.side/config/config.toml

mkdir -p $HOME/.side/data && mv $HOME/.side/priv_validator_state.json.backup $HOME/.side/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start sided && sudo journalctl -u sided -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
sided keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking create-validator \
--amount 1000000uside \
--pubkey $(sided tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id sidechain-testnet-4 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id sidechain-testnet-4 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx slashing unjail \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
sided 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx distribution withdraw-all-rewards \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx distribution withdraw-rewards $(sided keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking delegate $(sided keys show wallet --bech val -a) 1000000uside \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking delegate <TO_VALOPER_ADDRESS> 1000000uside \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking redelegate $(sided keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uside \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx staking unbond $(sided keys show wallet --bech val -a) 1000000uside \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx bank send wallet <TO_WALLET_ADDRESS> 1000000uside \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
sided query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
sided query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx gov vote 1 yes \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx gov vote 1 no \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx gov vote 1 abstain \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id sidechain-testnet-4 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0uside \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.side/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.side/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.side/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.side/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.side/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.side/config/app.toml
```

{% endcode %}

### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
sided status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
sided status 2>&1 | jq .SyncInfo
```

{% endcode %}

### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(sided tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.side/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(sided q staking validator $(sided keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(sided status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}' | sed -z 's|\n|,|g;s|.$||'
```

{% endcode %}

### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0uside\"/" $HOME/.side/config/app.toml
```

{% endcode %}

### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.side/config/config.toml
```

{% endcode %}

### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
sided tendermint unsafe-reset-all --keep-addr-book --home $HOME/.side --keep-addr-book
```

{% endcode %}

### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop sided.service
sudo systemctl disable sided.service
sudo rm /etc/systemd/system/sided.service
sudo systemctl daemon-reload
rm -f $(which sided)
rm -rf $HOME/.side
rm -rf $HOME/sided
```

{% endcode %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable sided.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable sided.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start sided.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop sided.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart sided.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status sided.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u sided.service -f --no-hostname -o cat --since 1h
```

{% endcode %}


# Union

<figure><img src="/files/pH8KnXh2PWu0qymM0xMi" alt="" width="100"><figcaption></figcaption></figure>

## About

The Modular ZK Interoperability Layer. Union connects the next generation of blockchains and rollups, across any ecosystem.

## Project links

* [Web](https://union.build)
* [Discord](https://discord.union.build/)
* [Twitter](https://x.com/union_build)
* [GitHub](https://github.com/unionlabs)

## Network parameters

| Chain ID        | Version                                                       |
| --------------- | ------------------------------------------------------------- |
| union-testnet-8 | [v0.21.0](https://github.com/unionlabs//releases/tag/v0.21.0) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/union>
* [Validator stats](https://testnet.explorer.liveraven.net/union/staking/unionvaloper1rga9cdf2mtuy7juwswyn7xpz68xahnuzjeqmad)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
unionvaloper1rga9cdf2mtuy7juwswyn7xpz68xahnuzjeqmad
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                           |
| ---- | ----------------------------------------- |
| RPC  | <https://union-testnet.rpc.liveraven.net> |
| API  | <https://union-testnet.api.liveraven.net> |
| gRPC | <union-testnet.grpc.liveraven.net:443>    |

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
b25b49f8e27607ebf62158ee110559a4fa2adbd1@23.88.5.169:30656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/union/addrbook.json > $HOME/.union/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/union/genesis.json > $HOME/.union/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop uniond
cp $HOME/.union/data/priv_validator_state.json $HOME/.union/priv_validator_state.json.backup
rm -rf $HOME/.union/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/union/union-testnet-8_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.union
mv $HOME/.union/priv_validator_state.json.backup $HOME/.union/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start uniond && sudo journalctl -u uniond -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop uniond
cp $HOME/.union/data/priv_validator_state.json $HOME/.union/priv_validator_state.json.backup
uniond tendermint unsafe-reset-all --home $HOME/.union --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://union-testnet.rpc.liveraven.net:443
STATE_SYNC_PEER=b25b49f8e27607ebf62158ee110559a4fa2adbd1@23.88.5.169:30656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.union/config/config.toml

mkdir -p $HOME/.union/data && mv $HOME/.union/priv_validator_state.json.backup $HOME/.union/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start uniond && sudo journalctl -u uniond -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking create-validator \
--amount 1000000muno \
--pubkey $(uniond tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id union-testnet-8 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id union-testnet-8 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx slashing unjail \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx distribution withdraw-all-rewards \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx distribution withdraw-rewards $(uniond keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking delegate $(uniond keys show wallet --bech val -a) 1000000muno \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking delegate <TO_VALOPER_ADDRESS> 1000000muno \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking redelegate $(uniond keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000muno \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx staking unbond $(uniond keys show wallet --bech val -a) 1000000muno \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx bank send wallet <TO_WALLET_ADDRESS> 1000000muno \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx gov vote 1 yes \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx gov vote 1 no \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx gov vote 1 abstain \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id union-testnet-8 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0muno \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

{% tabs %}
{% tab title="⚡️ Utility" %}

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.union/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.union/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.union/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.union/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.union/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.union/config/app.toml
```

{% endcode %}
{% endtab %}

{% tab title="🚨 Maintenance" %}

#### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

#### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond status 2>&1 | jq .SyncInfo
```

{% endcode %}

#### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(uniond tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.union/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

#### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(uniond q staking validator $(uniond keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(uniond status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

#### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}'
```

{% endcode %}

#### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0muno\"/" $HOME/.union/config/app.toml
```

{% endcode %}

#### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.union/config/config.toml
```

{% endcode %}

#### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
uniond tendermint unsafe-reset-all --keep-addr-book --home $HOME/.union --keep-addr-book
```

{% endcode %}

#### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop uniond.service
sudo systemctl disable uniond.service
sudo rm /etc/systemd/system/uniond.service
sudo systemctl daemon-reload
rm -f $(which uniond)
rm -rf $HOME/.union
rm -rf $HOME/uniond
```

{% endcode %}
{% endtab %}

{% tab title="⚙️ Service Management" %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable uniond.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable uniond.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start uniond.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop uniond.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart uniond.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status uniond.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u uniond.service -f --no-hostname -o cat --since 1h
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Warden Protocol

<figure><img src="/files/MmJWN3aZkx3RVjOo9InT" alt="" width="100"><figcaption></figcaption></figure>

## About

Modular L1 Blockchain Infrastructure for Omnichain Applications.

## Project links

* [Web](https://wardenprotocol.org)
* [Discord](https://discord.gg/wardenprotocol)
* [Twitter](https://x.com/wardenprotocol)
* [GitHub](https://github.com/warden-protocol)

## Network parameters

| Chain ID     | Version                                                                         |
| ------------ | ------------------------------------------------------------------------------- |
| buenavista-1 | [v0.3.0](https://github.com/warden-protocol/wardenprotocol/releases/tag/v0.3.0) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/warden>
* [Validator stats](https://testnet.explorer.liveraven.net/warden/staking/wardenvaloper1cfntmdt0u77jsr84w2ud3qtm62tp5u4m5k5t59)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
wardenvaloper1cfntmdt0u77jsr84w2ud3qtm62tp5u4m5k5t59
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                            |
| ---- | ------------------------------------------ |
| RPC  | <https://testnet.warden.rpc.liveraven.net> |
| API  | <https://testnet.warden.api.liveraven.net> |
| gRPC | <testnet.warden.grpc.liveraven.net:443>    |

## Connections

### Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
1eed7f989dee2a7d7cb0f067154dfc72eac09f5c@23.88.5.169:34656
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/warden-protocol/addrbook.json > $HOME/.warden/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/warden-protocol/genesis.json > $HOME/.warden/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop wardend
cp $HOME/.warden/data/priv_validator_state.json $HOME/.warden/priv_validator_state.json.backup
rm -rf $HOME/.warden/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/warden-protocol/buenavista-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.warden
mv $HOME/.warden/priv_validator_state.json.backup $HOME/.warden/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start wardend && sudo journalctl -u wardend -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop wardend
cp $HOME/.warden/data/priv_validator_state.json $HOME/.warden/priv_validator_state.json.backup
wardend tendermint unsafe-reset-all --home $HOME/.warden --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.warden.rpc.liveraven.net:443
STATE_SYNC_PEER=1eed7f989dee2a7d7cb0f067154dfc72eac09f5c@23.88.5.169:34656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.warden/config/config.toml

mkdir -p $HOME/.warden/data && mv $HOME/.warden/priv_validator_state.json.backup $HOME/.warden/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start wardend && sudo journalctl -u wardend -fn 100 -o cat
```


# Management

{% tabs %}
{% tab title="🔑 Key management" %}

#### ADD NEW KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys add wallet
```

{% endcode %}

#### RECOVER EXISTING KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys add wallet --recover
```

{% endcode %}

#### LIST ALL KEYS

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys list
```

{% endcode %}

#### DELETE KEY

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys delete wallet
```

{% endcode %}

#### EXPORT KEY TO A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys export wallet
```

{% endcode %}

#### IMPORT KEY FROM A FILE

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend keys import wallet wallet.backup
```

{% endcode %}

#### QUERY WALLET BALANCE

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="👷 Validator management" %}
Please make sure you have adjusted moniker, identity, details and website to match your values.

#### CREATE NEW VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking create-validator \
--amount 1000000uward \
--pubkey $(wardend tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id buenavista-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### EDIT EXISTING VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id buenavista-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### UNJAIL VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx slashing unjail \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### JAIL REASON

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### LIST ALL ACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend 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
```

{% endcode %}

#### LIST ALL INACTIVE VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}

#### VIEW VALIDATOR DETAILS

{% code overflow="wrap" fullWidth="false" %}

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

{% endcode %}
{% endtab %}

{% tab title="💲 Token management" %}

#### WITHDRAW REWARDS FROM ALL VALIDATORS

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx distribution withdraw-all-rewards \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx distribution withdraw-rewards $(wardend keys show wallet --bech val -a) \
--commission \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO YOURSELF

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking delegate $(wardend keys show wallet --bech val -a) 1000000uward \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### DELEGATE TOKENS TO VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking delegate <TO_VALOPER_ADDRESS> 1000000uward \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### REDELEGATE TOKENS TO ANOTHER VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking redelegate $(wardend keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uward \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### UNBOND TOKENS FROM YOUR VALIDATOR

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx staking unbond $(wardend keys show wallet --bech val -a) 1000000uward \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### SEND TOKENS TO THE WALLET

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx bank send wallet <TO_WALLET_ADDRESS> 1000000uward \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Governance

{% tabs %}
{% tab title="🗳 Governance" %}

#### LIST ALL PROPOSALS

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend query gov proposals
```

{% endcode %}

#### VIEW PROPOSAL BY ID

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend query gov proposal 1
```

{% endcode %}

#### VOTE ‘YES’

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx gov vote 1 yes \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### VOTE ‘NO’

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx gov vote 1 no \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### VOTE ‘ABSTAIN’

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx gov vote 1 abstain \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}

#### VOTE ‘NOWITHVETO’

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tx gov vote 1 NoWithVeto \
--from wallet \
--chain-id buenavista-1 \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.0025uward \
-y
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Maintenance

{% tabs %}
{% tab title="⚡️ Utility" %}

#### UPDATE PORTS

{% code overflow="wrap" fullWidth="false" %}

```bash
CUSTOM_PORT=11
```

{% endcode %}

**set custom ports in config.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%g;
s%:26657%:${CUSTOM_PORT}657%g;
s%:6060%:${CUSTOM_PORT}060%g;
s%:26656%:${CUSTOM_PORT}656%g;
s%:26660%:${CUSTOM_PORT}660%g" $HOME/.warden/config/config.toml
```

{% endcode %}

**set custom ports in app.toml**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:1317%:${CUSTOM_PORT}317%g;
s%:8080%:${CUSTOM_PORT}080%g;
s%:9090%:${CUSTOM_PORT}090%g;
s%:9091%:${CUSTOM_PORT}091%g;
s%:8545%:${CUSTOM_PORT}545%g;
s%:8546%:${CUSTOM_PORT}546%g;
s%:6065%:${CUSTOM_PORT}065%g" $HOME/.warden/config/app.toml
```

{% endcode %}

**set custom ports in client.toml file**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%g" $HOME/.warden/config/client.toml
```

{% endcode %}

#### UPDATE INDEXER

**Disable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.warden/config/config.toml
```

{% endcode %}

**Enable indexer**

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.warden/config/config.toml
```

{% endcode %}

#### UPDATE PRUNING

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i   -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.warden/config/app.toml
```

{% endcode %}
{% endtab %}

{% tab title="🚨 Maintenance" %}

#### GET VALIDATOR INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend status 2>&1 | jq .ValidatorInfo
```

{% endcode %}

#### GET SYNC INFO

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend status 2>&1 | jq .SyncInfo
```

{% endcode %}

#### GET NODE PEER

{% code overflow="wrap" fullWidth="false" %}

```bash
echo $(wardend tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.warden/config/config.toml \
| sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
```

{% endcode %}

#### CHECK IF VALIDATOR KEY IS CORRECT

{% code overflow="wrap" fullWidth="false" %}

```bash
[[ $(wardend q staking validator $(wardend keys show wallet --bech val -a) -oj \
| jq -r .consensus_pubkey.key) = $(wardend status | jq -r .ValidatorInfo.PubKey.value) ]] \
&& echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
```

{% endcode %}

#### GET LIVE PEERS

{% code overflow="wrap" fullWidth="false" %}

```bash
curl -sS http://localhost:15657/net_info \
| jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' \
| awk -F ':' '{print $1":"$(NF)}'
```

{% endcode %}

#### SET MINIMUM GAS PRICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025uward\"/" $HOME/.warden/config/app.toml
```

{% endcode %}

#### ENABLE PROMETHEUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.warden/config/config.toml
```

{% endcode %}

#### RESET CHAIN DATA - !!!BE CAREFUL HERE!!!

{% code overflow="wrap" fullWidth="false" %}

```bash
wardend tendermint unsafe-reset-all --keep-addr-book --home $HOME/.warden --keep-addr-book
```

{% endcode %}

#### REMOVE NODE

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv\_validator\_key.json!

{% code overflow="wrap" fullWidth="false" %}

```bash
cd $HOME
sudo systemctl stop wardend.service
sudo systemctl disable wardend.service
sudo rm /etc/systemd/system/wardend.service
sudo systemctl daemon-reload
rm -f $(which wardend)
rm -rf $HOME/.warden
rm -rf $HOME/wardend
```

{% endcode %}
{% endtab %}

{% tab title="⚙️ Service Management" %}

#### RELOAD SERVICE CONFIGURATION

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl daemon-reload
```

{% endcode %}

#### ENABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl enable wardend.service
```

{% endcode %}

#### DISABLE SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl disable wardend.service
```

{% endcode %}

#### START SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl start wardend.service
```

{% endcode %}

#### STOP SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl stop wardend.service
```

{% endcode %}

#### RESTART SERVICE

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl restart wardend.service
```

{% endcode %}

#### CHECK SERVICE STATUS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo systemctl status wardend.service
```

{% endcode %}

#### CHECK SERVICE LOGS

{% code overflow="wrap" fullWidth="false" %}

```bash
sudo journalctl -u wardend.service -f --no-hostname -o cat --since 1h
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Zero Gravity

<figure><img src="https://github.com/Liver-23/GitBook/blob/main/.gitbook/assets/zero-gravity.png" alt="" width="100"><figcaption></figcaption></figure>

## About

Zero Gravity is a pioneering data availability system featuring a decentralized storage layer designed for super scalability and security. By segregating data availability workflows into distinct publishing and storage lanes, 0G optimizes scalability through efficient partitioning while ensuring data availability through consensus-based sampling, mitigating broadcasting bottlenecks. Its incentive-based storage mechanism fosters network participation, promoting scalability and enabling support for diverse data types across Layer 2 networks and decentralized AI platforms. network.

## Project links

* [Web](https://0g.ai/)
* [Discord](https://discord.com/invite/0glabs)
* [Twitter](https://twitter.com/0G_labs)
* [GitHub](https://github.com/0glabs)

## Network parameters

| Chain ID              | Version                                                        |
| --------------------- | -------------------------------------------------------------- |
| zgtendermint\_16600-2 | [0.2.3](https://github.com/0glabs/0g-chain/releases/tag/0.2.3) |

## Chain Explorer

* <https://testnet.explorer.liveraven.net/zero-gravity>
* [Validator stats](https://testnet.explorer.liveraven.net/zero-gravity/staking/0gvaloper1dlng64erftk8qd00udr85xqu7ve3gxfa85rays)

{% tabs %}
{% tab title="Validator address" %}
{% code overflow="wrap" fullWidth="false" %}

```bash
0gvaloper1dlng64erftk8qd00udr85xqu7ve3gxfa85rays
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Services

## Public Endpoint

|      |                                                  |
| ---- | ------------------------------------------------ |
| RPC  | <https://testnet.zero-gravity.rpc.liveraven.net> |
| API  | <https://testnet.zero-gravity.api.liveraven.net> |
| gRPC | <testnet.zero-gravity.grpc.liveraven.net:443>    |

## Connections

### Peer

#### LiveRaveN Peer

{% code overflow="wrap" fullWidth="false" %}

```bash
a4055b828e59832c7a06d61fc51347755a160d0b@157.90.33.62:21656
```

{% endcode %}

#### External Peers

{% code overflow="wrap" fullWidth="false" %}

```bash
PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/peers.txt")
if [ -z "$PEERS" ] || [[ "$PEERS" == *"404 Not Found"* ]] || [[ "$PEERS" == *"curl:"* ]]; then
    echo "No peers were retrieved from the URL."
else
    echo -e "\nPEERS: "$PEERS""
    sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.0gchain/config/config.toml"
    echo -e "\nConfiguration file updated successfully.\n"
fi
```

{% endcode %}

### Address Book

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/addrbook.json > $HOME/.0gchain/config/addrbook.json
```

{% endcode %}

### Genesis

{% code overflow="wrap" %}

```bash
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/genesis.json > $HOME/.0gchain/config/genesis.json
```

{% endcode %}


# Snapshot

## **Stop the service and reset the data**

```bash
sudo systemctl stop 0gchaind
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
rm -rf $HOME/.0gchain/data
```

## **Download latest snapshot**

```bash
curl -L http://snapshots.liveraven.net/snapshots/testnet/zero-gravity/zgtendermint_16600-2_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.0gchain
mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
```

## **Restart the service and check the log**

```bash
sudo systemctl start 0gchaind && sudo journalctl -u 0gchaind -fn 100 -o cat
```


# State Sync

### **Stop the service and reset the data**

```bash
sudo systemctl stop 0gchaind
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
0gchaind tendermint unsafe-reset-all --home $HOME/.0gchain --keep-addr-book
```

### **Get and configure the state sync information**

```bash
STATE_SYNC_RPC=https://testnet.zero-gravity.rpc.liveraven.net:443
STATE_SYNC_PEER=a4055b828e59832c7a06d61fc51347755a160d0b@157.90.33.62:21656
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $SYNC_BLOCK_HEIGHT $SYNC_BLOCK_HASH

sed -i \
    -e "s|^enable *=.*|enable = true|" \
    -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
    -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
    -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
    -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \
    $HOME/.0gchain/config/config.toml

mkdir -p $HOME/.0gchain/data && mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
```

### **Restart the service and check the log**

```bash
sudo systemctl start 0gchaind && sudo journalctl -u 0gchaind -fn 100 -o cat
```




---

[Next Page](/llms-full.txt/1)

