# StakeAngle Services

Non-custodial staking provider

This knowledge base covers the services provided by StakeAngle in validated networks (Mainnets and Testnets) including node installation and state sync guides, lists of useful CLI commands, RPC / API / gRPC endpoints, IBC relayers addresses.

**Website:** <https://stakeangle.com/>


# Agoric

A Proof-of-Stake chain utilizing Hardened JavaScript smart contracts to rapidly build and deploy DeFi

## Useful links

**Website:** <https://agoric.com/>

**X:** <https://x.com/agoric>

**Discord:** <https://agoric.com/discord>

**GitHub:** <https://github.com/Agoric>

**Explorer:** <https://agoric.explorers.guru/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Install Node.js**

```
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential git
node -v

corepack enable
corepack prepare yarn@4.9.1 --activate

yarn --version
```

3. **Install Python and gcc-10 (not required for Ubuntu 22+)**

```
sudo apt install python3 python3-pip python3-venv

sudo apt install gcc-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
gcc --version
```

4. **Build the binary from source.**

```
git clone https://github.com/Agoric/agoric-sdk
cd agoric-sdk
git fetch --all
git checkout agoric-upgrade-22b
git clean -xdf && git submodule foreach --recursive git clean -xdf

yarn install && yarn build
(cd packages/cosmic-swingset && make)
agd version
```

5. **Initialize your node.**

```
curl https://main.agoric.net/network-config > chain.json
chainName=`jq -r .chainName < chain.json`
echo $chainName

agd init --chain-id $chainName <node_name>
```

6. **Download genesis.**

```
curl https://main.agoric.net/genesis.json > $HOME/.agoric/config/genesis.json
```

7. **Add seeds and peers to `config.toml`.**

```
peers=$(jq '.peers | join(",")' < chain.json)
seeds=$(jq '.seeds | join(",")' < chain.json)
sed -i.bak -e "s/^seeds *=.*/seeds = $seeds/; s/^persistent_peers *=.*/persistent_peers = $peers/" $HOME/.agoric/config/config.toml
```

8. **Set up minimum gas price.**

```
sed -i "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01ubld,0.005uist\"/;" $HOME/.agoric/config/app.toml
```

9. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.agoric/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.agoric/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.agoric/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.agoric/config/app.toml
```

10. **Create service file.**

```
sudo tee /etc/systemd/system/agd.service > /dev/null <<EOF
[Unit]
Description=Agoric Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which agd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

11. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable agd
systemctl restart agd
journalctl -u agd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

{% hint style="info" %}
Agoric currently does not support State Sync. Try using snapshots instead: <https://polkachu.com/tendermint_snapshots/agoric>
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
agd keys add <key_name>
```

**Recover existing key**

```
agd keys add <key_name> --recover
```

**List of all keys**

```
agd keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
agd tx bank send <key_name> <destination_address> <amount>ubld --from <key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
agd tx staking delegate <validator_address> <amount>ubld --from <key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>agd tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>ubld --from &#x3C;key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>agd tx staking unbond &#x3C;validator_address> &#x3C;amount>ubld--from &#x3C;key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
agd tx distribution withdraw-all-rewards --from <key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
agd tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
agd tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id agoric-3 --gas-prices 0.01ubld --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://agoric-rpc.stakeangle.com/>

**API:** <http://agoric-rpc.stakeangle.com:43017/>

**gRPC:** <http://agoric-rpc.stakeangle.com:43090/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="206">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>Agoric relayer address</th></tr></thead><tbody><tr><td>channel-4</td><td>Gravity Bridge</td><td>agoric1u99nh077v5lt4n68yq2y754h6pa9gc29h2dq2r</td></tr><tr><td>channel-11</td><td>Umee</td><td>agoric1u99nh077v5lt4n68yq2y754h6pa9gc29h2dq2r</td></tr></tbody></table>


# Althea

Althea is an application platform layer that connects all public blockchains in the Cosmos ecosystem

## Useful links

**Website:** <https://althea.net/>

**X:** <https://x.com/AltheaNetwork>

**Discord:** <https://discord.com/invite/hHx7HxcycF>

**GitHub:** <https://github.com/AltheaFoundation/althea-L1>

**Explorer:** <https://althea.explorers.guru/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Install `npm`**&#x20;

```
sudo apt-get install nodejs
sudo apt install npm --yes
```

4. **Build the binary from source.**

```
git clone https://github.com/AltheaFoundation/althea-L1
cd althea-L1
git checkout v1.4.0
make install
althea version
```

5. **Initialize your node.**

```
althea init <node_name> --chain-id althea_417834-4
```

6. **Download genesis.**

```
wget -O $HOME/.althea/config/genesis.json "https://github.com/AltheaFoundation/althea-L1-docs/raw/main/althea-l1-mainnet-genesis.json"
```

7. **Add persistent peers to `config.toml`.**

```
seeds="46ad21a616527181ea3d992339268a5a25c771fa@95.216.38.96:14656"
peers="4d9c73a9e541453b56add8fadf0839fd1442d979@15.235.115.155:17200,a0eca501485cc74e0568973ef502d05023f6500d@158.247.226.255:17200,ab9a9e6ea747839652dfe4480e66a5eb78a385e8@51.81.167.60:17200"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.althea/config/config.toml
```

8. **Set up minimum gas price.**

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0aalthea\"/;" $HOME/.althea/config/app.toml
```

9. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.althea/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.althea/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.althea/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.althea/config/app.toml
```

10. **Create service file.**

```
sudo tee /etc/systemd/system/althea.service > /dev/null <<EOF
[Unit]
Description=Althea Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which althea) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

11. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable althea
systemctl restart althea
journalctl -u althea -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop althea
althea tendermint unsafe-reset-all --home $HOME/.althea --keep-addr-book
```

2. **Add peers.**

```
seeds="46ad21a616527181ea3d992339268a5a25c771fa@95.216.38.96:14656"
peers="4d9c73a9e541453b56add8fadf0839fd1442d979@15.235.115.155:17200,a0eca501485cc74e0568973ef502d05023f6500d@158.247.226.255:17200,ab9a9e6ea747839652dfe4480e66a5eb78a385e8@51.81.167.60:17200"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.althea/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://althea-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.althea/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart althea
sudo journalctl -u althea -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# RPC / API / gRPC

**RPC:** <https://althea-rpc.stakeangle.com/>

**API:** <http://althea-rpc.stakeangle.com:41617/>

**gRPC:** <http://althea-rpc.stakeangle.com:41690/>


# Useful Commands

## Key management

**Add new key**

```
althea keys add <key_name>
```

**Recover existing key**

```
althea keys add <key_name> --recover
```

**List of all keys**

```
althea keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
althea tx bank send <key_name> <destination_address> <amount>aalthea --from <key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
althea tx staking delegate <validator_address> <amount>aalthea --from <key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>althea tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>aalthea --from &#x3C;key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>althea tx staking unbond &#x3C;validator_address> &#x3C;amount>aalthea --from &#x3C;key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
althea tx distribution withdraw-all-rewards --from <key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
althea tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
althea tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id althea_7357-1 --gas-adjustment 1.5 --gas auto -y
```


# AssetMantle

AssetMantle’s foundation is built using the best-in-class core blockchain principles and optimized for the next evolution of the NFT economy

## Useful links

**Website:** <https://assetmantle.one/>

**X:** <https://x.com/AssetMantle>

**Discord:** <https://discord.gg/BSdBQ4495d>

**GitHub:** <https://github.com/AssetMantle>

**Explorer:** <https://explorer.assetmantle.one/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/AssetMantle/node
cd node
git checkout v1.0.1
make install
mantleNode version
```

4. **Initialize your node.**

```
mantleNode init <node_name> --chain-id mantle-1
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/AssetMantle/genesisTransactions/main/mantle-1/final_genesis.json > $HOME/.mantleNode/config/genesis.json
```

6. **Add seeds and persistent peers to `config.toml`.**

```
SEEDS="10de5165a61dd83c768781d438748c14e11f4397@seed.assetmantle.one:26656"
PEERS="efcdd119e9a0f1ac5718c225e425aa1c0121b020@65.20.97.129:26656,880a8fc1a21d2908bd109dab1a2a074ebddec18a@65.108.192.170:26656,88873cf28bc552d39d4cb10523167aa24c3a4e85@95.217.118.96:26876,f96b29b7df3fe6a59fc11bde6936d7109e66515b@65.21.237.29:26656,5d3d2807baa4cd191205749a63cc30aab6a3caa1@65.108.7.28:26656,615e815366defb4c194233ea03c9879f183d49b9@65.108.199.26:26656,4654c8bed4349e4800238cff1f88e97c1f880080@207.244.245.125:26656,9c97f6143d3fae032af5f155d472bbc52f4d90b3@194.34.232.225:26656,f073d57107004268a7c0f1e24433401f892eff94@sentry-1.asset-mantle.ezstaking.io:26229,68692140af51d0c41163340f6f1222eec914c18f@sentry-2.asset-mantle.ezstaking.io:26746,01e2e8547bd17890a7af54d236ae19d16cb1b224@65.108.201.154:2050,ac4512cf8969a9602b6c046be6fd24b9b3ecc2d7@142.132.202.10:26656,fd096224f9c918089410ac7ab6d42d21ec87db60@65.21.230.230:26656,cc938d4354c61e4f59b9626737c2aa1e448f4d57@5.161.80.214:26656,f33b2125c3b3a7c4838e22a060e38d2cefd66e78@65.108.140.109:26656,c64d745a479936d0b482c28239effd2e9fe24bf5@45.77.144.250:26656,af80c95f95301fab1778a722a0d8596ca10006cc@136.243.105.182:26656,e0deea2d5c15e77c9d5934305bb23148ce836709@185.252.232.79:26656,1f28c7cd884a76a022038f22923eea8101d3538f@168.119.89.31:26656,7eeb595f1205c2c7230b3812badb1844185b3727@65.108.99.224:46656,adfcaf7a4d5b388aff901136a9d64423ef2215f9@88.99.216.14:26456,201aa01ed819a3544c77b8e12343c832a20f8136@49.12.189.127:26656,169a3e12d45903d961ace560a384d3bcb55092e2@3.137.211.131:26656,38f4504f74a9fd70f158270751c31a4d146f987c@65.21.226.249:26616,aa4cbf8284512c7d10dbc0542604f1fb89e1646b@95.165.150.165:26956,20dbc8f0c0fe5aeadde86976149b70e20fb2e87d@95.217.73.93:24656,5b3c90e6c07e03ffddc5dc3aae786a2990bc5bd3@148.251.81.179:26656,b5c9a4607fc0494b25b703d08c4601ce44027215@162.55.246.236:26656,f61e5c1d7897dd445508a873248e57ae553ac258@91.230.111.86:26656,d0dc9234db7b9e5bb853afbd96055c46990aa55f@65.21.131.144:29656,681ffbadff88c900660d2bc6bce0920929b529f7@62.171.153.122:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.mantleNode/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0umntl"|g' $HOME/.mantleNode/config/app.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.mantleNode/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.mantleNode/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.mantleNode/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.mantleNode/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/mantle.service > /dev/null <<EOF
[Unit]
Description=AssetMantle Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which mantleNode) start --x-crisis-skip-assert-invariants
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable mantle
systemctl restart mantle
journalctl -u mantle -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop mantle
mantleNode tendermint unsafe-reset-all --home $HOME/.mantleNode --keep-addr-book
```

2. **Add peers.**

```
PEER="e9d224d3b46eaf137c476ee38f40f72dd50c8268@142.132.208.133:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.mantleNode/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://assetmantle-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.mantleNode/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart mantle
sudo journalctl -u mantle -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
mantleNode keys add <key_name>
```

**Recover existing key**

```
mantleNode keys add <key_name> --recover
```

**List of all keys**

```
mantleNode keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
mantleNode tx bank send <key_name> <destination_address> <amount>umntl --from <key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
mantleNode tx staking delegate <validator_address> <amount>umntl --from <key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>mantleNode tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>umntl --from &#x3C;key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>mantleNode tx staking unbond &#x3C;validator_address> &#x3C;amount>umntl --from &#x3C;key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
mantleNode tx distribution withdraw-all-rewards --from <key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
mantleNode tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
mantleNode tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id mantle-1 --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://assetmantle-rpc.stakeangle.com/>

**API:** <http://assetmantle-rpc.stakeangle.com:41417/>

**gRPC:** <http://assetmantle-rpc.stakeangle.com:41490/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="207">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>AssetMantle relayer address</th></tr></thead><tbody><tr><td>channel-0</td><td>Osmosis</td><td>mantle1e2ljm32m80kfh7zsn8ynwnlmh5krypnumzp95p</td></tr></tbody></table>


# Aura Network

Driving Toward Mass NFT Adoption. A Permissioned Smart Contract Layer-1 Chain

## Useful links

**Website:** <https://aura.network/>

**X:** <https://x.com/AuraNetworkHQ>

**Discord:** <https://discord.com/invite/bzm3dyxJxR>

**GitHub:** <https://github.com/aura-nw>

**Explorer:** <https://aurascan.io/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/aura-nw/aura
cd aura
git checkout v0.9.3
make install
aurad version
```

