October 18, 2022

Установка ноды Source Protocol

Source Protocol — это комплексный набор технологий блокчейна для частных лиц, предприятий и разработчиков, позволяющий легко использовать, интегрировать и создавать приложения Web 3.0. В дополнение к основным продуктам Source, которые включают в себя высокоэффективный блокчейн 1 уровня для безопасной и масштабируемой разработки приложений и полный набор DeFi.

Source Protocol создан с помощью Cosmos SDK, хорошо нам знакомого. Поехали.

Требования к серверу:
6GB RAM, 200GB_SSD of disk space, 4Cores

Как всегда обновляем наш сервер

sudo apt update && sudo apt upgrade -y

Устанавливаем доп. пакеты

sudo apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

Устанавливаем go и проверяем версию

ver="1.18.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" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version

Устанавливаем Igninte CLI и компилируем бинарник (на запрос во время компиляции отвечаем y)

sudo curl https://get.ignite.com/cli! | sudo bash
git clone -b testnet https://github.com/Source-Protocol-Cosmos/source.git
cd ~/source
ignite chain build -y
cd $HOME

Задаем переменные (CHAIN оставляем без изменений, в остальные вписываем свои данные)

MONIKER="your_name"
CHAIN="sourcechain-testnet"
WALLET_NAME="your_name"

Добавляем все в баш профиль

echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile
echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile
echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile
source $HOME/.bash_profile

Инициализируем ноду

cd ~/
sourced init $MONIKER --chain-id $CHAIN 

Создаем кошелек (обязательно сохраняем мнемонику)

sourced keys add $WALLET_NAME

Скачиваем genesis.json

curl -s  https://raw.githubusercontent.com/Source-Protocol-Cosmos/testnets/master/sourcechain-testnet/genesis.json > ~/.source/config/genesis.json

Добавляем пиры в config.toml

PEERS=f94bb95336ac2bf6081fd87498d16383fd4a8f70@195.3.220.96:60756,2d4bf9cf64c386dbcf68b69168ec33717c90bd3c@94.130.212.252:10256,3787aeaa6585ec6ff9c09746fdb28630f0d659cb@3.81.88.66:26656,994f41db482ed3d9b675f5f403dee38ffa006aaf@45.84.138.70:26656,6ca675f9d949d5c9afc8849adf7b39bc7fccf74f@164.92.98.17:26656,bdf9b6ad38b803358e7fd99f35b14795ebcd8144@190.2.155.67:29656,49b025c08193c8846956423ac80504b0bab2b777@185.182.187.239:26656,76894391ff3fb5937654758b12d1eecd69eb943e@161.97.151.64:26656,cd6104da919fc8b0995ee5c67c8dce9ae98256bd@5.161.106.96:26656,86216a2e88322ca534fedaa91898272cc11d3cc9@173.249.23.196:28656,a53b45d6b4ae5cb564570e09e7dd16aa0c345077@45.147.199.199:26656,73e143877bcd789e131a131254c5b14ec2477ddb@62.171.131.225:21656,e62bd6468bf788c42ea9148ef53d7c15ab04ad55@161.97.153.196:26656,246686b1e8c06ead485377c03568cb9f1db3917d@176.9.19.48:26686,c27d26527c2f8a097c5a99800809d15338ac3bdb@95.217.207.236:20056,866c35beaae2aafaebc328035e2deb9290da0b7a@38.242.241.111:26656,06885ec73c228de552c4120ab50c78152b20fc9d@57.128.36.144:26656,f217086538c092121254d3bfeb3747d7a7b52916@185.144.99.89:26656,9da8183f07a7b33dd60fc01156ae8136041cef30@45.10.154.138:26656,aafb3c092c1d05a32228b41d050bea1133d1e7b3@38.242.241.69:26656
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.source/config/config.toml

Задаем минимальное значение газа

GAS="0.0025usource" 
sed -i -e "/minimum-gas-prices =/ s/= .*/= \"$GAS\"/" $HOME/.source/config/app.toml

Настраиваем прунинг

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

Создаем сервис для ноды

sudo tee <<EOF >/dev/null /etc/systemd/system/sourced.service
[Unit]
Description=Source Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which sourced) start
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

Запускаем сервис и смотрим логи

sudo systemctl daemon-reload
sudo systemctl enable sourced
sudo systemctl start sourced && journalctl -u sourced -f

Проверяем статус синхронизации (смотрим поле catching_up)

curl localhost:26657/status

Добавляем в переменную адрес кошелька

WALLET_ADDRESS=$(sourced keys show $WALLET_NAME -a)
echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile 
source $HOME/.bash_profile

Запрашиваем монеты в дискорде Source в канале #faucet командой

$request адрес_кошелька

После синхронизации и получения монет создаем валидатора

sourced tx staking create-validator \
--amount 1000000000usource \
--commission-max-change-rate "0.1" \
--commission-max-rate "0.20" \
--commission-rate "0.1" \
--min-self-delegation "1" \
--details "" \
--pubkey=$(sourced tendermint show-validator) \
--moniker $MONIKER \
--chain-id $CHAIN \
--gas-prices 0.025usource \
--from $WALLET_NAME

Задаем переменную с адресом валидатора и добавляем в профиль баш

VALOPER=$(sourced keys show $WALLET_ADDRESS --bech val -a)
echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile
source $HOME/.bash_profile

Проверка статуса валидатора

sourced query staking validator $VALOPER

Делегация средств с кошелька на валидатора (сумму вводите свою)

sourced tx staking delegate $VALOPER 1000000usource --from $WALLET_NAME --chain-id $CHAIN

Ну и если вдруг ваша нода попала в тюрьму, то выход

sourced tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN

Большое спасибо, за внимание и уделенное время

Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms

С уважением, MMS_Team