January 23, 2023

DeFund

Discord | Twitter | Github | Explorer

Сервер


Мінімальні рекомендовані апаратні вимоги для запуску валідатора:

  • 4 ядра ЦП
  • 8 ГБ оперативної пам'яті
  • 250 ГБ SSD
  • Ubuntu 20.04

Нода


# підготовка сервера
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
# ставимо Go (однією командою)
ver="1.19" && \
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
# задаємо перемінні

#придумуємо назву ноди та міняємо замість <your_moniker>
DEFUND_MONIKER=<your_node_name>
# зберігаємо перемінні в bash
echo 'export DEFUND_MONIKER='$DEFUND_MONIKER >> $HOME/.bash_profile
echo "export DEFUND_CHAIN_ID=defund-private-4" >> $HOME/.bash_profile
echo "export DEFUND_PORT=13" >> $HOME/.bash_profile
source $HOME/.bash_profile
# качаємо бінарні файли
cd $HOME && rm -rf defund
git clone https://github.com/defund-labs/defund.git
cd defund
git checkout v0.2.2
make install

defundd version

#defundd version
#версия: v0.2.2
# ініціалізовуємо ноду
defundd init $DEFUND_MONIKER --chain-id $DEFUND_CHAIN_ID
# качаємо генезис
cd $HOME/.defund/config
curl -s https://raw.githubusercontent.com/defund-labs/testnet/main/defund-private-4/genesis.json > ~/.defund/config/genesis.json

sha256sum $HOME/.defund/config/genesis.json
# звіряємо рядок нижче з тим що в терміналі
# db13a33fbb4048c8701294de79a42a2b5dff599d653c0ee110390783c833208b

Налаштовуємо порти

#config.toml 
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${DEFUND_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${DEFUND_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${DEFUND_PORT}061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${DEFUND_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${DEFUND_PORT}660\"%" $HOME/.defund/config/config.toml
 
# app.toml 
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${DEFUND_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${DEFUND_PORT}91\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:1${DEFUND_PORT}7\"%" $HOME/.defund/config/app.toml
 
# client.toml 
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:${DEFUND_PORT}657\"%" $HOME/.defund/config/client.toml
 
external_address=$(wget -qO- eth0.me) 
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:${DEFUND_PORT}656\"/" $HOME/.defund/config/config.toml

Налаштовуємо конфіг

defundd config chain-id $DEFUND_CHAIN_ID
defundd config keyring-backend test

# налаштовуємо мінімальну ціну за газ, додаємо сіди/піри
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0ufetf\"/;" ~/.defund/config/app.toml
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.defund/config/config.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.defund/config/config.toml
peers="d837b7f78c03899d8964351fb95c78e84128dff6@174.83.6.129:30791,f03f3a18bae28f2099648b1c8b1eadf3323cf741@162.55.211.136:26656,f8fa20444c3c56a2d3b4fdc57b3fd059f7ae3127@148.251.43.226:56656,70a1f41dea262730e7ab027bcf8bd2616160a9a9@142.132.202.86:17000,e47e5e7ae537147a23995117ea8b2d4c2a408dcb@172.104.159.69:45656,74e6425e7ec76e6eaef92643b6181c42d5b8a3b8@defund-testnet-seed.itrocket.net:443"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.defund/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.defund/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 100/g' $HOME/.defund/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 100/g' $HOME/.defund/config/config.toml
# cтворюємо сервісний файл (Одна команда)
sudo tee /etc/systemd/system/defundd.service > /dev/null <<EOF
[Unit]
Description=defund
After=network-online.target

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

[Install]
WantedBy=multi-user.target
EOF
# запускаємо ноду
sudo systemctl daemon-reload
sudo systemctl enable defundd
sudo systemctl restart defundd && sudo journalctl -u defundd -f -o cat
# подивитись логи
sudo journalctl -u defundd -f -o cat

# Вихід з логів через ctrl+c
# перевірити статус синхронізації
defundd status 2>&1 | jq .SyncInfo

# "catching_up": false - означає що нода синхронізувалась (чекаємо false)
# створюємо/відновлюємо гаманець
defundd keys add <walletname>
defundd keys add <walletname> --recover
# зберігаємо адресу 
# Замініть <your_address> на адресу вашого гаманця
DEFUND_ADDRESS=<your_address>
echo "export DEFUND_ADDRESS=$DEFUND_ADDRESS>" >> $HOME/.bash_profile
source $HOME/.bash_profile
# перевіряємо баланс
defundd q bank balances $DEFUND_ADDRESS

Валідатор


defundd tx staking create-validator \
  --amount 1000000ufetf \
  --from $DEFUND_CHAIN_ID \
  --commission-max-change-rate "0.1" \
  --commission-max-rate "0.2" \
  --commission-rate "0.1" \
  --min-self-delegation "1" \
  --pubkey  $(defundd tendermint show-validator) \
  --moniker $DEFUND_MONIKER \
  --chain-id defund-private-4 \
  --identity="" \
  --details="" \
  --website="" -y
# pедагувати валідатора # Замінити <identity> на ваш ключ з keybase
nibid tx staking edit-validator \ 
--new-moniker=$DEFUND_MONIKER \ 
--website="Посилання на свій сайт чи сторінку в інтернеті" \ 
--identity=<identity> \ --details="Кілька слів про себе" \ 
--chain-id=$DEFUND_CHAIN_ID \ --fees 5000unibi \ 
--from=wallet
# записуємо valoper_address в bash 
# Замінюємо <your_valoper_address> на адресу валідатора, починається на nibivaloper...
DEFUND_VALOPER=<your_valoper_address> 
echo "export DEFUND_VALOPER=$DEFUND_VALOPER" >> $HOME/.bash_profile 
source $HOME/.bash_profile
Зберігаємо priv_validator_key.json що знаходиться за адресою /root/.defund/config/