4. **Initialize your node.**

```
aurad config chain-id xstaxy-1
aurad init <node_nameE> --chain-id xstaxy-1
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/aura-nw/mainnet-artifacts/main/xstaxy-1/genesis.json > $HOME/.aura/config/genesis.json
```

6. **Add seeds and persistent peers to `config.toml`.**

```
SEEDS="22a0ca5f64187bb477be1d82166b1e9e184afe50@18.143.52.13:26656,0b8bd8c1b956b441f036e71df3a4d96e85f843b8@13.250.159.219:26656,c3217255e684b0bd6dd2240a86683b26ce7b064b@seeds.cros-nest.com:30656"
PEERS="edbd221ceecf4e0234fb60d617a025c6b0e56bf0@178.250.154.15:36656,b91ee5c72905bc49beed2720bb882c923c68fbc9@80.92.206.66:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.aura/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.001uaura"|g' $HOME/.aura/config/app.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.aura/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.aura/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.aura/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.aura/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/aurad.service > /dev/null <<EOF
[Unit]
Description=Aura Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which aurad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable aurad
systemctl restart aurad
journalctl -u aurad -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop aurad
aurad tendermint unsafe-reset-all --home $HOME/.aura --keep-addr-book
```

2. **Add peers.**

```
PEER="5ce29d0d9ef1230eab07444dd73745d68a832d6f@aura.nodejumper.io:40656,0179528068da0dfaf61005cf5aa28793ca42b129@85.25.74.163:26656,a19b89ebbf7331f435b8ef100ce501d2377922ea@209.126.116.182:26656,a1f949c765bfc493ddd2e0e8477170bcc3b86a57@194.163.179.176:16656,3e7ef25f1c9829351936884618659167400eb0f1@142.132.149.171:26656,ed15ae05f17dd4e672eec0a96c38364d063b68dc@65.108.6.45:60756,d2ea7c421c8bb552b84eba4c7924f9e78d3a79ae@176.9.158.219:41256"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.aura/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://aura-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.aura/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart aurad
sudo journalctl -u aurad -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
aurad keys add <key_name>
```

**Recover existing key**

```
aurad keys add <key_name> --recover
```

**List of all keys**

```
aurad keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
aurad tx bank send <key_name> <destination_address> <amount>uaura --from <key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
aurad tx staking delegate <validator_address> <amount>uaura --from <key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>aurad tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>uaura --from &#x3C;key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>aurad tx staking unbond &#x3C;validator_address> &#x3C;amount>uaura --from &#x3C;key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
aurad tx distribution withdraw-all-rewards --from <key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
aurad tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
aurad tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id xstaxy-1 --gas-prices 0.001uaura --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://aura-rpc.stakeangle.com/>

**API:** <http://aura-rpc.stakeangle.com:41217/>

**gRPC:** <http://aura-rpc.stakeangle.com:41290/>


# Axone

Axone is the universal semantic orchestration layer to connect, share, and monetize any resources in the AI stack

## Useful links

**Website:** <https://www.axone.xyz/>

**X:** <https://x.com/axonexyz>

**Discord:** <https://discord.com/invite/axone>

**GitHub:** <https://github.com/axone-protocol>

**Explorer:** <https://explorer.nodestake.org/axone>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/axone-protocol/axoned
cd axoned
git checkout v12.0.0
make install
axoned version
```

5. **Initialize your node.**

```
axoned init <node_name> --chain-id axone-1
```

6. **Download genesis.**

```
wget -O $HOME/.axoned/config/genesis.json "https://raw.githubusercontent.com/axone-protocol/networks/refs/heads/main/chains/1/genesis.json"
```

7. **Add persistent peers to `config.toml`.**

```
peers="e13c4a54ffd3d6dc71da5238471904ad8e303935@141.95.11.201:26656,2d524b4f87fc684e276abe8fe748e2ca45b767b6@85.202.163.243:26656,e97341e910d0f8c92257f16d38dcf5513196dd41@65.109.125.172:26632,a963a7a927a49dd66e9bf1c1a04127d34d7edb6f@65.21.227.52:26332,dcc0c9c254bdb81107b61f30ddb5f9ed32f24645@168.119.143.51:18656,740741048700f4e8cc1fb6609bddc569e5b9d6d5@65.108.236.5:20056,ea1d3b5b70ac85d553a645561fbfd95577afee4c@148.113.153.62:26656,9ae2608641ed016c38a5357c5ab1051da2cafba2@148.72.141.245:26616"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.axoned/config/config.toml
```

8. **Set up minimum gas price.**

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0uaxone\"/;" $HOME/.axoned/config/app.toml
```

9. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.axoned/config/app.toml
```

10. **Create service file.**

```
sudo tee /etc/systemd/system/axoned.service > /dev/null <<EOF
[Unit]
Description=Axone Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which axoned) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

11. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable axoned
systemctl restart axoned
journalctl -u axoned -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop axoned
axoned tendermint unsafe-reset-all --home $HOME/.axoned --keep-addr-book
```

2. **Add peers.**

```
peers="e13c4a54ffd3d6dc71da5238471904ad8e303935@141.95.11.201:26656,2d524b4f87fc684e276abe8fe748e2ca45b767b6@85.202.163.243:26656,e97341e910d0f8c92257f16d38dcf5513196dd41@65.109.125.172:26632,a963a7a927a49dd66e9bf1c1a04127d34d7edb6f@65.21.227.52:26332,dcc0c9c254bdb81107b61f30ddb5f9ed32f24645@168.119.143.51:18656,740741048700f4e8cc1fb6609bddc569e5b9d6d5@65.108.236.5:20056,ea1d3b5b70ac85d553a645561fbfd95577afee4c@148.113.153.62:26656,9ae2608641ed016c38a5357c5ab1051da2cafba2@148.72.141.245:26616"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.axoned/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://axone-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.axoned/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart axoned
sudo journalctl -u axoned -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# RPC / API / gRPC

**RPC:** <https://axone-rpc.stakeangle.com/>

**API:** <http://axone-rpc.stakeangle.com:41717/>

**gRPC:** <http://axone-rpc.stakeangle.com:41790/>


# Useful Commands

## Key management

**Add new key**

```
axoned keys add <key_name>
```

**Recover existing key**

```
axoned keys add <key_name> --recover
```

**List of all keys**

```
axoned  keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
axoned tx bank send <key_name> <destination_address> <amount>uaxone --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
axoned tx staking delegate <validator_address> <amount>uaxone --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

```
axoned tx staking redelegate <validator_address> <new_validator_address> <amount>uaxone --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y 
```

**Unbond tokens from `validator_address`**

```
axoned tx staking unbond <validator_address> <amount>uaxone --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw staking rewards from all validators**

```
axoned tx distribution withdraw-all-rewards --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
axoned tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
axoned tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id axone-1 --gas-adjustment 1.5 --gas auto -y
```


# Chain4Energy

Chain4Energy is a revolutionary Web 3.0 Energy Marketplace for the global energy economy

## Useful links

**Website:** <https://c4e.io/>

**X:** <https://x.com/Chain4Energy>

**Discord:** <https://discord.gg/chain4energy>

**GitHub:** <https://github.com/chain4energy>

**Explorer:** <https://explorer.c4e.io/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/chain4energy/c4e-chain
cd c4e-chain
git checkout v1.4.3
make install
c4ed version
```

4. **Initialize your node.**

```
c4ed init <node_name> --chain-id perun-1
```

5. **Download genesis.**

```
wget https://raw.githubusercontent.com/obajay/nodes-Guides/main/C4E/genesis.json -O $HOME/.c4e-chain/config/genesis.json
```

6. **Add persistent peers to `config.toml`.**

```
peers="1b802d4616c1de3fa687ad0d671b1b9d64754a44@88.198.49.217:26156,3d75b4da612395d69ef58a0f6dbb851bd98c1962@185.144.99.246:26656,a9bdcae2527c4a27a6f4882e852329241a945699@46.4.81.204:30656,2f6141859c28c088514b46f7783509aeeb87553f@141.94.193.12:11656,bf78d9bd64cf7e83357966aa3b4ca19d996ef1ef@51.75.55.49:26656,e84d7bff6960e7b50ee8eba09ef6f25b0b0b30cc@95.214.53.105:56656,717c041cf112f778508033e99a16288ec9d034c8@95.217.35.186:60756,cff10605b619e5119a1c9d53397a798de8fbf83b@64.227.136.63:26656,770fc199534d3126ff336b93aaf643a80e12761a@185.169.252.22:26656,c37c30000caf21391e77a457f7721685e41bea42@195.3.223.221:26656"
sed -i.bak -e  "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.c4e-chain/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0uc4e"|g' $HOME/.c4e-chain/config/app.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.c4e-chain/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.c4e-chain/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.c4e-chain/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.c4e-chain/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/c4ed.service > /dev/null <<EOF
[Unit]
Description=Chain4Energy Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which c4ed) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable c4ed
systemctl restart c4ed
journalctl -u c4ed -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop c4ed
c4ed unsafe-reset-all --home $HOME/.c4e-chain
```

2. **Add peers.**

```
PEER="1b802d4616c1de3fa687ad0d671b1b9d64754a44@88.198.49.217:26156,3d75b4da612395d69ef58a0f6dbb851bd98c1962@185.144.99.246:26656,a9bdcae2527c4a27a6f4882e852329241a945699@46.4.81.204:30656,2f6141859c28c088514b46f7783509aeeb87553f@141.94.193.12:11656,bf78d9bd64cf7e83357966aa3b4ca19d996ef1ef@51.75.55.49:26656,e84d7bff6960e7b50ee8eba09ef6f25b0b0b30cc@95.214.53.105:56656,717c041cf112f778508033e99a16288ec9d034c8@95.217.35.186:60756,cff10605b619e5119a1c9d53397a798de8fbf83b@64.227.136.63:26656,770fc199534d3126ff336b93aaf643a80e12761a@185.169.252.22:26656,c37c30000caf21391e77a457f7721685e41bea42@195.3.223.221:26656,d4c6f17b49af7f96c587613cbdb6e41b179079c2@185.208.206.217:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.c4e-chain/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://chain4energy-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.c4e-chain/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart c4ed
sudo journalctl -u c4ed -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
c4ed keys add <key_name>
```

**Recover existing key**

```
c4ed keys add <key_name> --recover
```

**List of all keys**

```
c4ed keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
c4ed tx bank send <key_name> <destination_address> <amount>uc4e --from <key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
c4ed tx staking delegate <validator_address> <amount>uc4e --from <key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>c4ed tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>uc4e --from &#x3C;key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>c4ed tx staking unbond &#x3C;validator_address> &#x3C;amount>uc4e --from &#x3C;key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
c4ed tx distribution withdraw-all-rewards --from <key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
c4ed tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
c4ed tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id perun-1 --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://chain4energy-rpc.stakeangle.com/>

**API:** <http://chain4energy-rpc.stakeangle.com:1317/>

**gRPC:** <http://chain4energy-rpc.stakeangle.com:9090/>


# Desmos

A blockchain which serves as the backbone to empower the development of user-centric social networks

## Useful  links

**Website:** <https://desmos.network/>

**X:** <https://x.com/desmosnetwork>

**Discord:** <https://discord.com/invite/ckFcU5vxxc>

**GitHub:** <https://github.com/desmos-labs>

**Explorer:** <https://ping.pub/desmos>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/desmos-labs/desmos
cd desmos
git checkout v7.1.1
make install
desmos version
```

4. **Initialize your node.**

```
desmos init <node_name> --chain-id=desmos-mainnet
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/desmos-labs/mainnet/main/genesis.json > ~/.desmos/config/genesis.json
```

6. **Add persistent peers to `config.toml`.**

```
peers="bdd98ec74fe56146f08e886239e52373f6821ce3@95.216.148.253:26656,7ea74a6fd693c8a04fb11d3e31f231c2c949db5c@157.90.230.83:26656,86451fccaa2745dba3c5e88f289cb8a7fccda107@139.162.131.107:26656,af4e9b5cc3509893877e82bf1de1d6316fe0bb1c@152.228.216.224:26656,c880aded1fd96647e85bd301c18dafb6ae7dd3a8@5.9.121.55:41856"
sed -i.bak -e  "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.desmos/config/config.toml
```

7. **Set up pruning (optional).**

```
PRUNING="custom"
PRUNING_KEEP_RECENT="100"
PRUNING_INTERVAL="10"

sed -i -e "s/^pruning *=.*/pruning = \"$PRUNING\"/" $HOME/.desmos/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \
\"$PRUNING_KEEP_RECENT\"/" $HOME/.desmos/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \
\"$PRUNING_INTERVAL\"/" $HOME/.desmos/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/desmosd.service > /dev/null <<EOF
[Unit]
Description=Desmos Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which desmos) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable desmosd
systemctl restart desmosd
journalctl -u desmosd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop desmosd
desmos tendermint unsafe-reset-all --home $HOME/.desmos --keep-addr-book
```

