Сompleted testnets
August 17, 2022

Rebus: installation guide (Testnet is over)

Rebus — это публичный блокчейн в экосистеме Cosmos, целью которого является создание среды для развертывания интероперабельных смарт-контрактов. Сеть служит децентрализованным, не требующим разрешения и устойчивым к цензуре средством для разработчиков, позволяющим эффективно и безопасно запускать смарт-контракты с использованием стандартных фреймворков.

Майннет запланирован на 4 квартал 2022 года.

Обусуждение проекта в дискорде - https://discord.gg/TmnKznRqnv

DYOR:

Twitter
Website
Discord
Whitepaper

Оглавление


Подготовка сервера

Оглавление

Для стабильной работы долно хватить сервера с следующими характеристиками: 4 CPU, 8 GB RAM, 120+ GB SSD, что позволяет установить ноду на сервер Hetzner - CPX31.

Нода использует следующие порты: 26656, 26657, 9091, 9090, 6060, 1317

Обновляем пакеты

sudo apt update && sudo apt upgrade -y

Устанавливаем инструменты разработчика и необходимые пакеты

sudo apt install make clang pkg-config libssl-dev build-essential git jq ncdu bsdmainutils htop -y

Устанавливаем Go

wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz && \
rm -v go1.18.4.linux-amd64.tar.gz && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
source ~/.bash_profile && \
go version

Установка и запуск

Оглавление

Клонируем репозиторий с нодой

git clone https://github.com/rebuschain/rebus.core.git 

Переходим в папку с проектом и переключаемся на версию testnet

cd rebus.core
git checkout testnet

Собираем бинарные файлы

make build

Перемещаем бинарные файлы в папку с бинарными файлами

mv $HOME/rebus.core/build/rebusd /usr/local/bin/

Создаем переменную со своим никнеймом

REBUS_MONIKER=ваш_никнейм

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export REBUS_MONIKER="${REBUS_MONIKER}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nrebus_moniker > ${REBUS_MONIKER}.\n"

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

rebusd init "$REBUS_MONIKER" --chain-id=reb_3333-1

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

PEER="1ae3fe91ec7aba98eba3aa472453a92aa0a38c04@116.202.169.22:28656,289b378944a9983dc7f6ed6b09ba4a30d8290ee1@148.251.53.155:28656,f2cf370ecff71c0e95b0970f3b2821ea11b66a40@195.201.165.123:20106,1f40e130d2c21a32b0d678eabddc45ec3d6964a2@138.201.127.91:26674,82fc54cd4f7cbb44ee5e9d0565d40b5b29475974@88.198.242.163:46656,bdb21276daf5cc3672ddf5597c68c61dc44ec8e5@212.154.90.211:21656,bcf1b8d1896031da70f5bd1d634d10591d066b1c@5.161.128.219:28656,8abcf4cbdfa413f310e792f31aa54e82e9e09a0c@38.242.131.51:26656,eb47d2414351c010c8f747701f184cf3f8a30181@79.143.179.196:16656,f084e8960bb714c3446796cb4738e78bc5c3f04b@65.109.18.179:31656,34dde0a9cac6aeecc3e6570b59a0d297ab64f5bd@65.108.126.46:31656,d5c87b9a13a3d5be1456e9d982c1fc0fe71d8723@38.242.156.72:26656,d4ac8ea1bc083d6348997fda833ffcf5b150bd92@38.242.156.132:26656,d1a72df36686394e99ff0fff006d58f042692699@161.97.136.177:21656,c2368a4db640aa26fb8d5bc9d0f331758d42ca86@141.95.65.26:28656,9f601f082beb325abf3b6b08cdf27374c8a29469@38.242.206.198:56656,64f998cfa053619f1c755fdb6b7e431ae7c0c7b3@95.217.89.23:30530"
sed -i.bak "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/;" $HOME/.rebusd/config/config.toml

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

sed -i "s/pruning *=.*/pruning = \"custom\"/g" $HOME/.rebusd/config/app.toml
sed -i "s/pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/g" $HOME/.rebusd/config/app.toml
sed -i "s/pruning-interval *=.*/pruning-interval = \"10\"/g" $HOME/.rebusd/config/app.toml
sed -i.bak -e "s/indexer *=.*/indexer = \"null\"/g" $HOME/.rebusd/config/config.toml

Скачиваем файл генезиса

wget -O $HOME/.rebusd/config/genesis.json https://raw.githubusercontent.com/rebuschain/rebus.testnet/master/rebus_3333-1/genesis.json

Сбрасываем данные

rebusd tendermint unsafe-reset-all

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

printf "[Unit]
Description=Rebus node
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=$(which rebusd) start
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/rebusd.service
sudo tee <<EOF >/dev/null /etc/systemd/journald.conf
Storage=persistent
EOF

Запускаем сервис

sudo systemctl restart systemd-journald
sudo systemctl daemon-reload
sudo systemctl enable rebusd
sudo systemctl restart rebusd

Проверяем логи

sudo journalctl -u rebusd -f -o cat

