March 7, 2023
OJO network node (ojo-devnet)
Discord | Twitter | Github | Explorer
Мінімальні рекомендовані апаратні вимоги для запуску валідатора:
Нода
# підготовка сервера sudo apt update && sudo apt upgrade -y sudo apt install curl build-essential git wget jq make gcc tmux chrony -y
# ставимо Go (однією командою) ver="1.20.1" 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
# задаємо перемінні #придумуємо назву ноди та міняємо замість <your_moniker> OJO_MONIKER=<your_node_name>
# зберігаємо перемінні в bash echo 'export OJO_MONIKER='$OJO_MONIKER >> $HOME/.bash_profile echo "export OJO_CHAIN_ID=ojo-devnet" >> $HOME/.bash_profile echo "export OJO_PORT=17" >> $HOME/.bash_profile source $HOME/.bash_profile
# качаємо бінарні файли cd $HOME wget https://github.com/ojo-network/ojo/releases/download/v0.1.2/ojod-v0.1.2-linux-amd64.tar.gz tar -xvzf ojod-v0.1.2-linux-amd64.tar.gz sudo chmod +x ojod && sudo mv ./ojod /usr/local/bin/ojod sudo rm -rf ojod_linux_amd64.tar.gz ojod version # version: v0.1.2
# ініціалізовуємо ноду ojod init $OJO_MONIKER --chain-id $OJO_CHAIN_ID
# качаємо генезис curl -s https://rpc.devnet-n0.ojo-devnet.node.ojo.network/genesis | jq -r .result.genesis > $HOME/.ojo/config/genesis.json
Налаштовуємо порти
# config.toml
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${OJO_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${OJO_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${OJO_PORT}061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${OJO_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${OJO_PORT}660\"%" $HOME/.ojo/config/config.toml
# app.toml
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${OJO_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${OJO_PORT}91\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1${OJO_PORT}7\"%" $HOME/.ojo/config/app.toml
# client.toml
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:${OJO_PORT}657\"%" $HOME/.ojo/config/client.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:${OJO_PORT}656\"/" $HOME/.ojo/config/config.tomlojod config chain-id $OJO_CHAIN_ID ojod config keyring-backend test # налаштовуємо мінімальну ціну за газ, додаємо сіди/піриsed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025uojo\"/;" ~/.ojo/config/app.toml sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025uojo\"/;" ~/.ojo/config/app.toml SEEDS="" PEERS="affee2f485ca15c68c302ad98e8de41fcd0e71ba@162.19.238.49:26656,0465032114df76df206c9983968f2d229b3a50d6@88.198.32.17:39656,f474a520009496972515f843cdb835fc7d663779@65.109.23.114:21656,97ff540b57b89dd0b6737eddb92977523dd5a7b3@195.3.221.58:12656,9dc1f555bd37d6840237f32a2cd4d79ba1c80cb5@65.108.227.112:31656,8671c2dbbfd918374292e2c760704414d853f5b7@35.215.121.109:26656,a23cc4cbb09108bc9af380083108262454539aeb@35.215.116.65:26656,d33d825c394e622776d519c4add5186f85548664@178.128.84.49:50656,5af3d50dcc231884f3d3da3e3caecb0deef1dc5b@142.132.134.112:25356,fb10560d2e3aea7948a375dc87140c156a07acc4@195.201.83.242:17656" sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.ojo/config/config.toml # Налаштовуємо прунінг pruning="custom" pruning_keep_recent="100" pruning_keep_every="0" pruning_interval="10" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.ojo/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.ojo/config/app.toml sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.ojo/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.ojo/config/app.toml
State Sync
STATE_SYNC_RPC="http://207.180.243.64:36657" LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height) SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000)) SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash) sed -i \ -e "s|^enable *=.*|enable = true|" \ -e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \ -e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \ -e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \ -e "s|^persistent_peers *=.*|persistent_peers = \"$STATE_SYNC_PEER\"|" \ $HOME/.ojo/config/config.toml
# cтворюємо сервісний файл (Одна команда) sudo tee /etc/systemd/system/ojod.service > /dev/null <<EOF [Unit] Description=ojo After=network-online.target [Service] User=$USER ExecStart=/usr/local/bin/ojod start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
# запускаємо ноду sudo systemctl daemon-reload sudo systemctl enable ojod sudo systemctl restart ojod && sudo journalctl -u ojod -f -o cat
# подивитись логи sudo journalctl -u ojod -f -o cat # Вихід з логів через ctrl+c
wget -O $HOME/.ojo/config/addrbook.json "https://raw.githubusercontent.com/EnterStake/cosmosguides/main/Ojo/addrbook.json" sudo systemctl restart ojod && sudo journalctl -u ojod -f
# перевірити статус синхронізації
ojod status 2>&1 | jq "{catching_up: .SyncInfo.catching_up}"
# "catching_up": false - означає що нода синхронізувалась (чекаємо false)# створюємо/відновлюємо гаманець ojod keys add wallet ojod keys add wallet --recover
# зберігаємо адресу # Замініть <your_address> на адресу вашого гаманця OJO_ADDRESS=<your_address> echo "export OJO_ADDRESS=$OJO_ADDRESS" >> $HOME/.bash_profile source $HOME/.bash_profile
# перевіряємо баланс ojod q bank balances $OJO_ADDRESS
Валідатор
ojod tx staking create-validator \ --amount 10000000uojo \ --from wallet --commission-max-change-rate "0.01" \ --commission-max-rate "0.2" \ --commission-rate "0.05" \ --min-self-delegation "1" \ --pubkey $(ojod tendermint show-validator) \ --moniker <назва ноди> \ --identity=<identity> \ --website="Посилання на свій сат чи сторінку в інтернеті" \ --details="Кілька слів про себе" \ --chain-id $OJO_CHAIN_ID \ --fees=5500uojo \ --gas=auto -y
# записуємо valoper_address в bash # Замінюємо <your_valoper_address> на адресу валідатора, починається на nibivaloper... OJO_VALOPER=<your_valoper_address> echo "export OJO_VALOPER=$OJO_VALOPER" >> $HOME/.bash_profile source $HOME/.bash_profile
Зберігаємо priv_validator_key.json що знаходиться за адресою /root/.ojo/config/
# заделегувати у свого валідатора (1nibi = 1000000unibi) ojod tx staking delegate $OJO_VALOPER 1000000uojo --from wallet --chain-id ojo-devnet --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y