2. **Add peers.**

```
PEERS="bdd98ec74fe56146f08e886239e52373f6821ce3@95.216.148.253:26656,7ea74a6fd693c8a04fb11d3e31f231c2c949db5c@157.90.230.83:26656,86451fccaa2745dba3c5e88f289cb8a7fccda107@139.162.131.107:26656,af4e9b5cc3509893877e82bf1de1d6316fe0bb1c@152.228.216.224:26656,c880aded1fd96647e85bd301c18dafb6ae7dd3a8@5.9.121.55:41856"
sed -i -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.desmos/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://desmos-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.desmos/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart desmosd
sudo journalctl -u desmosd -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
desmos keys add <key_name>
```

**Recover existing key**

```
desmos keys add <key_name> --recover
```

**List of all keys**

```
desmos keys list
```

## Save chain-id configuration

```
desmos config chain-id desmos-mainnet
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
desmos tx bank send <key_name> <destination_address> <amount>udsm --from <key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
desmos tx staking delegate <validator_address> <amount>udsm --from <key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>desmos tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>udsm --from &#x3C;key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>desmos tx staking unbond &#x3C;validator_address> &#x3C;amount>udsm --from &#x3C;key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
desmos tx distribution withdraw-all-rewards --from <key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
desmos tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
desmos tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --gas-prices 0.001udsm --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://desmos-rpc.stakeangle.com/>

**API:** <http://desmos-rpc.stakeangle.com:41817/>

**gRPC:** <http://desmos-rpc.stakeangle.com:41890/>


# FirmaChain

FIRMACHAIN’s mainnet strives to become the pioneer of the Web 3.0 era by offering a comprehensive blockchain platform where DiD, Wallet, NFTs, DApps and so much more can be developed

## Useful links

**Website:** <https://firmachain.org/>

**X:** <https://x.com/firmachain>

**Telegram:** <https://t.me/firmachain_global>

**GitHub:** <https://github.com/FirmaChain>

**Explorer:** <https://explorer.firmachain.dev/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/FirmaChain/firmachain
cd firmachain
git checkout v0.5.1-patch2
make install
firmachaind version
sudo mv ~/go/bin/firmachaind /usr/local/bin/firmachaind
```

4. **Initialize your node.**

```
firmachaind init <node_name> --chain-id colosseum-1
```

5. **Download genesis.**

```
wget https://raw.githubusercontent.com/FirmaChain/mainnet/main/colosseum-1/genesis.json -O $HOME/.firmachain/config/genesis.json
```

6. **Add seeds to `config.toml`.**

```
SEEDS="f89dcc15241e30323ae6f491011779d53f9a5487@mainnet-seed1.firmachain.dev:26656,04cce0da4cf5ceb5ffc04d158faddfc5dc419154@mainnet-seed2.firmachain.dev:26656,940977bdc070422b3a62e4985f2fe79b7ee737f7@mainnet-seed3.firmachain.dev:26656"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" $HOME/.firmachain/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.1ufct"|g' $HOME/.firmachain/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.firmachain/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.firmachain/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.firmachain/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.firmachain/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/firmachaind.service > /dev/null <<EOF
[Unit]
Description=FirmaChain Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which firmachaind) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable firmachaind
systemctl restart firmachaind
journalctl -u firmachaind -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop firmachaind
firmachaind tendermint unsafe-reset-all --home $HOME/.firmachain --keep-addr-book
```

2. **Add peers.**

<pre><code><strong>PEER="58b61cf27dfdeaa7f1abf6e4df5746323e9dd8b1@213.133.111.125:26656"
</strong>sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.firmachain/config/config.toml
</code></pre>

3. **Fill variables with data for State Sync.**

```
RPC="https://firmachain-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.firmachain/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart firmachaind
sudo journalctl -u firmachaind -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
firmachaind keys add <key_name>
```

**Recover existing key**

```
firmachaind keys add <key_name> --recover
```

**List of all keys**

```
firmachaind keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
firmachaind tx bank send <key_name> <destination_address> <amount>ufct --from <key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
firmachaind tx staking delegate <validator_address> <amount>ufct --from <key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>firmachaind tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>ufct --from &#x3C;key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>firmachaind tx staking unbond &#x3C;validator_address> &#x3C;amount>ufct--from &#x3C;key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
firmachaind tx distribution withdraw-all-rewards --from <key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
firmachaind tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
firmachaind tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id colosseum-1 --gas-prices 0.1ufct --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://firmachain-rpc.stakeangle.com/>

**API:** <http://firmachain-rpc.stakeangle.com:41017/>

**gRPC:** <http://firmachain-rpc.stakeangle.com:41090/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="210">Source IBC channel</th><th width="208.33333333333331">Network</th><th>Humans relayer address</th></tr></thead><tbody><tr><td>channel-1</td><td>FirmaChain</td><td>firma1yuvgsfcd00kgtj20mshk80n5pjvv467ecc2gsp</td></tr><tr><td>channel-79241</td><td>Osmosis</td><td>osmo1hwv6c47rp7fcw7zt2s2zadrlwtr6ctznjye7fm</td></tr></tbody></table>


# FIRMACHAIN MONITOR by StakeAngle

A clean real-time dashboard showing the essential operational metrics of the FirmaChain blockchain.\
Available at: <https://firmachain-monitor.stakeangle.com/>

### **🔹 Core Metrics**

* **Latest Block** — current finalized block height.
* **Active Validators** — number of validators in the bonded set.
* **Avg Block Time** — moving average block interval with trend chart.
* **Network TPS** — average transactions per second (last 100 blocks).

***

### **🔹 Tokenomics**

* **Total Tokens** — circulating supply (FCT).
* **Bonded Tokens** — total staked FCT.
* **Unbonded Tokens** — tokens in unbonding state.
* **Community Pool** — accumulated community pool balance.
* **Staking APR** — estimated annual staking return.
* **Inflation Rate** — current annual inflation.

***

### **🔹 Recent Blocks Table**

Each row displays:

* Block height
* Age
* Transaction count
* Validator signatures ratio
* Block hash

Ideal for monitoring network activity and validator participation in real time.

***

### **🔹 Network Parameters**

* **Inflation Limits** — max and min inflation rates.
* **Unbonding Time** — staking unbonding period.
* **Proposal Voting Period** — governance voting window.
* **FirmaChain Binary** — node software and CometBFT versions.


# Gitopia

Gitopia is the next-generation Code Collaboration Platform fuelled by a decentralized network and interactive token economy

## Useful links

**Website:** <https://gitopia.com/>

**Xer:** <https://x.com/gitopiaDAO>

**Discord:** <https://discord.gg/aqsKW3hUHD>

**GitHub:** <https://github.com/gitopia>

**Explorer:** <https://ping.pub/gitopia>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
curl https://get.gitopia.com | bash
git clone gitopia://Gitopia/gitopia
cd gitopia
git checkout v6.0.0
make install
gitopiad version
```

4. **Initialize your node.**

```
gitopiad init <node_name> --chain-id gitopia
```

5. **Download genesis.**

```
wget https://github.com/gitopia/mainnet/raw/master/genesis.tar.gz
tar -xzf genesis.tar.gz
mv genesis.json $HOME/.gitopia/config/genesis.json
rm genesis.tar.gz
```

6. **Add seeds and persistent peers to `config.toml`.**

```
seeds="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com:11356"
peers="a5233e4359a39e09d7b261c200cdc014bbef76ad@65.108.8.247:11356,8e42db619abe34afe8cb39d4a2d04ae5db5bdaaf@141.94.139.233:26656,4cf66531681c92f15c95c25bd1bff524f9dca35e@65.109.154.181:26656,b2f764694d52e09793d68259d584ece0c194b6fe@65.108.229.93:26656"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.gitopia/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001ulore\"/;" $HOME/.gitopia/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.gitopia/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/gitopiad.service > /dev/null <<EOF
[Unit]
Description=Gitopia Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which gitopiad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable gitopiad
systemctl restart gitopiad
journalctl -u gitopiad -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop gitopiad
gitopiad tendermint unsafe-reset-all --home $HOME/.gitopia --keep-addr-book
```

2. **Add peers.**

<pre><code><strong>PEER="5b12e0a1c70df1cb0b37de14da1b0cb4e44bd0e5@gitopia.nodejumper.io:32656,1c9e5ca0d44932fb3d691bb23dedf799c120948d@85.10.203.15:5656,b2f764694d52e09793d68259d584ece0c194b6fe@65.108.229.93:26656,d724628333e34992ae0b46b7ae060cb31b06c1be@162.19.237.134:26656,f442947166f03e5cd0f9f1b6045917907b3307ff@145.239.10.46:14156,c274f612fe7cf259aef7d9f01dc4ecfebca43656@148.251.137.146:26656,abca18ed112719b4f0a23932797dba2733f0fd44@23.88.5.169:25656,a0b6c89b4fe0f455a027080103bffd001f3b6248@65.21.134.202:26356,f9b892ea2e8ed8aa83f7b98e7e47371c23b01924@213.239.207.175:36656,0389c1066a79e9745803227e1b870627eda780d7@65.109.23.237:29656,e06b2be5c4ecee659e744da39d07b42f6f9e300c@192.99.44.79:11356,93a02e173308729cf9d94709dd670828034920a6@148.251.91.185:26656,5e8a5481a314430e24de0919e18ffae394c269f6@51.159.221.31:26656,b89682dfddec974d867ea13817e90a444c21460c@138.201.127.91:26691,0724a81eaee075bf4e1af702930dbc72977d71af@143.110.240.245:26656,e5f3faef143c82f49bc506aea518e93ed4bb901f@65.109.116.151:43656,70e0603c1557681ee5d749b82c27468aecc862f1@185.246.85.5:26656,8e42db619abe34afe8cb39d4a2d04ae5db5bdaaf@141.94.139.233:26656,e8e6b032f408bcadc2e65f57c4376d91382104e8@135.181.209.55:26656,b35d46fcfc1e4cfa943a299fcb39853e15e94d8b@81.30.157.35:14656,5b2df98ad73a0a81a5bd31da4489a9236a7d7a99@65.21.91.160:26867,33e2390bfd693a8f2b27d5d646e0f081d717a81f@135.181.73.57:26656,93a3d1e0c09908f268e63240271af0d5e6102f16@[2a03:cfc0:8000:13::c303:de05]:26656,4adfa5889675e1e91ea4459e15ff4a0ba53e7828@65.108.224.156:19656,737ea68d852ad4580397e3b4d0b1f0a151a7ee60@65.21.170.3:30656,082e95b5d5351e68dcfb24dff802f9064cfd5a4c@65.109.92.241:51056,c903e98ce3923865f521151d97f36510157c8bc1@65.108.230.113:51056,f6bb45c38d0a9abc926b5baa8f27473f2cd37d30@141.95.157.139:11356,abd217aa49d5ee86c271d04feef2cf4c97ff8d55@94.130.54.253:16601,de34c6491557c59bc5d73631fb73bf05cd726e3e@142.132.202.50:37656,7de2631f6bc7cc0caf30c3745d4795c1dbc91cf3@65.109.104.72:11356,e659a8a92deec3f155e3cab5378f92318980bfc3@86.32.71.164:26656,959b7f6b86683b10e14a04d529e00984d3d70480@162.55.45.242:14156,a2c24354d7d06e61266882a98b54e85800ac4b34@104.244.208.243:11356,11879f38e16e1723ef70950f5222ec78dde7e62f@65.109.17.23:56240,d25a718d491f52efdfd31e8dfdeaa69d1d1946dd@65.108.10.49:26556,fdf51e3445ef8b3b28c313d98c65516b8faf3317@65.21.225.10:26656,2a6ae41d3b8529a62a50ba4615593305e1c9806e@135.181.217.182:10656,4cf66531681c92f15c95c25bd1bff524f9dca35e@65.109.154.181:26656,382a5558ebb8493ca2a8057c51bc1b598520cf60@65.108.126.21:26656,4ffa0ea96f12080e74c53ca9f8aaf4390bab4bb1@138.201.204.5:48656,aa6d4e9e9d9c82595497b67a440e054faae9d4fe@185.144.99.87:26656,63381c5528ed8ca93f9ba31008a9630d21b29a97@142.132.152.46:46656,bc959f28290e4e8ed76acdc4e0fc6b0911f1c512@135.181.208.166:26656,761fb6483e4620c037d030f45d5fc885cd6c0ee3@144.76.45.59:26756,d6086f01a3f9c41352fd7fb126df96a5af92640e@94.41.17.212:26656,3c4d752a9f0d6d4d1c8ec477d0977cff3caa1b77@65.109.156.208:13656,aecabb598db405f5d9cfd55d31884e005244701a@34.142.232.42:26656,c35eb6124591bad21673e8d802898faa18e0352a@65.109.29.150:36656,4979b96c4453efb66c677876fe0e9109b15a8440@65.21.235.144:26656,70b4aab41328695e0299cbee37083cdca01949cd@34.87.123.13:26656,9ef4a2965f3c7c27b56179a5758de60966871c34@95.214.53.105:14656,a0ebd1e5845148c47451452047c7c99621da195e@65.109.96.93:26656,8871b4d32f9f5d411deb1c72a97c1d6377e1793e@142.132.253.112:43656,f4cbfc07a519fab104383ca688b2c5e1e1804d16@65.108.206.74:26656,5144fa12685df73836aad3829c3878248142b6b7@69.197.6.24:27156,5d481c65f014b1b52e3e747f623d04acd0e3ada1@138.201.220.51:10256,cc7d9f8d2fa2225063d8d5ac3fe70cbb64d7a0f7@142.132.202.86:20000,0e9f303834a5d1f3be0babd5466725b3609ebc82@65.21.141.246:28656,12f6b84a23b054a6591c647c2a4456c40af65cce@5.9.147.22:24656,ebc272824924ea1a27ea3183dd0b9ba713494f83@195.3.220.140:27036,2caae9b96ecd2ac07468ae1b85bb3f3bdde0530c@51.79.77.103:43656,146ddc7c8c7164bda4193335c3f7b11cd4c7f0d9@103.107.183.89:14156,f93ac5cc7f69e825e87bf32556b4633ce543bb6e@65.109.116.119:14156,35c318d7b505008c10d12db8098931eed65d6be6@213.133.103.188:14156,cf721cc0ae7b6cf9c58784ccfc87f6f621a09ffb@65.109.99.68:26656,933df918a2f2e331a033e923989d5b8c5275322d@207.244.253.244:37656,ca44ce96710b8f5cb34d89182af783d3b9a8c1ad@176.9.158.219:41356,fff5f6980591805db4c7aea96931d5815fa75563@65.108.6.45:46656,400f3d9e30b69e78a7fb891f60d76fa3c73f0ecc@65.109.88.38:14159""
</strong>sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.gitopia/config/config.toml
</code></pre>

