Guides
April 18, 2023

Cascadia: Installation Guide

Cascadia — это блокчейн уровня 1, созданный для изучения природы стимулов сетевых эффектов, начиная с токеномики. Главной миссией проекта является построение сети, которая будет действительно использоваться людьми и иметь экономический смысл. Гайд актуален для версии 0.1.3.

Тестнет эксплорер - http://explorer.nodera.org/cascadia/staking

DYOR:

Website
Discord
Twitter

Оглавление


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

Оглавление

На данном этапе устанавливаю на сервере Hetzner - CPX31: 4 CPU, 8 GB RAM, 160 GB SSD.

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

sudo apt update && sudo apt upgrade -y

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

sudo apt install curl build-essential pkg-config libssl-dev git wget jq make gcc tmux chrony -y

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

wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz && \
rm -v go1.19.5.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/cascadiafoundation/cascadia
cd cascadia 
git checkout v0.1.3 
make install

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

cascadiad version
#0.1.3

В настоящее время после каждой введенной команды появляются следующие строки

Это проблема со стороны проекта, на функциональность не влияет - не обращаем внимание.

Создаем переменные

MONIKER_CASCADIA=вводим свое имя
CHAIN_ID_CASCADIA=cascadia_6102-1
PORT_CASCADIA=39

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

echo "export MONIKER_CASCADIA="${MONIKER_CASCADIA}"" >> $HOME/.bash_profile
echo "export CHAIN_ID_CASCADIA="${CHAIN_ID_CASCADIA}"" >> $HOME/.bash_profile
echo "export PORT_CASCADIA="${PORT_CASCADIA}"" >> $HOME/.bash_profile
source $HOME/.bash_profile

echo -e "\nmoniker_CASCADIA > ${MONIKER_CASCADIA}.\n"
echo -e "\nchain_id_CASCADIA > ${CHAIN_ID_CASCADIA}.\n"
echo -e "\nport_CASCADIA > ${PORT_CASCADIA}.\n"

Настраиваем конфиг

cascadiad config chain-id $CHAIN_ID_CASCADIA
cascadiad config keyring-backend test
cascadiad config node tcp://localhost:${PORT_CASCADIA}657
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025aCC\"/" $HOME/.cascadiad/config/app.toml

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

cascadiad init $MONIKER_CASCADIA --chain-id $CHAIN_ID_CASCADIA

Загружаем генезис файл и адресбук

wget -O $HOME/.cascadiad/config/genesis.json "https://anode.team/Cascadia/test/genesis.json"
wget -O $HOME/.cascadiad/config/addrbook.json "https://anode.team/Cascadia/test/addrbook.json"

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

EXADDRESS=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$EXADDRESS:${PORT_CASCADIA}656\"/" $HOME/.cascadiad/config/config.toml
PEERS="1d61222b7b8e180aacebfd57fbd2d8ab95ebdc4c@65.109.93.152:35656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.cascadiad/config/config.toml
SEEDS=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$SEEDS\"/" $HOME/.cascadiad/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.cascadiad/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 25/g' $HOME/.cascadiad/config/config.toml
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.cascadiad/config/config.toml

Изменяем порты для возможности дальнейшего подселения других нод проектов экосистемы Космос на один сервер

sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${PORT_CASCADIA}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${PORT_CASCADIA}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${PORT_CASCADIA}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${PORT_CASCADIA}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${PORT_CASCADIA}660\"%" $HOME/.cascadiad/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${PORT_CASCADIA}317\"%; s%^address = \":8080\"%address = \":${PORT_CASCADIA}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${PORT_CASCADIA}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${PORT_CASCADIA}091\"%" $HOME/.cascadiad/config/app.toml

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

pruning="custom"
pruning_keep_recent="1000"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.cascadiad/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.cascadiad/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.cascadiad/config/app.toml

Переходим в файл app.toml и в разделе JSON RPC Configuration меняем значение параметра enable с true на false

nano /root/.cascadiad/config/app.toml

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

cascadiad tendermint unsafe-reset-all --home $HOME/.cascadiad

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

printf "[Unit]
Description=cascadiad
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cascadiad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/cascadiad.service

Для ускорения синхронизации используем State Sync

SNAP_RPC=https://cascadia.rpc.t.anode.team:443
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ 
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
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/.cascadiad/config/config.toml

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

sudo systemctl daemon-reload && \
sudo systemctl enable cascadiad && \
sudo systemctl restart cascadiad && \
sudo journalctl -u cascadiad -f -o cat

Ждем окончания синхронизации, проверить синхронизации можно командой

curl localhost:39657/status|grep catching_up

