# SOURCE. validator setup **Published by:** [chaingon | web3topia](https://paragraph.com/@chaingon/) **Published on:** 2022-09-14 **URL:** https://paragraph.com/@chaingon/source-validator-setup ## Content ПодготовкаОбновляем системуsudo apt update && sudo apt upgrade -y Ставим зависимостиsudo apt install curl build-essential git wget jq make gcc -y sudo curl https://get.ignite.com/cli! | sudo bash Ставим GOver="1.18.3" # set ver. 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" >> ~/.bash_profile source ~/.bash_profile go version УстановкаКлонируем репоcd $HOME rm source -rf git clone https://github.com/Source-Protocol-Cosmos/source.git --branch testnet Собираем бинарникиcd source ignite chain build Настройка и запускЗадаем имя ноды придумываем и вставляем самиNODENAME=ПРИДУМАЙ_САМ Задаем переменныеecho "export NODENAME=$NODENAME" >> $HOME/.bash_profile if [ ! $WALLET ]; then echo "export WALLET=wallet" >> $HOME/.bash_profile fi SOURCE_CHAIN_ID=sourcechain-testnet source $HOME/.bash_profile Инициализируем нодуsourced init $NODENAME --chain-id=$SOURCE_CHAIN_ID Скачиваем генезисwget -qO $HOME/.source/config/genesis.json "https://raw.githubusercontent.com/Source-Protocol-Cosmos/testnets/master/sourcechain-testnet/genesis.json" Конфигинастраиваем минимальную цену за газ в app.tomlsed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0usource\"/" $HOME/.source/config/app.toml настраиваем чейнid чтобы не вводить каждый разsourced config chain-id $SOURCE_CHAIN_ID настраиваем сиды и пирыSEEDS="6ca675f9d949d5c9afc8849adf7b39bc7fccf74f@164.92.98.17:26656" PEERS="6ca675f9d949d5c9afc8849adf7b39bc7fccf74f@164.92.98.17:26656,6721349b8a9846b730fdadb9ddf0b0596acf98e7@217.13.223.167:26656,7ccb6331c8f8aed3439fe2f88d01f8808564f9e2@164.92.98.14:26656,c293787dd1aeede1e1716196db4abb30d171710e@38.242.220.245:26656,ee528debedd6b1dca93fbb5774519ea67c0eeb9b@142.93.134.100:26656,dbba2131476082da8cdf6158931eeca72de6bfd3@62.171.181.47:26656,03873e48e419cee0830e64860c81552e3c8a2df5@188.166.38.18:26656,d9aac0b2753ef46858d03f8497431b99740e8abe@5.161.147.146:26656,b02e2bd359623aeee2d4fad94d37af8b064508f6@167.235.224.141:26656,3e2c92297b30263c726725eabb1e0927a7aff6cf@20.198.115.141:26656,3874444d8504dc31836c1e41ffe408bee6b80904@38.242.159.243:39656,f0a070fde1ed643021c45b3c439bb0a8346338e7@89.179.33.100:26656,094bd69cb65fd3b284283d7960e2fdc4989cc39c@167.235.142.71:2665" sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.source/config/config.toml меняем порты (опционально)config.tomlsed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.source/config/config.toml external_address=$(wget -qO- eth0.me) sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/.source/config/config.toml app.tomlsed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%" $HOME/.source/config/app.toml client.tomlsed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.source/config/client.toml Настраиваем прунинг (опционально)pruning="custom" && \ pruning_keep_recent="1000" && \ pruning_keep_every="0" && \ pruning_interval="50" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.source/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.source/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.source/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.source/config/app.toml Включаем прометеусsed -i -e "s/prometheus = false/prometheus = true/" $HOME/.source/config/config.toml Сбрасываем данные чейнаsourced unsafe-reset-all Создаем сервисsudo tee /etc/systemd/system/sourced.service > /dev/null <<EOF [Unit] Description=source After=network-online.target [Service] User=$USER ExecStart=$(which sourced) --home $HOME/.source start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF Запускаем сервисsudo systemctl daemon-reload sudo systemctl enable sourced sudo systemctl restart sourced && sudo journalctl -u sourced -f -o cat Запуск со СтейтСинк (опционально, быстро, просто) снапшот от https://github.com/obajay . Спасибо ему.sudo systemctl stop sourced rm -rf $HOME/.source/data/ mkdir $HOME/.source/data/ # download archive cd $HOME wget http://116.202.236.115:8000/sourcedata.tar.gz # unpack the archive tar -C $HOME/ -zxvf sourcedata.tar.gz --strip-components 1 # !! IMPORTANT POINT. If the validator was created earlier. Need to reset priv_validator_state.json !! wget -O $HOME/.source/data/priv_validator_state.json "https://raw.githubusercontent.com/obajay/StateSync-snapshots/main/priv_validator_state.json" cd && cat .source/data/priv_validator_state.json { "height": "0", "round": 0, "step": 0 } # after unpacking, run the node # don't forget to delete the archive to save space cd $HOME rm sourcedata.tar.gz # start the node sudo systemctl restart sourced && journalctl -u sourced -f -o cat КОШЕЛЕКИ и ВАЛИДАТОРсоздаем кошелекsourced keys add wallet или восстанавливаем из сидsourced keys add wallet --recover и экспортируем паблики в переменныеSOURCE_WALLET_ADDRESS=$(sourced keys show $WALLET -a) SOURCE_VALOPER_ADDRESS=$(sourced keys show $WALLET --bech val -a) echo 'export SOURCE_WALLET_ADDRESS='${SOURCE_WALLET_ADDRESS} >> $HOME/.bash_profile echo 'export SOURCE_VALOPER_ADDRESS='${SOURCE_VALOPER_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile идем в кран в дискорде и просим монеты, затем проверяем балансsourced query bank balances $SOURCE_WALLET_ADDRESS Создаем валидатораsourced tx staking create-validator \ --amount 1000000usource \ --from $WALLET \ --commission-max-change-rate "0.01" \ --commission-max-rate "0.2" \ --commission-rate "0.07" \ --min-self-delegation "1" \ --pubkey $(sourced tendermint show-validator) \ --moniker $NODENAME \ --chain-id $SOURCE_CHAIN_ID Редактировать информацию о валидаторе можно такsourced tx staking edit-validator \ --moniker=$NODENAME \ --identity=<your_keybase_id> \ --website="<your_website>" \ --details="<your_validator_description>" \ --chain-id=$SOURCE_CHAIN_ID \ --from=$WALLET Снести нодуsudo systemctl stop sourced sudo systemctl disable sourced sudo rm /etc/systemd/system/source* -rf sudo rm $(which sourced) -rf sudo rm $HOME/.source* -rf sudo rm $HOME/source -rf Логиjournalctl -u sourced -f -o cat collect:// ## Publication Information - [chaingon | web3topia](https://paragraph.com/@chaingon/): Publication homepage - [All Posts](https://paragraph.com/@chaingon/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@chaingon): Subscribe to updates