3. **Fill variables with data for State Sync.**

```
RPC="https://gitopia-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.gitopia/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart gitopiad
sudo journalctl -u gitopiad -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
gitopiad keys add <key_name>
```

**Recover existing key**

```
gitopiad keys add <key_name> --recover
```

**List of all keys**

```
gitopiad keys list
```

## Save chain-id configuration

```
gitopiad config chain-id gitopia
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
gitopiad tx bank send <key_name> <destination_address> <amount>ulore --from <key_name> --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

<pre><code><strong>gitopiad tx staking delegate &#x3C;validator_address> &#x3C;amount>ulore --from &#x3C;key_name> --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Redelegate tokens from `validator_address` to `new_validator_address`**

```
gitopiad tx staking redelegate <validator_address> <new_validator_address> <amount>ulore --from <key_name> --gas-adjustment 1.5 --gas auto -y 
```

**Unbond tokens from `validator_address`**

<pre><code><strong>gitopiad tx staking unbond &#x3C;validator_address> &#x3C;amount>ulore --from &#x3C;key_name> --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
gitopiad tx distribution withdraw-all-rewards --from <key_name> --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
gitopiad tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --gas-prices 0uheart --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
gitopiad tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://gitopia-rpc.stakeangle.com/>

**API:** <http://gitopia-rpc.stakeangle.com:41317/>

**gRPC:** <http://gitopia-rpc.stakeangle.com:41390/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="215">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>Gitopia relayer address</th></tr></thead><tbody><tr><td>channel-0</td><td>Osmosis</td><td>gitopia1hwv6c47rp7fcw7zt2s2zadrlwtr6ctzny8des2</td></tr></tbody></table>


# Gravity Bridge

An open, decentralized bridge that unlocks the power of interoperability & liquidity between blockchain ecosystems

## Useful links

**Website:** <https://www.gravitybridge.net/>

**X:** <https://x.com/gravity_bridge>

**Discord:** <https://discord.gg/d3DshmHpXA>

**GitHub:** <https://github.com/Gravity-Bridge>

**Explorer:** <https://www.mintscan.io/gravity-bridge>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Download the binary.**

```
git clone https://github.com/gravity-bridge/gravity-bridge
cd gravity-bridge/module
git checkout v1.14.1
make install
gravity version
```

4. **Initialize your node.**

```
gravity init <node_name> --chain-id gravity-bridge-3
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/Gravity-Bridge/gravity-docs/main/genesis.json > $HOME/.gravity/config/genesis.json
```

6. **Add seeds and persistent peers to `config.toml`.**

```
SEEDS="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com:14256,86bd5cb6e762f673f1706e5889e039d5406b4b90@gravity.seed.node75.org:10556"
PEERS="73e27e9b376d2f58d80e29e8175542cb01c3024d@135.181.73.170:26856, ef9748625b4739c5411e276cf2cb0d2742a037f9@54.36.63.85:26656, 39490daffac0c7847b0d2617e412b2942055a82b@95.214.53.46:26656, 906114620df87a270b89404fdc7f15b3760fa34e@95.214.53.27:42656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.gravity/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0ugraviton"|g' $HOME/.gravity/config/app.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.gravity/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.gravity/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.gravity/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.gravity/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/gravity-node.service > /dev/null <<EOF
[Unit]
Description=Gravity blockchain node
Requires=network.target

[Service]
Type=simple
TimeoutStartSec=10s
Restart=always
RestartSec=10
ExecStart=$(which gravity) start
LimitNOFILE=500000
LimitNPROC=500000
Environment="HOME=/root"

[Install]
WantedBy=default.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable gravity-node
systemctl restart gravity-node
journalctl -u gravity-node -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop gravity-node
gravity tendermint unsafe-reset-all --home $HOME/.gravity --keep-addr-book
```

2. **Add peers.**

```
SEEDS="6770e29a9224810bcde6655b742d52b8a49d51e8@65.19.136.133:26656,63e662f5e048d4902c7c7126291cf1fc17687e3c@95.211.103.175:26656"
PEERS="77367b424f624c4f9f423267dd8d4d559b289b62@167.235.9.250:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.gravity/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://gravity-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.gravity/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart gravity-node
sudo journalctl -u gravity-node -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
gravity keys add <key_name>
```

**Recover existing key**

```
gravity keys add <key_name> --recover
```

**List of all keys**

```
gravity keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
gravity tx bank send <key_name> <destination_address> <amount>ugraviton --from <key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
gravity tx staking delegate <validator_address> <amount>ugraviton --from <key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>gravity tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>ugraviton --from &#x3C;key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>gravity tx staking unbond &#x3C;validator_address> &#x3C;amount>ugraviton --from &#x3C;key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
gravity tx distribution withdraw-all-rewards --from <key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
gravity tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
gravity tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id gravity-bridge-3 --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://gravity-rpc.stakeangle.com/>

**API:** <http://gravity-rpc.stakeangle.com:41117/>

**gRPC:** <http://gravity-rpc.stakeangle.com:41190/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="199">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>Gravity Bridge relayer address</th></tr></thead><tbody><tr><td>channel-7</td><td>Stargaze</td><td>gravity1g2syde840g7f2fxafxpgj7lc3u6hgvap939fph</td></tr><tr><td>channel-51</td><td>OmniFlix</td><td>gravity1g2syde840g7f2fxafxpgj7lc3u6hgvap939fph</td></tr><tr><td>channel-91</td><td>Agoric</td><td>gravity1g2syde840g7f2fxafxpgj7lc3u6hgvap939fph</td></tr></tbody></table>


# Humans

Humans is creating an all-in-one platform for AI-based creation and governance at scale, beginning an initial focus on synthetic media

## Useful links

**Website:** <https://humans.ai/>

**X:** <https://x.com/humansdotai>

**Discord:** <https://discord.gg/humansdotai>

**GitHub:** <https://github.com/humansdotai>

**Explorer:** <https://explorer.humans.zone/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/humansdotai/humans
cd humans
git checkout v1.0.0
make install
humansd version
```

4. **Initialize your node.**

```
humansd init <node_name> --chain-id=humans_1089-1
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/humansdotai/mainnets/main/mainnet/1/genesis_1089-1.json > $HOME/.humansd/config/genesis.json
```

6. **Add persistent peers to `config.toml`.**

```
peers="6d10dcac248d28e8c445841db51f34f9c26442c2@88.217.142.187:29001,81e49a66b928e3a8ba4ce61e959603b1ecd36d96@89.40.71.226:26656,c28ca17b1bad34a3ee5f0fde7568c73b49741479@65.108.108.54:8888,fbfcef080c6c631b03c6bb2832ae608931b1ce41@136.243.55.237:26656,dbf538cdb0f4d5ae4bd90fe2724b95d75b364ce7@138.3.43.147:26656,f7c4bde2eaeab04aff9872d50d5174472b087114@91.194.30.201:26656,37f2636e526869522131c74f098d507000c71aa0@167.235.115.119:26656,aaf071233f5481d50f20cff0bd0a55e6b3aef948@46.4.112.18:26656,dfccfc9156758de072e7287d442a2d3f00770a98@89.39.106.78:26656,91f91757091dab73f39f32f4502f94408fa79ec7@85.10.211.246:26656,2b882f794ed974031b5b435fbf1a755b668d7529@178.23.126.79:26656,f9344349e8435362bc7f21f67b9b61d2f1d6891b@152.32.174.173:26656,8204f0ddbb462749703a58ad6e4e57c5ea5a3379@193.34.212.99:26656,98274e2dcc6b5520c9818a6fdfcf6bde347f1d70@172.0.1.31:26656,a1ad90f3abf8e2875fb8c11f43498a7a8f63c9ad@139.59.6.61:26656,dc4c999d252b1cf99a341b3e6e752bd173c0fabf@51.89.195.66:28656,1d9face4d74f4d65142fa966b8cd4bb6cb4e8a37@148.113.9.36:26656,025cdc1186815f3f28567b30a1667130f0f6c863@212.47.234.245:26656,f0944423224746e56e51d8761893d20a1b335a79@172.104.108.55:26656,524d635a8b60111ba5e44ca9bea4948d84b5a937@65.109.154.185:30656,521ee99723e7edd9b9b14ada1ed382a14a82b69a@65.109.106.211:26656,f9a289d71b2325ee87e9a358540e64fe97c3cf36@148.113.143.77:26656,c138c2f5362be412ae93b59dd2f529df773fd1a1@116.202.85.52:26656,b05e9018dbe13d5706a6eba13050890865dbe1c2@135.181.208.166:28656,adb426cf95737cd79650749cddd8c881adeeabca@135.181.44.81:26656,32793227512886818e6c13a928ccfd675c0030c3@51.79.82.138:26656,88f612bd4f3f57e3b4b6d9b5ad2bebe69d57450b@77.246.159.0:26656,497886715ac23475f7428bd177b9fa53ff886a8d@167.235.2.246:43957,1f16fe691763a62f262c0d149fae57e22bd2fb47@65.108.126.21:26656,02778d5301e5054ec0ee213902a2ae6f16d03ac8@45.79.208.135:26656,44deaab1264724b6e98ee3882dc2fe19defe033c@135.181.156.110:26656,f913050241ce5fd49ea3783ed21724ad05db7291@65.109.125.235:26656,d48d615723693de93148dd3ef16bbb000a3022cb@44.232.147.30:26656,7fe9fed5e1e07692c332ea38ff4ef5ad2ee0248c@138.201.121.185:26690,20f95f8b8dd32b94b593dc3e8fcf0b0aeb74b85d@94.237.93.65:26656,aad2aadbe97cca1079d983f213ea90805e9fe765@162.55.145.72:46656,9193e655f0581b4acf2e87976ac0b55795359742@167.235.177.226:26656,78040907fb2391c958ffbb5fb170c0c48499da62@10.10.1.135:26656,7ea40560ffd03cfd1fde044427e3410a2aa7a839@65.21.132.27:26656,abd78601b249e56a0d88d8ea361bae8e36cbf804@103.180.28.92:26656,e538c77720999c6d21a2789aebfbffe6e5464d86@104.244.208.243:18456,7d8eea3d6d60c3e60e51b8f55db37e62dc0ec8b4@51.79.77.103:26656,4fc061477e0e08190137145ca8f6629a2564a347@65.108.244.5:12256,2628d82e90f0b58b823fdbc42a1a1629645e2293@51.89.98.102:55686,7889ee17b291451155190d40426e6154be4e1abc@135.181.142.60:15608,9a4c00c2d3bb30204561dbe7d6cb7d1a7ff9880b@65.108.213.235:26656,33f4d6b3a09e5ee651b49b2f6e0eb3294a3adb86@135.181.133.120:26656,250d5926777e735519813157e444f84212fc8290@5.161.216.102:26656,e29d6dab79b5801029bde71d90ffe5d35c7b7424@185.246.87.48:26656,7e0bdd0459f29183c9ec1e62f31f7b678d639452@69.197.23.33:26656"
sed -i.bak -e  "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.humansd/config/config.toml
```

7. **Set up pruning (optional).**

```
PRUNING="custom"
PRUNING_KEEP_RECENT="100"
PRUNING_INTERVAL="10"