Если параметр "catching_up"=false, синхронизация завершена.


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

Оглавление

Создаем кошелек

cascadiad keys add $MONIKER_CASCADIA

Сохраняем мнемоник фразу в надежном месте!

Если вы участвовали в предыдущих тестнетах, восстанавливаем кошелек командой и вводим мнемоник фразу

cascadiad keys add $MONIKER_CASCADIA --recover

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

WALLET_CASCADIA=$(cascadiad keys show $MONIKER_CASCADIA -a)
VALOPER_CASCADIA=$(cascadiad keys show $MONIKER_CASCADIA --bech val -a)

echo "export WALLET_CASCADIA="${WALLET_CASCADIA}"" >> $HOME/.bash_profile
echo "export VALOPER_CASCADIA="${VALOPER_CASCADIA}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nwallet_CASCADIA > ${WALLET_CASCADIA}.\n"
echo -e "\nvaloper_CASCADIA > ${VALOPER_CASCADIA}.\n"

Кран принимает адрес кошелька в формате EIP-55. Для получения адреса в этом формате используйте команду

cascadiad debug addr $WALLET_CASCADIA

Копируете значение Address (EIP-55) и запращиваете токены для создания валидатора по ссылке - https://www.cascadia.foundation/faucet

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

cascadiad q bank balances $WALLET_CASCADIA

После завершения синхронизации и пополнения кошелька, создаем валидатора

cascadiad tx staking create-validator \
--amount 1000000000000000000aCC \
--commission-rate "0.07" \
--commission-max-rate "0.20" \
--commission-max-change-rate "0.1" \
--min-self-delegation "1000000" \
--pubkey $(cascadiad tendermint show-validator) \
--moniker $MONIKER_CASCADIA \
--chain-id $CHAIN_ID_CASCADIA \
--identity="" \
--details="" \
--website="" \
--gas auto \
--gas-adjustment=1.2 \
--gas-prices=7aCC \
--from $MONIKER_CASCADIA

Проверяем своего валидатора в эксплорере - http://explorer.nodera.org/cascadia/staking

Мониторинг можно настроить с использованием Panic! бота по гайду - https://nodera.org/panic_bot


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

Оглавление

Для обновления выполняем следующие команды

cd $HOME/cascadia
git pull
git checkout v0.1.3
make install

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

cascadiad version
#0_1_3

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

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

ДЛя ускорения синхронизации или освобождения места на сервере можно воспользоваться снапшотом

sudo systemctl stop cascadiad
cp $HOME/.cascadiad/data/priv_validator_state.json $HOME/.cascadiad/priv_validator_state.json.backup
rm -rf $HOME/.cascadiad/data
curl -L https://ss.nodeist.net/t/cascadia/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.cascadiad --strip-components 2
mv $HOME/.cascadiad/priv_validator_state.json.backup $HOME/.cascadiad/data/priv_validator_state.json
sudo systemctl restart cascadiad && sudo journalctl -u cascadiad -f --no-hostname -o cat

Если вы не успели обновиться вовремя, выходим из джейла командой

cascadiad tx slashing unjail --from $MONIKER_CASCADIA --gas-prices="7aCC" --gas="auto"  --gas-adjustment=1.2  --chain-id=$CHAIN_ID_CASCADIA  --yes

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

Оглавление

Перед удалением ноды убедитесь, что сохранены файлы из каталога /root/.cascadiad/config

Для удаления ноды используйте следующие команды

sudo systemctl stop cascadiad
sudo systemctl disable cascadiad
sudo rm -rf $HOME/.cascadiad
sudo rm -rf $HOME/cascadia
sudo rm -rf /etc/systemd/system/cascadiad.service
sudo rm -rf /usr/local/bin/cascadiad
sudo systemctl daemon-reload

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

Оглавление

Рестарт ноды

sudo systemctl restart cascadiad

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

sudo journalctl -u cascadiad -f -o cat

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

cascadiad keys show $MONIKER_CASCADIA --bech val -a

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

cascadiad tx staking delegate $VALOPER_CASCADIA 1000000000000000000aCC --from $MONIKER_CASCADIA --chain-id $CHAIN_ID_CASCADIA --gas auto --gas-adjustment=1.2 --gas-prices=7aCC

Внести изменения в валидатора

cascadiad tx staking edit-validator --identity="" --details="" --website="" \
--from $MONIKER_CASCADIA --chain-id $CHAIN_ID_CASCADIA --gas auto --gas-adjustment=1.2 --gas-prices=7aCC-y
#identity - PGP ключ c keybase.io (устанавливает аватар валидатора)
#details - текстовое описание валидатора

Nodera

Telegram | Discord | Twitter