Дополнительно: можно добавить цвета в вывод логов

sudo apt install ccze

Проверка логов в цвете

sudo journalctl -u rebusd -f -o cat | ccze -A

Ждем окончания синхронизации. Вывод команды должен показать false.

curl -s localhost:26657/status | jq .result.sync_info.catching_up

Синхронизация с нуля занимает большое количество времени. Ускорить процесс можно двумя способами - стейт синк или старт со снимка файловой системы (snapshot). Инструкции как это сделать в конце гайда.


Создание кошелька и валидатора

Оглавление

Создаем кошелек, придумываем и подтверждаем пароль

rebusd keys add wallet --coin-type 118 --algo secp256k1

Сохраняем пароль и секретную фразу в надежном месте

Запрашиваем токены с крана #test-faucet в дискорде

Создаем переменную с адресом кошелька

REBUS_WALLET=адрес_вашего_кошелька
#адрес в формате rebus1............

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export REBUS_WALLET="${REBUS_WALLET}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nrebus_wallet > ${REBUS_WALLET}.\n"

Проверяем баланс

rebusd q bank balances $REBUS_WALLET

Как только токены появятся на балансе, создаем валидатора

rebusd tx staking create-validator \ 
--moniker="$REBUS_MONIKER" \ 
--amount=990000000000000000arebus \ 
--fees 300arebus \ 
--pubkey=$(rebusd tendermint show-validator) \ 
--chain-id=reb_3333-1 \ 
--commission-max-change-rate=0.01 \ 
--commission-max-rate=0.20 \ 
--commission-rate=0.10 \ 
--min-self-delegation=1 \ 
--from=wallet \ 
--yes

Для попадания в актив нужно более 8 000 токенов, с крана можно получить 1 токен. Однако, каждую эпоху команда делегирует в разных валидаторов по 50 000 токенов. После получения делегации, ваш валидатор станет активным на одну эпоху.

Проверить валидатора можно в эксплорере.


Ускорение синхронизации

Оглавление

Для ускорения синхронизации, а также для освобождения места на диске, можно использовать стейт синк или старт со снимка файловой системы (snapshot).

Стейт синк быстрее, но данные блокчейна не хранятся на вашем сервере. При старте со снепшота, копия блокчейна, начиная с генезиса, имеется на сервере.

Вариант 1: State sync

Важно! Если ваш валидатор активен, во избежании джейла начинайте выполнение команд после блока, кратного 2000 (например 132 000 или 146 000).

Останавливаем ноду

sudo systemctl stop rebusd

Удаляем старые данные и настраиваем стейт синк

rebusd tendermint unsafe-reset-all --home ~/.rebusd
SEEDS="a6d710cd9baac9e95a55525d548850c91f140cd9@3.211.101.169:26656,c296ee829f137cfe020ff293b6fc7d7c3f5eeead@54.157.52.47:26656"; \
PEERS=""; \
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.rebusd/config/config.toml
wget -O $HOME/.rebusd/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/rebus/reb_3333-1/addrbook.json"
SNAP_RPC="https://rpc-t.rebus.nodestake.top:443"
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.rebusd/config/config.toml

Перезапускаем ноду и проверяем логи

sudo systemctl restart rebusd && sudo journalctl -u rebusd -f -o cat

Вариант 2: Snapshot

Останавливаем ноду

sudo systemctl stop rebusd

Удаляем данные и скачиваем снимок

rebusd tendermint unsafe-reset-all --home $HOME/.rebusd --keep-addr-book
cd
rm -rf ~/.rebusd/data; \
wget -O - http://snap.stake-take.com:8000/rebus.tar.gz | tar xf -
mv $HOME/root/.rebusd/data $HOME/.rebusd
rm -rf $HOME/root

Перезапускаем ноду и проверяем логи

sudo systemctl restart rebusd && sudo journalctl -u rebusd -f -o cat

Обновление v0.0.4

Оглавление

Обновляться необходимо после блока 995737 (5 сентября, около 23.00 UTC)

Останавливаем ноду

sudo systemctl stop rebusd

Подтягиваем новую версию и обновляем бинарные файлы

cd $HOME/rebus.core
git fetch
git checkout v0.0.4
make install

Проверяем версию

rebusd version 

Перезапускаем ноду

sudo systemctl restart rebusd

Проверяем логи

sudo journalctl -u rebusd -f -o cat

Полезные команды

Оглавление

Перезапустить ноду

systemctl restart rebusd

Проверить статус ноды

curl localhost:26657/status

Узнать адрес валидатора

rebusd keys show wallet --bech val -a

Делегировать дополнительные токены

rebusd tx staking delegate адрес_вашего_валидатора 100000000000arebus --from wallet --chain-id reb_3333-1 --fees 5000arebus

Удаление ноды

Оглавление

Полностью удалить ноду с сервера можно следующими командами

systemctl stop rebusd 
systemctl disable rebusd 
rm -rf ~/rebus.core ~/.rebusd /etc/systemd/system/rebusd.service

Nodera

Telegram | Discord | Twitter