sed -i -e "s/^pruning *=.*/pruning = \"$PRUNING\"/" $HOME/.humansd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \
\"$PRUNING_KEEP_RECENT\"/" $HOME/.humansd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \
\"$PRUNING_INTERVAL\"/" $HOME/.humansd/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/humansd.service > /dev/null <<EOF
[Unit]
Description=Humans Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which humansd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable humansd
systemctl restart humansd
journalctl -u humansd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop humansd
humansd tendermint unsafe-reset-all --home $HOME/.humansd --keep-addr-book
```

2. **Add peers.**

```
PEERS="6d10dcac248d28e8c445841db51f34f9c26442c2@88.217.142.187:29001,81e49a66b928e3a8ba4ce61e959603b1ecd36d96@89.40.71.226:26656,c28ca17b1bad34a3ee5f0fde7568c73b49741479@65.108.108.54:8888,fbfcef080c6c631b03c6bb2832ae608931b1ce41@136.243.55.237:26656,dbf538cdb0f4d5ae4bd90fe2724b95d75b364ce7@138.3.43.147:26656,f7c4bde2eaeab04aff9872d50d5174472b087114@91.194.30.201:26656,37f2636e526869522131c74f098d507000c71aa0@167.235.115.119:26656,aaf071233f5481d50f20cff0bd0a55e6b3aef948@46.4.112.18:26656,dfccfc9156758de072e7287d442a2d3f00770a98@89.39.106.78:26656,91f91757091dab73f39f32f4502f94408fa79ec7@85.10.211.246:26656,2b882f794ed974031b5b435fbf1a755b668d7529@178.23.126.79:26656,f9344349e8435362bc7f21f67b9b61d2f1d6891b@152.32.174.173:26656,8204f0ddbb462749703a58ad6e4e57c5ea5a3379@193.34.212.99:26656,98274e2dcc6b5520c9818a6fdfcf6bde347f1d70@172.0.1.31:26656,a1ad90f3abf8e2875fb8c11f43498a7a8f63c9ad@139.59.6.61:26656,dc4c999d252b1cf99a341b3e6e752bd173c0fabf@51.89.195.66:28656,1d9face4d74f4d65142fa966b8cd4bb6cb4e8a37@148.113.9.36:26656,025cdc1186815f3f28567b30a1667130f0f6c863@212.47.234.245:26656,f0944423224746e56e51d8761893d20a1b335a79@172.104.108.55:26656,524d635a8b60111ba5e44ca9bea4948d84b5a937@65.109.154.185:30656,521ee99723e7edd9b9b14ada1ed382a14a82b69a@65.109.106.211:26656,f9a289d71b2325ee87e9a358540e64fe97c3cf36@148.113.143.77:26656,c138c2f5362be412ae93b59dd2f529df773fd1a1@116.202.85.52:26656,b05e9018dbe13d5706a6eba13050890865dbe1c2@135.181.208.166:28656,adb426cf95737cd79650749cddd8c881adeeabca@135.181.44.81:26656,32793227512886818e6c13a928ccfd675c0030c3@51.79.82.138:26656,88f612bd4f3f57e3b4b6d9b5ad2bebe69d57450b@77.246.159.0:26656,497886715ac23475f7428bd177b9fa53ff886a8d@167.235.2.246:43957,1f16fe691763a62f262c0d149fae57e22bd2fb47@65.108.126.21:26656,02778d5301e5054ec0ee213902a2ae6f16d03ac8@45.79.208.135:26656,44deaab1264724b6e98ee3882dc2fe19defe033c@135.181.156.110:26656,f913050241ce5fd49ea3783ed21724ad05db7291@65.109.125.235:26656,d48d615723693de93148dd3ef16bbb000a3022cb@44.232.147.30:26656,7fe9fed5e1e07692c332ea38ff4ef5ad2ee0248c@138.201.121.185:26690,20f95f8b8dd32b94b593dc3e8fcf0b0aeb74b85d@94.237.93.65:26656,aad2aadbe97cca1079d983f213ea90805e9fe765@162.55.145.72:46656,9193e655f0581b4acf2e87976ac0b55795359742@167.235.177.226:26656,78040907fb2391c958ffbb5fb170c0c48499da62@10.10.1.135:26656,7ea40560ffd03cfd1fde044427e3410a2aa7a839@65.21.132.27:26656,abd78601b249e56a0d88d8ea361bae8e36cbf804@103.180.28.92:26656,e538c77720999c6d21a2789aebfbffe6e5464d86@104.244.208.243:18456,7d8eea3d6d60c3e60e51b8f55db37e62dc0ec8b4@51.79.77.103:26656,4fc061477e0e08190137145ca8f6629a2564a347@65.108.244.5:12256,2628d82e90f0b58b823fdbc42a1a1629645e2293@51.89.98.102:55686,7889ee17b291451155190d40426e6154be4e1abc@135.181.142.60:15608,9a4c00c2d3bb30204561dbe7d6cb7d1a7ff9880b@65.108.213.235:26656,33f4d6b3a09e5ee651b49b2f6e0eb3294a3adb86@135.181.133.120:26656,250d5926777e735519813157e444f84212fc8290@5.161.216.102:26656,e29d6dab79b5801029bde71d90ffe5d35c7b7424@185.246.87.48:26656,7e0bdd0459f29183c9ec1e62f31f7b678d639452@69.197.23.33:26656"
sed -i -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.humansd/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://humans-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.humansd/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart humansd
sudo journalctl -u humansd -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
humansd keys add <key_name>
```

**Recover existing key**

```
humansd keys add <key_name> --recover
```

**List of all keys**

```
humansd keys list
```

## Save chain-id configuration

```
humansd config chain-id humans_1089-1
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
humansd tx bank send <key_name> <destination_address> <amount>uheart --from <key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
humansd tx staking delegate <validator_address> <amount>uheart --from <key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>humansd tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>uheart --from &#x3C;key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>humansd tx staking unbond &#x3C;validator_address> &#x3C;amount>uheart --from &#x3C;key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
humansd tx distribution withdraw-all-rewards --from <key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
humansd tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
humansd tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --gas-prices 20000000000aheart --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://humans-rpc.stakeangle.com/>

**API:** <http://humans-rpc.stakeangle.com:41417/>

**gRPC:** <http://humans-rpc.stakeangle.com:41490/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="210">Source IBC channel</th><th width="208.33333333333331">Destination network</th><th>Humans relayer address</th></tr></thead><tbody><tr><td>channel-4</td><td>Osmosis</td><td>human1cfahxccxwlzgctw69gu5ums2072tx3k5sdmtkw</td></tr></tbody></table>


# LikeCoin

LikeCoin is an application-specific blockchain on decentralized publishing built on Cosmos SDK

## Useful links

**Website:** <https://about.like.co/>

**X:** <https://x.com/likecoin>

**Discord:** <https://discord.gg/W4DQ6peZZZ>

**GitHub:** <http://github.com/likecoin>

**Explorer:** <https://ping.pub/likecoin>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Download latest binary.**

```
wget https://github.com/likecoin/likecoin-chain/releases/download/v4.2.0/likecoin-chain_4.1.1_Linux_x86_64.tar.gz
tar -xvf likecoin-chain_4.2.0_Linux_x86_64.tar.gz
chmod +x bin/liked
mv bin/liked /usr/local/bin/
rm CHANGELOG.md LICENSE README.md likecoin-chain_4.2.0_Linux_x86_64.tar.gz
liked version
```

4. **Initialize your node.**

```
liked init <node_name>
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/likecoin/mainnet/master/genesis.json > ~/.liked/config/genesis.json
```

6. **Add seeds to `config.toml`.**

```
SEEDS="913bd0f4bea4ef512ffba39ab90eae84c1420862@34.82.131.35:26656,e44a2165ac573f84151671b092aa4936ac305e2a@nnkken.dev:26656"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" $HOME/.liked/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"10000nanolike\"/;" ~/.liked/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.liked/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.liked/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.liked/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.liked/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/liked.service > /dev/null <<EOF
[Unit]
Description=LikeCoin Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which liked) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable liked
systemctl restart liked
journalctl -u liked -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 32GB RAM for LikeCoin.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop liked
liked tendermint unsafe-reset-all --home $HOME/.liked --keep-addr-book
```

2. **Add peers.**

```
PEER="313634067e05c62a50e7f6ef921e62df688f2b5a@5.9.121.55:41557"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.liked/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://likecoin-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.liked/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart liked
sudo journalctl -u liked -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
liked keys add <key_name>
```

**Recover existing key**

```
liked keys add <key_name> --recover
```

**List of all keys**

```
liked keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
liked tx bank send <key_name> <destination_address> <amount>nanolike --from <key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
liked tx staking delegate <validator_address> <amount>nanolike --from <key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>liked tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>nanolike --from &#x3C;key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>liked tx staking unbond &#x3C;validator_address> &#x3C;amount>nanolike --from &#x3C;key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
liked tx distribution withdraw-all-rewards --from <key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
liked tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
liked tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id likecoin-mainnet-2 --gas-prices 10000nanolike --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://likecoin-rpc.stakeangle.com/>

**API:** <http://likecoin-rpc.stakeangle.com:41517/>

**gRPC:** <http://likecoin-rpc.stakeangle.com:41590/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="210">Source IBC channel</th><th width="208.33333333333331">Destination network</th><th>LikeCoin relayer address</th></tr></thead><tbody><tr><td>channel-3</td><td>Osmosis</td><td>like14wuwa8p4mz5ryejxu5xzz5svw3pk0ltdcddfh6</td></tr></tbody></table>


# Monad

Monad is a next-generation, Ethereum-compatible chain delivering 10,000 TPS, sub-second finality, low fees, and scalable decentralization. All in one.

## Useful links

**Website:** [**https://www.monad.xyz/**](https://www.monad.xyz/)&#x20;

**X:** [**https://x.com/monad**](https://x.com/monad)

**Discord:** <https://discord.gg/monad>

**GitHub:** <https://github.com/monad-developers>

**Explorer:** <https://monadvision.com/>


# Installation

Quick start guide for installing and configuring a production-ready Monad full node on bare-metal servers.

## **Node Requirements**

**CPU:**

* 16 cores, **4.5+ GHz base clock**\
  (e.g., AMD Ryzen 9950X / 7950X, EPYC 4584PX)

**RAM:**

* **32 GB+**

**Storage:**

* **2 TB NVMe (PCIe Gen4x4)** — TrieDB
* **500 GB NVMe (PCIe Gen4x4)** — MonadBFT + OS

**Bandwidth:**

* **Validators:** 300 Mbit/s
* **Full Nodes:** 100 Mbit/s

**SSD Reliability Notes:**

* **Recommended:** Samsung 980/990 Pro, Samsung PM9A1
* **Acceptable:** Micron 7450 (occasional slowdowns)
* **Avoid:** Nextorage SSDs — can freeze under load

***

1. ### **Update packages and install useful tools.**

```bash
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw curl nvme-cli aria2 jq --yes
```

***

2. ### **Install Monad Debian Package.**

```bash
cat <<EOF > /etc/apt/sources.list.d/category-labs.sources
Types: deb
URIs: https://pkg.category.xyz/
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/category-labs.gpg
EOF

curl -fsSL https://pkg.category.xyz/keys/public-key.asc \
  | gpg --dearmor --yes -o /etc/apt/keyrings/category-labs.gpg
```

***

3. ### **Install the `monad` package.**

```bash
apt install -y monad=0.14.5
apt-mark hold monad
```

***

4. ### **Create the `monad` User and Directories.**

```bash
useradd -m -s /bin/bash monad

mkdir -p /home/monad/monad-bft/config \
         /home/monad/monad-bft/ledger \
         /home/monad/monad-bft/config/forkpoint \
         /home/monad/monad-bft/config/validators
```

***

5. ### **Configure TrieDB NVMe Device**

   > Use a **dedicated NVMe** with no filesystem / RAID on it.

```bash
TRIEDB_DRIVE=/dev/nvme1n1   # CHANGE THIS TO YOUR DEVICE
```

Create GPT and a full-disk partition:

```bash
parted $TRIEDB_DRIVE mklabel gpt
parted $TRIEDB_DRIVE mkpart triedb 0% 100%
```

Create a udev rule and `/dev/triedb` symlink:

```bash
PARTUUID=$(lsblk -o PARTUUID $TRIEDB_DRIVE | tail -n 1)
echo "Disk PartUUID: ${PARTUUID}"

echo "ENV{ID_PART_ENTRY_UUID}==\"$PARTUUID\", MODE=\"0666\", SYMLINK+=\"triedb\"" \
  | tee /etc/udev/rules.d/99-triedb.rules

