Guides
November 8, 2022

Defund: Installation Guide

DeFund — L1 блокчейн, созданный для построения децентрализованных биржевых фондов (dETF) с активами большинства других блокчейнов. Любой пользователь сможет инвестировать в любой понравившийся dETF.

Исходя из токеномики на награды выделено 15% от общего количества монет.

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

DYOR:

Website
Discord
Twitter

Оглавление


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

Оглавление

На данном этапе устанавливаю на сервере Hetzner - CPX21: 3 CPU, 4 GB RAM, 80 GB SSD, дальше буду смотреть по нагрузке, возможно понадобится 4 CPU, 8 GB RAM, 200 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.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/defund-labs/defund
cd defund
git checkout v0.1.0
make install

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

MONIKER_DEFUND=вводим свое имя
CHAIN_ID_DEFUND=defund-private-3
PORT_DEFUND=34

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

echo "export MONIKER_DEFUND="${MONIKER_DEFUND}"" >> $HOME/.bash_profile
echo "export CHAIN_ID_DEFUND="${CHAIN_ID_DEFUND}"" >> $HOME/.bash_profile
echo "export PORT_DEFUND="${PORT_DEFUND}"" >> $HOME/.bash_profile
source $HOME/.bash_profile

echo -e "\nmoniker_DEFUND > ${MONIKER_DEFUND}.\n"
echo -e "\nchain_id_DEFUND > ${CHAIN_ID_DEFUND}.\n"
echo -e "\nport_DEFUND > ${PORT_DEFUND}.\n"

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

defundd config chain-id $CHAIN_ID_DEFUND
defundd config keyring-backend test
defundd config node tcp://localhost:${PORT_DEFUND}657
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025ufetf\"/" ~/.defund/config/app.toml

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

defundd init $MONIKER_DEFUND --chain-id $CHAIN_ID_DEFUND

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

wget -O $HOME/.defund/config/defund-private-3-gensis.tar.gz "https://raw.githubusercontent.com/defund-labs/testnet/main/defund-private-3/defund-private-3-gensis.tar.gz" 
rm -rf $HOME/.defund/config/genesis.json 
cd $HOME/.defund/config 
tar -xzvf defund-private-3-gensis.tar.gz 
rm -rf defund-private-3-gensis.tar.gz 

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

export SEEDS=85279852bd306c385402185e0125dffeed36bf22@38.146.3.194:26656,09ce2d3fc0fdc9d1e879888e7d72ae0fefef6e3d@65.108.105.48:11256
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" ~/.defund/config/config.toml

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

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

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

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

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

defundd tendermint unsafe-reset-all --home $HOME/.defund

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

printf "[Unit]
Description=Defund Service
After=network.target

[Service]
Type=simple
User=$USER
WorkingDirectory=$HOME
ExecStart=$HOME/go/bin/defundd start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

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

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

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

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

defundd status 2>&1 | jq .SyncInfo

Если вывод показывает false, синхронизация завершена.


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

Оглавление

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

defundd keys add $MONIKER_DEFUND

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

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

defundd keys add $MONIKER_DEFUND --recover

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

WALLET_DEFUND=$(defundd keys show $MONIKER_DEFUND -a)
VALOPER_DEFUND=$(defundd keys show $MONIKER_DEFUND --bech val -a)

echo "export WALLET_DEFUND="${WALLET_DEFUND}"" >> $HOME/.bash_profile
echo "export VALOPER_DEFUND="${VALOPER_DEFUND}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nwallet_DEFUND > ${WALLET_DEFUND}.\n"
echo -e "\nvaloper_DEFUND > ${VALOPER_DEFUND}.\n"

Для пополнения кошелька тестовыми токенами, вводим свой !faucet <ваш_адрес> в кране дискорда

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

defundd q bank balances $WALLET_DEFUND

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

defundd tx staking create-validator \
--amount 19000000ufetf \
--from $WALLET_DEFUND \
--commission-max-change-rate "0.01" \
--commission-max-rate "0.2" \
--commission-rate "0.07" \
--pubkey  $(defundd tendermint show-validator) /
--moniker $MONIKER_DEFUND \
--chain-id $CHAIN_ID_DEFUND \
--details="" \
--identity="" \
--website="" \
--fees=500ufetf \
--gas=auto \
-y

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

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


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

Оглавление

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

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

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

Обновление

Оглавление

systemctl stop defundd 
defundd tendermint unsafe-reset-all --home $HOME/.defund 
wget -O $HOME/.defund/config/defund-private-3-gensis.tar.gz "https://raw.githubusercontent.com/defund-labs/testnet/main/defund-private-3/defund-private-3-gensis.tar.gz" 
rm -rf $HOME/.defund/config/genesis.json 
cd $HOME/.defund/config 
tar -xzvf defund-private-3-gensis.tar.gz 
defundd config chain-id defund-private-3 
rm -rf defund-private-3-gensis.tar.gz 
systemctl restart defundd && journalctl -u defundd -f -o cat

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

Оглавление

Рестарт ноды

sudo systemctl restart defundd

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

sudo journalctl -u defundd -f -o cat

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

defundd keys show $MONIKER_DEFUND --bech val -a

Узнать баланс

defundd q bank balances $WALLET_DEFUND

Вывести награды

defundd tx distribution withdraw-all-rewards \
--from $WALLET_DEFUND --fees 400ufetf --gas auto

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

defundd tx staking delegate defundvaloper1yhtl50puuj59tzfskk6rxwu0xy74khjcy3sylm 19000000ufetf --from $WALLET_DEFUND --chain-id $CHAIN_ID_DEFUND

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

defundd tx staking edit-validator --identity="" --details="" --website="" \
--from $WALLET_DEFUND --chain-id $CHAIN_ID_DEFUND -y
#identity - PGP ключ c keybase.io (устанавливает аватар валидатора)
#details - текстовое описание валидатора

Nodera

Telegram | Discord | Twitter