Rebus: installation guide (Testnet is over)
Rebus — это публичный блокчейн в экосистеме Cosmos, целью которого является создание среды для развертывания интероперабельных смарт-контрактов. Сеть служит децентрализованным, не требующим разрешения и устойчивым к цензуре средством для разработчиков, позволяющим эффективно и безопасно запускать смарт-контракты с использованием стандартных фреймворков.
Майннет запланирован на 4 квартал 2022 года.
Обусуждение проекта в дискорде - https://discord.gg/TmnKznRqnv
Website
Discord
Whitepaper
Оглавление
- Подготовка сервера
- Установка и запуск
- Создание кошелька и валидатора
- Ускорение синхронизации
- Обновление v0.0.4
- Полезные команды
- Удаление ноды
Подготовка сервера
Для стабильной работы долно хватить сервера с следующими характеристиками: 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
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).
Стейт синк быстрее, но данные блокчейна не хранятся на вашем сервере. При старте со снепшота, копия блокчейна, начиная с генезиса, имеется на сервере.
Важно! Если ваш валидатор активен, во избежании джейла начинайте выполнение команд после блока, кратного 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
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