udevadm trigger
udevadm control --reload
udevadm settle
ls -l /dev/triedb
```

***

6. ### **Ensure 512-byte LBA.**

Check active LBA format:

```bash
nvme id-ns -H $TRIEDB_DRIVE | grep 'LBA Format' | grep 'in use'
```

Expected: `Data Size: 512 bytes ... (in use)`.\
If not, switch to 512-byte LBA:

```bash
nvme format --lbaf=0 $TRIEDB_DRIVE
nvme id-ns -H $TRIEDB_DRIVE | grep 'LBA Format' | grep 'in use'
```

***

7. ### **Initialize TrieDB (monad-mpt).**

```bash
systemctl start monad-mpt
journalctl -u monad-mpt -n 14 -o cat
```

You should see output showing the MPT database on `/dev/nvme…` and `monad-mpt.service: Deactivated successfully.`

***

8. ### **Firewall Configuration.**

Open SSH and P2P port **8000** (TCP+UDP):

```bash
ufw allow ssh
ufw allow 8000
ufw enable
ufw status
```

Recommended extra protection against spammy small UDP packets:

```bash
iptables -I INPUT -p udp --dport 8000 -m length --length 0:1400 -j DROP
```

Remember: iptables rules are lost after reboot unless you persist them (e.g. `iptables-persistent`).

To make the mitigation rule permanent under UFW, modify **before.rules**.

1. Open the UFW pre-rules file:

```bash
nano /etc/ufw/before.rules
```

2. Just **below this line**:

```
# End required lines
```

add:

```
# Drop tiny UDP packets to mitigate raptorcast flooding
-A ufw-before-input -p udp --dport 8000 -m length --length 0:1400 -j DROP
```

3. Reload UFW:

```bash
ufw reload
```

4. Verify that the rule is active:

```bash
sudo iptables -S ufw-before-input | grep 8000
```

**Expected output:**

```
-A ufw-before-input -p udp -m udp --dport 8000 -m length --length 0:1400 -j DROP
```

This ensures the anti-spam rule survives reboots and operates consistently.

***

9. ### **Install and Configure OTEL Collector (optional but recommended).**

```bash
OTEL_VERSION="0.139.0"
OTEL_PACKAGE="https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v${OTEL_VERSION}/otelcol_${OTEL_VERSION}_linux_amd64.deb"

curl -fsSL "$OTEL_PACKAGE" -o /tmp/otelcol_linux_amd64.deb
dpkg -i /tmp/otelcol_linux_amd64.deb

cp /opt/monad/scripts/otel-config.yaml /etc/otelcol/config.yaml
systemctl restart otelcolcat
```

Monad metrics will be exposed at `http://0.0.0.0:8889/metrics`.

***

10. ### **Fetch Monad Config Files.**

```bash
MF_BUCKET=https://bucket.monadinfra.com

curl -o /home/monad/.env \
  $MF_BUCKET/config/mainnet/latest/.env.example

curl -o /home/monad/monad-bft/config/node.toml \
  $MF_BUCKET/config/mainnet/latest/full-node-node.toml
```

***

11. ### **Set Keystore Password.**

Generate a strong random password and store it in `.env`:

```bash
sed -i "s|^KEYSTORE_PASSWORD=$|KEYSTORE_PASSWORD='$(openssl rand -base64 32)'|" /home/monad/.env
source /home/monad/.env

mkdir -p /opt/monad/backup/
echo "Keystore password: ${KEYSTORE_PASSWORD}" > /opt/monad/backup/keystore-password-backup
```

***

12. ### **Generate Keystores (SECP + BLS).**

```bash
bash <<'EOF'
set -e

source /home/monad/.env

if [[ -z "$KEYSTORE_PASSWORD" || \
      -f /home/monad/monad-bft/config/id-secp || \
      -f /home/monad/monad-bft/config/id-bls ]]; then
  echo "Skipping: missing KEYSTORE_PASSWORD or keys already exist."
  exit 1
fi

monad-keystore create \
  --key-type secp \
  --keystore-path /home/monad/monad-bft/config/id-secp \
  --password "${KEYSTORE_PASSWORD}" > /opt/monad/backup/secp-backup

monad-keystore create \
  --key-type bls \
  --keystore-path /home/monad/monad-bft/config/id-bls \
  --password "${KEYSTORE_PASSWORD}" > /opt/monad/backup/bls-backup

grep "public key" /opt/monad/backup/secp-backup /opt/monad/backup/bls-backup \
  | tee /home/monad/pubkey-secp-bls

echo "Success: New keystores generated"
EOF
```

Back up off-node:

