# Introduction

<figure><img src="https://pbs.twimg.com/profile_banners/1408025751463600128/1716412022/1500x500" alt=""><figcaption></figcaption></figure>

### CoinHunters <a href="#cryptonodeid" id="cryptonodeid"></a>

#### Who are we ? <a href="#who-are-we" id="who-are-we"></a>

We are one of the leading mentors and content creators in Turkey's blockchain technology and cryptocurrency market. We are creating contents related to blockchain technology, defi, web3, testnets, pre-sales and all cryptocurrency analystics for the Turkish community. Beside content creation, they are active node runner on Dymension, Nibiru mainnets and testnets such as CrossFi, Warden, Avail etc. We also have an organization for VC investments and launchpad called HuntersArena. We invest in important projects and startups together with our community.

**If you have any questions, please feel free to contact us**&#x20;

#### How to contact us ? <a href="#how-to-contact-us" id="how-to-contact-us"></a>

Offical Links : [Twitter](https://twitter.com/CoinHuntersTR) | [Youtube](https://www.youtube.com/@CoinHuntersTR) | [Web ](https://coinhunterstr.com/)| [Nodes](https://nodes.coinhunterstr.com/) | [Telegram ](https://t.me/CoinHuntersTR)| [Explorer](https://explorer.coinhunterstr.com/)


# Mainnet

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FswyWd4VW85hOMXf7VpvK%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-05-14%20143318.png?alt=media&amp;token=3c1b9bd1-fd43-4a06-8752-1ad10546407e" alt=""><figcaption></figcaption></figure>

**Explorers**

Find every information from price, block information to IBC relayer details. View your account detail, transaction history and many more without delay.

**Guides**

We will use our social media network alongside our publishing platform of 3 staff writers to promote your project on social media platforms.

**Monitoring**

99% uptime across all networks secured by our validator leading to optimal performance. Using high quality datacenters we can guarantee a maximum uptime, thus generating the highest returns for our users. We work around the clock to ensure that operations are validated in a timely and efficient manner, providing users with fast and reliable processing.

{% embed url="<https://nodes.coinhunterstr.com/>" %}


# Avail

<figure><img src="https://pbs.twimg.com/profile_banners/1508458204866486283/1687262602/1500x500" alt=""><figcaption></figcaption></figure>

Avail is an Ethereum Data Network focused on data availability, featuring a modular technology stack to accelerate Web3 unification. With layers including Data Availability (DA), Nexus, and Fusion, Avail aims to dissolve market fragmentation, providing a unified, secure, and scalable platform that connects various blockchain ecosystems, offering a cohesive experience for users and developers. The platform utilizes validity proofs, zero-knowledge proof-based coordination rollups, and Fusion Security to enhance cryptoeconomic security, bridging the gap between different tokens and creating a more integrated and efficient blockchain ecosystem.

**Offical Links**: [Web ](https://www.availproject.org/)| [Twitter ](https://x.com/AvailProject)| [Discord](https://discord.gg/availproject)&#x20;


# Installation

## Avail-DA-Mainnet

### Go Setup

```
sudo apt update
sudo apt install make clang pkg-config libssl-dev build-essential
```

```
cd
sudo mkdir avail
```

```
cd avail
```

### Dosyaları çekiyoruz

```
wget https://github.com/availproject/avail/releases/download/v2.2.5.1/x86_64-ubuntu-2204-avail-node.tar.gz
```

### Dosyaları zipten çıkartıyoruz.

```
tar -xf x86_64-ubuntu-2204-avail-node.tar.gz
```

### Sevis Oluşturuyoruz...

```
screen -S avail
```

### Node Başlatalım

> \[name your node] yerine istediğiniz bir ismi girebilirsiniz.&#x20;

```
./avail-node --chain mainnet --name [name your node] --validator
```

> Kurulum sonrasında validatör'ünüzün eşleşip eşleşmediğini [BURADAN ](https://telemetry.avail.so/#list/0xb91746b45e0346cc2f815a520b9c6cb4d5c0902af848db0a80f85932d2e8276a)kontrol edebilirsiniz. Ekradan Nodeisminizi aratmanız yeterli.&#x20;

> Eşleştikten sonra [BURADAN](https://docs.availproject.org/docs/operate-a-node/become-a-validator/stake-your-validator) stake adımlarını takip edip, aktif set için bekleyebilirsiniz. Şuan bekleme listesine girmek için minimum 50.000 AVAIL stake etmeniz gerekiyor.&#x20;


# Upgrade

Version: 2.2.1

```
cd avail
# screen -r avail ile screen içinde node durduruyoruz.

rm -rf x86_64-ubuntu-2204-avail-node.tar.gz
wget https://github.com/availproject/avail/releases/download/v2.2.5.1/x86_64-ubuntu-2204-avail-node.tar.gz
tar -xf x86_64-ubuntu-2204-avail-node.tar.gz

# screen -r avail ile screen içinde node tekrar başlatıyoruz. 
./avail-node --chain mainnet --name [name your node] --validator
```


# Babylon

<figure><img src="https://pbs.twimg.com/profile_banners/1558731723243810816/1691512780/1500x500" alt=""><figcaption></figcaption></figure>

Babylon is a Bitcoin staking infrastructure project pioneering a Bitcoin staking protocol to enhance the security of Proof of Stake (PoS) networks and decentralized applications (DApps). This innovative protocol enables Bitcoin holders to stake their assets, earning rewards and reinforcing the security of PoS chains and DApps.

**Offical Links**: [Web](https://babylonchain.io/) | [Twitter](https://twitter.com/babylon_chain) | [Discord](https://discord.com/invite/babylonglobal) | [Telegram](https://t.me/babyloncommunity)


# Installation

### Manuel Installation

#### 1. Set Environment Variables

```bash
# Set your wallet name  
WALLET="your_wallet_name"  
  
# Set your moniker (node name)  
MONIKER="your_moniker"  
  
# Set custom port (default is 26)  
PORT="17"  # Example port  
  
# Set BLS password  
BLS_PASSWORD="your_bls_password"  
  
# Save variables to bash profile  
echo "export WALLET=\"$WALLET\"" >> $HOME/.bash_profile  
echo "export MONIKER=\"$MONIKER\"" >> $HOME/.bash_profile  
echo "export BABYLON_CHAIN_ID=\"bbn-1\"" >> $HOME/.bash_profile  
echo "export BABYLON_PORT=\"$PORT\"" >> $HOME/.bash_profile  
echo "export BABYLON_BLS_PASSWORD=\"$BLS_PASSWORD\"" >> $HOME/.bash_profile  
source $HOME/.bash_profile  
  
# Create BLS password file  
echo "$BLS_PASSWORD" > $HOME/bls_password.txt  
```

#### 2. Install Go

```bash
cd $HOME  
VER="1.23.4"  
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"  
sudo rm -rf /usr/local/go  
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"  
rm "go$VER.linux-amd64.tar.gz"  
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile  
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile  
source $HOME/.bash_profile  
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin  
  
# Verify Go installation  
go version  
```

#### 3. Install Dependencies

```bash
# Update system  
sudo apt update && sudo apt upgrade -y  
  
# Install build tools  
sudo apt install -y build-essential curl git jq lz4 wget make gcc tmux chrony unzip  
```

#### 4. Install Babylon Binary

```bash
git clone https://github.com/babylonlabs-io/babylon.git babylon  
cd babylon  
git checkout v1.0.1  
make install  
  
# Verify installation  
babylond version  
```

#### 5. Initialize Node

```bash
babylond init $MONIKER --chain-id $BABYLON_CHAIN_ID --home $HOME/.babylond  
```

#### 6. Download Genesis and Addrbook

```bash
wget -O $HOME/.babylond/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/babylon/genesis.json  
wget -O $HOME/.babylond/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/babylon/addrbook.json  
```

#### 7. Configure Node

```bash
# Set seeds and peers  
SEEDS="42fad8afbf7dfca51020c3c6e1a487ce17c4c218@babylon-seed-1.nodes.guru:55706,ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com:20656"  
PEERS="f0d280c08608400cac0ccc3d64d67c63fabc8bcc@91.134.70.52:55706,4c1406cb6867232b7ea130ed3a3d25996ca06844@23.88.6.237:20656,b40a147910a608018c47a0e0225106d00d2651ed@5.9.99.42:20656,184db83783c9158a3e99809ffed3752e180597be@65.108.205.121:20656,1f06b55dfbae181fa40ec08fe145b3caef6d3c83@5.9.81.54:2080,7d728de314f9746e499034bfcfc5a9023c672df5@84.32.32.149:18800"  
  
# Edit config.toml to add seeds and peers  
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \  
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.babylond/config/config.toml  
  
# Configure custom ports in app.toml  
sed -i.bak -e "s%:1317%:${BABYLON_PORT}317%g;  
s%:8080%:${BABYLON_PORT}080%g;  
s%:9090%:${BABYLON_PORT}090%g;  
s%:9091%:${BABYLON_PORT}091%g;  
s%:8545%:${BABYLON_PORT}545%g;  
s%:8546%:${BABYLON_PORT}546%g;  
s%:6065%:${BABYLON_PORT}065%g" $HOME/.babylond/config/app.toml  
  
# Configure custom ports in config.toml  
sed -i.bak -e "s%:26658%:${BABYLON_PORT}658%g;  
s%:26657%:${BABYLON_PORT}657%g;  
s%:6060%:${BABYLON_PORT}060%g;  
s%:26656%:${BABYLON_PORT}656%g;  
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${BABYLON_PORT}656\"%;  
s%:26660%:${BABYLON_PORT}660%g" $HOME/.babylond/config/config.toml  
  
# Configure pruning  
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.babylond/config/app.toml   
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.babylond/config/app.toml  
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.babylond/config/app.toml  
  
# Set minimum gas price, enable prometheus and disable indexing  
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.002ubbn"|g' $HOME/.babylond/config/app.toml  
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.babylond/config/config.toml  
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.babylond/config/config.toml  
  
# Set mempool configuration  
sed -i '/\[mempool\]/,/\[/ s/^max-txs *=.*/max-txs = 0/' $HOME/.babylond/config/app.toml  
  
# Add BTC config  
if ! grep -q "\[btc-config\]" $HOME/.babylond/config/app.toml; then  
  echo -e "\n[btc-config]\nnetwork = \"mainnet\"" >> $HOME/.babylond/config/app.toml  
else  
  sed -i '/\[btc-config\]/,/\[/ s/^network *=.*/network = "mainnet"/' $HOME/.babylond/config/app.toml  
fi  
  
# Set timeout_commit  
sed -i '/\[consensus\]/,/\[/ s/^timeout_commit *=.*/timeout_commit = "9200ms"/' $HOME/.babylond/config/config.toml  
```

#### 8. Create Service File

```bash
sudo tee /etc/systemd/system/babylond.service > /dev/null <<EOF  
[Unit]  
Description=babylond.service  
After=network-online.target  
  
[Service]  
User=$USER  
WorkingDirectory=$HOME/.babylond  
Environment="BABYLON_BLS_PASSWORD=$BLS_PASSWORD"  
ExecStart=$(which babylond) start --home $HOME/.babylond  
Restart=on-failure  
RestartSec=5  
LimitNOFILE=65535  
  
[Install]  
WantedBy=multi-user.target  
EOF  
```

#### 9. Reset Node and Download Snapshot

```bash
# Remove any existing BLS key to avoid decryption issues  
if [ -f $HOME/.babylond/config/bls_key.json ]; then  
  rm $HOME/.babylond/config/bls_key.json  
fi  
  
# Reset node  
babylond tendermint unsafe-reset-all --home $HOME/.babylond  
  
# Download and extract snapshot  
curl https://snapshots.coinhunterstr.com/mainnet/babylon/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.babylond  
```

#### 10. Start the Node

```bash
# Reload systemd, enable and start service  
sudo systemctl daemon-reload  
sudo systemctl enable babylond  
sudo systemctl start babylond  
  
# Check logs  
sudo journalctl -u babylond -fo cat  
```

Remember to replace placeholder values like "your\_wallet\_name", "your\_moniker", and "your\_bls\_password" with your actual information.

### Auto Installation

```bash
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/babylon.sh)
```

### Monitor Your Node

```bash
# Check node status  
babylond status | jq  
  
# Check sync status  
babylond status 2>&1 | jq .SyncInfo  
```

### Create Validator

```
cd $HOME
```

```bash
babylond tendermint show-validator
```

for example: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}`  &#x20;

```
cat << EOF > ~/validator.json
{   
    "pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"wHOuViZC5L6fhOrYzFDAx9ySC2GOW61im6u/mP/Urh0="},
    "amount": "1000000ubbn",
    "moniker": "",
    "identity": "",
    "website": "",
    "security": "",
    "details": "",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart babylond && sudo journalctl -u babylond -fo cat  
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
babylond tx checkpointing create-validator ~/validator.json --from wallet --chain-id bbn-1 --gas="auto" --gas-adjustment 1.5 --gas-prices="0.005ubbn"
```


# Service

### API

{% embed url="<https://babylon-api.polkachu.com>" %}

### RPC

{% embed url="<https://babylon-rpc.polkachu.com>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Babylon>" %}


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
babylond keys add wallet
```

**RECOVER EXISTING KEY**

```
babylond keys add wallet --recover
```

**LIST ALL KEYS**

```
babylond keys list
```

**DELETE KEY**

```
babylond keys delete wallet
```

**EXPORT KEY TO A FILE**

```
babylond keys export wallet
```

**IMPORT KEY FROM A FILE**

```
babylond keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
cat << EOF > ~/validator.json
{   
    "pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"wHOuViZC5L6fhOrYzFDAx9ySC2GOW61im6u/mP/Urh0="},
    "amount": "1000000ubbn",
    "moniker": "",
    "identity": "",
    "website": "",
    "security": "",
    "details": "",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1"
}
EOF
```

**EDIT EXISTING VALIDATOR**

```
babylond tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id bbn-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices  0.025ubbn \
-y
```

**UNJAIL VALIDATOR**

```
babylond tx slashing unjail --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
babylond tx distribution withdraw-all-rewards --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
babylond tx distribution withdraw-rewards $(babylond keys show wallet --bech val -a) --commission --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**DELEGATE TOKENS TO YOURSELF**

```
babylond tx staking delegate $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
babylond tx staking delegate <TO_VALOPER_ADDRESS> 1000000ubbn --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
babylond tx staking redelegate $(babylond keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ubbn --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
babylond tx staking unbond $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**SEND TOKENS TO THE WALLET**

```
babylond tx bank send wallet <TO_WALLET_ADDRESS> 1000000ubbn --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
babylond query gov proposals
```

**VIEW PROPOSAL BY ID**

```
babylond query gov proposal 1
```

**VOTE ‘YES’**

```
babylond tx gov vote 1 yes --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**VOTE ‘NO’**

```
babylond tx gov vote 1 no --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**VOTE ‘ABSTAIN’**

```
babylond tx gov vote 1 abstain --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

**VOTE ‘NOWITHVETO’**

```
babylond tx gov vote 1 NoWithVeto --from wallet --chain-id bbn-1 --gas-adjustment 1.5 --gas auto --gas-prices  0.025ubbn -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.babylond/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.babylond/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
babylond status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
babylond status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.002ubbn\"/" $HOME/.babylond/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
babylond tendermint unsafe-reset-all --keep-addr-book --home $HOME/babylond --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable babylond
```

**DISABLE SERVICE**

```
sudo systemctl disable babylond
```

**START SERVICE**

```
sudo systemctl start babylond
```

**STOP SERVICE**

```
sudo systemctl stop babylond
```

**RESTART SERVICE**

```
sudo systemctl restart babylond
```

**CHECK SERVICE STATUS**

```
sudo systemctl status babylond
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u babylond -f --no-hostname -o cat
```


# Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```
sudo systemctl stop babylond
cp $HOME/.babylond/data/priv_validator_state.json $HOME/.babylond/priv_validator_state.json.backup
rm -rf $HOME/.babylond/data
rm -rf $HOME/.babylond/wasm
rm -rf $HOME/.babylond/ibc_08-wasm
babylond tendermint unsafe-reset-all --home ~/.babylond/ --keep-addr-book
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/mainnet/babylon/snapshot_latest.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.babylond
mv $HOME/.babylond/priv_validator_state.json.backup $HOME/.babylond/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart babylond && sudo journalctl -fu babylond -o cat
```


# CrossFi


# Service

### API

{% embed url="<https://crossfimainnet-api.chainad.org/>" %}

### RPC

{% embed url="<https://crossfimainnet-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Crossfi-Mainnet>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

| Chain ID          | Latest Version Tag | Custom Port |
| ----------------- | ------------------ | ----------- |
| crossfi-mainnet-1 | v0.3.0             | 26          |

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

>

```
cd $HOME
VER="1.21.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

```

#### Set Vars

WALLET yerine istediğiniz bir ismi, MONIKER yerine bir validator adı yazmayı unutmayın.&#x20;

```
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="test"" >> $HOME/.bash_profile
echo "export CROSSFI_CHAIN_ID="crossfi-mainnet-1"" >> $HOME/.bash_profile
echo "export CROSSFI_PORT="48"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
rm -rf bin
wget https://github.com/crossfichain/crossfi-node/releases/download/v0.3.0/crossfi-node_0.3.0_linux_amd64.tar.gz && tar -xf crossfi-node_0.3.0_linux_amd64.tar.gz
rm crossfi-node_0.3.0_linux_amd64.tar.gz
mv $HOME/bin/crossfid $HOME/go/bin/crossfid
```

#### Config init app

```
rm -rf testnet ~/.mineplex-chain
git clone https://github.com/crossfichain/mainnet.git
mv $HOME/mainnet/ $HOME/.crossfid/
sed -i '99,114 s/^\( *enable =\).*/\1 "false"/' $HOME/.crossfid/config/config.toml
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.crossfid/config/genesis.json https://server-3.itrocket.net/mainnet/crossfi/genesis.json
wget -O $HOME/.crossfid/config/addrbook.json  https://server-3.itrocket.net/mainnet/crossfi/addrbook.json
```

#### Set seeds and peers

```
SEEDS="693d9fe729d41ade244717176ab1415b2c06cf86@crossfi-mainnet-seed.itrocket.net:48656"
PEERS="641157ecbfec8e0ec37ca4c411c1208ca1327154@crossfi-mainnet-peer.itrocket.net:11656,9dd9a718a70c17eda4a2f2e262a6fcdafa380b04@95.217.45.201:23656,c482ab7bb52202149477fded22d6741d746d7e45@95.217.204.58:26056,d996012096cfef860bf24543740d58da45e5b194@37.27.183.62:26656,6b90dd8399533bca9066030f6193dca37f1565e1@65.109.234.80:26656,adb475675d97a9ce67bcea8cfdd66f23b92f1162@89.110.91.158:26656,9c8bf508ead86588f41ecc76cc6021c88493c199@57.129.32.223:26656,f27eff68f2f3542a317bad66fdf9f1cc93a80dc1@49.13.76.170:26656,f8cbc62fb487ae825edf79c580206d0e34ee9f51@5.161.229.160:26656,90fd2ad4f2b57bf6fa0c40cd579310f5ceebf0f5@5.78.128.70:26656,f5d2b1a6ab68ac9357366afe424564ab42a9d444@185.107.82.171:26656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.crossfid/config/config.toml
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.mineplex-chain/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.mineplex-chain/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.mineplex-chain/config/app.toml
```

#### set minimum gas price, enable prometheus and disable indexing

```
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "10000000000000mpx"|g' $HOME/.crossfid/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.crossfid/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.crossfid/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/crossfid.service > /dev/null <<EOF
[Unit]
Description=Crossfi node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.crossfid
ExecStart=$(which crossfid) start --home $HOME/.crossfid
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### Snapshot

```
crossfid tendermint unsafe-reset-all --home $HOME/.crossfid
if curl -s --head curl https://server-3.itrocket.net/mainnet/crossfi/crossfi_2024-10-15_3249_snap.tar.lz4 | head -n 1 | grep "200" > /dev/null; then
  curl https://server-3.itrocket.net/mainnet/crossfi/crossfi_2024-10-15_3249_snap.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.crossfid
    else
  echo "no snapshot founded"
fi
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable crossfid
sudo systemctl restart crossfid && sudo journalctl -u crossfid -f
```

## Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/crossfi.sh)
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
crossfid keys add wallet
```

**RECOVER EXISTING KEY**

```
crossfid keys add wallet --recover
```

**LIST ALL KEYS**

```
crossfid keys list
```

**DELETE KEY**

```
crossfid keys delete wallet
```

**EXPORT KEY TO A FILE**

```
crossfid keys export wallet
```

**IMPORT KEY FROM A FILE**

```
crossfid keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
crossfid tx staking create-validator \
--amount 1000000mpx \
--from $WALLET \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(crossfid tendermint show-validator) \
--moniker "test" \
--identity "" \
--website "" \
--details "I love blockchain ❤️" \
--chain-id mineplex-mainnet-1 \
--gas auto --gas-adjustment 1.5 --gas-prices 10000000000000mpx \
-y
```

**EDIT EXISTING VALIDATOR**

```
crossfid tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id mineplex-mainnet-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 10000000000000mpx \
-y
```

**UNJAIL VALIDATOR**

```
crossfid tx slashing unjail --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
crossfid tx distribution withdraw-all-rewards --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
crossfid tx distribution withdraw-rewards $(crossfid keys show wallet --bech val -a) --commission --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**DELEGATE TOKENS TO YOURSELF**

```
crossfid tx staking delegate $(crossfid keys show wallet --bech val -a) 1000000000000000mpx --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
crossfid tx staking delegate <TO_VALOPER_ADDRESS> 1000000000000000mpx --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
crossfid tx staking redelegate $(crossfid keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000000000000mpx --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
crossfid tx staking unbond $(crossfid keys show wallet --bech val -a) 1000000000000000mpx --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**SEND TOKENS TO THE WALLET**

```
crossfid tx bank send wallet <TO_WALLET_ADDRESS> 1000000000000000mpx --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
crossfid query gov proposals
```

**VIEW PROPOSAL BY ID**

```
crossfid query gov proposal 1
```

**VOTE ‘YES’**

```
crossfid tx gov vote 1 yes --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**VOTE ‘NO’**

```
crossfid tx gov vote 1 no --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**VOTE ‘ABSTAIN’**

```
crossfid tx gov vote 1 abstain --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

**VOTE ‘NOWITHVETO’**

```
crossfid tx gov vote 1 NoWithVeto --from wallet --chain-id mineplex-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 10000000000000mpx -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.mineplex-chain/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.mineplex-chain/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
crossfid status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
crossfid status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"10000000000000mpx\"/" $HOME/.mineplex-chain/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
crossfid tendermint unsafe-reset-all --keep-addr-book --home $HOME/.mineplex-chain --keep-addr-book
```

**REMOVE NODE**

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

```
cd $HOME
sudo systemctl stop crossfid
sudo systemctl disable crossfid
sudo rm /etc/systemd/system/crossfid
sudo systemctl daemon-reload
rm -f $(which crossfid)
rm -rf $HOME/.mineplex-chain
rm -rf $HOME/mineplex-chain
```

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable crossfid
```

**DISABLE SERVICE**

```
sudo systemctl disable crossfid
```

**START SERVICE**

```
sudo systemctl start crossfid
```

**STOP SERVICE**

```
sudo systemctl stop crossfid
```

**RESTART SERVICE**

```
sudo systemctl restartcrossfid
```

**CHECK SERVICE STATUS**

```
sudo systemctl status crossfid
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u crossfid -f --no-hostname -o cat
```


# Dymension

Chain ID dymension\_1100-1

Dymension is a network of easily deployable modular blockchains called RollApps. Dymension's blockchain platform is a modular settlement layer which provides all the tools and infrastructure needed to easily launch enshrined rollups as part of the Cosmos eco-system.

**Offical Links**: [Web ](https://dymension.xyz/)| [Twitter ](https://twitter.com/dymension)| [Discord ](https://discord.gg/dymension)| [Telegram](https://t.me/dymension)


# Service

## API

{% embed url="<https://dymension-api.chainad.org/>" %}

### RPC

{% embed url="<https://dymension-rpc.chainad.org/>" %}

### Explorer

{% embed url="<https://explorer.coinhunterstr.com/Dymension-Mainnet>" %}


# Installation

| Chain ID          | Latest Version Tag | Custom Port |
| ----------------- | ------------------ | ----------- |
| dymension\_1100-1 | v3.1.0             | 146         |

#### Setup validator name <a href="#setup-validator-name" id="setup-validator-name"></a>

Replace **MONIKERNAME** with your validator name

```markup
MONIKER="MONIKERNAME"
```

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```markup
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
```

**INSTALL GO**

```markup
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.21.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```markup
# Clone project repository
cd $HOME
rm -rf dymension
git clone https://github.com/dymensionxyz/dymension.git
cd dymension
git checkout v3.1.0

# Build binaries
make build

# Prepare binaries for Cosmovisor
mkdir -p $HOME/.dymension/cosmovisor/genesis/bin
mv build/dymd $HOME/.dymension/cosmovisor/genesis/bin/
rm -rf build

# Create application symlinks
sudo ln -s $HOME/.dymension/cosmovisor/genesis $HOME/.dymension/cosmovisor/current -f
sudo ln -s $HOME/.dymension/cosmovisor/current/bin/dymd /usr/local/bin/dymd -f
```

#### Install Cosmovisor and create a service <a href="#install-cosmovisor-and-create-a-service" id="install-cosmovisor-and-create-a-service"></a>

```markup
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0

# Create service
sudo tee /etc/systemd/system/dymension.service > /dev/null << EOF
[Unit]
Description=dymension node service
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.dymension"
Environment="DAEMON_NAME=dymd"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.dymension/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable dymension.service
```

#### Initialize the node <a href="#initialize-the-node" id="initialize-the-node"></a>

```markup
# Set node configuration
dymd config chain-id dymension_1100-1
dymd config keyring-backend file
dymd config node tcp://localhost:14657

# Initialize the node
dymd init $MONIKER --chain-id dymension_1100-1

# Download genesis and addrbook
curl -Ls https://snapshots.coinhunterstr.com/dymension/genesis.json > $HOME/.dymension/config/genesis.json
curl -Ls https://raw.githubusercontent.com/CoinHuntersTR/props/main/dymension/addrbook.json > $HOME/.dymension/config/addrbook.json

# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"45be427b2fc01810597991f5bacdc091a60e2fc4@167.235.192.220:14656\"|" $HOME/.dymension/config/config.toml

# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"20000000000adym\"|" $HOME/.dymension/config/app.toml

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

# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:14658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:14657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:14660\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:14656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":14666\"%" $HOME/.dymension/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:14617\"%; s%^address = \":8080\"%address = \":14680\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:14690\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:14691\"%; s%:8545%:14645%; s%:8546%:14646%; s%:6065%:14665%" $HOME/.dymension/config/app.toml
```

#### Download latest chain snapshot <a href="#download-latest-chain-snapshot" id="download-latest-chain-snapshot"></a>

```markup
curl -L https://snapshots.coinhunterstr.com/dymension/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.dymension
[[ -f $HOME/.dymension/data/upgrade-info.json ]] && cp $HOME/.dymension/data/upgrade-info.json $HOME/.dymension/cosmovisor/genesis/upgrade-info.json
```

#### Start service and check the logs <a href="#start-service-and-check-the-logs" id="start-service-and-check-the-logs"></a>

```
sudo systemctl start dymension.service && sudo journalctl -u dymension.service -f --no-hostname -o cat
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```markdown
sudo systemctl stop dymension.service
cp $HOME/.dymension/data/priv_validator_state.json $HOME/.dymension/priv_validator_state.json.backup
rm -rf $HOME/.dymension/data
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```markdown
curl -o - -L https://snapshots.coinhunterstr.com/mainnet/dymension/snapshot_latest.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.dymension
mv $HOME/.dymension/priv_validator_state.json.backup $HOME/.dymension/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```markdown
sudo systemctl start dymension.service && sudo journalctl -u dymension.service -f --no-hostname -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
dymd keys add wallet
```

**RECOVER EXISTING KEY**

```
dymd keys add wallet --recover
```

**LIST ALL KEYS**

```
dymd keys list
```

**DELETE KEY**

```
dymd keys delete wallet
```

**EXPORT KEY TO A FILE**

```
dymd keys export wallet
```

**IMPORT KEY FROM A FILE**

```
dymd keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

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

**EDIT EXISTING VALIDATOR**

```
dymd tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id dymension_1100-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 20000000000adym \
-y
```

**UNJAIL VALIDATOR**

```
dymd tx slashing unjail --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
dymd tx distribution withdraw-all-rewards --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
dymd tx distribution withdraw-rewards $(dymd keys show wallet --bech val -a) --commission --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**DELEGATE TOKENS TO YOURSELF**

```
dymd tx staking delegate $(dymd keys show wallet --bech val -a) 1000000adym --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
dymd tx staking delegate <TO_VALOPER_ADDRESS> 1000000adym --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
dymd tx staking redelegate $(dymd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000adym --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
dymd tx staking unbond $(dymd keys show wallet --bech val -a) 1000000adym --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**SEND TOKENS TO THE WALLET**

```
dymd tx bank send wallet <TO_WALLET_ADDRESS> 1000000adym --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
dymd query gov proposals
```

**VIEW PROPOSAL BY ID**

```
dymd query gov proposal 1
```

**VOTE ‘YES’**

```
dymd tx gov vote 1 yes --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**VOTE ‘NO’**

```
dymd tx gov vote 1 no --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**VOTE ‘ABSTAIN’**

```
dymd tx gov vote 1 abstain --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

**VOTE ‘NOWITHVETO’**

```
dymd tx gov vote 1 NoWithVeto --from wallet --chain-id dymension_1100-1 --gas-adjustment 1.4 --gas auto --gas-prices 20000000000adym -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.dymension/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.dymension/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
dymd status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
dymd status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"20000000000adym\"/" $HOME/.dymension/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
dymd tendermint unsafe-reset-all --keep-addr-book --home $HOME/.dymension --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable dymension.service
```

**DISABLE SERVICE**

```
sudo systemctl disable dymension.service
```

**START SERVICE**

```
sudo systemctl start dymension.service
```

**STOP SERVICE**

```
sudo systemctl stop dymension.service
```

**RESTART SERVICE**

```
sudo systemctl restart dymension.service
```

**CHECK SERVICE STATUS**

```
sudo systemctl status dymension.service
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u dymension.service -f --no-hostname -o cat
```


# Upgrade

v5

Upgrade height:  [10192266](https://explorer.coinhunterstr.com/Dymension/block/10192266) Please don\`t upgrade before the specified height;

```
cd $HOME && \
wget -O dymension_Linux_amd64.tar.gz https://github.com/dymensionxyz/dymension/releases/download/v4.0.0-rc06/dymension_Linux_amd64.tar.gz && \
tar -xzf dymension_Linux_amd64.tar.gz && \
chmod +x $HOME/dymd && \
rm dymension_Linux_amd64.tar.gz && \
old_bin_path=$(which dymd) && \
home_path=$HOME && \
rpc_port=$(grep -m 1 -oP '^laddr = "\K[^"]+' "$HOME/.dymension/config/config.toml" | cut -d ':' -f 3) && \
[[ -z "$rpc_port" ]] && rpc_port=$(grep -oP 'node = "tcp://[^:]+:\K\d+' "$HOME/.dymension/config/client.toml") ; \
tmux new -s dym-upgrade "sudo bash -c 'curl -s https://raw.githubusercontent.com/CoinHuntersTR/Logo/refs/heads/main/autoupgrade/upgrade.sh | bash -s -- -u \"10192266\" -b dymd -n \"$HOME/dymd\" -o \"$old_bin_path\" -h \"$home_path\" -p \"https://dymension.explorers.guru/proposal/31\" -r \"$rpc_port\"'"
```

v3.2.0

Upgrade height: [5135550](https://explorer.coinhunterstr.com/Dymension/block/5135550)  Please don\`t upgrade before the specified height;

### Manul Upgrade

```
cd $HOME
wget -O dymd https://github.com/dymensionxyz/dymension/releases/download/v3.2.0/dymd
chmod +x $HOME/dymd
sudo mv $HOME/dymd $(which dymd)
sudo systemctl restart dymd && sudo journalctl -u dymd -f
```

### Auto Upgrade

```
cd $HOME && \
wget -O dymd https://github.com/dymensionxyz/dymension/releases/download/v3.2.0/dymd && \
chmod +x $HOME/dymd && \
old_bin_path=$(which dymd) && \
home_path=$HOME && \
rpc_port=$(grep -m 1 -oP '^laddr = "\K[^"]+' "$HOME/.dymension/config/config.toml" | cut -d ':' -f 3) && \
[[ -z "$rpc_port" ]] && rpc_port=$(grep -oP 'node = "tcp://[^:]+:\K\d+' "$HOME/.dymension/config/client.toml") ; \
tmux new -s dym-upgrade "sudo bash -c 'curl -s https://raw.githubusercontent.com/CoinHuntersTR/Logo/refs/heads/main/autoupgrade/upgrade.sh | bash -s -- -u \"5135550\" -b dymd -n \"$HOME/dymd\" -o \"$old_bin_path\" -h \"$home_path\" -p \"https://explorer.coinhunterstr.com/Dymension/gov/24\" -r \"$rpc_port\"'"
```


# Lava Network

<figure><img src="https://pbs.twimg.com/profile_banners/1510514454559174664/1700761865/1500x500" alt=""><figcaption></figcaption></figure>

Lava Network is the modular data access layer for blockchains, introducing specs as a modular primitive to seamlessly integrate new chains and data services. It operates as a dynamic marketplace where data consumers send requests to node operators, incentivizing reliable service provision across speed, uptime, and data accuracy while ensuring data quality through fraud and fault detection checks.<br>

**Offical Links**: [Web ](https://www.lavanet.xyz/)| [Twitter](https://twitter.com/lavanetxyz) | [Discord ](https://discord.gg/kgjfGnfdWb)| [Blog](https://www.lavanet.xyz/blog)


# Service

### RPC

{% embed url="<https://lava-rpc.coinhunterstr.com>" %}

### API

{% embed url="<https://lava-api.coinhunterstr.com>" %}

### Explorer

{% embed url="<https://lava.coinhunterstr.com/>" %}

### Stake Coin Hunters

{% embed url="<https://wallet.keplr.app/chains/lava?chain=lava-mainnet-1&modal=staking&step_id=2&validator_address=lava@valoper1xxezsqtdsmztz9ugutyyjmvma6aukh07fylqhe>" %}


# Installion

#### Recommended Hardware

| CPU    | RAM  | SSD     |
| ------ | ---- | ------- |
| 4 vCPU | 16GB | 200 SSD |

### Manual Installation <a href="#installation" id="installation"></a>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```
cd $HOME
VER="2.2.0"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

> You can enter your validator name instead of `MonikerName`.

```
# Clone project repository
cd $HOME
rm -rf lava
git clone https://github.com/lavanet/lava
cd lava
git checkout v2.2.0
make install-all

# config and init app
lavad init MonikerName --chain-id lava-mainnet-1
sed -i \
-e 's/timeout_propose = .*/timeout_propose = "1s"/' \
-e 's/timeout_propose_delta = .*/timeout_propose_delta = "500ms"/' \
-e 's/timeout_prevote = .*/timeout_prevote = "1s"/' \
-e 's/timeout_prevote_delta = .*/timeout_prevote_delta = "500ms"/' \
-e 's/timeout_precommit = .*/timeout_precommit = "500ms"/' \
-e 's/timeout_precommit_delta = .*/timeout_precommit_delta = "1s"/' \
-e 's/timeout_commit = .*/timeout_commit = "15s"/' \
-e 's/^create_empty_blocks = .*/create_empty_blocks = true/' \
-e 's/^create_empty_blocks_interval = .*/create_empty_blocks_interval = "15s"/' \
-e 's/^timeout_broadcast_tx_commit = .*/timeout_broadcast_tx_commit = "151s"/' \
-e 's/skip_timeout_commit = .*/skip_timeout_commit = false/' \
  $HOME/.lava/config/config.toml
```

#### Download Genesis and Addrbook <a href="#initialize-the-node" id="initialize-the-node"></a>

```
# Download genesis and addrbook
wget -O $HOME/.lava/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/lava-mainnet/genesis.json
wget -O $HOME/.lava/config/addrbook.json  https://raw.githubusercontent.com/CoinHuntersTR/props/main/lava-mainnet/addrbook.json
```

#### Update chain-specific configuration <a href="#update-chain-specific-configuration" id="update-chain-specific-configuration"></a>

```
# config pruning
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.lava/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.lava/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.lava/config/app.toml

# set minimum gas price, enable prometheus and disable indexing
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.000000001ulava"|g' $HOME/.lava/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.lava/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.lava/config/config.toml
```

#### Create a service <a href="#install-cosmovisor-and-create-a-service" id="install-cosmovisor-and-create-a-service"></a>

```
sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF
[Unit]
Description=Lava node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.lava
ExecStart=$(which lavad) start --home $HOME/.lava
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### Download latest chain snapshot <a href="#download-latest-chain-snapshot" id="download-latest-chain-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/lava/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.lava
[[ -f $HOME/.lava/data/upgrade-info.json ]] && cp $HOME/.lava/data/upgrade-info.json $HOME/.lava/cosmovisor/genesis/upgrade-info.json
```

#### Start service and check the logs <a href="#start-service-and-check-the-logs" id="start-service-and-check-the-logs"></a>

```
# enable and start service
sudo systemctl daemon-reload
sudo systemctl enable lavad
sudo systemctl restart lavad && sudo journalctl -u lavad -f
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

```
wget -q -O lava.sh https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/lava.sh && chmod +x lava.sh && ./lava.sh
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```markdown
curl -L https://snapshots.coinhunterstr.com/mainnet/lava/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.lava
mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```markdown
sudo systemctl restart lavad && sudo journalctl -u lavad -f --no-hostname -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
lavad keys add wallet
```

**RECOVER EXISTING KEY**

```
lavad keys add wallet --recover
```

**LIST ALL KEYS**

```
lavad keys list
```

**DELETE KEY**

```
lavad keys delete wallet
```

**EXPORT KEY TO A FILE**

```
lavad keys export wallet
```

**IMPORT KEY FROM A FILE**

```
lavad keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
lavad tx staking create-validator \
--amount 100000000ulava \
--pubkey $(lavad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id lava-mainnet-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.000000001ulava \
-y
```

**EDIT EXISTING VALIDATOR**

```
lavad tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id lava-mainnet-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.000000001ulava \
-y
```

**UNJAIL VALIDATOR**

```
lavad tx slashing unjail --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
lavad tx distribution withdraw-all-rewards --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
lavad tx distribution withdraw-rewards $(lavad keys show wallet --bech val -a) --commission --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**DELEGATE TOKENS TO YOURSELF**

```
lavad tx staking delegate $(lavad keys show wallet --bech val -a) 100000000ulava --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
lavad tx staking delegate <TO_VALOPER_ADDRESS> 100000000ulava --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
lavad tx staking redelegate $(lavad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 100000000ulava --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
lavad tx staking unbond $(lavad keys show wallet --bech val -a) 100000000ulava --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**SEND TOKENS TO THE WALLET**

```
lavad tx bank send wallet <TO_WALLET_ADDRESS> 100000000ulava --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
lavad query gov proposals
```

**VIEW PROPOSAL BY ID**

```
lavad query gov proposal 1
```

**VOTE ‘YES’**

```
lavad tx gov vote 1 yes --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**VOTE ‘NO’**

```
lavad tx gov vote 1 no --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**VOTE ‘ABSTAIN’**

```
lavad tx gov vote 1 abstain --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

**VOTE ‘NOWITHVETO’**

```
lavad tx gov vote 1 NoWithVeto --from wallet --chain-id lava-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.000000001ulava -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.lava/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.lava/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
lavad status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
lavad status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.000000001ulava\"/" $HOME/.lava/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
lavad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.lava --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable lavad
```

**DISABLE SERVICE**

```
sudo systemctl disable lavad
```

**START SERVICE**

```
sudo systemctl start lavad
```

**STOP SERVICE**

```
sudo systemctl stop lavad
```

**RESTART SERVICE**

```
sudo systemctl restart lavad
```

**CHECK SERVICE STATUS**

```
sudo systemctl status lavad
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u lavad -f --no-hostname -o cat
```


# Nibiru

Nibiru is a decentralized finance (DeFi) hub, proof-of-stake blockchain and a member of a family of interconnected blockchains that comprise the Cosmos Ecosystem. It offers leveraged derivatives trading, spot trading, staking, and bonded liquidity provision across 40 blockchains. Nibiru also plans to launch its fractional-algorithmic stablecoin, NUSD, collateralized by USDC and NIBI.


# Service

### API

{% embed url="<https://nibiru-api.chainad.org/>" %}

### RPC

{% embed url="<https://nibiru-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Nibiru-Mainnet>" %}


# Installation

| Chain ID    | Latest Version Tag | Custom Port |
| ----------- | ------------------ | ----------- |
| cataclysm-1 | v1.2.0             | 139         |

#### Setup validator name <a href="#setup-validator-name" id="setup-validator-name"></a>

Replace **MONIKERNAME** with your validator name

```
MONIKER="MONIKERNAME"
```

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
```

**INSTALL GO**

```
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.21.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
# Clone project repository
cd $HOME
rm -rf nibiru
git clone https://github.com/NibiruChain/nibiru.git
cd nibiru
git checkout v1.2.0

# Build binaries
make build

# Prepare binaries for Cosmovisor
mkdir -p $HOME/.nibid/cosmovisor/genesis/bin
mv build/nibid $HOME/.nibid/cosmovisor/genesis/bin/
rm -rf build

# Create application symlinks
sudo ln -s $HOME/.nibid/cosmovisor/genesis $HOME/.nibid/cosmovisor/current -f
sudo ln -s $HOME/.nibid/cosmovisor/current/bin/nibid /usr/local/bin/nibid -f
```

#### Install Cosmovisor and create a service <a href="#install-cosmovisor-and-create-a-service" id="install-cosmovisor-and-create-a-service"></a>

```
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0

# Create service
sudo tee /etc/systemd/system/nibiru.service > /dev/null << EOF
[Unit]
Description=nibiru node service
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.nibid"
Environment="DAEMON_NAME=nibid"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.nibid/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable nibiru.service
```

#### Initialize the node <a href="#initialize-the-node" id="initialize-the-node"></a>

```
# Set node configuration
nibid config chain-id cataclysm-1
nibid config keyring-backend file
nibid config node tcp://localhost:13957

# Initialize the node
nibid init $MONIKER --chain-id cataclysm-1

# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/nibiru/genesis.json > $HOME/.nibid/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/nibiru/addrbook.json > $HOME/.nibid/config/addrbook.json

# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"400f3d9e30b69e78a7fb891f60d76fa3c73f0ecc@nibiru.rpc.kjnodes.com:13959\"|" $HOME/.nibid/config/config.toml

# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.025unibi\"|" $HOME/.nibid/config/app.toml

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

# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:13958\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:13957\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:13960\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:13956\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":13966\"%" $HOME/.nibid/config/config.toml
sed -i -e "s%^address = \"tcp://localhost:1317\"%address = \"tcp://0.0.0.0:13917\"%; s%^address = \":8080\"%address = \":13980\"%; s%^address = \"localhost:9090\"%address = \"0.0.0.0:13990\"%; s%^address = \"localhost:9091\"%address = \"0.0.0.0:13991\"%; s%:8545%:13945%; s%:8546%:13946%; s%:6065%:13965%" $HOME/.nibid/config/app.toml
```

#### Download latest chain snapshot <a href="#download-latest-chain-snapshot" id="download-latest-chain-snapshot"></a>

```
curl -L https://snapshots.kjnodes.com/nibiru/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nibid
[[ -f $HOME/.nibid/data/upgrade-info.json ]] && cp $HOME/.nibid/data/upgrade-info.json $HOME/.nibid/cosmovisor/genesis/upgrade-info.json
```

#### Start service and check the logs <a href="#start-service-and-check-the-logs" id="start-service-and-check-the-logs"></a>

```
sudo systemctl start nibiru.service && sudo journalctl -u nibiru.service -f --no-hostname -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
nibid keys add wallet
```

**RECOVER EXISTING KEY**

```
nibid keys add wallet --recover
```

**LIST ALL KEYS**

```
nibid keys list
```

**DELETE KEY**

```
nibid keys delete wallet
```

**EXPORT KEY TO A FILE**

```
nibid keys export wallet
```

**IMPORT KEY FROM A FILE**

```
nibid keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
nibid tx staking create-validator \
--amount 1000000unibi \
--pubkey $(nibid tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id cataclysm-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--fees 5000unibi \
-y
```

**EDIT EXISTING VALIDATOR**

```
nibid tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id cataclysm-1 \
--commission-rate 0.05 \
--from wallet \
--fees 5000unibi \
-y
```

**UNJAIL VALIDATOR**

```
nibid tx slashing unjail --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
nibid tx distribution withdraw-all-rewards --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
nibid tx distribution withdraw-rewards $(nibid keys show wallet --bech val -a) --commission --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**DELEGATE TOKENS TO YOURSELF**

```
nibid tx staking delegate $(nibid keys show wallet --bech val -a) 1000000unibi --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
nibid tx staking delegate <TO_VALOPER_ADDRESS> 1000000unibi --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
nibid tx staking redelegate $(nibid keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000unibi --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
nibid tx staking unbond $(nibid keys show wallet --bech val -a) 1000000unibi --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**SEND TOKENS TO THE WALLET**

```
nibid tx bank send wallet <TO_WALLET_ADDRESS> 1000000unibi --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
nibid query gov proposals
```

**VIEW PROPOSAL BY ID**

```
nibid query gov proposal 1
```

**VOTE ‘YES’**

```
nibid tx gov vote 1 yes --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**VOTE ‘NO’**

```
nibid tx gov vote 1 no --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**VOTE ‘ABSTAIN’**

```
nibid tx gov vote 1 abstain --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

**VOTE ‘NOWITHVETO’**

```
nibid tx gov vote 1 NoWithVeto --from wallet --chain-id cataclysm-1 --fees 5000unibi -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.nibid/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.nibid/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
nibid status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
nibid status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025unibi\"/" $HOME/.nibid/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
nibid tendermint unsafe-reset-all --keep-addr-book --home $HOME/.nibid --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable nibiru.service
```

**DISABLE SERVICE**

```
sudo systemctl disable nibiru.service
```

**START SERVICE**

```
sudo systemctl start nibiru.service
```

**STOP SERVICE**

```
sudo systemctl stop nibiru.service
```

**RESTART SERVICE**

```
sudo systemctl restart nibiru.service
```

**CHECK SERVICE STATUS**

```
sudo systemctl status nibiru.service
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u nibiru.service -f --no-hostname -o cat
```


# Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```markdown
curl -L https://storage.googleapis.com/cataclysm-1-snapshots/cataclysm-1-20241125114154-pruned-pebbledb.tar.gz | tar -zxf - -C $HOME/.nibid
mv $HOME/.nibid/priv_validator_state.json.backup $HOME/.nibid/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```markdown
sudo systemctl start nibid && sudo journalctl -u nibid -f -o cat
```


# Zeta Chain

<figure><img src="https://pbs.twimg.com/profile_banners/1409970051562708994/1704407924/1500x500" alt=""><figcaption></figcaption></figure>

ZetaChain is an EVM-compatible Layer 1 blockchain that connects multiple blockchains into a unified ecosystem, enabling interoperable dApps and seamless cross-chain asset transfers without the need for wrapped tokens or bridges. ZetaChain offers externally-managed smart contract capabilities for chains like Bitcoin and Dogecoin, making it a versatile and efficient solution for multichain DeFi, NFTs, governance, and more.

**Offical Links**: [Web ](https://www.zetachain.com/tr-TR)| [Twitter ](https://twitter.com/zetablockchain)| [Discord ](https://discord.com/invite/zetachain)| [Telegram](https://t.me/zetachainofficial)


# Service

### API

{% embed url="<https://zetachain-api.coinhunterstr.com/>" %}

### RPC

{% embed url="<https://zetachain-rpc.coinhunterstr.com/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Zetachain>" %}


# Installation

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```
cd $HOME
VER="1.20.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
```

### Set Vars

WALLET yerine istediğiniz bir ismi, MONIKER yerine bir validator adı yazmayı unutmayın.

```
echo "export MONIKER="test"" >> $HOME/.bash_profile
echo "export ZETACHAIN_CHAIN_ID="zetachain_7000-1"" >> $HOME/.bash_profile
echo "export ZETACHAIN_PORT="39"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O $HOME/zetacored https://github.com/zeta-chain/node/releases/download/v20.0.2/zetacored-linux-amd64
chmod +x $HOME/zetacored-linux-amd64
mv $HOME/zetacored-linux-amd64 $HOME/go/bin/zetacored
```

#### Config init app

```
zetacored init $MONIKER --chain-id zetachain_7000-1
wget -O $HOME/.zetacored/config/app.toml  https://raw.githubusercontent.com/zeta-chain/network-mainnet/main/network_files/config/app.toml
wget -O $HOME/.zetacored/config/client.toml https://raw.githubusercontent.com/zeta-chain/network-mainnet/main/network_files/config/client.toml
wget -O $HOME/.zetacored/config/config.toml https://raw.githubusercontent.com/zeta-chain/network-mainnet/main/network_files/config/config.toml
wget -O $HOME/.zetacored/config/genesis.json https://raw.githubusercontent.com/zeta-chain/network-mainnet/main/network_files/config/genesis.json
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.zetacored/config/genesis.json https://mainnet-files.itrocket.net/zetachain/genesis.json
wget -O $HOME/.zetacored/config/addrbook.json https://mainnet-files.itrocket.net/zetachain/addrbook.json
```

#### Set seeds and peers

```
SEEDS="4e668be2d80d3475d2350e313bc75b8f0646884f@zetachain-mainnet-seed.itrocket.net:39656"
PEERS="372e9c80f723491daf2b05b3aa368865f6bc3492@zetachain-mainnet-peer.itrocket.net:39656,a5d984f145ea828048a0741a1d349f9fa13a643b@91.210.101.148:26656,bfdd895017abc5c9f0d16f077f4fb40afbd9b8e4@131.153.154.9:26656,f55f191f5036289ce0b7c2aee5aea6a3421e4a1d@51.178.76.16:26656,ae2be7a0c7fa3b8ae777c9e88032cf7b53849cf3@8.222.212.155:26656,d98525ae59a00f7a099ddaec2a7e416e818bb210@57.128.141.153:26656,b855a804a4caf334bc74794b48608b39f05f58d5@212.126.35.133:26656,6554807a10fd2d0e34b8daeed3fee38b8ca048b6@51.91.214.146:26656,97823ae690d164453b775c53ba956e2ea1b55d1d@65.21.32.200:31656,d2579f98938f428b90619eadba01b4342a2d19bd@35.215.48.36:26656,9ffffe23d7e50bab086dd86982b06c65e56e0b30@35.210.154.98:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.zetacored/config/config.toml
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.zetacored/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.zetacored/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.zetacored/config/app.toml
```

#### set minimum gas price, enable prometheus and disable indexing

```
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.0azeta"|g' $HOME/.zetacored/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.zetacored/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.zetacored/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/zetacored.service > /dev/null <<EOF
[Unit]
Description=Zetachain node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.zetacored
ExecStart=$(which zetacored) start --home $HOME/.zetacored
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### Snapshot

```
zetacored tendermint unsafe-reset-all --home $HOME/.zetacored
if curl -s --head curl https://snapshots.coinhunterstr.com/mainnet/zetachain/snapshot_latest.tar.lz4 | head -n 1 | grep "200" > /dev/null; then
  curl https://snapshots.coinhunterstr.com/mainnet/zetachain/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.zetacored
    else
  echo no have snap
fi
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable zetacored
sudo systemctl restart zetacored && sudo journalctl -u zetacored -f
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
zetacored keys add wallet
```

**RECOVER EXISTING KEY**

```
zetacored keys add wallet --recover
```

**LIST ALL KEYS**

```
zetacored keys list
```

**DELETE KEY**

```
zetacored keys delete wallet
```

**EXPORT KEY TO A FILE**

```
zetacored keys export wallet
```

**IMPORT KEY FROM A FILE**

```
zetacored keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
zetacored tx staking create-validator \
--amount 1000000azeta \
--from $WALLET \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(zetacored tendermint show-validator) \
--moniker "test" \
--identity "" \
--website "" \
--details "I love blockchain ❤️" \
--chain-id zetachain_7000-1 \
--gas auto --gas-adjustment 1.5 --gas-prices 0.1azeta \
-y
```

**EDIT EXISTING VALIDATOR**

```
zetacored tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id zetachain_7000-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices 0.1azeta \
-y
```

**UNJAIL VALIDATOR**

```
zetacored tx slashing unjail --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
zetacored tx distribution withdraw-all-rewards --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
zetacored tx distribution withdraw-rewards $(zetacored keys show wallet --bech val -a) --commission --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**DELEGATE TOKENS TO YOURSELF**

```
zetacored tx staking delegate $(zetacored keys show wallet --bech val -a) 1000000azeta --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
zetacored tx staking delegate <TO_VALOPER_ADDRESS> 1000000azeta --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
zetacored tx staking redelegate $(zetacored keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000azeta --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
zetacored tx staking unbond $(zetacored keys show wallet --bech val -a) 1000000azeta --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**SEND TOKENS TO THE WALLET**

```
zetacored tx bank send wallet <TO_WALLET_ADDRESS> 1000000azeta --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
zetacored query gov proposals
```

**VIEW PROPOSAL BY ID**

```
zetacored query gov proposal 1
```

**VOTE ‘YES’**

```
zetacored tx gov vote 1 yes --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**VOTE ‘NO’**

```
zetacored tx gov vote 1 no --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**VOTE ‘ABSTAIN’**

```
zetacored tx gov vote 1 abstain --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

**VOTE ‘NOWITHVETO’**

```
zetacored tx gov vote 1 NoWithVeto --from wallet --chain-id zetachain_7000-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.1azeta -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.zetacored/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.zetacored/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
zetacored status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
zetacored status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"10000000000000mpx\"/" $HOME/.zetacored/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
zetacored tendermint unsafe-reset-all --keep-addr-book --home $HOME/.zetacored --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable zetacored
```

**DISABLE SERVICE**

```
sudo systemctl disable zetacored
```

**START SERVICE**

```
sudo systemctl start zetacored
```

**STOP SERVICE**

```
sudo systemctl stop zetacored
```

**RESTART SERVICE**

```
sudo systemctl restart zetacored
```

**CHECK SERVICE STATUS**

```
sudo systemctl status zetacored
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u zetacored -f --no-hostname -o cat
```


# Upgrade

v25

Upgrade height: [6812000](https://explorer.coinhunterstr.com/Zetachain/block/6812000) Please don\`t upgrade before the specified height;

### Manul Upgrade

```
cd $HOME
wget -O $HOME/zetacored https://github.com/zeta-chain/node/releases/download/v25.0.0/zetacored-linux-amd64
chmod +x $HOME/zetacored 
sudo mv $HOME/zetacored $(which zetacored)
sudo systemctl restart zetacored && sudo journalctl -u zetacored -f
```

### Auto Upgrade

```
cd $HOME && \
wget -O $HOME/zetacored https://github.com/zeta-chain/node/releases/download/v25.0.0/zetacored-linux-amd64 && \
chmod +x $HOME/zetacored  && \
old_bin_path=$(which zetacored) && \
home_path=$HOME && \
rpc_port=$(grep -m 1 -oP '^laddr = "\K[^"]+' "$HOME/.zetacored/config/config.toml" | cut -d ':' -f 3) && \
[[ -z "$rpc_port" ]] && rpc_port=$(grep -oP 'node = "tcp://[^:]+:\K\d+' "$HOME/.zetacored/config/client.toml") ; \
tmux new -s zetachain-upgrade "sudo bash -c 'curl -s https://raw.githubusercontent.com/CoinHuntersTR/Logo/refs/heads/main/autoupgrade/upgrade.sh | bash -s -- -u \"6812000\" -b zetacored -n \"$HOME/zetacored\" -o \"$old_bin_path\" -h \"$home_path\" -p \"https://explorer.coinhunterstr.com/Zetachain/gov/47\" -r \"$rpc_port\"'"
```


# Mantra Chain

<figure><img src="https://pbs.twimg.com/profile_banners/1268789250272550913/1729693766/1500x500" alt=""><figcaption></figcaption></figure>

MANTRA is a Middle East-focused project securing licensures from Dubai's crypto regulator VARA, targeting the crypto-native community. It aims to fill a gap in the Cosmos ecosystem by creating a chain of regulated digital assets for users valuing regulatory compliance. Built on Cosmos SDK and Tendermint consensus, MANTRA offers a permissionless blockchain for developing Web3 applications in a regulated and compliant environment.

**Offical Links**: [Web ](https://www.mantrachain.io/)| [Twitter ](https://twitter.com/MANTRA_Chain)| [Discord ](https://discord.gg/mantra)| [Telegram](https://t.me/MANTRA_Chain)


# Installation

## Manual Installation

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
```

**INSTALL GO**

```
cd $HOME
VER="1.23.2"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
```

### Set Vars

WALLET yerine istediğiniz bir ismi, MONIKER yerine bir validator adı yazmayı unutmayın.

```
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="test"" >> $HOME/.bash_profile
echo "export MANTRA_CHAIN_ID="mantra-1"" >> $HOME/.bash_profile
echo "export MANTRA_PORT="22"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O mantrachaind-1.0.2-linux-amd64.tar.gz https://github.com/MANTRA-Chain/mantrachain/releases/download/v1.0.2/mantrachaind-1.0.2-linux-amd64.tar.gz
tar -xzf mantrachaind-1.0.2-linux-amd64.tar.gz
rm $HOME/mantrachaind-1.0.2-linux-amd64.tar.gz
chmod +x $HOME/mantrachaind
sudo mv $HOME/mantrachaind $HOME/go/bin/mantrachaind
```

#### Config init app

```
mantrachaind config node tcp://localhost:${MANTRA_PORT}657
mantrachaind config keyring-backend os
mantrachaind config chain-id mantra-1
mantrachaind init "test" --chain-id mantra-1
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.mantrachain/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/mantra/mainnet/genesis.json
wget -O $HOME/.mantrachain/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/mantra/mainnet/addrbook.json
```

#### Set seeds and peers

```
# set seeds and peers
URL="https://mantra-dukong-rpc.chainad.org/net_info"
response=$(curl -s $URL)
PEERS=$(echo $response | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):" + (.node_info.listen_addr | capture("(?<ip>.+):(?<port>[0-9]+)$").port)' | paste -sd "," -)
echo "PEERS=\"$PEERS\""

# Update the persistent_peers in the config.toml file
sed -i -e "s|^seeds *=.*|seeds = \"$SEEDS\"|; s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/.mantrachain/config/config.toml
```

#### Config Pruning

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

#### set minimum gas price, enable prometheus and disable indexing

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01uom\"/;" ~/.mantrachain/config/app.toml
external_address=$(wget -qO- eth0.me) 
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.mantrachain/config/config.toml
peers=""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.mantrachain/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.mantrachain/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.mantrachain/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.mantrachain/config/config.toml
```

#### create service file

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

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

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

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable mantrachaind
sudo systemctl restart mantrachaind && sudo journalctl -fu mantrachaind -o cat
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/mainnet/mantra/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.mantrachain
mv $HOME/.mantrachain/priv_validator_state.json.backup $HOME/.mantrachain/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart mantrachaind && sudo journalctl -u mantrachaind -f --no-hostname -o cat
```

## Auto Installation

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/MantraMainnet.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `mantrachaind status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

```
cd $HOME
```

> İlk önce Pubkeyimizi alıyoruz.

```
mantrachaind comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

> Sonrasında validator json dosyası açıyoruz.

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
cat << EOF > ~/validator.json
{   
    "pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"BVTxen+wn6ZgBPUqsgdFDonZ3cr2r+eoYRfF8sTx6kQ="},
    "amount": "10000uom",
    "moniker": "",
    "identity": "",
    "website": "",
    "security": "",
    "details": " Coin Hunters Community ",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart mantrachaind && sudo journalctl -u mantrachaind -f
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
mantrachaind tx staking create-validator ~/validator.json --from wallet --gas="auto" --gas-adjustment 2 --gas-prices="0.01uom"
```


# Service

### API

{% embed url="<https://mantramainnet-api.chainad.org/>" %}

### RPC

{% embed url="<https://mantramainnet-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Mantra>" %}


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
mantrachaind keys add wallet
```

**RECOVER EXISTING KEY**

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

**LIST ALL KEYS**

```
mantrachaind keys list
```

**DELETE KEY**

```
mantrachaind keys delete wallet
```

**EXPORT KEY TO A FILE**

```
mantrachaind keys export wallet
```

**IMPORT KEY FROM A FILE**

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

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
mantrachaind tx staking create-validator \
--amount 1000000uom \
--from $WALLET \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(mantrachaind tendermint show-validator) \
--moniker "test" \
--identity "" \
--website "" \
--details "I love blockchain ❤️" \
--chain-id mantra-1 \
--gas auto --gas-adjustment 1.5 --gas-prices  50uom \
-y
```

**EDIT EXISTING VALIDATOR**

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

**UNJAIL VALIDATOR**

```
mantrachaind tx slashing unjail --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
mantrachaind tx distribution withdraw-all-rewards --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

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

**DELEGATE TOKENS TO YOURSELF**

```
mantrachaind tx staking delegate $(mantrachaind keys show wallet --bech val -a) 1000000uom --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
mantrachaind tx staking delegate <TO_VALOPER_ADDRESS> 1000000uom --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

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

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
mantrachaind tx staking unbond $(mantrachaind keys show wallet --bech val -a) 1000000uom --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**SEND TOKENS TO THE WALLET**

```
mantrachaind tx bank send wallet <TO_WALLET_ADDRESS> 1000000uom --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
mantrachaind query gov proposals
```

**VIEW PROPOSAL BY ID**

```
mantrachaind query gov proposal 1
```

**VOTE ‘YES’**

```
mantrachaind tx gov vote 1 yes --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**VOTE ‘NO’**

```
mantrachaind tx gov vote 1 no --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**VOTE ‘ABSTAIN’**

```
mantrachaind tx gov vote 1 abstain --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

**VOTE ‘NOWITHVETO’**

```
mantrachaind tx gov vote 1 NoWithVeto --from wallet --chain-id mantra-1 --gas-adjustment 1.5 --gas auto --gas-prices  50uom -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.mantrachain/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.mantrachain/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
mantrachaind status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
mantrachaind status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01uom\"/" $HOME/.mantrachain/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
mantrachaind tendermint unsafe-reset-all --keep-addr-book --home $HOME/mantrachaind --keep-addr-book
```

**REMOVE NODE**

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

```
cd $HOME
sudo systemctl stop mantrachaind
sudo systemctl disable mantrachaind
sudo rm /etc/systemd/system/mantrachaind
sudo systemctl daemon-reload
rm -f $(which mantrachaind)
rm -rf $HOME/.mantrachain
```

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable mantrachaind
```

**DISABLE SERVICE**

```
sudo systemctl disable mantrachaind
```

**START SERVICE**

```
sudo systemctl start mantrachaind
```

**STOP SERVICE**

```
sudo systemctl stop mantrachaind
```

**RESTART SERVICE**

```
sudo systemctl restart mantrachaind
```

**CHECK SERVICE STATUS**

```
sudo systemctl status mantrachaind
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u mantrachaind -f --no-hostname -o cat
```


# Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/mainnet/mantra/snapshot_latest.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.mantrachain
mv $HOME/.mantrachain/priv_validator_state.json.backup $HOME/.mantrachain/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart mantrachaind && sudo journalctl -u mantrachaind -f --no-hostname -o cat
```


# Rivalz

<figure><img src="https://pbs.twimg.com/profile_banners/1759931928990363648/1716540447/1500x500" alt=""><figcaption></figcaption></figure>

Rivalz Network is developing an AI Intel infrastructure designed to advance the agentic economy. By utilizing a dual-chain system built on Dymension and Arbitrum, Rivalz offers decentralized data provenance, scalable storage with AI-grade latency, and a real-time data coordination service. This infrastructure ensures high-quality, verified, and private data for AI, enabling the next generation of autonomous systems. Rivalz is set to transform AI development by providing the essential tools for secure and reliable data management.

**Offical Links**: [Web ](https://rivalz.ai/)| [X ](https://x.com/Rivalz_AI)| [Discord ](https://discord.com/invite/rivalzai)


# zNode

### Installion

| CPU   | RAM  | SSD     |
| ----- | ---- | ------- |
| 4 CPU | 8 GB | 160 SSD |

Sitem güncellemelerini yapalım.

```
sudo apt update && sudo apt upgrade -y
```

Node js kurulumu

```
# Node.js repository ekleme
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# Node.js kurulumu
sudo apt install -y nodejs

# Versiyon kontrolü
node --version
npm --version
```

Gerekli olan paketleri yükleyelim.

```
sudo apt install -y build-essential
```

zNode Kurulumu

Öncelikle bir tane screen oluşturalım.

```
sudo apt install screen
```

```
screen -S znode
```

> Screen içine tekrar girmek için `screen -r znode` yazarak girebilirsiniz. Screen içinden çıkmak içinde CTRL A ve D tuşlarına basarak çıkabilirsiniz. CTRL C kullanmayın!

```
npm i -g rivalz-znode-cli
```

Version kontrolü için

```
znode -V
```

zNode çalıştırmak için;

```
znode run
```

çalıştırdıktan sonra bize NODE ID gerekecek, bunun için;

```
znode show-node-id
```

yazıyoruz ve aşağıdaki gibi bir çıktı alıyoruz.

<figure><img src="https://docs.rivalz.ai/~gitbook/image?url=https%3A%2F%2F3708766619-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FtEAVMQUfOtXSxHdeCogt%252Fuploads%252FZ3IJCaKtBUgWwAeRQAHk%252Fphoto_update.jpg%3Falt%3Dmedia%26token%3D1da19173-b940-4135-afa5-7dffdbd153a6&#x26;width=768&#x26;dpr=1&#x26;quality=100&#x26;sign=5be938a6&#x26;sv=1" alt=""><figcaption></figcaption></figure>

bu aldığımız ID adresini sitede aldığımız zNode NFT'lere tanımlayacağız. Onun için

BURADAN : [LINK](https://znode.rivalz.ai/licenses) siteye gidip,

Cüzdanımızı bağlıyoruz. Delegate tuşuna basıyoruz. Sunucudan aldığımız Node ID üst bölüme yazıyoruz. Alt kısıma da çalıştıracağımız node adedini yazıyoruz.

<figure><img src="https://docs.rivalz.ai/~gitbook/image?url=https%3A%2F%2F3708766619-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FtEAVMQUfOtXSxHdeCogt%252Fuploads%252FzljfcUeuvlzl2ctF5jQs%252FScreenshot%25202024-11-16%2520at%25206.54.46%2520PM.png%3Falt%3Dmedia%26token%3D9f0f99f6-968e-42de-8ec6-cce962ed6f3b&#x26;width=768&#x26;dpr=1&#x26;quality=100&#x26;sign=b4f93075&#x26;sv=1" alt=""><figcaption></figcaption></figure>

Bu adımlar bittikten sonra aşağıdaki gibi görünecek;

<figure><img src="https://docs.rivalz.ai/~gitbook/image?url=https%3A%2F%2F3708766619-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FtEAVMQUfOtXSxHdeCogt%252Fuploads%252FQP6ZmC3oB8yTct2q46SO%252FScreenshot%25202024-11-16%2520at%25206.58.31%2520PM.png%3Falt%3Dmedia%26token%3D025a7735-a55b-4c1b-b1f5-23e9497a4a14&#x26;width=768&#x26;dpr=1&#x26;quality=100&#x26;sign=3abb94a&#x26;sv=1" alt=""><figcaption></figcaption></figure>

Sonra sunucuya dönüyoruz ve tekrar çalıştırıyoruz.

```
znode run
```


# Kopi Money

<figure><img src="https://pbs.twimg.com/profile_banners/1686473325902434304/1708853903/1500x500" alt=""><figcaption></figcaption></figure>

**Offical Links:** [Web ](https://kopi.money/)| [X(Twitter](https://x.com/kopi_money)) | [Discord](https://discord.gg/GvnwSwsCcs)


# Installation

## Manual Installation

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
```

**INSTALL GO**

```
cd $HOME
VER="1.23.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
```

### Set Vars

wallet yerine istediğiniz bir ismi, MONIKER yerine bir validator adı yazmayı unutmayın.

```
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="test"" >> $HOME/.bash_profile
echo "export KOPI_CHAIN_ID="luwak-1"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O kopid https://github.com/kopi-money/kopi/releases/download/v0.6.5.2/kopid-v0.6.5.2-linux-amd64-static
chmod +x $HOME/kopid
mv $HOME/kopid $HOME/go/bin/kopid
```

#### Config init app

```
kopid init $MONIKER --chain-id luwak-1
sed -i \
-e 's/timeout_propose = .*/timeout_propose = "300ms"/' \
-e 's/timeout_propose_delta = .*/timeout_propose_delta = "50ms"/' \
-e 's/timeout_prevote = .*/timeout_prevote = "100ms"/' \
-e 's/timeout_prevote_delta = .*/timeout_prevote_delta = "50ms"/' \
-e 's/timeout_precommit = .*/timeout_precommit = "100ms"/' \
-e 's/timeout_precommit_delta = .*/timeout_precommit_delta = "50ms"/' \
-e 's/timeout_commit = .*/timeout_commit = "500ms"/' \
-e 's/^create_empty_blocks = .*/create_empty_blocks = true/' \
-e 's/^create_empty_blocks_interval = .*/create_empty_blocks_interval = "15s"/' \
-e 's/^timeout_broadcast_tx_commit = .*/timeout_broadcast_tx_commit = "151s"/' \
-e 's/skip_timeout_commit = .*/skip_timeout_commit = false/' \
  $HOME/.kopid/config/config.toml
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.kopid/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/kopi/genesis.json
wget -O $HOME/.kopid/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/kopi/addrbook.json
```

#### Set seeds and peers

```
# set seeds and peers
SEEDS="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com:27656"
PEERS="637077d431f618181597706810a65c826524fd74@78.46.19.116:27656,441f307717eeb36d39e9ca62d321f3ad46840300@37.27.15.157:39656,5f16a3a8cdae0e07ca28c8078bc9e92ebb42eb27@95.216.13.161:25656,3a16152ab7ecaf462c43c63c72e63c4068240c28@65.21.17.15:15956,30098d171759fba98c6f8540d812502b9c5baaf9@65.108.109.48:5356,a96649c75f8837d5269077ccf6d34c551fe1a577@88.99.137.138:12656,406dfd6b74324722137c38c8a70dfacee45bac01@95.217.141.114:30756,0ad83ee6a5d06bc3092c6b23992eeb086f4bf84f@65.108.71.137:27656,f3d6e39e68673fcf331c3f2022a104ee9ea4bfdb@135.181.108.189:26656,486a5857fc2f97f0bf0e5f39b833fef733323533@145.239.146.143:27656,7708d7d7d38eb39a98427707a0266e974e9c7f40@162.55.220.37:26656,1fd86135df7c89b7544836b5514ddafe2841c7f5@65.109.26.50:26656,2f53870a9c535760a8dadb2f8bca2e060afa78c5@65.108.78.101:15956,85919e3dcc7eec3b64bfdd87657c4fac307c9d23@65.109.34.145:26656,847c3bf157b57cd5a5ea526e7746705fedced702@88.99.68.249:30756,e4c71cecc9d5bc6c70018ce1121336dffdd68827@162.55.97.180:24656,2903938ef4d9180b9d0c587d80e7b32672b28794@158.220.93.183:26056,91c3cdee22cb37ff587ac124406f4306e3bdc010@27.79.170.158:16656,3e84ee2fbca0ebd65e04f49c226408b79b0bb1b5@185.232.70.33:14656,fb44c70b5eca8dca784cf9203f8b9ffdada79ce4@49.13.118.169:26656,95f0431dbb6ce5c8148fb850f19fcd638497cf0a@152.53.87.42:19656,b00fc59914fc4660febc682859cec73204c8cc61@91.233.183.117:38656,b710f68d569b3b01c09608094e6c748964ee185c@167.235.132.211:26656,7ed647a702eadf80bfb64e6777f5ae965115dcc8@65.109.84.235:19656,5f48de8a84290551311a069e9bcb9e22e9b43124@88.99.149.170:45656,fffe2063424bb7fa3f6bcfdd08259c74c59cea2c@95.217.107.137:12656,d7279900d54b4ee9d90fb74c4c4e50ccbae98908@168.119.11.176:39656,509fed0e38aeb7225b33dd55b399a8f6b30853e8@65.108.234.137:27656,a7b9aa429031d4974ef5e5de9658e35b4a1e41ac@65.108.232.254:12020,03e66d02eeca742ce4f54b4f44437af8aa770016@95.217.204.58:27656,a71ac51dc95e60665a15c25ef73e13d4e048a980@95.217.40.175:12656,463d993a60045e9bb07b4ac6b52558acd4d5d5d9@152.53.64.255:39656,86ab755854b538e9f5dca231f6cc245ecf64ca3d@89.117.56.126:26056,f94b5f1d3862280fbdfa3b6c8bb131dfe7ec179c@37.221.198.137:11656,db5e173a098f0a7d5a2c036cfc8cda1091b38234@65.109.18.169:30756,31952feee9dc72da9d281fd47fae87b9422a3245@188.245.230.165:16656,28ee34839a7a33a6a3d6b99ce169295c9b7c5583@195.201.148.131:16656,cb2c613016927cdfed2947e531146b06b274b88a@116.203.224.246:16656,f26f078bb8176b7451259282f59f38368b4d3797@193.34.213.234:11656,2ed7a597d06c1751300c9ba1eae3496c46a3fde3@62.164.217.63:26656,b85358e035343a3b15e77e1102857dcdaf70053b@51.158.206.31:25256"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" \
       $HOME/.kopid/config/config.toml
```

#### Config Pruning

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

#### set minimum gas price, enable prometheus and disable indexing

```
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0ukopi"|g' $HOME/.kopid/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.kopid/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.kopid/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/kopid.service > /dev/null <<EOF
[Unit]
Description=kopi node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.kopid
ExecStart=$(which kopid) start --home $HOME/.kopid
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable kopid.service
sudo systemctl restart kopid.service && sudo journalctl -fu kopid.service -o cat
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/mainnet/kopi/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.kopid
mv $HOME/.kopid/priv_validator_state.json.backup $HOME/.kopid/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart kopid.service && sudo journalctl -fu kopid.service -o cat
```

## Auto Installation

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/kopi.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `kopid status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

```
cd $HOME
```

> İlk önce Pubkeyimizi alıyoruz.

```
kopid tendermint show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

> Sonrasında validator json dosyası açıyoruz.

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
cat << EOF > ~/validator.json
{   
    "pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"3NyM9VcMXSDPH0yVwqbo9FKhQ3Nt4hEE7iSYb6jnWQU="},
    "amount": "9000000ukopi",
    "moniker": "",
    "identity": "",
    "website": "",
    "security": "",
    "details": " ",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart kopid.service && sudo journalctl -fu kopid.service -o cat
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminalde cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
kopid tx staking create-validator ~/validator.json --from wallet --chain-id luwak-1 --gas="auto" --gas-adjustment 2 --gas-prices="0.01ukopi"
```


# Service

### API

{% embed url="<https://kopi-api.coinhunterstr.com>" %}

### RPC

{% embed url="<https://kopi-rpc.coinhunterstr.com>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Kopi-Money>" %}


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
kopid keys add wallet
```

**RECOVER EXISTING KEY**

```
kopid keys add wallet --recover
```

**LIST ALL KEYS**

```
kopid keys list
```

**DELETE KEY**

```
kopid keys delete wallet
```

**EXPORT KEY TO A FILE**

```
kopid keys export wallet
```

**IMPORT KEY FROM A FILE**

```
kopid keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
kopid tx staking create-validator \
--amount 1000000ukopi \
--from $WALLET \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(kopid tendermint show-validator) \
--moniker "test" \
--identity "" \
--website "" \
--details "I love blockchain ❤️" \
--chain-id luwak-1 \
--gas auto --gas-adjustment 1.5 --gas-prices  0ukopi \
-y
```

**EDIT EXISTING VALIDATOR**

```
kopid tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id luwak-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices  0ukopi \
-y
```

**UNJAIL VALIDATOR**

```
kopid tx slashing unjail --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
kopid tx distribution withdraw-all-rewards --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
kopid tx distribution withdraw-rewards $(kopid keys show wallet --bech val -a) --commission --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**DELEGATE TOKENS TO YOURSELF**

```
kopid tx staking delegate $(kopid keys show wallet --bech val -a) 1000000ukopi --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
kopid tx staking delegate <TO_VALOPER_ADDRESS> 1000000ukopi --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
kopid tx staking redelegate $(kopid keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ukopi --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
kopid tx staking unbond $(kopid keys show wallet --bech val -a) 1000000ukopi --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**SEND TOKENS TO THE WALLET**

```
kopid tx bank send wallet <TO_WALLET_ADDRESS> 1000000ukopi --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
kopid query gov proposals
```

**VIEW PROPOSAL BY ID**

```
kopid query gov proposal 1
```

**VOTE ‘YES’**

```
kopid tx gov vote 1 yes --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**VOTE ‘NO’**

```
kopid tx gov vote 1 no --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**VOTE ‘ABSTAIN’**

```
kopid tx gov vote 1 abstain --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

**VOTE ‘NOWITHVETO’**

```
kopid tx gov vote 1 NoWithVeto --from wallet --chain-id luwak-1 --gas-adjustment 1.5 --gas auto --gas-prices  0ukopi -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.kopid/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.kopid/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
kopid status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
kopid status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01uom\"/" $HOME/.kopid/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
kopid tendermint unsafe-reset-all --keep-addr-book --home $HOME/.kopid --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable kopid.service
```

**DISABLE SERVICE**

```
sudo systemctl disable kopid.service
```

**START SERVICE**

```
sudo systemctl start kopid.service
```

**STOP SERVICE**

```
sudo systemctl stop kopid.service
```

**RESTART SERVICE**

```
sudo systemctl restart kopid.service
```

**CHECK SERVICE STATUS**

```
sudo systemctl status kopid.service
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u kopid.service -f --no-hostname -o cat
```


# Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/mainnet/kopi/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.kopid
mv $HOME/.kopid/priv_validator_state.json.backup $HOME/.kopid/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart kopid.service && sudo journalctl -fu kopid.service -o cat
```


# Upgrade

v7-rc6

### Manul Upgrade

```
cd $HOME
wget -O kopid https://github.com/kopi-money/kopi/releases/download/v7/kopid-v7-linux-amd64
chmod +x $HOME/kopid
sudo mv $HOME/kopid $(which kopid)
```

### libwasmvm.x86\_64.so

```
cd $HOME
wget https://github.com/kopi-money/kopi/releases/download/v7/libwasmvm.x86_64.so
sudo mv libwasmvm.x86_64.so /usr/lib/
sudo ldconfig
```

```
sudo systemctl restart kopid.service
sudo journalctl -u kopid.service -f
```

### v8 Upgrade

Upgrade height: [3930000](https://explorer.coinhunterstr.com/Kopi-Money/block/3930000) Please don\`t upgrade before the specified height;

### Manul Upgrade

```
cd $HOME
wget -O kopid https://github.com/kopi-money/kopi/releases/download/v8/kopid-v8-linux-amd64
chmod +x $HOME/kopid
sudo mv $HOME/kopid $(which kopid)
sudo systemctl restart kopid.service && sudo journalctl -u kopid.service -f
```

### Auto Upgrade

İlk olarak screen açalım `screen -S upgrade` sonrasında alttaki kod bloğunu çalıştıralım.

```
cd $HOME && \
wget -O kopid https://github.com/kopi-money/kopi/releases/download/v8/kopid-v8-linux-amd64 && \
chmod +x $HOME/kopid && \
old_bin_path=$(which kopid) && \
home_path=$HOME && \
rpc_port=$(grep -m 1 -oP '^laddr = "\K[^"]+' "$HOME/.kopid/config/config.toml" | cut -d ':' -f 3) && \
[[ -z "$rpc_port" ]] && rpc_port=$(grep -oP 'node = "tcp://[^:]+:\K\d+' "$HOME/.kopid/config/client.toml") ; \
tmux new -s kopi-upgrade "sudo bash -c 'curl -s https://raw.githubusercontent.com/CoinHuntersTR/Logo/refs/heads/main/autoupgrade/upgrade.sh | bash -s -- -u \"3930000\" -b kopid.service -n \"$HOME/kopid.service\" -o \"$old_bin_path\" -h \"$home_path\" -p \"https://explorer.coinhunterstr.com/Kopi-Money/gov/30\" -r \"$rpc_port\"'"
```


# Story Protocol

<figure><img src="https://pbs.twimg.com/profile_banners/1471420332862885889/1720536628/1500x500" alt=""><figcaption></figcaption></figure>

Story Protocol is a web3 technology that aims to transform storytelling by providing infrastructure for creators to build narrative universes and imaginary worlds using open source principles. It enables the creation, governance, and licensing of intellectual property on the blockchain, allowing for the development of an ecosystem of modular story components that can be remixed and combined in new and innovative ways.

**Offical Links**: [Web](https://linktr.ee/storyprotocol) | [Twitter ](https://x.com/StoryProtocol)[(X)](https://x.com/StoryProtocol) | [Discord](https://discord.gg/storyprotocol)&#x20;


# Story Mainnet


# Installation

#### System Requirements

Linux 22.04 arm64

<table><thead><tr><th width="241">Hardware</th><th>Minimum Requirement</th></tr></thead><tbody><tr><td>CPU</td><td>8 Cores</td></tr><tr><td>RAM</td><td>32 GB</td></tr><tr><td>DISK</td><td>500 SSD</td></tr></tbody></table>

#### Offical Doc: <https://docs.story.foundation/docs/node-setup-mainnet>

#### Auto Install

While setting up Story Protocol, you will be asked for your **Moniker** name and the **port number** you want to use. After entering this information, you can successfully set up the Story Protocol  Devoloper Mainnet network.

```bash
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/story.sh)
```

#### Check Logs for story-geth and story

```
sudo journalctl -u story-geth -f -o cat
sudo journalctl -u story -f -o cat
```

#### Synchronization Check

To check if your synchronization is complete, you can enter the following command. When entering the command, don't forget to replace '\<portnumber>' with the port number you provided during setup. If you receive a 'False' output, you can proceed with the next steps.

```
curl localhost:<portnumber>657/status | jq
```

#### Export Wallet

```
story validator export --export-evm-key
```

Get wallet key and import to Metamask wallet&#x20;

```
sudo nano ~/.story/story/config/private_key.txt
```

Import the private key of your validator wallet into your MetaMask wallet. min delegate 1024 IP

#### Register validator

```
story validator create \
--stake 1024000000000000000000 \
--moniker "" \
--chain-id 1514 \
--private-key $(cat $HOME/.story/story/config/private_key.txt | grep "PRIVATE_KEY" | awk -F'=' '{print $2}') \
--commission-rate 800 \
--max-commission-rate 5000 \
--max-commission-change-rate 500 \
--unlocked=false
```


# Snapshots

updated every 24h.

```
# install dependencies, and disable statesync to avoid sync issues
sudo apt install curl tmux jq lz4 unzip -y
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1false|" $HOME/.story/story/config/config.toml

# stop node and backup priv_validator_state.json
sudo systemctl stop story story-geth
cp $HOME/.story/story/data/priv_validator_state.json $HOME/.story/story/priv_validator_state.json.backup

# remove old data and unpack Story snapshot
rm -rf $HOME/.story/story/data
curl https://snapshots.coinhunterstr.com/mainnet/story-dev/story/story_snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.story/story

# restore priv_validator_state.json
mv $HOME/.story/story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json

# delete geth data and unpack Geth snapshot
rm -rf $HOME/.story/geth/story/geth/chaindata
curl https://snapshots.coinhunterstr.com/mainnet/story-dev/story-geth/story_geth_snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.story/geth/story/geth

# restart node and check logs
sudo systemctl restart story story-geth
sudo journalctl -u story-geth -u story -f
```


# Service

**Seeds;**

```
SEEDS="c1d973eea1b2c637777ab32783b3d37f2b52ba36@b1.storyrpc.io:26656,78db197dbbffb97a5c851b87b1df4cc51e99d4f9@b2.storyrpc.io:26656"
```

**Peers;**

```
PEERS="55816da1005f3aa89af17bf545a8296058e33e44@164.132.247.253:56356,b1eb613c9026d8643cca4630e4935559bf303d7d@35.211.121.91:26656,c5f37a1293c2baf12e36a0d0f34d1371b1bb576a@35.207.10.148:26656,55f2ea5e1fc7a17000ce7d5adf8ddf7f4c61e4d4@35.207.42.225:26656,155bcba7d521ced31042bd99100841c6cf057f36@35.207.25.245:26656,c45503752041d747c55cad8e9b1ef9896fb1dcf8@141.94.155.97:26656,22684dfc5f64dc355a1c68d0e4f7472d208caef9@95.216.243.177:26656,68c5b1eae074c5b556bf9d32668a9b152ce12b09@35.211.203.203:26656,4761ef729f12b80b3652edd26bd45734b5ff4515@51.15.15.160:26656,1b69b89a871cb232300c8a980bfa1584ec1d8a3e@104.196.19.53:26656,39a4b17027b5eab2968a4e1b974bd0bee6649443@35.237.82.235:26656,de39ffa62ec29003a892218e50e79935d89f1652@34.139.96.9:26656,cd132ca06b578cf4fe2e84b5ba2b49d6eb59944a@35.231.252.72:26656,c0632a90716ec344231f242aba6632a709e25f3b@91.72.69.62:26686,18cdc7c13b2e68a9d97828c1121fc32189ea1767@152.53.125.195:26656,b72e4acda44c0dd281f3a2c3b6c0d31473669271@3.35.213.247:26656,8ede5870a48d1f8edca2568f7db454ba5334e54f@129.213.202.126:26656,b077a58e83f1614b49a66acab786632a97d4ba06@132.145.196.86:26656,8d2fd865d0d1b7537179aa725d4387ef53869b40@47.239.112.90:26656,a13ad94d35632c00f040db03143a179d65870c4a@129.213.125.155:26656,750f7f91e43489da2843a2f207bb3b3d1a9a8ec7@13.52.39.192:26656,97f67874e67693cc20944457e4ef86dc5483c841@152.70.195.0:26656,3ad3cfd89e2a39ce52c23dfb28cf2a732b88d781@150.136.221.45:26656"
```

**Addrbook:**

```
https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/story/addrbook.json
```


# Upgrade

## STORY-GETH UPGRADE

### Geth v1.2.0

```
sudo systemctl stop story geth
wget -O $(which geth) https://github.com/piplabs/story-geth/releases/download/v1.2.0/geth-linux-arm64
chmod +x $(which geth)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### Geth v1.1.2

```
sudo systemctl stop story geth
wget -O $(which geth) https://github.com/piplabs/story-geth/releases/download/v1.1.2/geth-linux-arm64
chmod +x $(which geth)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### story-geth upgraded to v1.0.2

```
sudo systemctl stop story story-geth
cd $HOME
wget https://github.com/piplabs/story-geth/releases/download/v1.0.2/geth-linux-arm64
sudo mv ./geth-linux-arm64 story-geth
sudo chmod +x story-geth
sudo mv ./story-geth $HOME/go/bin/story-geth

sudo systemctl restart story-geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u story-geth -f
```

## STORY UPGRADE

### Story v1.4.2

```
sudo systemctl stop story
wget -O $(which story) https://github.com/piplabs/story/releases/download/v1.4.2/story-linux-arm64
chmod +x $(which story)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### Story v1.3.3

```
sudo systemctl stop story
wget -O $(which story) https://github.com/piplabs/story/releases/download/v1.3.3/story-linux-arm64
chmod +x $(which story)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### Story v1.3.2

```
sudo systemctl stop story
wget -O $(which story) https://github.com/piplabs/story/releases/download/v1.3.2/story-linux-arm64
chmod +x $(which story)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### Story v1.3.1

```
sudo systemctl stop story
wget -O $(which story) https://github.com/piplabs/story/releases/download/v1.3.1/story-linux-arm64
chmod +x $(which story)
sudo systemctl restart geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u geth -f
```

### Story v1.2.1

```
sudo systemctl stop story
wget -O $(which story) https://github.com/piplabs/story/releases/download/v1.2.1/story-linux-arm64
chmod +x $(which story)
sudo systemctl restart story-geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u story-geth -f
```

### Story v1.2.0

```
# Servisi durdur
sudo systemctl stop story

# Yeni binary'yi indir
wget https://github.com/piplabs/story/releases/download/v1.2.0/story-linux-arm64
sudo mv story-linux-arm64 story
sudo chmod +x story
sudo mv ./story $HOME/go/bin/story

# Servisi tekrar başlat
sudo systemctl restart story-geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u story-geth -f
```

### Story v1.1.3

```
sudo systemctl stop story

wget http://snapshots.coinhunterstr.com/site/story-linux-arm64-1.1.3-38313e8 -O story.tar

mkdir -p story_extract
tar -xf story.tar -C story_extract

chmod +x /root/story_extract/story-linux-arm64-1.1.3-38313e8/story
mv /root/story_extract/story-linux-arm64-1.1.3-38313e8/story $HOME/go/bin/story

sudo systemctl restart story

story version


rm -rf story.tar story_extract

sudo systemctl restart story-geth && sleep 5 && sudo systemctl restart story
journalctl -u story -u story-geth -f
```

### Story v1.1.1

```
# Servisi durdur
sudo systemctl stop story

# Yeni binary'yi indir
wget https://github.com/piplabs/story/releases/download/v1.1.1/story-linux-arm64
sudo mv story-linux-arm64 story
sudo chmod +x story
sudo mv ./story $HOME/go/bin/story

# Servisi tekrar başlat
sudo systemctl start story
```


# Side Protocol

Side Protocol is a distributed mesh liquidity network system that aims to decentralize liquidity between diverse blockchain networks in a bridgeless manner while maintaining interconnectivity. At its core lies SIDE, a robust EVM-compatible layer-1 infrastructure responsible for fostering interconnectivity and ensuring sufficient liquidity between different blockchains. SIDE is a developer-centric layer-1 blockchain built to empower innovation with result-driven incentives.

**Offical Links**: [Web](https://side.one/) | [Twitter ](https://twitter.com/SideProtocol)| [Discord ](https://discord.gg/sideprotocol)


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>4 vCPU</td><td>8 GB RAM</td><td>160 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
sudo apt-get install -y libssl-dev
```

**INSTALL GO**

```
ver="1.22.3" 
cd $HOME 
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 
rm "go$ver.linux-amd64.tar.gz"

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile    
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
rm -rf side
git clone https://github.com/sideprotocol/side.git
cd side
git checkout v1.0.0
make install
```

#### Set Vars

> `Moniker` yerine validator adınızı ekliyoruz.

```
sided config node tcp://localhost:26657
sided config keyring-backend os
sided config chain-id sidechain-1
sided init "Moniker" --chain-id sidechain-1
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.side/config/genesis.json https://server-2.itrocket.net/mainnet/side/genesis.json
wget -O $HOME/.side/config/addrbook.json  https://server-2.itrocket.net/mainnet/side/addrbook.json
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.side/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.side/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.side/config/app.toml

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.005uside"|g' $HOME/.side/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.side/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.side/config/config.toml
```

#### Set seeds and peers

```
SEEDS="9355d3fe49475485444f64db4745dd8a970d7a72@side-mainnet-seed.itrocket.net:18656,a1c99cc234a524e53db8eb44e0c7df7115edd1b4@rpc.side.nodestake.org:666,ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com:26356"
PEERS="cfc22ac13d20a6f3bd394a8a2dba787bc10c1b32@side-mainnet-peer.itrocket.net:14656,973538e4eb39bac08c9675830239a6358a1e442c@195.201.59.216:26656,8f5a8d7d6c29cd24bc2f844494c75d5044913b53@176.9.124.52:26356,db1df6aed42324c975209edceeba0daf6e8b0bab@160.202.131.55:24656,fc4192d1f80d783dec495abe4101169183d94190@8.52.153.92:14656,4192e340dc7a5e297143e271daf6b52e9e6aea0d@195.14.6.192:26656,24224badba137eb775916d9d5c4ff8f3ceff874b@[2a03:cfc0:8000:13::b910:27be]:11056,05cb5856192b389cff8c3851e0d30ae6a400187d@143.198.41.115:26656,75da8087bdc75ba0eed3c20a0c7a055721ecdb00@46.232.248.39:18656,b34c1431376443769554d89a3737ad65015a16a7@91.134.9.162:26356"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.side/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/sided.service > /dev/null <<EOF
[Unit]
Description=Side node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.side
ExecStart=$(which sided) start --home $HOME/.side
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

<pre><code>sudo systemctl daemon-reload
sudo systemctl enable sided
<strong>sudo systemctl restart sided &#x26;&#x26; sudo journalctl -u sided -fo cat
</strong></code></pre>

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/side.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `sided status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

```
cd $HOME
```

> İlk önce Pubkeyimizi alıyoruz.

```
sunrised comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

> Sonrasında validator json dosyası açıyoruz.

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
cat << EOF > ~/.side/config/validator.json
{
	"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"BCDw/cq+7VxwNU/UIDc08JaYXru0Wa8SPoamzYSHfY8="},
	"amount": "1000000uside",
	"moniker": "",
	"identity": "",
	"website": "",
	"security": "",
	"details": "",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart sided && sudo journalctl -u sided -fo cat
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
sided tx staking create-validator ~/.side/config/validator.json --from wallet --chain-id sidechain-1 --fees 100000uside
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```markdown
sudo systemctl stop sided
cp $HOME/.side/data/priv_validator_state.json $HOME/.side/priv_validator_state.json.backup
rm -rf $HOME/.side/data
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```markdown
curl -L https://snapshots.coinhunterstr.com/mainnet/side/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.side
mv $HOME/.side/priv_validator_state.json.backup $HOME/.side/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```markdown
sudo systemctl restart sided && sudo journalctl -u sided -fo cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
sided keys add wallet --key-type="taproot"
```

**RECOVER EXISTING KEY**

```
sided keys add wallet --recover --key-type="taproot"
```

**LIST ALL KEYS**

```
sided keys list
```

**DELETE KEY**

```
sided keys delete wallet
```

**EXPORT KEY TO A FILE**

```
sided keys export wallet
```

**IMPORT KEY FROM A FILE**

```
sided keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
cat << EOF > ~/.side/config/validator.json
{
	"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"BCDw/cq+7VxwNU/UIDc08JaYXru0Wa8SPoamzYSHfY8="},
	"amount": "1000000uside",
	"moniker": "",
	"identity": "",
	"website": "",
	"security": "",
	"details": "",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
EOF
```

```
sided tx staking create-validator ~/.side/config/validator.json --from wallet --chain-id sidechain-1 --fees 100000uside
```

**UNJAIL VALIDATOR**

```
sided tx slashing unjail --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
sided tx distribution withdraw-all-rewards --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
sided tx distribution withdraw-rewards $(sided keys show wallet --bech val -a) --commission --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**DELEGATE TOKENS TO YOURSELF**

```
sided tx staking delegate $(sided keys show wallet --bech val -a) 1000000uside --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
sided tx staking delegate <TO_VALOPER_ADDRESS> 1000000uside --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
sided tx staking redelegate $(sided keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uside --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
sided tx staking unbond $(sided keys show wallet --bech val -a) 1000000uside --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**SEND TOKENS TO THE WALLET**

```
sided tx bank send wallet <TO_WALLET_ADDRESS> 1000000uside --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
sided query gov proposals
```

**VIEW PROPOSAL BY ID**

```
sided query gov proposal 1
```

**VOTE ‘YES’**

```
sided tx gov vote 1 yes --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**VOTE ‘NO’**

```
sided tx gov vote 1 no --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**VOTE ‘ABSTAIN’**

```
sided tx gov vote 1 abstain --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

**VOTE ‘NOWITHVETO’**

```
sided tx gov vote 1 NoWithVeto --from wallet --chain-id sidechain-1 --gas-adjustment 1.4 --gas auto --gas-prices 100000uside -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.side/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.side/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
sided status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
sided status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"100000uside\"/" $HOME/.side/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
sided tendermint unsafe-reset-all --keep-addr-book --home $HOME/.side --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable sided
```

**DISABLE SERVICE**

```
sudo systemctl disable sided
```

**START SERVICE**

```
sudo systemctl start sided
```

**STOP SERVICE**

```
sudo systemctl stop sided
```

**RESTART SERVICE**

```
sudo systemctl restart sided
```

**CHECK SERVICE STATUS**

```
sudo systemctl status sided
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u sided -f --no-hostname -o cat
```


# Fuel Network

<figure><img src="https://pbs.twimg.com/profile_banners/1180983398657073158/1729077358/1500x500" alt=""><figcaption></figcaption></figure>

Fuel is a layer-2 scalability technology designed to provide the world's fastest modular execution layer. It is built as a verifiable computation system for the modular blockchain stack, delivering maximum security, flexible throughput, and a superior developer experience. Fuel's technology stack consists of parallel transaction execution, the Fuel Virtual Machine, and a powerful developer experience. It was the first optimistic rollup on mainnet Ethereum, and its goal is to empower blockchain developers with the richest features and to build the engine for the autonomous future.

**Offical Links**: [Web](https://fuel.network/) | [Twitter](https://x.com/fuel_network) | [Discord](https://discord.com/invite/xfpK4Pe)&#x20;


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>8 Cores</td><td>16GB RAM</td><td>500 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```
ver="1.22.3" 
cd $HOME 
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 
rm "go$ver.linux-amd64.tar.gz"

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile    
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O fuelsequencerd https://github.com/FuelLabs/fuel-sequencer-deployments/releases/download/seq-mainnet-1.2-improved-sidecar/fuelsequencerd-seq-mainnet-1.2-improved-sidecar-linux-amd64
chmod +x fuelsequencerd
mv ~/fuelsequencerd ~/go/bin/
```

#### Set Vars

> `Moniker` yerine validator adınızı ekliyoruz.

```
fuelsequencerd init $MONIKER --chain-id seq-mainnet-1
sed -i \
-e "s/chain-id = .*/chain-id = \"seq-mainnet-1\"/" \
-e "s/keyring-backend = .*/keyring-backend = \"os\"/" \
-e "s/node = .*/node = \"tcp:\/\/localhost:26657\"/" $HOME/.fuelsequencer/config/client.toml
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.fuelsequencer/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/fuel/genesis.json
wget -O $HOME/.fuelsequencer/config/addrbook.json  https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/fuel/addrbook.json
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.fuelsequencer/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.fuelsequencer/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.fuelsequencer/config/app.toml

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "10fuel"|g' $HOME/.fuelsequencer/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.fuelsequencer/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.fuelsequencer/config/config.toml
```

#### Set seeds and peers

```
SEEDS="dc7b01b0379f660fb59223b9862cef0db11f14d9@152.53.121.42:19656,7e4d77ee264919f0e6dc4fde226278020418ea46@fuel-mainnet-seed.itrocket.net:63656"
PEERS="b3052ca64950786499d56ade68593a555e383ad4@fuel-mainnet-peer.itrocket.net:63656,d48507eb9c8fc6cab278da8b64548496134562dc@141.95.11.200:26656,9584099276b4baf2d6fdf07d4eb9dec40564bba5@185.107.68.171:26656,a419a5e73a3ac2e8ed81841b7a0f7ba6fb2cf78a@82.223.5.79:26656,bbb5f1939278b75efbc213067cc8226591353fc4@65.108.133.32:26656,cb6ae22e1e89d029c55f2cb400b0caa19cbe5523@38.132.56.24:32680,7198cf1a7a7da216444bf9e6fc5b43fd123e8a0a@57.129.38.180:58456,5d75cca90b178f2b782ce57b0067c0ec8512354c@65.109.70.89:41656,0d7efe1a993e548acccba23358de50a87f5ac841@176.103.222.150:26656,9eb2801d1dde4b9ff0be3427092cc2548e973d71@176.103.222.162:26656,40369a07f904d01262141353b5b8fcc8fae2b9da@65.109.53.189:26656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" \
       $HOME/.fuelsequencer/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/fuelsequencerd.service > /dev/null <<EOF
[Unit]
Description=Fuel node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.fuelsequencer
ExecStart=$(which fuelsequencerd) start --home $HOME/.fuelsequencer
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable fuelsequencerd
sudo systemctl restart fuelsequencerd && sudo journalctl -u fuelsequencerd -fo cat
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/fuel.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `fuelsequencerd status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

```
cd $HOME
```

> İlk önce Pubkeyimizi alıyoruz.

```
fuelsequencerd comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

> Sonrasında validator json dosyası açıyoruz.

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
cat << EOF > ~/.fuelsequencer/config/validator.json
{
	"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"BCDw/cq+7VxwNU/UIDc08JaYXru0Wa8SPoamzYSHfY8="},
	"amount": "1000000000fuel",
	"moniker": "",
	"identity": "",
	"website": "",
	"security": "",
	"details": "",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart fuelsequencerd && sudo journalctl -u fuelsequencerd -fo cat
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
fuelsequencerd tx staking create-validator /root/.fuelsequencer/config/validator.json --from wallet --chain-id seq-mainnet-1 --fees 3000000fuel -y
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```markdown
sudo systemctl stop fuelsequencerd
cp $HOME/.fuelsequencer/data/priv_validator_state.json $HOME/.fuelsequencer/priv_validator_state.json.backup
rm -rf $HOME/.fuelsequencer/data
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```markdown
curl https://snapshots.coinhunterstr.com/mainnet/fuel/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.fuelsequencer
mv $HOME/.fuelsequencer/priv_validator_state.json.backup $HOME/.fuelsequencer/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```markdown
sudo systemctl restart fuelsequencerd && sudo journalctl -fu fuelsequencerd -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
fuelsequencerd keys add wallet
```

**RECOVER EXISTING KEY**

```
fuelsequencerd keys add wallet --recover
```

**LIST ALL KEYS**

```
fuelsequencerd keys list
```

**DELETE KEY**

```
fuelsequencerd keys delete wallet
```

**EXPORT KEY TO A FILE**

```
fuelsequencerd keys export wallet
```

**IMPORT KEY FROM A FILE**

```
fuelsequencerd keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
cat << EOF > ~/.fuelsequencer/config/validator.json
{
	"pubkey": ,
	"amount": "1000000fuel",
	"moniker": "",
	"identity": "",
	"website": "",
	"security": "",
	"details": "",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
EOF
```

```
fuelsequencerd tx staking create-validator ~/.fuelsequencer/config/validator.json --from wallet --chain-id seq-mainnet-1 --fees 3000000fuel
```

**UNJAIL VALIDATOR**

```
fuelsequencerd tx slashing unjail --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
fuelsequencerd tx distribution withdraw-all-rewards --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
fuelsequencerd tx distribution withdraw-rewards $(fuelsequencerd keys show wallet --bech val -a) --commission --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**DELEGATE TOKENS TO YOURSELF**

```
fuelsequencerd tx staking delegate $(fuelsequencerd keys show wallet --bech val -a) 1000000fuel --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
fuelsequencerd tx staking delegate <TO_VALOPER_ADDRESS> 1000000fuel --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
fuelsequencerd tx staking redelegate $(fuelsequencerd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000fuel --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
fuelsequencerd tx staking unbond $(fuelsequencerd keys show wallet --bech val -a) 1000000fuel --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**SEND TOKENS TO THE WALLET**

```
fuelsequencerd tx bank send wallet <TO_WALLET_ADDRESS> 1000000fuel --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
fuelsequencerd query gov proposals
```

**VIEW PROPOSAL BY ID**

```
fuelsequencerd query gov proposal 1
```

**VOTE ‘YES’**

```
fuelsequencerd tx gov vote 1 yes --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**VOTE ‘NO’**

```
fuelsequencerd tx gov vote 1 no --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**VOTE ‘ABSTAIN’**

```
fuelsequencerd tx gov vote 1 abstain --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

**VOTE ‘NOWITHVETO’**

```
fuelsequencerd tx gov vote 1 NoWithVeto --from wallet --chain-id seq-mainnet-1 --gas-adjustment 1.4 --gas auto --gas-prices 3000000fuel -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.fuelsequencer/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.fuelsequencer/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
fuelsequencerd status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
fuelsequencerd status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"3000000fuel\"/" $HOME/.fuelsequencer/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
fuelsequencerd tendermint unsafe-reset-all --keep-addr-book --home $HOME/.fuelsequencer --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable fuelsequencerd
```

**DISABLE SERVICE**

```
sudo systemctl disable fuelsequencerd
```

**START SERVICE**

```
sudo systemctl start fuelsequencerd
```

**STOP SERVICE**

```
sudo systemctl stop fuelsequencerd
```

**RESTART SERVICE**

```
sudo systemctl restart fuelsequencerd
```

**CHECK SERVICE STATUS**

```
sudo systemctl status fuelsequencerd
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u fuelsequencerd -f --no-hostname -o cat
```


# Testnet

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FswyWd4VW85hOMXf7VpvK%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-05-14%20143318.png?alt=media&amp;token=3c1b9bd1-fd43-4a06-8752-1ad10546407e" alt=""><figcaption></figcaption></figure>

### CoinHunters <a href="#cryptonodeid" id="cryptonodeid"></a>

#### Who are we ? <a href="#who-are-we" id="who-are-we"></a>

We're a community who like to share our work and educate people who don't know about how to do it but really interested in it.

**If you have any questions, please feel free to contact us**&#x20;

**Offical Links :** [Twitter](https://twitter.com/CoinHuntersTR) | [Youtube](https://www.youtube.com/@CoinHuntersTR) | [Web ](https://coinhunterstr.com/)| [Nodes](https://nodes.coinhunterstr.com/) | [Telegram ](https://t.me/CoinHuntersTR)| [Explorer](https://explorer.coinhunterstr.com/)


# 0G Labs

Chain ID: zgtendermint\_9000-1

<figure><img src="https://pbs.twimg.com/profile_banners/1722248937564983296/1710957328/1500x500" alt=""><figcaption></figcaption></figure>

0G.ai introduces the first modular AI chain, aiming to revolutionize AI dApps with its infinitely scalable, programmable Data Availability (DA) layer. It offers a unique environment for friction-free development, leveraging Web3 modular infrastructure and advanced tools to unlock Web3's full potential.

**Offical Links**: [Web](https://0g.ai/) | [Twitter ](https://twitter.com/0G_labs)| [Discord ](https://discord.gg/0glabs)| [Telegram](https://t.me/web3_0glabs)


# Service

### API

{% embed url="<https://og-api.chainad.org/>" %}

### RPC

{% embed url="<https://og-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/0G%20Testnet>" %}

### Faucet

{% embed url="<https://faucet.0g.ai/>" %}


# Installation

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```
cd $HOME
VER="1.21.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
```

### Set Vars

WALLET yerine istediğiniz bir ismi, MONIKER yerine bir validator adı yazmayı unutmayın.&#x20;

```
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="test"" >> $HOME/.bash_profile
echo "export OG_CHAIN_ID="zgtendermint_9000-1"" >> $HOME/.bash_profile
echo "export OG_PORT="47"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
rm -rf 0g-evmos
git clone https://github.com/0glabs/0g-evmos.git
cd 0g-evmos
git checkout v1.0.0-testnet
make build
mv $HOME/0g-evmos/build/evmosd $HOME/go/bin/
```

#### Config init app

```
evmosd config node tcp://localhost:${OG_PORT}657
evmosd config keyring-backend os
evmosd config chain-id zgtendermint_9000-1
evmosd init "test" --chain-id zgtendermint_9000-1
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.evmosd/config/genesis.json https://testnet-files.itrocket.net/og/genesis.json
wget -O $HOME/.evmosd/config/addrbook.json https://testnet-files.itrocket.net/og/addrbook.json
```

#### Set seeds and peers

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.evmosd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.evmosd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.evmosd/config/app.toml
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.mantrachain/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.mantrachain/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.mantrachain/config/app.toml
```

#### set minimum gas price, enable prometheus and disable indexing

```
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0agnet"|g' $HOME/.evmosd/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.evmosd/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.evmosd/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/evmosd.service > /dev/null <<EOF
[Unit]
Description=Og node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.evmosd
ExecStart=$(which evmosd) start --home $HOME/.evmosd
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### Snapshot

```
evmosd tendermint unsafe-reset-all --home $HOME/.evmosd
if curl -s --head curl https://testnet-files.itrocket.net/og/snap_og.tar.lz4 | head -n 1 | grep "200" > /dev/null; then
  curl https://testnet-files.itrocket.net/og/snap_og.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.evmosd
    else
  echo no have snap
fi
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable evmosd
sudo systemctl restart evmosd && sudo journalctl -u evmosd -f
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
evmosd keys add wallet
```

**RECOVER EXISTING KEY**

```
evmosd keys add wallet --recover
```

**LIST ALL KEYS**

```
evmosd keys list
```

**DELETE KEY**

```
evmosd keys delete wallet
```

**EXPORT KEY TO A FILE**

```
evmosd keys export wallet
```

**IMPORT KEY FROM A FILE**

```
evmosd keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
evmosd tx staking create-validator \
--amount 1000000aevmos \
--pubkey $(evmosd tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id zgtendermint_9000-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices 99999aevmos \
-y
```

**EDIT EXISTING VALIDATOR**

```
evmosd tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id zgtendermint_9000-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices 99999aevmos \
-y
```

**UNJAIL VALIDATOR**

```
evmosd tx slashing unjail --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
evmosd tx distribution withdraw-all-rewards --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
evmosd tx distribution withdraw-rewards $(evmosd keys show wallet --bech val -a) --commission --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**DELEGATE TOKENS TO YOURSELF**

```
evmosd tx staking delegate $(evmosd keys show wallet --bech val -a) 1000000aevmos --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
evmosd tx staking delegate <TO_VALOPER_ADDRESS> 1000000udym --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
evmosd tx staking redelegate $(evmosd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000aevmos --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
evmosd tx staking unbond $(evmosd keys show wallet --bech val -a) 1000000aevmos --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**SEND TOKENS TO THE WALLET**

```
evmosd tx bank send wallet <TO_WALLET_ADDRESS> 1000000aevmos --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
evmosd query gov proposals
```

**VIEW PROPOSAL BY ID**

```
evmosd query gov proposal 1
```

**VOTE ‘YES’**

```
evmosd tx gov vote 1 yes --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**VOTE ‘NO’**

```
evmosd tx gov vote 1 no --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**VOTE ‘ABSTAIN’**

```
evmosd tx gov vote 1 abstain --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

**VOTE ‘NOWITHVETO’**

```
evmosd tx gov vote 1 NoWithVeto --from wallet --chain-id zgtendermint_9000-1 --gas-adjustment 1.5 --gas auto --gas-prices 99999aevmos -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.evmosd/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.evmosd/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
evmosd status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
evmosd status 2>&1 | jq .SyncInfo
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"20000000000udym\"/" $HOME/.evmosd/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
evmosd tendermint unsafe-reset-all --keep-addr-book --home $HOME/.evmosd --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable evmosd
```

**DISABLE SERVICE**

```
sudo systemctl disable evmosd
```

**START SERVICE**

```
sudo systemctl start evmosd
```

**STOP SERVICE**

```
sudo systemctl stop evmosd
```

**RESTART SERVICE**

```
sudo systemctl restart evmosd
```

**CHECK SERVICE STATUS**

```
sudo systemctl status evmosd
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u evmosd -f --no-hostname -o cat
```


# 0G-Newton

<figure><img src="https://pbs.twimg.com/media/GLbT4Nfb0AA0g0r?format=jpg&#x26;name=large" alt=""><figcaption></figcaption></figure>

0G Labs'in ödüllü Newton testneti için başvurular başladı. Ayrıntılar için [BURADAKI](https://blog.0g.ai/blog/testnet-node-operator-and-validator-application-guide) yazıyı okuyabilirsiniz.&#x20;

Başvuru formuna [BURADAN ](https://docs.google.com/forms/d/e/1FAIpQLScsa1lpn43F7XAydVlKK_ItLGOkuz2fBmQaZjecDn76kysQsw/viewform)ulaşabilirsiniz.&#x20;


# Service

### API

{% embed url="<https://0g-api.chainad.org/>" %}

### RPC

{% embed url="<https://0g-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/0G-Newton>" %}

### Faucet

{% embed url="<https://faucet.0g.ai/>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

| CPU    | RAM  | SSD     |
| ------ | ---- | ------- |
| 4 vCPU | 8 GB | 160 SSD |

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
cd $HOME && source <(curl -s https://raw.githubusercontent.com/CoinHuntersTR/Logo/main/update-cosmos.sh)
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
git clone -b v0.1.0 https://github.com/0glabs/0g-chain.git
./0g-chain/networks/testnet/install.sh
source .profile
mkdir -p $HOME/.0gchain/cosmovisor/genesis/bin
cp $HOME/go/bin/0gchaind $HOME/.0gchain/cosmovisor/genesis/bin/
sudo ln -s $HOME/.0gchain/cosmovisor/genesis $HOME/.0gchain/cosmovisor/current -f
sudo ln -s $HOME/.0gchain/cosmovisor/current/bin/0gchaind /usr/local/bin/0gchaind -f
```

#### Create service file

```
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
sudo tee /etc/systemd/system/0gchain.service > /dev/null << EOF
[Unit]
Description=og node service
After=network-online.target
 
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.0gchain"
Environment="DAEMON_NAME=0gchaind"
Environment="UNSAFE_SKIP_BACKUP=true"
 
[Install]
WantedBy=multi-user.target
EOF
```

```
sudo systemctl daemon-reload
sudo systemctl enable 0gchain
```

#### Set Vars

`wallet` yerine istediğiniz bir ismi, `$MONIKER` yerine bir validator adı yazmayı unutmayın.

```
echo 'export CHAIN_ID="zgtendermint_16600-1"' >> ~/.bash_profile
echo 'export WALLET_NAME="wallet"' >> ~/.bash_profile
source $HOME/.bash_profile
0gchaind init $MONIKER --chain-id $CHAIN_ID
0gchaind config chain-id $CHAIN_ID
0gchaind config keyring-backend test 
```

#### Download Genesis and Addrbook

```
rm $HOME/.0gchain/config/genesis.json
wget https://github.com/0glabs/0g-chain/releases/download/v0.1.0/genesis.json -O $HOME/.0gchain/config/genesis.json
```

#### Configure

```
seeds=$(curl -s https://raw.githubusercontent.com/CoinHuntersTR/props/main/0g-Newton/seeds.txt)
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/" $HOME/.0gchain/config/config.toml
peers=$(curl -s https://raw.githubusercontent.com/CoinHuntersTR/props/main/0g-Newton/peers.txt)
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.0gchain/config/config.toml
sed -i.bak -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchain/config/app.toml
sed -i.bak -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchain/config/app.toml
sed -i.bak -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.0gchain/config/app.toml
sed -i "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.00252ua0gi\"/" $HOME/.0gchain/config/app.toml
sed -i "s/^indexer *=.*/indexer = \"kv\"/" $HOME/.0gchain/config/config.toml
```

#### Snapshot

```
sudo systemctl stop 0gchain
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
rm -rf $HOME/.0gchain/data && mkdir -p $HOME/.0gchain/data
```

```
curl -L https://snapshots.coinhunterstr.com/zgtendermint_16600-1_snapshot_latest.tar.lz4 | tar -I lz4 -xf - -C $HOME/.0gchain/data
```

```
mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
```

#### Start service

```
sudo systemctl restart 0gchain && sudo journalctl -u 0gchain -f
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> `wallet` yerine cüzdan isminizi girmeyi unutmayın.\
> `$MONIKER` yerine kullanmak istediğiniz validator adını giriniz.

```
wget -q -O 0g-Newton.sh https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/0g-Newton.sh && chmod +x 0g-Newton.sh && ./0g-Newton.sh
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
0gchaind keys add wallet --eth
```

**RECOVER EXISTING KEY**

```
0gchaind keys add wallet --recover --eth
```

**WALLET EVM ADDRESS**

```
echo "0x$(0gchaind debug addr $(0gchaind keys show wallet -a) | grep hex | awk '{print $3}')"
```

**LIST ALL KEYS**

```
0gchaind keys list
```

**DELETE KEY**

```
0gchaind keys delete wallet
```

**EXPORT KEY TO A FILE**

```
0gchaind keys export wallet
```

**IMPORT KEY FROM A FILE**

```
0gchaind keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

**CREATE NEW VALIDATOR**

```
0gchaind tx staking create-validator \
--amount 100000ua0gi \
--pubkey $(0gchaind tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id zgtendermint_16600-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices 0.00252ua0gi \
-y
```

**EDIT EXISTING VALIDATOR**

```
0gchaind tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id zgtendermint_16600-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices 0.00252ua0gi \
-y
```

**UNJAIL VALIDATOR**

```
0gchaind tx slashing unjail --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**JAIL REASON**

```
0gchaind query slashing signing-info $(0gchaind tendermint show-validator)
```

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
0gchaind tx distribution withdraw-all-rewards --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
0gchaind tx distribution withdraw-rewards $(0gchaind keys show wallet --bech val -a) --commission --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**DELEGATE TOKENS TO YOURSELF**

```
0gchaind tx staking delegate $(0gchaind keys show wallet --bech val -a) 100000ua0gi --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
0gchaind tx staking delegate <TO_VALOPER_ADDRESS> 100000ua0gi --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
0gchaind tx staking redelegate $(0gchaind keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 100000ua0gi --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
0gchaind tx staking unbond $(0gchaind keys show wallet --bech val -a) 100000ua0gi --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**SEND TOKENS TO THE WALLET**

```
0gchaind tx bank send wallet <TO_WALLET_ADDRESS> 100000ua0gi --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
0gchaind query gov proposals
```

**VIEW PROPOSAL BY ID**

```
0gchaind query gov proposal 1
```

**VOTE ‘YES’**

```
0gchaind tx gov vote 1 yes --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**VOTE ‘NO’**

```
0gchaind tx gov vote 1 no --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**VOTE ‘ABSTAIN’**

```
0gchaind tx gov vote 1 abstain --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

**VOTE ‘NOWITHVETO’**

```
0gchaind tx gov vote 1 NoWithVeto --from wallet --chain-id zgtendermint_16600-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.00252ua0gi -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.0gchaind/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.0gchaind/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
0gchaind status 2>&1 | jq
```

**GET SYNC INFO**

```
0gchaind status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"20000000000udym\"/" $HOME/.0gchaind/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
0gchaind tendermint unsafe-reset-all --keep-addr-book --home $HOME/.0gchaind --keep-addr-book
```

**REMOVE NODE**

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

```
cd $HOME
sudo systemctl stop 0gchain
sudo systemctl disable 0gchain
sudo rm /etc/systemd/system/0gchain
sudo systemctl daemon-reload
rm -f $(which 0gchaind)
rm -rf $HOME/.0gchaind
rm -rf $HOME/0gchaind
```

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable 0gchain
```

**DISABLE SERVICE**

```
sudo systemctl disable 0gchain
```

**START SERVICE**

```
sudo systemctl start 0gchain
```

**STOP SERVICE**

```
sudo systemctl stop 0gchain
```

**RESTART SERVICE**

```
sudo systemctl restart 0gchain
```

**CHECK SERVICE STATUS**

```
sudo systemctl status 0gchain
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u 0gchain -f --no-hostname -o cat
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```
sudo systemctl stop 0gchain
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
rm -rf $HOME/.0gchain/data && mkdir -p $HOME/.0gchain/data
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/zgtendermint_16600-1_snapshot_latest.tar.lz4 | tar -I lz4 -xf - -C $HOME/.0gchain/data
mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart 0gchain && sudo journalctl -u 0gchain -f
```


# Airchains

Switchyard Testneti

<figure><img src="https://pbs.twimg.com/media/GNEcw5mXwAE2uhA?format=jpg&#x26;name=large" alt=""><figcaption></figcaption></figure>

Airchains is a versatile and powerful framework for creating customized rollups with a variety of options. Our framework supports EVM, SVM, and CosmWasm-based rollups

**Offical Links**: [Web ](https://www.airchains.io/)| [Twitter ](https://twitter.com/airchains_io)| [Discord ](https://discord.gg/airchains)


# Varanasi


# Service

### API

{% embed url="<https://airchains-api.chainad.org/>" %}

### RPC

{% embed url="<https://airchains-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Airchains-Testnet>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>4 vCPU</td><td>8 GB RAM</td><td>160 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```
ver="1.21.6" 
cd $HOME 
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 
rm "go$ver.linux-amd64.tar.gz"

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile    
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O junctiond https://github.com/airchains-network/junction/releases/download/v0.3.1/junctiond-linux-amd64
chmod +x junctiond
mv junctiond $HOME/go/bin/
```

#### Set Vars

> `Moniker` yerine validator adınızı ekliyoruz.

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
junctiond init $MONIKER --chain-id varanasi-1
```

#### Config init app

```
sed -i -e "s|^node *=.*|node = \"tcp://localhost:26657\"|" $HOME/.junctiond/config/client.toml
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.junctiond/config/genesis.json https://server-7.itrocket.net/testnet/airchains_v/genesis.json
wget -O $HOME/.junctiond/config/addrbook.json  https://server-7.itrocket.net/testnet/airchains_v/addrbook.json
```

#### Config Pruning

```
# config pruning
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.junctiond/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.junctiond/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.junctiond/config/app.toml

# set minimum gas price, enable prometheus and disable indexing
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.001uamf"|g' $HOME/.junctiond/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.junctiond/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.junctiond/config/config.toml
```

#### Set seeds and peers

```
SEEDS="97cadd453fa35cee05f72611fdb15a49112575cb@airchains_v-testnet-seed.itrocket.net:19656"
PEERS="79f26210777e84efb600bf776c32615a72675d9f@airchains_v-testnet-peer.itrocket.net:19656,859485b13c2d8ab3888ffc11d1c506d78f681317@5.9.116.21:26756,8c229309660496e71b8a9d1edee46a18693b8e70@65.109.111.234:19656,db686fcfdf0b4676d601d5beb11faee5ad96bff1@37.27.71.199:28656,0b4e78189c9148dda5b1b98c6e46b764337558a3@91.227.33.18:19656,4eff6ecc2323811d18c7e06319b2d8bbf58590d1@65.108.233.73:19656,b43f7c96bb780d9ac535d3c1f78092cf8c455e85@104.36.23.246:26656,b107bf75ca12c4f5fa544390e27f8104b13c7f1b@[2001:41d0:1004:1596::1]:13756,3650f3737940af2d6cc8d17244706505648ff639@212.56.32.148:14156,847ffe6f885e4dd3ea97e5d558ee1bca1cc3fe9d@213.136.91.3:19656,43c265128fd9be02721df03e8ba4bcf8c982a062@1.53.252.54:26656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
       -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.junctiond/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/junctiond.service > /dev/null <<EOF
[Unit]
Description=Airchains_v node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.junctiond
ExecStart=$(which junctiond) start --home $HOME/.junctiond
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable junctiond
sudo systemctl restart junctiond && sudo journalctl -u junctiond -fo cat
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/data.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.junctiond
mv $HOME/.junctiond/priv_validator_state.json.backup $HOME/.junctiond/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl start junctiond && sudo journalctl -u junctiond -f --no-hostname -o cat
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/refs/heads/main/AutoInstall/airchains_v.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `junctiond status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

> İlk önce Pubkeyimizi alıyoruz.

```
junctiond comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

```
cd $HOME
```

> Sonrasında validator json dosyası açıyoruz.

```
nano /root/validator.json
```

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
{
	"pubkey": <validator-pub-key>,
	"amount": "9900000amf",
	"moniker": "<validator-name>",
	"identity": "optional identity signature (ex. UPort or Keybase)",
	"website": "validator's (optional) website",
	"security": "validator's (optional) security contact email",
	"details": "validator's (optional) details",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart junctiond
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
junctiond tx staking create-validator $HOME/validator.json --from wallet --chain-id varanasi-1 --fees 0uamf
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/testnet/airchains/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.junctiond
mv $HOME/.junctiond/priv_validator_state.json.backup $HOME/.junctiond/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl start junctiond && sudo journalctl -u junctiond -f --no-hostname -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
junctiond keys add wallet
```

**RECOVER EXISTING KEY**

```
junctiond keys add wallet --recover
```

**LIST ALL KEYS**

```
junctiond keys list
```

**DELETE KEY**

```
junctiond keys delete wallet
```

**EXPORT KEY TO A FILE**

```
junctiond keys export wallet
```

**IMPORT KEY FROM A FILE**

```
junctiond keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

```
cd $HOME
# Create validator.json file
echo "{\"pubkey\":{\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"$(junctiond comet show-validator | grep -Po '\"key\":\s*\"\K[^"]*')\"},
    \"amount\": \"100000000000uamf\",
    \"moniker\": \"test\",
    \"identity\": \"\",
    \"website\": \"\",
    \"security\": \"\",
    \"details\": \"CoinHunters Community ❤️\",
    \"commission-rate\": \"0.1\",
    \"commission-max-rate\": \"0.2\",
    \"commission-max-change-rate\": \"0.01\",
    \"min-self-delegation\": \"1\"
}" > validator.json
# Create a validator using the JSON configuration
junctiond tx staking create-validator validator.json \
    --from wallet \
    --chain-id varanasi-1 \
	--gas auto --gas-adjustment 1.5 --fees 0.001uamf \
```

**UNJAIL VALIDATOR**

```
junctiond tx slashing unjail --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
junctiond tx distribution withdraw-rewards $(junctiond keys show wallet --bech val -a) --commission --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
junctiond tx distribution withdraw-rewards $(junctiond keys show wallet --bech val -a) --commission --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**DELEGATE TOKENS TO YOURSELF**

```
junctiond tx staking delegate $(junctiond keys show wallet --bech val -a) 100000000000uamf --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
junctiond tx staking delegate <TO_VALOPER_ADDRESS> 100000000000uamf --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
junctiond tx staking redelegate $(junctiond keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 100000000000uamf --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
junctiond tx staking unbond $(junctiond keys show wallet --bech val -a) 100000000000uamf --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**SEND TOKENS TO THE WALLET**

```
junctiond tx bank send wallet <TO_WALLET_ADDRESS> 100000000000uamf --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
junctiond query gov proposals
```

**VIEW PROPOSAL BY ID**

```
junctiond query gov proposal 1
```

**VOTE ‘YES’**

```
junctiond tx gov vote 1 yes --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**VOTE ‘NO’**

```
junctiond tx gov vote 1 no --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**VOTE ‘ABSTAIN’**

```
junctiond tx gov vote 1 abstain --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

**VOTE ‘NOWITHVETO’**

```
junctiond tx gov vote 1 NoWithVeto --from wallet --chain-id varanasi-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.001uamf -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.junctiond/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.junctiond/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
junctiond status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
junctiond status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

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

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
junctiond tendermint unsafe-reset-all --keep-addr-book --home $HOME/.junctiond --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable junctiond
```

**DISABLE SERVICE**

```
sudo systemctl disable junctiond
```

**START SERVICE**

```
sudo systemctl start junctiond
```

**STOP SERVICE**

```
sudo systemctl stop junctiond
```

**RESTART SERVICE**

```
sudo systemctl restart junctiond
```

**CHECK SERVICE STATUS**

```
sudo systemctl status junctiond
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u junctiond -f --no-hostname -o cat
```


# Junction


# Service

### API

{% embed url="<https://airchains-api.chainad.org/>" %}

### RPC

{% embed url="<https://airchains-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Airchains>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>4 vCPU</td><td>8 GB RAM</td><td>160 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make lz4 unzip ncdu -y
```

**INSTALL GO**

```
ver="1.21.5" 
cd $HOME 
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 
rm "go$ver.linux-amd64.tar.gz"

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile    
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
wget https://github.com/airchains-network/junction/releases/download/v0.1.0/junctiond
chmod +x junctiond
sudo mv junctiond /usr/local/bin
```

#### Set Vars

> `Moniker` yerine validator adınızı ekliyoruz.

```
junctiond config chain-id junction
junctiond init "Moniker" --chain-id junction
```

#### Config init app

```
wardend init $MONIKER
sed -i -e "s|^node *=.*|node = \"tcp://localhost:${WARDEN_PORT}657\"|" $HOME/.warden/config/client.toml
```

#### Download Genesis and Addrbook

```
sudo wget -O $HOME/.junction/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/Airchains/genesis.json
sudo wget -O $HOME/.junction/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/Airchains/addrbook.json

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"5000amf\"/;" ~/.junction/config/app.toml
```

#### Config Pruning

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

#### Set seeds and peers

```
PEERS=$(curl -sS https://junction-rpc.dymion.cloud/net_info | \
jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | \
awk -F ':' '{printf "%s:%s%s", $1, $(NF), NR==NF?"":","}')
echo "$PEERS"

sed -i 's|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.junction/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/junctiond.service > /dev/null <<EOF
[Unit]
Description=junction
After=network-online.target
[Service]
User=$USER
ExecStart=$(which junctiond) start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable junctiond
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable junctiond
sudo systemctl restart junctiond && sudo journalctl -u junctiond -f
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/data.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.junction
mv $HOME/.junction/priv_validator_state.json.backup $HOME/.junction/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl start junctiond && sudo journalctl -u junctiond -f --no-hostname -o cat
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```
wget -q -O Airchains.sh https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/Airchains.sh && chmod +x Airchains.sh && ./Airchains.sh
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `junctiond status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

> İlk önce Pubkeyimizi alıyoruz.

```
junctiond comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

```
cd $HOME
```

> Sonrasında validator json dosyası açıyoruz.

```
nano /root/validator.json
```

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
{
	"pubkey": <validator-pub-key>,
	"amount": "9900000amf",
	"moniker": "<validator-name>",
	"identity": "optional identity signature (ex. UPort or Keybase)",
	"website": "validator's (optional) website",
	"security": "validator's (optional) security contact email",
	"details": "validator's (optional) details",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart junctiond
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
junctiond tx staking create-validator $HOME/validator.json --from wallet --chain-id junction --fees 5000amf
```


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/snap_airchains.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.junction
mv $HOME/.junction/priv_validator_state.json.backup $HOME/.junction/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl start junctiond && sudo journalctl -u junctiond -f --no-hostname -o cat
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
junctiond keys add wallet
```

**RECOVER EXISTING KEY**

```
junctiond keys add wallet --recover
```

**LIST ALL KEYS**

```
junctiond keys list
```

**DELETE KEY**

```
junctiond keys delete wallet
```

**EXPORT KEY TO A FILE**

```
junctiond keys export wallet
```

**IMPORT KEY FROM A FILE**

```
junctiond keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

```
cd $HOME
# Create validator.json file
echo "{\"pubkey\":{\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"$(junctiond comet show-validator | grep -Po '\"key\":\s*\"\K[^"]*')\"},
    \"amount\": \"1000000amf\",
    \"moniker\": \"test\",
    \"identity\": \"\",
    \"website\": \"\",
    \"security\": \"\",
    \"details\": \"CoinHunters Community ❤️\",
    \"commission-rate\": \"0.1\",
    \"commission-max-rate\": \"0.2\",
    \"commission-max-change-rate\": \"0.01\",
    \"min-self-delegation\": \"1\"
}" > validator.json
# Create a validator using the JSON configuration
junctiond tx staking create-validator validator.json \
    --from wallet \
    --chain-id junction \
	--gas auto --gas-adjustment 1.5 --fees 5000amf \
```

**UNJAIL VALIDATOR**

```
junctiond tx slashing unjail --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
junctiond tx distribution withdraw-rewards $(junctiond keys show wallet --bech val -a) --commission --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
junctiond tx distribution withdraw-rewards $(junctiond keys show wallet --bech val -a) --commission --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**DELEGATE TOKENS TO YOURSELF**

```
junctiond tx staking delegate $(junctiond keys show wallet --bech val -a) 1000000amf --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
junctiond tx staking delegate <TO_VALOPER_ADDRESS> 1000000amf --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
junctiond tx staking redelegate $(junctiond keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000amf --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
junctiond tx staking unbond $(junctiond keys show wallet --bech val -a) 1000000amf --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**SEND TOKENS TO THE WALLET**

```
junctiond tx bank send wallet <TO_WALLET_ADDRESS> 1000000amf --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
junctiond query gov proposals
```

**VIEW PROPOSAL BY ID**

```
junctiond query gov proposal 1
```

**VOTE ‘YES’**

```
junctiond tx gov vote 1 yes --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**VOTE ‘NO’**

```
junctiond tx gov vote 1 no --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**VOTE ‘ABSTAIN’**

```
junctiond tx gov vote 1 abstain --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

**VOTE ‘NOWITHVETO’**

```
junctiond tx gov vote 1 NoWithVeto --from wallet --chain-id junction --gas-adjustment 1.5 --gas auto --gas-prices 5000amf -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.junction/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.junction/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
junctiond status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
junctiond status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"5000amf\"/" $HOME/.junction/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
junctiond tendermint unsafe-reset-all --keep-addr-book --home $HOME/.junction --keep-addr-book
```

**REMOVE NODE**

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

```
cd $HOME
sudo systemctl stop junctiond
sudo systemctl disable junctiond
sudo rm /etc/systemd/system/junctiond
sudo systemctl daemon-reload
rm -f $(which junctiond)
rm -rf $HOME/.junction
rm -rf $HOME/junction
```

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable junctiond
```

**DISABLE SERVICE**

```
sudo systemctl disable junctiond
```

**START SERVICE**

```
sudo systemctl start junctiond
```

**STOP SERVICE**

```
sudo systemctl stop junctiond
```

**RESTART SERVICE**

```
sudo systemctl restart junctiond
```

**CHECK SERVICE STATUS**

```
sudo systemctl status junctiond
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u junctiond -f --no-hostname -o cat
```


# Rollup Evm Airchains

### Sistem Gereksinimleri

Ubuntu 22.04

| CPU | RAM | SSD    |
| --- | --- | ------ |
| 2   | 4   | 100SSD |

### Kurulum

#### Sistem Güncellemesi

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip screen -y
```

#### Go Yükleyelim

```
cd $HOME && \
ver="1.21.3" && \
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
rm "go$ver.linux-amd64.tar.gz" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version
```

#### Gerekli Dosyalaları alalım

```
git clone https://github.com/airchains-network/evm-station.git
```

```
git clone https://github.com/airchains-network/tracks.git
```

```
git clone https://github.com/availproject/availup.git
```

#### EVM-Station Kurulumu

```
screen -S evms
```

```
cd evm-station
```

```
go mod tidy
```

```
/bin/bash ./scripts/local-setup.sh
```

#### EVM-Station başlatıyoruz.

```
/bin/bash ./scripts/local-start.sh
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2Ff2SNP7Fi2uRLfnew2KXd%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20145902.png?alt=media&amp;token=0eec2824-3cb7-4b64-a236-014a7b5148ee" alt=""><figcaption></figcaption></figure>

EVM station başlattığınızda yukarıdaki görseldeki gibi bloklar akmaya başladığında CTRL A + D ile screenden çıkıyoruz. tekrar girmek istediğimizde `screen -r evms` komutuyla blokların aktığı yere ulaşabilirsiniz.&#x20;

#### Airchain Rollup Key

```
cd evm-station
/bin/bash ./scripts/local-keys.sh
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FDqyLBQpSXtcR7Qo573Qf%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20143435.png?alt=media&amp;token=c19d38e8-daa9-4e97-bf8e-c58a25ba1212" alt=""><figcaption></figcaption></figure>

> Buradakine benzer bir KEY alacaksınız. Bunu bir yere not etmeyi unutmayın.

#### Avail light node

```
screen -S avail
```

```
cd availup
/bin/bash availup.sh --network "turing" --app_id 36
```

> Bu adımlardan sonra aşağıdaki görselde olduğu gibi size Public adresinizi vs verecek onları bir yere not edelim.&#x20;

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2F0NfGYqqQRukCuJabj0Ew%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20143547.png?alt=media&amp;token=a9773f88-6744-4485-ba23-fb38ff54dbed" alt=""><figcaption></figcaption></figure>

> Aşağıdaki görseldeki gibi bloklar akmaya başladığında CTRL A+ D ile çıkıyoruz.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FDWBxBxEx4RcpvIq96tzW%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20143642.png?alt=media&amp;token=689c9514-87e7-49ee-883a-4540564eae5c" alt=""><figcaption></figcaption></figure>

#### Avail Cüzdan Kelimelerini alma ve Faucet

```
nano /root/.avail/identity/identity.toml
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FTOFaZeFKdnX4oHEPomQ0%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20143826.png?alt=media&amp;token=ee81c582-7794-4459-a880-397b5ea55560" alt=""><figcaption></figcaption></figure>

> Yukarıdaki görseldeki gibi kelimeleriniz tırnak içinde yazar. Onları bir yere not edersiniz. Ayrıca bize Test avail'de lazım. Onun için Cüzdan adresinizle, `Avail ss58 address: 5...` ile başlayan sizin AVAIL adresiniz, kayıt etmiştik. Eğer etmediyseniz sıkıntı yok. Tasliman wallet kelimelerinizi import edin yine aynı adresi verecektir.&#x20;

> [Buradan ](https://faucet.avail.tools/)faucete gidip test AVAIL istiyoruz.

#### Track kurulumu

```
cd
cd tracks
```

```
go mod tidy
```

> AVAIL kelimeler yerine biraz önce aldığınız cüzdan kelimelerini yazıyoruz.&#x20;
>
> Moniker Adınızı Yazınız yerine Bir isim yazmanız yeterli.

```
go run cmd/main.go init --daRpc "http://127.0.0.1:7000" --daKey "AVAIL Kelimeler" --daType "avail" --moniker "Moniker Adınızı Yazınız" --stationRpc "http://127.0.0.1:16545" --stationAPI "http://127.0.0.1:16545" --stationType "evm"
```

```
go run cmd/main.go keys junction --accountName cüzdan-ismi-yazınız --accountPath $HOME/.tracks/junction-accounts/keys
```

> Yukarıdaki komutta `cüzdan-ismi-yazınız` yerine bir isim yazıyoruz. Sonrasında çalıştırdığınızda aşağıdaki görselde olduğu gibi bir çıktı almanız gerekiyor. Airchains cüzdan adresiniz ve gizli kelimelerinizi verecek onu bir yere not ediyoruz.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FAf5FR7Z7aecLszOEl6D0%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20144321.png?alt=media&amp;token=7fd5827b-9b30-455b-844b-ddec6bc2ba05" alt=""><figcaption></figcaption></figure>

> Bu adımı yaptıktan sonra discorddan fauceti kullanarak airchains cüzdanınıza test tokeni istiyoruz.

Fauceti kullanmak için aşağıdaki gibi faucet kanalına cüzdan adresimizi atıyoruz.

```
$faucet air1....
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FZSD3vAD1PKx5RF2TLRqY%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20144436.png?alt=media&amp;token=34bee019-1ab6-40e9-957b-390cac1cc5df" alt=""><figcaption></figcaption></figure>

#### Prover Başlatıyoruz.

```
go run cmd/main.go prover v1EVM
```

> Aşağıdaki gibi bir çıktı elde ettiyseniz işlemlere devam ediyoruz.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FvbWDCQ31XbarDM5hNceo%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20144510.png?alt=media&amp;token=6712238f-49f9-4527-bfc7-58a8e5fc916b" alt=""><figcaption></figcaption></figure>

#### Junction oluşturalım

> Öncelikle bize node ID lazım onun için aşağıdaki dosyayı açıyoruz ve p2p bölümünde Node-ID yazıyor onu bir yere not edelim.

```
nano /root/.tracks/config/sequencer.toml
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FtvgLKPds7fBR9unPxQiX%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20144920.png?alt=media&amp;token=23c90cf6-ff48-4a1f-940c-35968c4711db" alt=""><figcaption></figcaption></figure>

```
go run cmd/main.go create-station --accountName cüzdan-adını-yazınız --accountPath $HOME/.tracks/junction-accounts/keys --jsonRPC "https://airchains-testnet-rpc.cosmonautstakes.com/" --info "EVM Track" --tracks cüzdan-adresini-yazınız --bootstrapNode "/ip4/SUNUCU-IP/tcp/2300/p2p/NODE-ID-yazınız"
```

> Şimdi yukarıdaki komutu düzenleyip sonrasında terminale yazıyoruz.
>
> `cüzdan-adını-yazınız` yerine yukarıdak vermiş olduğumuz cüzdan adını yazıyoruz.&#x20;
>
> `cüzdan-adresini-yazınız` yerine air1... ile başlayan cüzdan adresimizi ekliyoruz.&#x20;
>
> &#x20;`SUNUCU-IP` yerine kiralamış olduğunuz sunucunun IP adresini yazıyoruz.&#x20;
>
> `NODE-ID-yazınız` yerine biraz önce aldığımız node-ıd ekliyoruz.&#x20;

#### Rollup Başlatalım

```
screen -S rollup
```

```
go run cmd/main.go start
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FIIM3wb4KokgI7nSucVp8%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20153553.png?alt=media&amp;token=6e59298e-f557-4af2-b42f-2aaa1cd5cdc9" alt=""><figcaption></figcaption></figure>

Bu şekilde çıktı alırsanız CTRL A+D ile çıkış yapabilirsiniz. Puanlarınızı takip etmek için [BURADAN ](https://points.airchains.io/)airchains sitesine gidiyoruz. Node için kurduğumuz cüdanı Leap wallet import edip onunla siteye bağlanıyoruz. Aşağıdaki gibi bir sonuç görürseniz. İşlem tamamdır puanların gelmesi uzun sürebiliyor.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FnrqagcB832vVejHO7sGz%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-04%20153532.png?alt=media&amp;token=a8f959fd-1057-420b-9f91-8667137ea744" alt=""><figcaption></figcaption></figure>


# Auto TX Script

Airchains için kendi kurduğumuz, Rollup içinde TX atabilmek için, airchains rollup kurduğunuz sunucu da bu scripti çalıştırabilirsiniz.&#x20;

### Gerekli Kurumlar

```bash
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip screen -y
```

```bash
sudo apt install -y curl git jq lz4 build-essential cmake perl automake autoconf libtool wget libssl-dev -y
```

```bash
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
```

#### Nodejs ve Npm Kurulumu&#x20;

```bash
sudo apt-get install -y nodejs
sudo apt install nodejs npm 
npm install -g npm@10.8.1
npm install web3@1.5.3
```

```bash
nano airchainstx.js
```

Açtığımız dosyaya aşağıdaki komutları, hiçbir yerine dokunmadan ekleyip. CTRL X Y enter ile çıkıyoruz.

```bash
const readline = require('readline');
const Web3 = require('web3');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('Enter your MetaMask wallet private key: ', (privateKey) => {
  rl.question('Enter the wallet address you want to send to: ', (toAddress) => {
    rl.question('Enter the amount you want to send (in tevmos): ', (amount) => {
      rl.question('How often do you want to repeat the transaction? (in seconds): ', (interval) => {

        const rpcURL = "http://localhost:8545"; // or your server's IP: "http://your-server-ip:8545"
        const web3 = new Web3(new Web3.providers.HttpProvider(rpcURL));

        function sendTransaction() {
          const account = web3.eth.accounts.privateKeyToAccount(privateKey);
          web3.eth.accounts.wallet.add(account);
          web3.eth.defaultAccount = account.address;

          const tx = {
            from: web3.eth.defaultAccount,
            to: toAddress,
            value: web3.utils.toWei(amount, 'ether'),
            gas: 21000,
            gasPrice: web3.utils.toWei('1', 'gwei')
          };

          web3.eth.sendTransaction(tx)
            .then(receipt => {
              console.log('Transaction successful with hash:', receipt.transactionHash);
            })
            .catch(err => {
              console.error('Error sending transaction:', err);
            });
        }

        setInterval(sendTransaction, interval * 1000);

        rl.close();
      });
    });
  });
});
```

Yeni bir screen açalım

```bash
screen -S autotx
```

Scriptimizi başlatıyoruz.

```bash
node airchainstx.js
```

Bizden bazı bilgileri isteyecek, sırasıyla yazıyorum.

> `MetaMask wallet private key` bunu bulmak için `/bin/bash ./scripts/local-keys.sh` ile aldığımız private key giriyoruz.&#x20;
>
> `Enter the wallet address you want to send to` göndermek istediğimiz bir cüzdan adresi yazıyoruz. İstediğinizi yazabilirsiniz.&#x20;
>
> `Enter the amount you want to send` göndermek istediğiniz miktarı yazıyorsunuz . 1,2,3 veya istediğiniz bir miktar.&#x20;
>
> `How often do you want to repeat the transaction` burada ne kadar sürede bir gönderim yapacak onu seçiyoruz. 30,40,50 saniye tam sayı olarak girebilirsiniz.&#x20;

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2Fx51ksZLGyuPK0avtOM95%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-06-10%20141050.png?alt=media&amp;token=20cb34b2-8f57-4033-9eb3-810dd5882991" alt=""><figcaption></figcaption></figure>

Bu şekilde TX'ler görmeye başladıysanız, işlem tamamdır.&#x20;


# AligendLayer

<figure><img src="https://pbs.twimg.com/profile_banners/1752189672770469888/1707249217/1500x500" alt=""><figcaption></figcaption></figure>

<figure><img src="https://pbs.twimg.com/profile_banners/1752189672770469888/1722877700/1500x500" alt=""><figcaption></figcaption></figure>

Aligned Layer is a universal verification layer designed for Ethereum, enhancing its capabilities for zero-knowledge SNARK proofs. Developed on EigenLayer, Aligned Layer aims to make Ethereum a more efficient and cost-effective platform for SNARK verification by leveraging restaking and proof aggregation. This initiative supports various zero-knowledge technology developments, aiming to expand Ethereum's utility and support the future of trustless applications with enhanced security and verifiability.

**Offical Links**: [Web ](https://alignedlayer.com/)| [Twitter](https://twitter.com/alignedlayer) | [Discord ](https://discord.gg/alignedlayer)


# Installation

### Minimum Gereksinimler <a href="#hardware-requirements" id="hardware-requirements"></a>

| Component     | Specification     |
| ------------- | ----------------- |
| **CPU**       | 16 cores          |
| **Memory**    | 32 GB RAM         |
| **Bandwidth** | 1 Gbps            |
| **Storage**   | 256 GB disk space |

Orjinal dokümanda bu değerler belirtilmiştir. Fakat, 4CPU, 8GB RAM 160 SSD disk içine de rahatlıkla kurabilirsiniz.

Aligend Layer kurabilmek için ilk olarak EigenLayer AVS kurmamı gerekiyor.

### EigenLayer CLI Kurulumu

```
sudo apt-get update -y && sudo apt-get upgrade -y
```

#### Docker kuruyoruz..

```
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
```

```
sudo apt-get update
```

```
sudo apt-get install ca-certificates curl gnupg
```

```
sudo install -m 0755 -d /etc/apt/keyrings
```

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

```
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

```
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

#### Docker Güncelleme ve Çalıştırma

```
sudo apt update -y && sudo apt upgrade -y
```

```
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

```
sudo docker run hello-world
```

#### Go Kurulumu

```
cd $HOME
ver="1.22.2"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
```

> Yukarıdaki gereksinimlerin kurulumunu hallettikten sonra EigenLayer adımlarına geçebiliriz.

```
git clone https://github.com/Layr-Labs/eigenlayer-cli.git
cd eigenlayer-cli
```

```
mkdir -p build
```

```
go build -o build/eigenlayer cmd/eigenlayer/main.go
```

```
cd
sudo cp eigenlayer-cli/build/eigenlayer /usr/local/bin/
```

> Şimdi operatör keylerimizi oluşturuyoruz. Bunun için `<key-adı>` silip (<> dahil siliyoruz.) istediğiniz bir ismi girebilirsiniz.

```
eigenlayer operator keys create --key-type ecdsa <key-adı>
```

> Bu adımı girdikten sonra size private key'inizi verecek. Bunu bir yere not etmeyi unutmayın. Daha sonra verdiği private key'i ETH stake etme ve ağı çalıştırma da kullanacağız.

Şimdi operatör bls keylerimizi oluşturuyoruz. Bunun için `<key-adı>` silip (<> dahil siliyoruz.) istediğiniz bir ismi girebilirsiniz. (Yukarıda verdiğiniz isimi ile aynı ismi verebilirsiniz.)

```
eigenlayer operator keys create --key-type bls <key-adı>
```

> Her iki komuttan sonra da sizden şifre oluşturmanızı isteyecek, bu şifre Karmaşık bir şifre olmalıdır. içinde özel karakterler rakam ve harflerin olduğu bir kombinasyon tercih edebilirsiniz. Verdiğiniz şifreyi unutmayın.

> ecdsa ve bls için hem private key hem de public key'ler alacaksınız, ayrıca ecdsa ve bls için size dosyanın uzantısı verilecek bunların hepsini not etmeyi unutmayın.

{% hint style="success" %}
**Daha önce oluşturulmuş EigenLayer Operatörü Çalıştırmak için**

* Aşağıdaki komutları girip önceki EVM adresimizi giriyoruz ve aşağıdaki adımları tekrar yapıyoruz.

```
eigenlayer operator keys import --key-type bls <key-adı> <ecdsa private key>
eigenlayer operator keys import--key-type bls <key-adı> <bls private key> 
```

{% endhint %}

```
eigenlayer operator keys list
```

> Dosya yolları ve public key için yukarıdaki komutu yazıp tekrar çıktı alabilirsiniz.

#### Operatör Kaydı

> Yukarıdaki adımları düzgün şekilde yaptıysak aşağıdaki adımları takip ediyoruz.

```
eigenlayer operator config create
```

{% hint style="danger" %}
Aşağıdaki adımları yapmadan önce size Private key verilmiş olan EVM adresine ETH Holesky ağında test ETH göndermeyi unutmayın. EigenLayer AVS çalıştırmak için ortalama 1-1,5 test ETH'ına ihtiyacınız olacak.
{% endhint %}

* Burada ilk olarak sizden Operatör adresini isteyecek. ecdsa operator keys için oluşturduğumuz EVM adresini giriyoruz.
* Earning için adres istediğinde aynı EVM adresini verebilirsiniz.
* Sizden RPC url isteyecek. Bunu infura yada alchemy'den alabilirsiniz. ETH Holesky ağını seçtiğinizde size özel RPC adresi alabilirsiniz.
* Şimdi de sizde ecdsa ve bls key'lerinizin yolunu isteyecek. Bunu da not etmiş olmalısınız oraya o yolu giriyoruz.

> Bu adımları yaptıktan sonra size bir metadata.json ve operator.yaml dosyası oluşturacak, buradaki düzenlemeleri yapıyoruz.

```
nano metadata.json
```

* Burayı açtığınızda size aşağıdaki gibi boş json dosyası çıkartacak. Bunu bir yere kopyalayıp kendi bilgilerinizi düzenleyin.

```
{
  "name": "",
  "website": "",
  "description": "",
  "logo": "",
  "twitter": ""
}
```

* Düzenlemeyi bitirdikten sonra metadata.json dosyasının içindekileri CTRL K ile silip hazırladığınızı içine yazın ve CTRL X Y enter ile kayıt edin.

{% hint style="danger" %}
metadata.json dosyasını dışarıdan da ulaşılabilecek şekilde kayıt etmemiz gerekiyor. Bunun için github kullanabilirsiniz. [BURADAN](https://github.com/CoinHuntersTR/Mangata-AVS?tab=readme-ov-file#metadata-i%CC%87%C5%9Flemleri) nasıl yapılabileceğini bulabilirsiniz.
{% endhint %}

```
nano operator.yaml
```

* Dosyasını açıyoruz ve aldığımız metada url adresini oraya yazıyoruz. Sonrasında kayıt edip çıkıyoruz.

```
eigenlayer operator register operator.yaml
```

* Komutunu çalıştırıyoruz. Tüm adımları doğru şekilde yaptıysanız.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FqiCKA1RpoOkybirwlRbJ%2F303568504-94f5b712-2163-4989-a295-d1c4f36d3b44.png?alt=media&amp;token=629956d0-8fd4-4fae-bd06-2f7fe430ea56" alt=""><figcaption></figcaption></figure>

Bu şekilde çıktı alıyorsunuz. Sonrasında [BURADAN ](https://holesky.eigenlayer.xyz/operator/)kendi operatörünüzü kontrol edebilirsiniz. AVS aktif edebilmek içinde orada WETH ve LIDO stake gibi alanlara ETH eklemeyi unutmayın.

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FMvW2EASnQ53wvDpcQC4D%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-08-21%20140425.png?alt=media&amp;token=64c04a04-c8df-4499-b18e-72015c9d3e32" alt=""><figcaption></figcaption></figure>

### Building AligenLayer Operator

Bu adımdan sonra sıra geldi Aligend Layer Operatör kurulum adımlarına.

* İlk olarak bu adımları yapabilmek için Whitelist'e girmeniz gerekiyor. Onun için [BURADAN ](https://docs.google.com/forms/d/e/1FAIpQLSdH9sgfTz4v33lAvwj6BvYJGAeIshQia3FXz36PFfF-WQAWEQ/viewform)formu doldurup başvurunuzu tamamlayabilirsiniz.

```
git clone https://github.com/yetanotherco/aligned_layer.git --branch  v0.17.0
cd aligned_layer
```

#### Şimdi gereksinimleri kuralım.

```
sudo apt install ca-certificates zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev curl git wget make jq build-essential pkg-config lsb-release libssl-dev libreadline-dev libffi-dev gcc screen unzip lz4 -y
```

```
sudo apt install -y curl git jq lz4 build-essential cmake perl automake autoconf libtool wget libssl-dev
```

#### Rust kuruyoruz.

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

> size seçenek sorduğunda 1 yazıp enter basın, kurulum bittikten sonra ise aşağıdaki komut ile devam ediyoruz.

```
. "$HOME/.cargo/env"
```

#### Foundury kurulumunu yapalım.

```
curl -L https://foundry.paradigm.xyz | bash
source ~/.bashrc
foundryup
```

```
make operator_build ENVIRONMENT=testnet
```

> bu komuttan sonra birkaç dakika bekliyoruz.

```
./operator/build/aligned-operator --version
```

Aligned Operator v0.17.0 çıktısı almamız gerekiyor.

```
nano ./config-files/config-operator.yaml
```

> dosyasını açıyoruz. Aşağıdaki sıralyacağım parametreleri değiştirip kayıt ediyoruz.

* `ECDSA Configurations` bölümündeki `private_key_store_path` bölümüne ecdsa key'inizi dosya yolunu yazıyoruz. `private_key_store_password` kısmına da dosyaya verdiğiniz şifreyiz yazıyoruz.
* `BLS Configurations` bölümüne `private_key_store_path` başlığıa BLS private key dosya yolunu yazıyoruz. `private_key_store_password` kısmına da şifremizi yazıyoruz.
* `Operator Configurations` bölümünde `address` ve `earnings_receiver_address` bölümlerine EigenLayer Operatör adresimizi veriyoruz.

> Bu işlemleri yaptıktan sonra dosyayı kayıt edip çıkıyoruz.

#### Operatörü Başlatalım.

```
./operator/build/aligned-operator start --config ./config-files/config-operator.yaml
```

#### Service kurulumu

```
sudo nano /etc/systemd/system/aligned-operator.service
```

```
[Unit]
Description=Aligned Layer Operator Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/aligned_layer
ExecStart=/root/aligned_layer/operator/build/aligned-operator start --config /root/aligned_layer/config-files/config-operator.yaml
Restart=always
RestartSec=10
LimitNOFILE=65535

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

```
sudo systemctl daemon-reload
sudo systemctl enable aligned-operator
sudo systemctl start aligned-operator
```

```
sudo systemctl status aligned-operator
sudo journalctl -u aligned-operator -f
```


# Allora Network

<figure><img src="https://pbs.twimg.com/media/GMfqjNKWMAAE8mj?format=png&#x26;name=4096x4096" alt=""><figcaption></figcaption></figure>

Allora is a self-improving decentralized AI network that empowers applications with smarter, more secure AI through a network of machine learning models, utilizing cryptographic primitives for trustless access. It enables developers to build decentralized AI applications, allows ML model creators to monetize and contribute to the network's collective intelligence, and features novel cryptoeconomic mechanisms to reward positive model contributions, ensuring security and reliability.

**Offical Links**: [Web](https://www.allora.network/) | [Twitter](https://x.com/AlloraNetwork) | [Discord ](https://discord.gg/allora)


# Service

### API

{% embed url="<https://allora-api.chainad.org>" %}

### RPC

{% embed url="<https://allora-rpc.chainad.org>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/Allora-Testnet>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>4 vCPU</td><td>8 GB RAM</td><td>160 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make lz4 unzip ncdu -y
```

**INSTALL GO**

```
ver="1.22.4" 
cd $HOME 
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" 

sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" 
rm "go$ver.linux-amd64.tar.gz"

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile    
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```
cd $HOME
wget -O allorad https://github.com/allora-network/allora-chain/releases/download/v0.3.0/allorad_linux_amd64
chmod +x $HOME/allorad
mv $HOME/allorad $HOME/go/bin/allorad
```

#### Set Vars

> `$Moniker` yerine validator adınızı ekliyoruz.

```
allorad init $MONIKER --chain-id allora-testnet-1
```

#### Download Genesis and Addrbook

```
wget -O $HOME/.allorad/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/allora/genesis.json
wget -O $HOME/.allorad/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/allora/addrbook.json
```

#### Config Pruning

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.allorad/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.allorad/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.allorad/config/app.toml
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.0uallo"|g' $HOME/.allorad/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.allorad/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.allorad/config/config.toml
```

Set seeds and peers

```
SEEDS="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:26756"
PEERS="ad3a6b49bf0c3e082be5ab2b116e622b795b1f1e@188.40.66.173:26756,ed0e6f02831ccdc09dfb4e4e9f703d373486bc82@43.157.20.64:26656,80d99208d70da18f8a587bda1023acea96343921@195.189.96.111:57456,b8834ef44bc2eeb4074a14140d060b80bcab8836@65.109.30.35:51656,54e77ab7453edf9d8fd4287299a6db2a3359eb81@147.135.140.50:26656,ecdc0dd7eb691a5fbecb8c135b26a81093587914@37.60.225.68:26656,d6433023d050106e5701d04976298e389f429e44@185.211.4.159:26656,6bd00668f433787d8418f9d9a477ed1f311d494d@15.204.101.36:26656,b6c61a01c7ae734040196d1af0444f2793f41d4d@5.180.149.123:26656,5824e6b74b403316b5775ce78c0713c3c4cb56cf@45.159.228.165:26666,8e81ed8901ea006ea77b9145cca62b73dc0463e9@5.189.146.38:26666,d0e12a195ac8acf6c76eb941c91fb373a2d526d5@160.202.130.101:32120,168c7323b0b7ac9a59726ebc811f22a4e137d8a4@195.201.245.178:56286,e18c50dc9a3e0b6641f87b5f3cd1c2576cfebf75@158.220.127.34:26656,0f6b64fcd38872d18a78d89e090a5e6928883d52@8.209.116.116:26656,11413d234e449ff3fefbad2df285a9b2b2601e0d@160.202.130.73:32120,0bf7e1489140434d9052782a54e87badfddf4bfa@40.160.12.223:26656,a525da291a42a22cd0a49a90bdb68809ab224224@95.217.107.21:26656,504a015fca790f94ee1498979248ce9718185c36@185.144.99.11:46656,2339ddf13f6d8ae2c78a0d0bce8001a19ea2f38c@15.204.101.34:26656,0106da2efccb6f3a15742b4e17faef782c37af52@192.145.46.179:26656,2aa399f7e07bec1668db56be94acc051cd1f7d24@45.149.207.19:26656,870d2d7c6235b1bb3603dfd6069e90a8204318f3@95.217.196.224:26656,c13dcf555ef6f71a8982bc38be0762d6d41e6e00@108.209.102.187:26643,d3c79122924ff477e941ec0ca1ed775cfb01ca20@66.35.84.140:26656,f6181ceff0ad0d99ed709e805785c6f54a3c67b0@149.50.102.86:51656,8e027355eb7fba531f9fdc5cfe5829c70644b2f4@15.204.101.31:26656,a63107a2244cdd2e5a1328e6edff130abaaee1d4@15.204.101.28:26656,e158a85ca8fbcef5813736f8ef73e308a0ad2b3a@15.204.101.35:26656,a07f51deedbd15bec9fa2fc6aff0001511292446@185.237.252.118:26656,bb94a8d60f24e4f1ba34d99eb434f7b486f4e432@34.69.129.28:26656,e40801e60d93cda37ca5e163d036231cde0fe924@88.198.52.46:26756,f7b402b0969bf7328405e40a57d650f1ac20795b@108.209.99.65:26670,e0f529d43ab666fa6fedc755b447a0e6bd3a5348@202.61.203.5:26656,21f44f233527edc5a7e1785a57e7ff27e2f586cf@198.7.119.28:26666,b77f7722b89b5c672a7333c5f0c05d3e04e7eb89@15.204.101.32:26656,6add5071ec8460fb3fd10f7872ca5f66946798f5@185.234.71.196:26666,e963d6e9740b890bc21fe4957067598f574f52b4@35.228.254.77:26656,2565f8b80bee76b4e26c61b8c5df70d33783bbd0@52.27.124.13:26500,6f98707b7cf8e03ceff83ed5343a0aec74b57aed@37.27.53.176:26756,a1fc36c042ceb9c4a40210bb09e306c3058eb55d@103.19.29.228:26656,4764a306e1dee4290ca7f0b82b4545d742f6c6c3@202.61.239.113:26656,1e130e11095ed43d65bc9158bbcb6df9ec937f90@160.202.130.77:32124,c05cf6a8a99e2aef91134f4d580052c634f97380@198.7.119.10:26666,89ec173c61da9b32c7344aacfe72cc62e0b743a0@103.88.232.90:32121,cf71bbf831ac23f9348f6c3274a330d769229faf@5.182.17.72:26666,f4ddbf4f053141d600279ddb45e3c67ae8f5b777@160.202.130.23:32125,637077d431f618181597706810a65c826524fd74@176.9.120.85:26756,838a81ce3b3b8f05c30347142317809926e014c2@89.58.26.89:26656,6ab4b2324edc03805c91a3684bd7d86d6bc5e158@80.64.208.205:26656,e4f87c7fd5fac03a4bbea9e334a7d14079d764f0@62.171.168.129:26666,3b34414c3cfdc2fe0eaa468d5409c1515bad3bc6@185.216.178.115:26656,6c2304c75fa845077f2896a2dec7e1dbecf6abd2@160.202.130.93:32123,a13507afc590bd2db1094db1bb152c3d48493e05@37.60.230.101:26656,338cbb34b97db64c4e6b1e54951a0f63f563d883@89.58.29.166:26656,d91f20e86fd247944f7346b199dbd861cf26cf6d@89.58.46.152:26656,88cdf4101019e8da271c944e4bde49d96f93072a@46.38.236.213:26656,b892fae8b6c39740353cf941d591e1414ffd9928@84.46.246.74:26656,6bbc4888c720760ebac79c8492411d8c1be1c07a@144.76.201.45:26656,3d4294c16a9d058fab571e82e9e52fe80736b259@202.61.229.11:26656,66ea64ffa2628643124905de9a38f3091f57a975@94.16.111.200:26656,5f0ee08078930c50d876a43e88215850a149684e@161.156.170.197:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.allorad/config/config.toml
```

#### create service file

```
sudo tee /etc/systemd/system/allora.service > /dev/null <<EOF
[Unit]
Description=allora node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.allorad
ExecStart=$(which allorad) start --home $HOME/.allorad
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

```
sudo systemctl daemon-reload
sudo systemctl enable allora.service
sudo systemctl restart allora.service && sudo journalctl -u allora.service -f
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```
sudo systemctl stop allora.service
cp $HOME/.allorad/data/priv_validator_state.json $HOME/.allorad/priv_validator_state.json.backup
rm -rf $HOME/.allorad/data
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -L https://snapshots.coinhunterstr.com/allora/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.allorad
mv $HOME/.allorad/priv_validator_state.json.backup $HOME/.allorad/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart allora.service && sudo journalctl -u allora.service -f --no-hostname -o cat
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```
bash <(wget -qO- https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/allora.sh)
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için `allorad status 2>&1 | jq` komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

> İlk önce Pubkeyimizi alıyoruz.

```
allorad comet show-validator
```

`{"@type":"/cosmos.crypto.ed25519.PubKey","key":"0LuMdRNJpWGiH+b+................"}` buna benzer bir çıktı alacaksınız.

```
cd $HOME
```

> Aşağıdaki dosyayı kendinize göre düzenlemeyi unutmayın. Validator ismi, site linkleri vs.

```
cat << EOF > ~/.allorad/config/validator.json
{
	"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"m0nifXztPm9lMpTSUNz6HaUXK26oJLRAdVqhUZJY/QU="},
	"amount": "100000000000uallo",
	"moniker": "Monikerİsmi",
	"identity": "",
	"website": "",
	"security": "",
	"details": "👑Coin Hunters Community",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}
EOF
```

> terminale yapıştırdıktan sonra, CTRL X Y enter ile çıkıyoruz.
>
> Şimdi tekrardan node restart atalım

```
sudo systemctl restart allora.service
```

> Şimdi aşağıdaki komutu çalıştırıyoruz. `wallet` yerine kendi cüzdan isminizi yazmayı unutmayın. Terminale cüzdan kurmak için `Useful Commands` bölümüne bakabilirsiniz.

```
allora tx staking create-validator $HOME/validator.json --from $WALLET --chain-id allora-testnet-1 --fees 0uallo
```


# Snapshots

#### Her 24 saatte bir Snapshot Alır ve yayınlar. <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

```
sudo systemctl stop allora.service
cp $HOME/.allorad/data/priv_validator_state.json $HOME/.allorad/priv_validator_state.json.backup
rm -rf $HOME/.allorad/data $HOME/.allorad/wasm
```

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl https://snapshots.coinhunterstr.com/allora/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.allorad
mv $HOME/.allorad/priv_validator_state.json.backup $HOME/.allorad/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart allora.service && sudo journalctl -u allora.service -f
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
allorad keys add wallet
```

**RECOVER EXISTING KEY**

```
allorad keys add wallet --recover
```

**LIST ALL KEYS**

```
allorad keys list
```

**DELETE KEY**

```
allorad keys delete wallet
```

**EXPORT KEY TO A FILE**

```
allorad keys export wallet
```

**IMPORT KEY FROM A FILE**

```
allorad keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

```
cd $HOME
# Create validator.json file
echo "{\"pubkey\":{\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"$(allorad comet show-validator | grep -Po '\"key\":\s*\"\K[^"]*')\"},
    \"amount\": \"1000000000000000000uallo\",
    \"moniker\": \"test\",
    \"identity\": \"\",
    \"website\": \"\",
    \"security\": \"\",
    \"details\": \"CoinHunters Community ❤️\",
    \"commission-rate\": \"0.1\",
    \"commission-max-rate\": \"0.2\",
    \"commission-max-change-rate\": \"0.01\",
    \"min-self-delegation\": \"1\"
}" > validator.json
# Create a validator using the JSON configuration
allorad tx staking create-validator validator.json \
    --from wallet \
    chain-id allora-testnet-1 \
	--gas auto --gas-adjustment 1.5 --fees 0.0uallo \
```

**UNJAIL VALIDATOR**

```
allorad tx slashing unjail --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
allorad tx distribution withdraw-rewards $(allorad keys show wallet --bech val -a) --commission --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
allorad tx distribution withdraw-rewards $(allorad keys show wallet --bech val -a) --commission --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**DELEGATE TOKENS TO YOURSELF**

```
allorad tx staking delegate $(allorad keys show wallet --bech val -a) 1000000000000000000uallo --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
allorad tx staking delegate <TO_VALOPER_ADDRESS> 1000000000000000000uallo --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
allorad tx staking redelegate $(allorad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000000000000000uallo --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
allorad tx staking unbond $(allorad keys show wallet --bech val -a) 1000000000000000000uallo --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**SEND TOKENS TO THE WALLET**

```
allorad tx bank send wallet <TO_WALLET_ADDRESS> 1000000000000000000uallo --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
allorad query gov proposals
```

**VIEW PROPOSAL BY ID**

```
allorad query gov proposal 1
```

**VOTE ‘YES’**

```
allorad tx gov vote 1 yes --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**VOTE ‘NO’**

```
allorad tx gov vote 1 no --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**VOTE ‘ABSTAIN’**

```
allorad tx gov vote 1 abstain --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

**VOTE ‘NOWITHVETO’**

```
allorad tx gov vote 1 NoWithVeto --from wallet --chain-id allora-testnet-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.0uallo -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.allorad/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.allorad/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
allorad status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
allorad status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0uallo\"/" $HOME/.allorad/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
allorad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.allorad --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable allora.service
```

**DISABLE SERVICE**

```
sudo systemctl disable allorad
```

**START SERVICE**

```
sudo systemctl start allora.service
```

**STOP SERVICE**

```
sudo systemctl stop allora.service
```

**RESTART SERVICE**

```
sudo systemctl restart allora.service
```

**CHECK SERVICE STATUS**

```
sudo systemctl status allora.service
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u allora.service -f --no-hostname -o cat
```


# Worker Node

### **Sistem Gereksinimleri**

**Operating System**: Any modern operating system including Windows, macOS, or Linux\
**CPU**: Minimum of 1/2 core.\
**Memory**: 2 to 4 GB.\
**Storage**: SSD or NVMe with at least 5GB of space.

Sistem gereksinimleri düşük olduğu için, çalıştırdığınız bir sunucu içine ekleyebilirsiniz.

### Kurulum

#### Güncelleme ve Paket yüklemelerini yapıyoruz.

```bash
sudo apt update & sudo apt upgrade -y

sudo apt install ca-certificates zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev curl git wget make jq build-essential pkg-config lsb-release libssl-dev libreadline-dev libffi-dev gcc screen unzip lz4 -y

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

#### Docker Yükleyelim

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)

curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

sudo groupadd docker
sudo usermod -aG docker $USER
```

#### Go Kuralım

```bash
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.4.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> $HOME/.bash_profile
source .bash_profile
```

#### Allora  Ağı ve Cüzdan kurulumu

```bash
git clone https://github.com/allora-network/allora-chain.git
cd allora-chain && make all
```

Cüzdan açıyoruz.

> `WalletName` yerine istediğiniz bir isim verebilirsiniz.

> Cüzdanı açarken sizden iki kere şifre isteyecek aynı şifreleri giriyoruz. Sonrasında, cüzdan adresinizi ve gizli kelimelerinizi verecek, bir yere not etmeyi unutmayın.

```bash
allorad keys add WalletName
```

Kullandığınız cüzdanı içine aktarmak istersenizde aşağıdaki komutu kullanabilirsiniz. `WalletName` yerine istediğiniz bir isim girebilirsiniz.&#x20;

```
allorad keys add WalletName--recover
```

### Allora Kayıt ve Cüzdan Aktarma

> Öncelikle yukarıkdaki komutta oluşturduğumuz cüzdanımızın gizli kelimeleriyle Keplr wallet'a cüzdanımızı import ediyoruz.

> Cüzdanımıza Allora ağını eklemek için [BURADAN ](https://explorer.edgenet.allora.network/wallet/suggest)cüzdanımızı siteye bağlıyor ve ağı ekliyoruz. Ağı ekledikten sonra Keplr Wallet Manange Chain Visibility sekmesine basım tüm ağları kabul ederek, Allora ağına ulaşabilirsiniz.

> [BURADAN](https://faucet.edgenet.allora.network/)  cüzdanımıza Allora token istiyoruz.

> [BURADAN ](https://app.allora.network?ref=eyJyZWZlcnJlcl9pZCI6IjA3YjViODQzLWUyOTItNDEwYy04NGVjLWNlZmQ0ZWU5MDA4ZiJ9)Allora Dashboard'a gidiyoruz ve Keplr wallet'ımız ile bağlanıyoruz.

### Worker Başlatalım

```bash
cd $HOME
git clone https://github.com/allora-network/allora-huggingface-walkthrough
cd allora-huggingface-walkthrough
```

Dosyalarımızı oluşturalım

```bash
mkdir -p worker-data
chmod -R 777 worker-data
```

#### Nano congif dosyasını düzenleyelim.

```
nano config.json
```

> Aşağıdaki dosyada değişecek parametreleri yazıyorum. "cüzdanadı" bölümüne cüzdanınızı oluştururken hangi ismi yazdıysan onu yazıyorsun.&#x20;

> Cüzdan Kelimeleri bölümüne ise, cüzdanı oluşturduğunda sana verilen gizli kelimeleri yazıyorsun. Diğer bölümlere dokunmana gerek yok.

```
{
    "wallet": {
        "addressKeyName": "cüzdanadı",
        "addressRestoreMnemonic": "Cüzdan kelimeleri",
        "alloraHomeDir": "/root/.allorad",
        "gas": "1000000",
        "gasAdjustment": 1.0,
        "nodeRpc": "https://allora-rpc.testnet-1.testnet.allora.network/",
        "maxRetries": 1,
        "delay": 1,
        "submitTx": false
    },
    "worker": [
        {
            "topicId": 1,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 1,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        },
        {
            "topicId": 2,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 3,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        },
        {
            "topicId": 3,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 5,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "BTC"
            }
        },
        {
            "topicId": 4,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 2,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "BTC"
            }
        },
        {
            "topicId": 5,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 4,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "SOL"
            }
        },
        {
            "topicId": 6,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 5,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "SOL"
            }
        },
        {
            "topicId": 7,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 2,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ETH"
            }
        },
        {
            "topicId": 8,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 3,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "BNB"
            }
        },
        {
            "topicId": 9,
            "inferenceEntrypointName": "api-worker-reputer",
            "loopSeconds": 5,
            "parameters": {
                "InferenceEndpoint": "http://inference:8000/inference/{Token}",
                "Token": "ARB"
            }
        }
        
    ]
}
```

CTRL X Y enter yapıp kayıt edip çıkıyoruz.

#### Coingecko API Key

Öncelikle Coingecko'dan bir tane hesapl oluşturuyoruz. Yoksa aşağıdaki linkten girip hesap oluşturabilirsiniz.&#x20;

[BURADAN](https://www.coingecko.com/en/developers/dashboard) coingecko sitesine gidiyoruz. Kayıt adımlarınıa hallettikten sonra,

Demo account diyoruz ve kendimize bir API oluşturuyoruz.&#x20;

```
nano app.py
```

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FEVWj7tlfYNqGYA7dcXJX%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-08-25%20013029.png?alt=media&amp;token=10e74d30-36c1-499f-b057-10e02f6c08e3" alt=""><figcaption></figcaption></figure>

Bu işaretlediğim yeri buluyoruz ve coingeckodan aldığımız API key bu bölüme girip, CTRL X Y enter yapıp kayıt ediyoruz.

#### Worker başlatalım&#x20;

```
chmod +x init.config
./init.config
```

```
docker compose up --build -d
```

#### Log kontrolü yapalım

```
docker ps -a
```

```
docker logs -f container id yazıyoruz. 
```

> Örnek :  docker logs -f 14ce1bc8fe26 gibi sizde container başındaki id'leri alıp logları kontrol edebilirsiniz.&#x20;

<figure><img src="https://2490299121-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FU1FMmboGmRvELNMKu5O3%2Fuploads%2FWORuDfIiCZom0fMon4Js%2FEkran%20g%C3%B6r%C3%BCnt%C3%BCs%C3%BC%202024-08-25%20013441.png?alt=media&amp;token=6979f067-0a93-462c-8226-964b88884939" alt=""><figcaption></figcaption></figure>

Yukarıdaki görsel gibi çıktı alırsanız. işlem tamamdır. Puan kazanmaya başlayabilirsiniz.&#x20;


# Artela Network

<figure><img src="https://pbs.twimg.com/profile_banners/1644877082886049792/1714712552/1500x500" alt=""><figcaption></figcaption></figure>

Artela is a blockchain network that enables developers to create feature-rich decentralized applications (dApps) by incorporating user-defined native extensions. With its Artela Blockchain and Aspect Programming framework, Artela aims to go beyond traditional smart contracts and provide an extensible and scalable platform for pushing the boundaries of dApp functionality in the Web3 ecosystem.

**Offical Links**: [Web ](https://artela.network/)| [Twitter ](https://x.com/Artela_Network)| [Discord](https://discord.gg/artela)


# Service

### API

{% embed url="<https://artela-api.chainad.org/>" %}

### RPC

{% embed url="<https://artela-rpc.chainad.org/>" %}

### EXPLORER

{% embed url="<https://explorer.coinhunterstr.com/artela>" %}


# Installation

### Manual Installation <a href="#installation" id="installation"></a>

#### Gerekli Sistem <a href="#install-dependencies" id="install-dependencies"></a>

Ubuntu 22.04

<table><thead><tr><th width="279">CPU</th><th>RAM</th><th>SSD</th></tr></thead><tbody><tr><td>4 vCPU</td><td>8 GB RAM</td><td>160 SSD</td></tr></tbody></table>

#### Install dependencies <a href="#install-dependencies" id="install-dependencies"></a>

**UPDATE SYSTEM AND INSTALL BUILD TOOLS**

```bash
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
```

**INSTALL GO**

```bash
cd $HOME
VER="1.20.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin   
```

#### Download and build binaries <a href="#download-and-build-binaries" id="download-and-build-binaries"></a>

```bash
cd $HOME
rm -rf artela
git clone https://github.com/artela-network/artela
cd artela
git checkout v0.4.7-rc6
make install
```

#### Set Vars

> `Moniker` yerine validator adınızı ekliyoruz.

```bash
artelad config node tcp://localhost:26657
artelad config keyring-backend os
artelad config chain-id artela_11822-1
artelad init Moniker --chain-id artela_11822-1
```

#### Download Genesis and Addrbook

```bash
wget -O $HOME/.artelad/config/genesis.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/Artela/genesis.json
wget -O $HOME/.artelad/config/addrbook.json https://raw.githubusercontent.com/CoinHuntersTR/props/main/Artela/addrbook.json
```

#### Config Pruning

```bash
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.artelad/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.artelad/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.artelad/config/app.toml

# set minimum gas price, enable prometheus and disable indexing
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.025art"|g' $HOME/.artelad/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.artelad/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.artelad/config/config.toml
```

#### Set seeds and peers

```bash
SEEDS="8d0c626443a970034dc12df960ae1b1012ccd96a@artela-testnet-seed.itrocket.net:30656"
PEERS="5c9b1bc492aad27a0197a6d3ea3ec9296504e6fd@artela-testnet-peer.itrocket.net:30656,c3a0fba453eaf36a5c0d947b1a0dd9a947021781@31.220.87.218:26656,51f9fbb10f25dc50d7d2889ca822c927f7285b30@38.242.134.178:3456,8b7197aef087a286bdb16ea576f193958dc60f6c@173.212.240.21:45656,77240cdc1ca4d2f1443d353db09feff32a05f5fc@109.199.101.235:3456,2d05a43b48a3b0a83d098e40550e6d3c7b54f2e3@89.23.121.197:26656,196bc7b37309b3cf07a7b6f38cfafa43a81836c8@86.48.24.249:3456,a17c20532ade4da93bf79584e09966c0435e77ed@223.16.180.226:3456,8f85b1daa2b07001b2697829d3a86d056ec507f5@85.190.243.182:3456,8d5fd4e7f9a6c6ec7ee3bd05f0dbccf0bb4e7545@185.216.177.253:3456,1328a4b6bab05f261666aa9dd050d37dd5e42e71@38.242.201.217:45656,e0c08d7623b2a0dc5d37e01e201055c00fff6b9d@5.189.162.179:45656,722349c6f2be613fa6d74cdea7676db84da1f4db@202.61.201.254:3456,9bf0f78376f849e4c463232831d9f90864dc5e9c@109.199.105.150:25656,7fe7f73d4282f23136381ba9e8c5c606d6142174@202.61.229.11:3456,f8d09c28488760222ccfd2b0573278cf07090f2c@38.242.198.48:26656,34eb2e37fc33916c660d5a33a083fe7ddad77c34@89.58.55.104:3456,7893e0c798777d7fed32c0e516142cd25a2d79bc@173.249.36.218:25656,64fb37ba44085f78623b8c13f0aa12a479abce15@89.58.4.216:3456,1a64252bf8fa13a579fde10dfc0a07983340b64f@109.199.98.252:3456,7b3ec6b973718197393e59c59457bf8a43d69ba7@207.180.201.34:25656,ded3523e5482756e9ad1af15e8e77441758d84b7@152.53.46.83:3456,032df070c8abbc3c932d1c45bc0229cee42f1aae@143.198.120.40:3456,485d190a26ab77a0033b260b906a635185dd6f29@81.0.218.145:3456,9a3b4090f04393e9bed38caa03e791bf9b626733@207.180.222.233:25656,314c19013e9163880464074d3bce641b29bbbf45@185.216.178.115:3456,abbdd49907e2712cb0e97411c7af6b175e3df193@46.38.233.14:3456,e75731bea99f66e70bc6e5500edd7c32b67d744a@46.38.234.173:3456,40731967db351a536411c2ba63674bd0f986178d@210.209.241.155:3456,cb819317d418b587cf6cdf64dbcab8fd17747317@94.72.101.228:3456,d4ed29b7305acebbd4d9b09b8c0a1b282c40eeee@207.180.239.208:25656,3bdefb4715e78ef0df908cab3686137a8bbee830@173.249.15.201:25656,16fb76df7d89c95ea034d8c3b3a4adae7275ca95@195.26.249.61:3456,760f8de528fefccb62e742f253820fc91593b221@95.217.7.7:30656,bd6564af6edf4693c0a0da976bc75559a83e48bd@173.249.19.35:25656,31582a1e8ee7276e9a669dcfb609e2d4f47b029b@193.164.4.110:45656,2d68fc025d76d2312f7dd0e8a81a9c18ddf35d98@49.12.60.232:26656,1a46d742677398b82c94bca437895994f42ec73c@37.60.251.211:27656,c6c019048cfb3e0605d6fdc095593f3d7118476e@202.61.226.0:3456,9ace11332adb580c5e9c2374f67912257e06b132@109.199.105.143:25656,f896f3bc44d93276cd2567f71bde22d95dc31f8f@38.242.142.199:23456,2301d24d2fc3d24e5ffc738cd566b91645285b4d@202.61.251.119:3456,e558fe31993005a10cc31bd03832cab654b7e91f@45.157.177.49:3456,f17c630441f8391089c2b8db3c55ab7d10ddef42@37.221.195.187:3456,776ed7e579e7418b95cb3c1fd0ac32622e08abf0@202.61.193.234:3456,0adf028e6f05562f16a11ceab6190837ef08658c@37.221.195.234:3456,16408ed57fc59c99d8489934e95970fb28a8f3e1@5.189.186.227:25656,38bf2c55c20cd81eba599f3a7f9e57cc87606e96@89.58.42.84:3456,6a3558d74fa964e0431d289b0d94a67561f72de2@85.10.211.120:3456,1c299d3261c5b66383d454c51228ef3c7b62e575@109.199.125.5:26656,55f27297790beba8c0c2a72b412c111ac6dedde1@173.249.29.163:25656,0cb0662c62066ac78473f37673b53fd0bd8c0552@185.233.107.30:3456,d565aa328e3517d73b012e85975c98e44583fd47@193.24.211.121:3456,421a759bd6aaf700ace2c6e85157d0254226ac58@46.38.235.183:3456,32d32a7aa44191cb290dc2983513ff78ce1607f0@209.145.62.79:3456,b77f0acba0d7ae302ad4745fede92115cd47973c@202.61.203.86:3456,57fb3a944263b2bcc3e11b4272afd716c68930f7@94.16.110.148:3456,6f282810194578f46b76ea72dfa684f049bd9c89@45.83.105.135:3456,2961de689034c890e744c5fcffc69e37f63fd233@202.61.237.88:3456,0cabe01a4dfcef4f3105a575a5bea58b0310d7d2@185.252.234.24:3456,d1d43cc7c7aef715957289fd96a114ecaa7ba756@65.21.198.100:23410,4fb0ae560b9db184fa2fd4baef9bce3d2fe405d0@159.203.41.68:3456,698b6b26a926b518e898d61f364ab02a7ba34c0c@152.53.22.117:3456,6bbde25b5a6596895e1e0b8b9d64087c47151ebb@84.21.171.36:3456,d93e20a018655c24433df3336e9b0a31b14dace1@185.163.116.147:3456,ac017a948dbceaa6d32c22bb66526db9ca32aa02@109.199.105.121:25656,f354b9109233b28c893c1e021e4ce3146567af74@194.13.80.26:3456,cb049bd978e3ff0b06afe484892a8e365cb3d341@202.61.227.203:3456,5b77a3513fe0c64d71481465ea18584ee87492e4@173.212.220.218:25656,c0bd8c98fe87619eb13a63ddf2bb15e7da64c80c@66.94.112.163:3456,a543d4bea035cdd94ac359e57ec3b946a02d6ae5@173.212.198.7:3456,97f783daa39cbc9e872a184e9fbbec1a224434f4@202.61.239.113:3456,e5cd9d07b636f94a7d6f0c93b1233ea695e0e750@46.38.238.119:3456,8effff8800a65594d1459e2f49fb6e6544bb0b46@152.53.23.168:3456,bbb7d2c565e8c7c2c2aa460a26b0dfb03e17e5d3@104.32.197.159:3456,b444df551c77f202311bd065744be0a134e6875a@43.153.109.9:3456,0a69a8fa221ca6fa535af468176c165a10de6365@170.64.170.231:3456,e0e8bb86b595283ef87bfb4c0e518572064cf0e3@173.249.40.47:25656,6406e7f15cab6fbcdb47f0a99155ef61fdef6cad@207.180.240.170:25656,7879372819887d27f9c66c9db4769c7f03bb9a18@94.16.115.193:3456,a62f3c76b1c566f13adde27ae010b29f7941537d@173.249.30.136:25656,058fda1a93e2373c547bb43f7cd8f02a398ae491@170.64.173.237:3456,98cf95ceb6fa6b4c895829550b02dfed22142739@123.202.71.232:3456,a9f2fe2606873e3fade9bcdcbbf86e6452fdc2d1@8.219.52.182:26656,4dd77ccc0a3e1109538fb6cca405b06fa1c6f3e8@146.190.246.24:3456,6463b1f377557f2f55db3ae5c6cbe59ea36353f0@202.61.228.221:3456,0b65429c41841108c9bc0738dd585c3d26696687@89.58.58.237:3456,1ca786ddb9535fd51d877374a38a5826b8bf093c@152.53.21.184:3456,dd1753485f6e46cd8ce1bd780e2fbe0bbf5c60c9@37.221.199.185:3456,02b64f78e2a83a1bd9db0589479ca6e74ae827f9@202.61.251.214:3456,cfc5a5834ae85ade9b2ced1735927af89249ab45@161.97.122.190:3456,4fb7c57db112d45aebae0967a7e3698822b725f9@158.220.91.106:3456"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.artelad/config/config.toml
```

#### create service file

```bash
sudo tee /etc/systemd/system/artelad.service > /dev/null <<EOF
[Unit]
Description=Artela node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.artelad
ExecStart=$(which artelad) start --home $HOME/.artelad
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

#### enable and start service

```bash
sudo systemctl daemon-reload
sudo systemctl enable artelad
sudo systemctl start artelad && sudo journalctl -u artelad -f
```

#### Snapshot

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```bash
curl -o - -L https://snapshots.coinhunterstr.com/artela/artela_7964034.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.artelad
mv $HOME/.artelad/priv_validator_state.json.backup $HOME/.artelad/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```bash
sudo systemctl restart artelad && sudo journalctl -u artelad -f
```

### Automatic Installation <a href="#auto-installation" id="auto-installation"></a>

> Moniker yerine Validator isminizi yazıp enter basın.

```bash
wget -q -O artela.sh https://raw.githubusercontent.com/CoinHuntersTR/props/main/AutoInstall/artela.sh && chmod +x artela.sh && ./artela.sh
```

### Sync Node

> Node ağ ile eşleşmiş olması gerekiyor. Bunun için&#x20;
>
> ```bash
> artelad status 2>&1 | jq
> ```
>
> &#x20;komutunu çalıştırdığınızda `false` çıktısı vermesi gerekir. `True` çıktı alırsanız aşağıdaki adımlara devam etmeyin.

### Run a Validator

> Öncelikle cüzdan oluşturalım `walletname` yerin cüzdan ismi giriyoruz.&#x20;

```bash
artelad keys add walletname
```

Faucetten token istemek için size EVM adresi gerekli olacak bunun için oluşturduğunuz cüzdanın EVM adresini alalım. burada `wallet` yerine cüzdan adınızı yazmayı unutmayın. Artela discord'da faucet kanalından, token isteyelim.

```bash
echo "0x$(artelad debug addr $(artelad keys show wallet -a) | grep hex | awk '{print $3}')"
```

```bash
artelad tx staking create-validator \
--amount 1000000uart \
--from wallet \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(artelad tendermint show-validator) \
--moniker "MonikerName" \
--identity "" \
--website "" \
--details "CoinHunters Community" \
--chain-id artela_11822-1 \
--gas auto --gas-adjustment 1.5 \
-y
```

> `wallet` alanına cüzdan ismimizi yazıyoruz.&#x20;
>
> `MonikerName` yerine Validator ismimizi yazıyoruz.
>
> `identity` alanına Avatar ID'mizi yazıyoruz. Bunun için Avatarımızı keybase.io sitesine yükleyip ID alabilirsiniz.&#x20;
>
> `website` alanına twitter yada github adresinizi ekleyebilirsiniz.&#x20;


# Snapshots

#### Stop the service and reset the data <a href="#stop-the-service-and-reset-the-data" id="stop-the-service-and-reset-the-data"></a>

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

#### Download latest snapshot <a href="#download-latest-snapshot" id="download-latest-snapshot"></a>

```
curl -o - -L https://snapshots.coinhunterstr.com/artela/artela_7964034.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.artelad
mv $HOME/.artelad/priv_validator_state.json.backup $HOME/.artelad/data/priv_validator_state.json
```

#### Restart the service and check the log <a href="#restart-the-service-and-check-the-log" id="restart-the-service-and-check-the-log"></a>

```
sudo systemctl restart artelad && sudo journalctl -u artelad -f
```


# Useful commands

### 🔑 Key management <a href="#key-management" id="key-management"></a>

**ADD NEW KEY**

```
artelad keys add wallet
```

**RECOVER EXISTING KEY**

```
artelad keys add wallet --recover
```

**WALLET EVM ADDRESS**

```
echo "0x$(artelad debug addr $(artelad keys show wallet -a) | grep hex | awk '{print $3}')"
```

**LIST ALL KEYS**

```
artelad keys list
```

**DELETE KEY**

```
artelad keys delete wallet
```

**EXPORT KEY TO A FILE**

```
artelad keys export wallet
```

**IMPORT KEY FROM A FILE**

```
artelad keys import wallet wallet.backup
```

**QUERY WALLET BALANCE**

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

### 👷 Validator management <a href="#validator-management" id="validator-management"></a>

Please make sure you have adjusted **moniker**, **identity**, **details** and **website** to match your values.

```
artelad tx staking create-validator \
--amount 1000000uart \
--from wallet \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--pubkey $(artelad tendermint show-validator) \
--moniker "MonikerName" \
--identity "" \
--website "" \
--details "CoinHunters Community" \
--chain-id artela_11822-1 \
--gas auto --gas-adjustment 1.5 \
-y
```

**UNJAIL VALIDATOR**

```
artelad tx slashing unjail --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**JAIL REASON**

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

**LIST ALL ACTIVE VALIDATORS**

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

**LIST ALL INACTIVE VALIDATORS**

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

**VIEW VALIDATOR DETAILS**

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

### 💲 Token management <a href="#token-management" id="token-management"></a>

**WITHDRAW REWARDS FROM ALL VALIDATORS**

```
artelad tx distribution withdraw-rewards $(artelad keys show wallet --bech val -a) --commission --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**WITHDRAW COMMISSION AND REWARDS FROM YOUR VALIDATOR**

```
artelad tx distribution withdraw-rewards $(artelad keys show wallet --bech val -a) --commission --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**DELEGATE TOKENS TO YOURSELF**

```
artelad tx staking delegate $(artelad keys show wallet --bech val -a) 1000000uart --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**DELEGATE TOKENS TO VALIDATOR**

```
artelad tx staking delegate <TO_VALOPER_ADDRESS> 1000000uart --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**REDELEGATE TOKENS TO ANOTHER VALIDATOR**

```
artelad tx staking redelegate $(artelad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uart --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**UNBOND TOKENS FROM YOUR VALIDATOR**

```
artelad tx staking unbond $(artelad keys show wallet --bech val -a) 1000000uart --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**SEND TOKENS TO THE WALLET**

```
artelad tx bank send wallet <TO_WALLET_ADDRESS> 1000000uart --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

### 🗳 Governance <a href="#governance" id="governance"></a>

**LIST ALL PROPOSALS**

```
artelad query gov proposals
```

**VIEW PROPOSAL BY ID**

```
artelad query gov proposal 1
```

**VOTE ‘YES’**

```
artelad tx gov vote 1 yes --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**VOTE ‘NO’**

```
artelad tx gov vote 1 no --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**VOTE ‘ABSTAIN’**

```
artelad tx gov vote 1 abstain --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

**VOTE ‘NOWITHVETO’**

```
artelad tx gov vote 1 NoWithVeto --from wallet --chain-id artela_11822-1 --gas-adjustment 1.5 --gas auto --gas-prices 0.025art -y
```

### ⚡️ Utility <a href="#utility" id="utility"></a>

**UPDATE PORTS**

```
UPDATE PORTS
CUSTOM_PORT=110
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.artelad/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.artelad/config/app.toml
```

**UPDATE INDEXER**

**Disable indexer**

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

**Enable indexer**

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

**UPDATE PRUNING**

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

### 🚨 Maintenance <a href="#maintenance" id="maintenance"></a>

**GET VALIDATOR INFO**

```
artelad status 2>&1 | jq .ValidatorInfo
```

**GET SYNC INFO**

```
artelad status 2>&1 | jq
```

**GET NODE PEER**

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

**CHECK IF VALIDATOR KEY IS CORRECT**

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

**GET LIVE PEERS**

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

**SET MINIMUM GAS PRICE**

```
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025art\"/" $HOME/.artelad/config/app.toml
```

**ENABLE PROMETHEUS**

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

**RESET CHAIN DATA**

```
artelad tendermint unsafe-reset-all --keep-addr-book --home $HOME/.artelad --keep-addr-book
```

**REMOVE NODE**

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

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

### ⚙️ Service Management <a href="#service-management" id="service-management"></a>

**RELOAD SERVICE CONFIGURATION**

```
sudo systemctl daemon-reload
```

**ENABLE SERVICE**

```
sudo systemctl enable artelad
```

**DISABLE SERVICE**

```
sudo systemctl disable artelad
```

**START SERVICE**

```
sudo systemctl start artelad
```

**STOP SERVICE**

```
sudo systemctl stop artelad
```

**RESTART SERVICE**

```
sudo systemctl restart artelad
```

**CHECK SERVICE STATUS**

```
sudo systemctl status artelad
```

**CHECK SERVICE LOGS**

```
sudo journalctl -u artelad -f --no-hostname -o cat
```


# Avail

Turing Tesnet

<figure><img src="https://pbs.twimg.com/profile_banners/1508458204866486283/1687262602/1500x500" alt=""><figcaption></figcaption></figure>

Avail is an Ethereum Data Network focused on data availability, featuring a modular technology stack to accelerate Web3 unification. With layers including Data Availability (DA), Nexus, and Fusion, Avail aims to dissolve market fragmentation, providing a unified, secure, and scalable platform that connects various blockchain ecosystems, offering a cohesive experience for users and developers. The platform utilizes validity proofs, zero-knowledge proof-based coordination rollups, and Fusion Security to enhance cryptoeconomic security, bridging the gap between different tokens and creating a more integrated and efficient blockchain ecosystem.

**Offical Links**: [Web](https://www.availproject.org/) | [Twitter ](https://twitter.com/AvailProject)| [Discord ](https://discord.gg/availproject)| [Telegram](https://discord.gg/availproject)


# Installation

Turing Testnet

## Avail-Turing-Testnet

## Kurulum

### Go Setup

```
sudo apt update
sudo apt install make clang pkg-config libssl-dev build-essential
```

```
cd
sudo mkdir avail
```

```
cd avail
```

### Dosyaları çekiyoruz

```
wget https://github.com/availproject/avail/releases/download/v2.2.5.1/x86_64-ubuntu-2204-avail-node.tar.gz
```

### Dosyaları zipten çıkartıyoruz.

```
tar -xf x86_64-ubuntu-2204-avail-node.tar.gz
```

### Sevis Oluşturuyoruz...

```
screen -S avail
```

### Node Başlatalım

> \[name your node] yerine Validator ismini giriyoruz.

```
./avail-node --chain turing --name [name your node] --validator
```

### Systemd ile kurulum

> VALIDATORNAME yerine belirlediğimiz ismi yazıyoruz.

```
sudo tee /etc/systemd/system/availd.service > /dev/null <<'EOF'
[Unit]
Description=Avail Validator Node
After=network.target

[Service]
User=root
WorkingDirectory=/root/avail/
ExecStart=/root/avail/avail-node --chain turing --name VALIDATORNAME --validator
Restart=always
RestartSec=3
LimitNOFILE=4096

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

#### Node başlatalım

```
sudo systemctl daemon-reload
sudo systemctl enable availd.service
sudo systemctl start availd.service
```

```
sudo systemctl status availd.service
```

#### Log Kontrolü

```
journalctl -f -u availd.service
```




---

[Next Page](/llms-full.txt/1)