* `/opt/monad/backup/secp-backup`
* `/opt/monad/backup/bls-backup` [docs.monad.xyz](https://docs.monad.xyz/node-ops/full-node-installation)

***

13. ### **Update `node.toml` for a Public Full Node.**

Edit:

```bash
nano /home/monad/monad-bft/config/node.toml
```

Key fields:

```toml
# Block rewards recipient (burn address for public full node)
beneficiary = "0x0000000000000000000000000000000000000000"

# Unique name for your node / provider
node_name = "full_<PROVIDER>-<SUFFIX>"

[fullnode_raptorcast]
enable_client = true

[statesync]
expand_to_group = true

[blocksync_override]
# keep peers empty for public full nodes
```

***

14. ### Node Signature Record (Peer Discovery).

Sign your node’s name record with the SECP key:

```bash
source /home/monad/.env

monad-sign-name-record \
  --address $(curl -s4 ifconfig.me):8000 \
  --keystore-path /home/monad/monad-bft/config/id-secp \
  --password "${KEYSTORE_PASSWORD}" \
  --self-record-seq-num 0
```

The command prints `self_address`, `self_record_seq_num` and `self_name_record_sig`.\
Put them into the `peer_discovery` section of `node.toml`, for example:

```toml
self_address = "12.34.56.78:8000"
self_record_seq_num = 0
self_name_record_sig = "<LONG_HEX_SIGNATURE>"
```

15. ### Enable Remote Config Fetching (recommended).

In `/home/monad/.env` you can let the node auto-fetch the latest `validators.toml` and `forkpoint.toml` on startup:

```bash
cat >> /home/monad/.env << 'EOF'
REMOTE_VALIDATORS_URL='https://bucket.monadinfra.com/validators/mainnet/validators.toml'
REMOTE_FORKPOINT_URL='https://bucket.monadinfra.com/forkpoint/mainnet/forkpoint.toml'
EOF
```

***

16. ### **Optional: Enable Call Traces (Archive / RPC Nodes).**

For archive / RPC workloads add `--trace_calls` to the `monad-execution` service:

```bash
systemctl edit monad-execution
```

Drop-in override:

```ini
[Service]
Type=simple
ExecStart=
ExecStart=/usr/local/bin/monad \
    ... \
    --trace_calls \
    ...
```

***

17. ### **Optional: Tune Monad Cruft Retention.**

To control how long artifacts are kept (minutes), append to `/home/monad/.env`:

```bash
cat >> /home/monad/.env << 'EOF'
RETENTION_LEDGER=600      # default 10h
RETENTION_WAL=300         # default 5h
RETENTION_FORKPOINT=300   # default 5h
RETENTION_VALIDATORS=43200 # default 30d
EOF
```

`monad-cruft` runs hourly and will pick up changes automatically.

***

18. ### Start the Full Node.

Fix ownership:

```bash
chown -R monad:monad /home/monad/
```

Enable services at boot:

```bash
systemctl enable monad-bft monad-execution monad-rpc
```

Before first start, follow the [**Hard Reset Guide**](https://services.stakeangle.com/mainnets/monad/hard-reset-guide) to seed the node with a recent database.

Start services:

```bash
systemctl start monad-bft monad-execution monad-rpc
```

Check status and logs:

```bash
systemctl status monad-bft monad-execution monad-rpc
journalctl -u monad-bft -fo cat
journalctl -u monad-execution -fo cat
```


# Hard Reset Guide

Reset your node to a clean state using the latest chain snapshot for fast recovery and resync.

A **hard reset** wipes all local node data and restores the most recent network snapshot.\
This is the fastest and most reliable way to recover a degraded, stuck, or outdated node.

After a hard reset:

1. A fresh snapshot is downloaded.
2. The TrieDB database is rebuilt (1–5 minutes on mainnet).
3. The node catches up using statesync and blocksync (2–5 minutes for a recent snapshot).

### 1. Prerequisites

Ensure `aria2` is installed:

```bash
apt install -y aria2
```

***

### 2. Stop Services & Reset Workspace

SSH into the server as **root** and run:

```bash
bash /opt/monad/scripts/reset-workspace.sh
```

This clears:

* Ledger data
* Forkpoint history
* Validator sets
* TrieDB state
* Runtime artifacts

***

### 3. Download & Import the Latest TrieDB Snapshot

Choose **one provider** (Monad Foundation or Category Labs).

#### **Monad Foundation snapshot:**

```bash
MF_BUCKET=https://bucket.monadinfra.com
curl -sSL $MF_BUCKET/scripts/mainnet/restore-from-snapshot.sh | bash
```

#### **Category Labs snapshot:**

```bash
CL_BUCKET=https://pub-b0d0d7272c994851b4c8af22a766f571.r2.dev
curl -sSL $CL_BUCKET/scripts/mainnet/restore_from_snapshot.sh | bash
```

***

### 4. Fetch Latest Forkpoint & Validators Files

*(Skip if your node already uses automatic remote config fetching via REMOTE\_VALIDATORS\_URL and REMOTE\_FORKPOINT\_URL.)*

#### Manual fetch:

```bash
MF_BUCKET=https://bucket.monadinfra.com
VALIDATORS_FILE=/home/monad/monad-bft/config/validators/validators.toml

curl -sSL $MF_BUCKET/scripts/mainnet/download-forkpoint.sh | bash
curl $MF_BUCKET/validators/mainnet/validators.toml -o $VALIDATORS_FILE
chown monad:monad $VALIDATORS_FILE
```

***

### 5. Start All Monad Services

```bash
systemctl start monad-bft monad-execution monad-rpc
```

Check logs to confirm syncing:

```bash
journalctl -u monad-bft -f
journalctl -u monad-execution -f
```

When statesync completes, the node will automatically switch to blocksync and reach chain tip.


# MONAD MONITOR by StakeAngle

A clean real-time dashboard showing the essential operational metrics of the Monad blockchain.\
Available at: [**https://monad-monitor.stakeangle.com/**](https://monad-monitor.stakeangle.com/)

### **🔹 Core Metrics**

* **Block Height** — current finalized block.
* **Average Block Time** — moving average block interval.
* **Active Validators** — unique validators seen in the last 10k blocks.
* **Gas Price** — current gas price in Gwei.

***

### **🔹 Network Performance**

* **Network TPS** — live transactions per second.
* **Epoch Progress** — current slot and % of epoch completed.
* **Block Fullness** — gas usage as % of block limit.
* **Block Fees (MON)** — fees collected in the latest block.

***

### **🔹 Epoch Summary**

* **Proposed Blocks**
* **Finalized Blocks**
* **Total Transactions**
* **Total Fees (MON)**

(Shows overall activity and throughput for the active epoch.)

***

### **🔹 Recent Blocks Table (Last 50)**

Each row displays:

* Block number
* Age
* Validator
* Tx count
* Gas used
* Fullness

Ideal for monitoring validator activity and execution patterns.


# OmniFlix

Decentralized media and network layer for Creators & Sovereign Communities powered by NFTs and related distribution protocols

## Useful links

**Website:** <https://omniflix.network/>

**X:** <https://x.com/FLIXdotFUN>

**Discord:** <https://discord.gg/yMKW7GBsc8>

**GitHub:** <https://github.com/OmniFlix>

**Explorer:** <https://ping.pub/omniflixhub>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/OmniFlix/omniflixhub
cd omniflixhub
git checkout v5.0.1
make install
omniflixhubd version
```

4. **Initialize your node.**

```
omniflixhubd config chain-id omniflixhub-1
omniflixhubd init <node_name> --chain-id omniflixhub-1
```

5. **Download genesis.**

```
curl https://raw.githubusercontent.com/OmniFlix/mainnet/main/omniflixhub-1/genesis.json > $HOME/.omniflixhub/config/genesis.json
```

6. **Add seeds to `config.toml`.**

```
SEEDS="9d75a06ebd3732a041df459849c21b87b2c55cde@35.187.240.195:26656,19feae28207474eb9f168fff9720fd4d418df1ed@35.240.196.102:26656"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" $HOME/.omniflixhub/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001uflix\"/;" ~/.omniflixhub/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.omniflixhub/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.omniflixhub/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.omniflixhub/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.omniflixhub/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/omniflixhubd.service > /dev/null <<EOF
[Unit]
Description=OmniFlix Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which omniflixhubd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable omniflixhubd
systemctl restart omniflixhubd
journalctl -u omniflixhubd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop omniflixhubd
omniflixhubd tendermint unsafe-reset-all --home $HOME/.omniflixhub --keep-addr-book
```

2. **Add peers.**

```
PEER="08dcbbeb12992b599d045c87f0f61ef3c5bbd135@195.201.164.215:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.omniflixhub/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://omniflix-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.omniflixhub/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart omniflixhubd
sudo journalctl -u omniflixhubd -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
omniflixhubd keys add <key_name>
```

**Recover existing key**

```
omniflixhubd keys add <key_name> --recover
```

**List of all keys**

```
omniflixhubd keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
omniflixhubd tx bank send <key_name> <destination_address> <amount>uflix --from <key_name> --chain-id omniflixhub-1 --gas-prices 0.001uflix --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
omniflixhubd tx staking delegate <validator_address> <amount>uflix --from <key_name> --chain-id omniflixhub-1 --gas-prices 0.001uflix --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>omniflixhubd tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>uflix --from &#x3C;key_name> --chain-id omniflixhub-1 --gas-prices 0.001uflix --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>omniflixhubd tx staking unbond &#x3C;validator_address> &#x3C;amount>uflix --from &#x3C;key_name> --chain-id omniflixhub-1 --gas-prices 0.001uflix --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
omniflixhubd tx distribution withdraw-all-rewards --from <key_name> --chain-id omniflixhub-1 --gas-prices 0.001uflix --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
omniflixhubd tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id omniflixhub-1 --gas-prices 0.001 uflix --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
omniflixhubd tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id omniflixhub-1 --gas-prices 0.001 uflix --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://omniflix-rpc.stakeangle.com/>

**API:** <http://omniflix-rpc.stakeangle.com:41717/>

**gRPC:** <http://omniflix-rpc.stakeangle.com:41790/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="215">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>OmniFlix relayer address</th></tr></thead><tbody><tr><td>channel-1</td><td>Osmosis</td><td>omniflix1weu6zy6rg0y3jfcxgq9tuweppz7k5lfjdm8plc</td></tr><tr><td>channel-8</td><td>Stargaze</td><td>omniflix1weu6zy6rg0y3jfcxgq9tuweppz7k5lfjdm8plc</td></tr><tr><td>channel-14</td><td>Gravity Bridge</td><td>omniflix1weu6zy6rg0y3jfcxgq9tuweppz7k5lfjdm8plc</td></tr></tbody></table>


# Provenance

Provenance Blockchain is the leading public Layer 1 for real world assets

## Useful links

**Website:** <https://provenance.io/>

**X:** <https://x.com/provenancefdn>

**Discord:** <https://discord.gg/kNZC8nwCFP>

**GitHub:** [https://github.com/provenance-io](https://github.com/provenance-io/provenance)

**Explorer:** <https://ping.pub/provenance>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes

apt-get update
sudo apt-get install libsnappy-dev libleveldb-dev --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version

snap refresh go --channel="1.23/stable"
```

3. **Build the binary from source.**

```
git clone https://github.com/provenance-io/provenance
cd provenance
git checkout v1.27.2
make clean
make install
provenanced version
```

4. **Initialize your node.**

```
provenanced init <node_name> --chain-id pio-mainnet-1
```

5. **Download genesis and addrbook, set up gas prices.**

```
sed -i -e 's/namespace = "cometbft"/namespace = "provenance"/' $HOME/.provenanced/config/config.toml
wget -O $HOME/.provenanced/config/genesis.json https://server-5.itrocket.net/mainnet/provenance/genesis.json
wget -O $HOME/.provenanced/config/addrbook.json  https://server-5.itrocket.net/mainnet/provenance/addrbook.json
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "1nhash"|g' $HOME/.provenanced/config/app.toml
```

6. **Add seed and persistent peers to `config.toml`.**

```
SEEDS="a280ec7a1b563cb71510723b860ed37d40494308@provenance-mainnet-seed.itrocket.net:57656"
PEERS="b75bb5d0c033b5a8ca24df607a757d09e4f99acd@provenance-mainnet-peer.itrocket.net:57656,7ada869ec50e679bd25f9c79caeaefc4b3ca6143@65.109.92.235:28656,16beca361bac8ab810e5087f2cb0b603320de41b@20.245.92.25:26656,768cef4673e00f92e9dde27ad0cc7374e3330b51@168.119.139.86:36696,93b2dbf54d15b838c6248e9973e2c8ee6594aed0@104.196.147.17:26656,a5a160c50ba3b8e276c6fbe2815d0be3347c2394@20.237.232.187:26656,8ae3188028f5185e0b3d3c96a761ab675399b3de@65.108.126.46:46656,9815d8b96f7c7855d995b6464dc0a397336a65db@65.109.104.118:46656,6241ee5049662bde4f45d5cb797f5f19464cb471@35.214.211.106:26656,be7ab5890f83062fe276b99dd6430bf0a8618230@65.108.230.113:20006,a56592e9903ed9eff6557af0bdd930d60b35d0fb@65.108.71.166:42656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.provenanced/config/config.toml
```

7. **Set up pruning (optional).**

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.provenanced/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.provenanced/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.provenanced/config/app.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.provenanced/config/config.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/provenanced.service > /dev/null <<EOF
[Unit]
Description=Provenance Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which provenanced) start --home /root/.provenanced
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable provenanced
systemctl restart provenanced
journalctl -u provenanced -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
provenanced keys add <key_name>
```

**Recover existing key**

```
provenanced keys add <key_name> --recover
```

**List of all keys**

```
provenanced keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
provenanced tx bank send <key_name> <destination_address> <amount>nhash --from <key_name> --chain-id pio-mainnet-1 --gas auto -y --gas-prices 1nhash
```

**Delegate tokens to `validator_address`**

```
provenanced tx staking delegate <validator_address> <amount>nhash --from <key_name> --chain-id pio-mainnet-1 --gas auto -y  --gas-prices 1nhash
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>provenanced tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>nhash --from &#x3C;key_name> --chain-id pio-mainnet-1 --gas auto -y  --gas-prices 1nhash
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>provenanced tx staking unbond &#x3C;validator_address> &#x3C;amount>nhash --from &#x3C;key_name> --chain-id pio-mainnet-1 --gas auto -y --gas-prices 1nhash
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
provenanced tx distribution withdraw-all-rewards --from <key_name> --chain-id pio-mainnet-1 --gas auto -y --gas-prices 1nhash
```

**Withdraw commission and rewards from your validator**

```
provenanced tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --chain-id pio-mainnet-1 --gas auto -y --gas-prices 1nhash
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
provenanced tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id pio-mainnet-1 --gas auto -y --gas-prices 1nhash
```


# Source Protocol

Enterprise Grade DeFi-as-a-Service for Businesses, Institutions and Governments

## Useful links

**Website:** <https://www.sourceprotocol.io/>

**X:** <https://x.com/sourceprotocol_>

**Discord:** <https://discord.gg/zj8xxUCeZQ>

**GitHub:** <https://github.com/Source-Protocol-Cosmos>

**Explorer:** <https://ping.pub/source>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/Source-Protocol-Cosmos/source.git
cd source
git checkout v3.0.0
make install
sourced version
```

4. **Initialize your node.**

```
sourced init <node_name> --chain-id=source-1
```

5. **Download genesis.**

```
curl -s  https://raw.githubusercontent.com/Source-Protocol-Cosmos/mainnet/master/source-1/genesis.json > ~/.source/config/genesis.json
```

6. **Add persistent peers to `config.toml`.**

```
PEERS="96d63849a529a15f037a28c276ea6e3ac2449695@34.222.1.252:26656,0107ac60e43f3b3d395fea706cb54877a3241d21@35.87.85.162:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.source/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.25usource\"/;" $HOME/.source/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.source/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.source/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.source/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.source/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/sourced.service > /dev/null <<EOF
[Unit]
Description=Source Protocol Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which sourced) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable sourced
systemctl restart sourced
journalctl -u sourced -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop sourced
sourced tendermint unsafe-reset-all --home $HOME/.source
```

2. **Add peers.**

```
PEERS="ace839c852739d1ea6e3675d30380fe085c1c23a@52.26.226.21:26656,8145d4d13511e7f89dbd257f51ed5d076941f12f@164.92.98.12:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.source/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://source-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.source/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart sourced
sudo journalctl -u sourced -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
sourced keys add <key_name>
```

**Recover existing key**

```
sourced keys add <key_name> --recover
```

**List of all keys**

```
sourced keys list
```

## Save chain-id configuration

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

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
sourced tx bank send <key_name> <destination_address> <amount>usource --from <key_name>  --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
sourced tx staking delegate <validator_address> <amount>usource --from <key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>sourced tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>usource --from &#x3C;key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>sourced tx staking unbond &#x3C;validator_address> &#x3C;amount>usource --from &#x3C;key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
sourced tx distribution withdraw-all-rewards --from <key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
sourced tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
sourced  tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --gas-prices 0.25usource --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://source-rpc.stakeangle.com/>

**API:** <http://source-rpc.stakeangle.com:1317/>

**gRPC:** <http://source-rpc.stakeangle.com:9090/>


# Pylons

Pylons is the connective tissue for a hyphenated, multi-venue digital world. Whether it's in-game items or NFTs, we're building intuitive tools to develop, buy, trade, and sell digital assets.

## Useful links

**Website:** <https://www.pylons.tech/>

**X:** <https://x.com/pylonstech>

**Discord:** <https://discord.com/invite/pylons>

**GitHub:** <https://github.com/Pylons-tech>

**Explorer:** <https://pylons.explorers.guru/>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/Pylons-tech/pylons
cd pylons
git checkout v1.1.4
make install
pylonsd version
```

4. **Initialize your node.**

```
pylonsd init <node_name> --chain-id=pylons-mainnet-1
```

5. **Download genesis.**

```
 curl -s  https://raw.githubusercontent.com/Pylons-tech/pylons/main/networks/pylons-mainnet-1/genesis.json > ~/.pylons/config/genesis.json
```

6. **Add persistent peers to `config.toml`.**

```
PEERS="2c50b8171af784f1dca3d37d5dda5e90f1e1add8@95.214.55.4:26656,4f90babf520599ffe606157b0151c4c9bc0ec23f@194.163.172.115:26666,ebecc93e7865036fbdf8d3d54a624941d6e41ba1@104.200.136.57:26656,25e7ef64b41a636e3fb4e9bb1191b785e7d1d5cc@46.166.140.172:26656,2c50b8171af784f1dca3d37d5dda5e90f1e1add8@95.214.55.4:26656,4f90babf520599ffe606157b0151c4c9bc0ec23f@194.163.172.115:26666,ebecc93e7865036fbdf8d3d54a624941d6e41ba1@104.200.136.57:26656,022ee5a5231a5dec014841394f8ce766d657cff5@95.214.53.132:26156,a6972be573807d34f28a337c0f7d599e0014be80@161.97.99.247:26656,515ffd755a92a47b56233143f7c25481dbe99f94@161.97.99.251:26606,9c3261f7859a4f43a72cb9eef8d1fcfc70dc7e7c@95.216.204.255:26656,f6a9cc00142a4ce2fc1cbe536ba7ac9701f0786f@62.113.119.213:11221,665a747edcb6c68d3fe317053bd2cbcae1ef0843@138.201.246.185:26656,6144bf581d89212bf294de31e66f94d628f09053@65.109.92.235:37656,cbad56deb74e1349e5ed8d00cd1338c675d71075@167.86.75.50:26656,84350ef836590a08e273253f1056eb7175f536a4@167.235.2.206:26616,71b2ccc335a2ed88854444d23c2f2e2fd343c7e9@65.109.52.156:9656,85e236a129337efe946c6a68ee72a6da87825bc5@65.109.92.240:20256,3336e645081fcddb72917c017ae232fa6b7c8cf4@84.46.248.174:26656,e55c36e7ce120599701b14532c864bec57d4477b@161.97.132.66:26656,d977d11f5741d8e9be84faa390af55de43659f0c@95.217.225.214:28656,d0769a0e7fa1fc86baa0b2b9e9c6d9f7ba2dd2b6@46.4.23.108:36656,5eb3daf435d1d8a14e0a42e9dfbeca6877b2d1ca@65.108.2.41:46656,90e9144c74d83f966fbbda20c070a28d3d6e48a2@65.108.135.211:46656,7b6b13bcbd30311a407e193d0c7b21ed3dc15cd1@pylons.nodejumper.io:30656,,d6685eb44553000f5e7abfd560a7c70b534dcc25@65.108.199.222:21116,f8f74d840f40168111353927e91f475a262d20ad@65.21.142.30:27656,98634f7f77334b0df7b9c4d16d41b31ace4ceaa8@81.16.237.142:11223,d71cb7a9cc84e3c06ce2dc90f340d21ae53390ff@54.37.129.164:46656,35c6b3b3f273e845da511751d98b54ca3fd56170@65.109.49.163:26651,574a9497ef09f0364a7623ca45d7a5a067f4bc40@64.227.144.199:26656,2a21d71e5e16222fa08454634cad5db30d56dfa9@192.248.159.61:26656,1233d3696f3fbfb44edfaf72640bb91d085f3dae@65.109.34.133:61356,0d876a9311613a716a65f588c86c87f47e321945@pylons.sergo.dev:12213,32cf1fa54cb6762ea2713d93bd76c47ad3323d1c@88.99.243.241:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.pylons/config/config.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.pylons/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.pylons/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.pylons/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.pylons/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/pylonsd.service > /dev/null <<EOF
[Unit]
Description=Pylons Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which pylonsd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable pylonsd
systemctl restart pylonsd
    journalctl -u pylonsd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop pylonsd
pylonsd tendermint unsafe-reset-all --home $HOME/.pylons
```

2. **Add peers.**

```
PEERS="2c50b8171af784f1dca3d37d5dda5e90f1e1add8@95.214.55.4:26656,4f90babf520599ffe606157b0151c4c9bc0ec23f@194.163.172.115:26666,ebecc93e7865036fbdf8d3d54a624941d6e41ba1@104.200.136.57:26656,25e7ef64b41a636e3fb4e9bb1191b785e7d1d5cc@46.166.140.172:26656,2c50b8171af784f1dca3d37d5dda5e90f1e1add8@95.214.55.4:26656,4f90babf520599ffe606157b0151c4c9bc0ec23f@194.163.172.115:26666,ebecc93e7865036fbdf8d3d54a624941d6e41ba1@104.200.136.57:26656,022ee5a5231a5dec014841394f8ce766d657cff5@95.214.53.132:26156,a6972be573807d34f28a337c0f7d599e0014be80@161.97.99.247:26656,515ffd755a92a47b56233143f7c25481dbe99f94@161.97.99.251:26606,9c3261f7859a4f43a72cb9eef8d1fcfc70dc7e7c@95.216.204.255:26656,f6a9cc00142a4ce2fc1cbe536ba7ac9701f0786f@62.113.119.213:11221,665a747edcb6c68d3fe317053bd2cbcae1ef0843@138.201.246.185:26656,6144bf581d89212bf294de31e66f94d628f09053@65.109.92.235:37656,cbad56deb74e1349e5ed8d00cd1338c675d71075@167.86.75.50:26656,84350ef836590a08e273253f1056eb7175f536a4@167.235.2.206:26616,71b2ccc335a2ed88854444d23c2f2e2fd343c7e9@65.109.52.156:9656,85e236a129337efe946c6a68ee72a6da87825bc5@65.109.92.240:20256,3336e645081fcddb72917c017ae232fa6b7c8cf4@84.46.248.174:26656,e55c36e7ce120599701b14532c864bec57d4477b@161.97.132.66:26656,d977d11f5741d8e9be84faa390af55de43659f0c@95.217.225.214:28656,d0769a0e7fa1fc86baa0b2b9e9c6d9f7ba2dd2b6@46.4.23.108:36656,5eb3daf435d1d8a14e0a42e9dfbeca6877b2d1ca@65.108.2.41:46656,90e9144c74d83f966fbbda20c070a28d3d6e48a2@65.108.135.211:46656,7b6b13bcbd30311a407e193d0c7b21ed3dc15cd1@pylons.nodejumper.io:30656,,d6685eb44553000f5e7abfd560a7c70b534dcc25@65.108.199.222:21116,f8f74d840f40168111353927e91f475a262d20ad@65.21.142.30:27656,98634f7f77334b0df7b9c4d16d41b31ace4ceaa8@81.16.237.142:11223,d71cb7a9cc84e3c06ce2dc90f340d21ae53390ff@54.37.129.164:46656,35c6b3b3f273e845da511751d98b54ca3fd56170@65.109.49.163:26651,574a9497ef09f0364a7623ca45d7a5a067f4bc40@64.227.144.199:26656,2a21d71e5e16222fa08454634cad5db30d56dfa9@192.248.159.61:26656,1233d3696f3fbfb44edfaf72640bb91d085f3dae@65.109.34.133:61356,0d876a9311613a716a65f588c86c87f47e321945@pylons.sergo.dev:12213,32cf1fa54cb6762ea2713d93bd76c47ad3323d1c@88.99.243.241:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.pylons/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://pylons-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 1500))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.pylons/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart pylonsd
sudo journalctl -u pylonsd -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
pylonsd keys add <key_name>
```

**Recover existing key**

```
pylonsd keys add <key_name> --recover
```

**List of all keys**

```
pylonsd keys list
```

## Save chain-id configuration

```
pylonsd config chain-id pylons-mainnet-1
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
pylonsd tx bank send <key_name> <destination_address> <amount>ubedrock --from <key_name> --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
pylonsd tx staking delegate <validator_address> <amount>ubedrock --from <key_name> --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>pylonsd tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>ubedrock --from &#x3C;key_name> --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>pylonsd tx staking unbond &#x3C;validator_address> &#x3C;amount>ubedrock --from &#x3C;key_name> --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
pylonsd tx distribution withdraw-all-rewards --from <key_name> --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
pylonsd tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
pylonsd tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://pylons-rpc.stakeangle.com/>

**API:** <http://pylons-rpc.stakeangle.com:41517/>

**gRPC:** <http://pylons-rpc.stakeangle.com:41590/>


# Stargaze

A community-owned app chain for NFTs and beyond

## Useful links

**Website:** <https://www.stargaze.zone/>

**X:** <https://x.com/stargazezone>

**Discord:** <https://discord.gg/stargaze>

**GitHub:** <https://github.com/public-awesome>

**Explorer:** <https://www.mintscan.io/stargaze>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

<pre><code>git clone https://github.com/public-awesome/stargaze
<strong>cd stargaze
</strong>git checkout v18.0.0
make install
starsd version
</code></pre>

4. **Initialize your node.**

```
starsd config chain-id stargaze-1
starsd init <node_name> --chain-id stargaze-1
```

5. **Download genesis.**

```
curl -s  https://raw.githubusercontent.com/public-awesome/mainnet/main/stargaze-1/genesis.tar.gz > genesis.tar.gz
tar -C ~/.starsd/config/ -xvf genesis.tar.gz
rm genesis.tar.gz
```

6. **Add seeds and persistent peers to `config.toml`.**

```
SEEDS="d5fc4f479c4e212c96dff5704bb2468ea03b8ae3@sg-seed.blockpane.com:26656,babc3f3f7804933265ec9c40ad94f4da8e9e0017@stargaze.seed.rhinostake.com:16656,70ed826888f102c7c1ceb4d07287956628a53508@174.138.124.7:36656,722079345d941cd2da3daedea548c909d9b83ec5@104.248.101.113:36656"
PEERS="1d73521c565b37a53038fc730bcd207a3db361b6@144.91.91.30:26656,524dd60331c56d198deabbb70238c2cc69119cca@161.97.122.216:36656,0c9ebd7b36f96d0279dbf6dc38572f5797c096c1@65.108.42.168:26656,320e4b81ab327dd2593a39de0d3ae718fdb9347c@176.9.168.220:26656,b8eeb6d99594c218c0373d8ec4c1e81031b92198@68.183.92.46:26656,387c32677c54dd4627366ffdf8e2dda68e71af69@54.193.168.147:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.starsd/config/config.toml
```

7. #### Set up minimum gas price.

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"1ustars\"/;" ~/.starsd/config/app.toml
```

8. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.starsd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.starsd/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.starsd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.starsd/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/starsd.service > /dev/null <<EOF
[Unit]
Description=Stargaze Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which starsd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable starsd
systemctl restart starsd
journalctl -u starsd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}


# State Sync

{% hint style="info" %}
State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.
{% endhint %}

{% hint style="info" %}
Some networks which use `wasm` may not yet support `wasm` folder transfers with State Sync. In this case you may need to download `wasm` folder separately.
{% endhint %}

{% hint style="info" %}
Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.
{% endhint %}

1. **Stop existing service and reset database.**

```
sudo systemctl stop starsd
starsd tendermint unsafe-reset-all --home $HOME/.starsd --keep-addr-book
```

2. **Add peers.**

```
PEER="1d73521c565b37a53038fc730bcd207a3db361b6@144.91.91.30:26656,524dd60331c56d198deabbb70238c2cc69119cca@161.97.122.216:36656,0c9ebd7b36f96d0279dbf6dc38572f5797c096c1@65.108.42.168:26656,320e4b81ab327dd2593a39de0d3ae718fdb9347c@176.9.168.220:26656,b8eeb6d99594c218c0373d8ec4c1e81031b92198@68.183.92.46:26656,387c32677c54dd4627366ffdf8e2dda68e71af69@54.193.168.147:26656,5e8eccab6b376be84eab7a017a112ca244e38ea2@5.9.121.55:41356"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.starsd/config/config.toml
```

3. **Fill variables with data for State Sync.**

```
RPC="https://stargaze-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
```

4. **Add variable values to config.toml.**

```
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.starsd/config/config.toml
```

5. **Start service and check journal.**

```
sudo systemctl restart starsd
sudo journalctl -u starsd -f -o cat
```

{% hint style="info" %}
State Sync typically takes up to 10 minutes.&#x20;
{% endhint %}


# Useful Commands

## Key management

**Add new key**

```
starsd keys add <key_name>
```

**Recover existing key**

```
starsd keys add <key_name> --recover
```

**List of all keys**

```
starsd keys list
```

## Tokens and Staking

**Send tokens from `key_name` to `destination_address`**

```
starsd tx bank send <key_name> <destination_address> <amount>ustars --from <key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y 
```

**Delegate tokens to `validator_address`**

```
starsd tx staking delegate <validator_address> <amount>ustars --from <key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y 
```

**Redelegate tokens from `validator_address` to `new_validator_address`**

<pre><code><strong>starsd tx staking redelegate &#x3C;validator_address> &#x3C;new_validator_address> &#x3C;amount>ustars --from &#x3C;key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y 
</strong></code></pre>

**Unbond tokens from `validator_address`**

<pre><code><strong>starsd tx staking unbond &#x3C;validator_address> &#x3C;amount>ustars --from &#x3C;key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y
</strong></code></pre>

**Withdraw staking rewards from all validators**

```
starsd tx distribution withdraw-all-rewards --from <key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y
```

**Withdraw commission and rewards from your validator**

```
starsd tx distribution withdraw-rewards <your_validator_address> --commission --from <key_name> stargaze-1 --gas-adjustment 1.5 --gas auto -y
```

## Governance

**Vote `yes/no/no_with_veto/abstain` on proposal**

```
starsd tx gov vote <proposal_id> <voting_option> --commission --from <key_name> --chain-id stargaze-1 --gas-adjustment 1.5 --gas auto -y
```


# RPC / API / gRPC

**RPC:** <https://stargaze-rpc.stakeangle.com/>

**API:** <http://stargaze-rpc.stakeangle.com:41317/>

**gRPC:** <http://stargaze-rpc.stakeangle.com:41390/>


# IBC relayers

Active IBC relayers

<table><thead><tr><th width="194">Source IBC channel</th><th width="209.33333333333331">Destination network</th><th>Stargaze relayer address</th></tr></thead><tbody><tr><td>channel-0</td><td>Osmosis</td><td>stars1g2syde840g7f2fxafxpgj7lc3u6hgvap4aqv0w</td></tr><tr><td>channel-6</td><td>Gravity Bridge</td><td>stars1g2syde840g7f2fxafxpgj7lc3u6hgvap4aqv0w</td></tr><tr><td>channel-36</td><td>OmniFlix</td><td>stars1g2syde840g7f2fxafxpgj7lc3u6hgvap4aqv0w</td></tr></tbody></table>


# Uptick

Uptick Network is building business-grade infrastructure and ecosystems for non-fungible tokens (NFTs)

## Useful links

**Website:** <https://www.uptick.network/>

**X:** <https://twitter.com/Uptickproject>

**Discord:** <https://discord.com/invite/teqX78VZUV>

**GitHub:** <https://github.com/UptickNetwork>

**Explorer:** <https://explorer.testnet.uptick.network/uptick-network-testnet>


# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/UptickNetwork/uptick.git
cd uptick
git checkout v0.3.0
make install
uptickd version
```

4. **Initialize your node.**

```
uptickd init --chain-id uptick_117-1 <node_name>
```

5. **Download genesis.**

```
curl -o $HOME/.uptickd/config/genesis.json https://raw.githubusercontent.com/UptickNetwork/uptick-mainnet/master/uptick_117-1/genesis.json
```

6. **Add seed and persistent peers to `config.toml`.**

```
seeds="f97a75fb69d3a5fe893dca7c8d238ccc0bd66a8f@uptick.seed.brocha.in:30600"
peers="48e7e8ca23b636f124e70092f4ba93f98606f604@54.37.129.164:55056,8ecd3260a19d2b112f6a84e0c091640744ec40c5@185.165.241.20:26656,8e924a598a06e29c9f84a0d68b6149f1524c1819@57.128.109.11:26656,f05733da50967e3955e11665b1901d36291dfaee@65.108.195.30:21656"
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.uptickd/config/config.toml
```

7. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.uptickd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.uptickd/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.uptickd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.uptickd/config/app.toml
```

9. **Create service file.**

```
sudo tee /etc/systemd/system/uptickd.service > /dev/null <<EOF
[Unit]
Description=Uptick Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which uptickd) start --chain-id uptick_117-1
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

10. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable uptickd
systemctl restart uptickd
journalctl -u uptickd -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}




---

[Next Page](/llms-full.txt/1)

