March 24, 2023

DeFund Node

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

Достоинства данного блокчейна (по версии разработчиков🤓):
- скорость (время блока 600мс)
- независимость от сети
- простота
- доступ к тысячам токенов почти из 70 сетей (60 IBC chains + 7 EVM chains)

Требования:

- 4CPU

- 8GB RAM

- 200GB of disk space

Установка:

Установить зависимости

sudo apt-get update -y && sudo apt upgrade -y && sudo apt-get install make build-essential gcc git jq chrony -y

Установить Go

wget -O go.tar.gz https://go.dev/dl/go1.19.1.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go.tar.gz
export PATH=$PATH:/usr/local/go/bin
source $HOME/.profile
go version

Собрать Defund

git clone https://github.com/defund-labs/defund
cd defund
git checkout v0.2.6
make install

Перенос бинарников

cp /root/go/bin/defundd /usr/bin

Определить переменные

DEFUND_MONIKER=<ВАШ МОНИКЕР>
DEFUND_CHAIN_ID=orbit-alpha-1
echo "export DEFUND_NODENAME="${DEFUND_NODENAME}"" >> $HOME/.bash_profile
echo "export DEFUND_CHAIN_ID="${DEFUND_CHAIN_ID}"" >> $HOME/.bash_profile
source $HOME/.bash_profile

Инициализировать ноду

defundd init $DEFUND_MONIKER

Сконфигурировать ноду

Конфигурируя ноду данным образом, мы имеем возможность подселить её к другим нодам на сервере без риска пересечения портов. А также меняем ряд параметров - прунинг, пиров и тд. Подробнее обо всех параметрах можно прочитать в следующих файлах:

$HOME/.defund/config/app.toml $HOME/.defund/config/config.toml $HOME/.defund/config/client.toml

folder=defund

# config.toml
sed -i 's/^proxy_app = "tcp:\/\/127.0.0.1:26658"*$/proxy_app = "tcp:\/\/127.0.0.1:26458"/' $HOME/.$folder/config/config.toml
sed -i 's/^laddr = "tcp:\/\/127.0.0.1:26657"*$/laddr = "tcp:\/\/127.0.0.1:26457"/' $HOME/.$folder/config/config.toml
sed -i 's/^pprof_laddr = "localhost:6060"*$/pprof_laddr = "localhost:6040"/' $HOME/.$folder/config/config.toml
sed -i 's/^laddr = "tcp:\/\/0.0.0.0:26656"*$/laddr = "tcp:\/\/0.0.0.0:26456"/' $HOME/.$folder/config/config.toml
external_address=$(wget -qO- eth0.me)
sed -i 's|^external_address *=.*|external_address = "'$external_address:26456'"|' $HOME/.$folder/config/config.toml 
sed -i 's/^prometheus_listen_addr = ":26660"*$/prometheus_listen_addr = ":26460"/' $HOME/.$folder/config/config.toml

SEEDS="[email protected]:26656,[email protected]:45656,[email protected]:26656"
PEERS="[email protected]:26656,[email protected]:45656,[email protected]:45656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|' $HOME/.$folder/config/config.toml
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.$folder/config/config.toml

# app.toml
sed -i 's/^address = "tcp:\/\/0.0.0.0:1317"*$/address = "tcp:\/\/0.0.0.0:1306"/' $HOME/.$folder/config/app.toml
sed -i 's/^address = ":8080"*$/address = ":8070"/' $HOME/.$folder/config/app.toml
sed -i 's/^address = "0.0.0.0:9090"*$/address = "0.0.0.0:9060"/' $HOME/.$folder/config/app.toml
sed -i 's/^address = "0.0.0.0:9091"*$/address = "0.0.0.0:9061"/' $HOME/.$folder/config/app.toml

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025ufetf\"/;" $HOME/.$folder/config/app.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.$folder/config/app.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.$folder/config/client.toml
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.$folder/config/app.toml
indexer="null"
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.$folder/config/app.toml

pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="50"

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

# client.toml
sed -i 's/^node = "tcp:\/\/localhost:26657"*$/node = "tcp:\/\/localhost:26457"/' $HOME/.$folder/config/client.toml

Оптимизировать ноду (по совету разрабов)

bash $HOME/defund/devtools/optimize.sh

Загружаем Genesis

cd $HOME/.defund/config
curl -s https://raw.githubusercontent.com/defund-labs/testnet/main/orbit-alpha-1/genesis.json > ~/.defund/config/genesis.json

Чистим ноду от старых данных (если нужно)

defundd tendermint unsafe-reset-all

Создать (или восстановить) пару ключей

# Создать
defundd keys add $DEFUND_MONIKER
# Восстановить 
defundd keys add $DEFUND_MONIKER --recover

Создать и запустить сервис

printf "[Unit]
Description=DeFund Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which defundd) start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/defund-node.service

sudo systemctl daemon-reload 
sudo systemctl enable defund-node
sudo systemctl restart defund-node

# логи
journalctl -u defund-node -f -n 100

Проверяем синхронизацию

defundd status | jq .SyncInfo

Перед тем, как идти дальше, ждём "catching_up": false

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

DEFUND_ADDR=$(defundd keys show $DEFUND_MONIKER -a)
# далее вводим парооль 

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

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

defundd q bank balances $DEFUND_ADDR

Создать валидатора после синхронизации

defundd tx staking create-validator \
  --amount=1000000ufetf \
  --pubkey=$(defundd tendermint show-validator) \
  --moniker="$DEFUND_MONIKER" \
  --chain-id=orbit-alpha-1 \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1000000" \
  --details "https://t.me/octopus_space" \
  --fees 1000ufetf \
  --from=$DEFUND_MONIKER

Занести адрес валидатора в переменные

DEFUND_VALOPER=$(defundd keys show $DEFUND_MONIKER --bech val -a)
# далее вводим парооль 

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

Делегировать в своего валидатора

defundd tx staking delegate $DEFUND_VALOPER 10000000ufetf --from $DEFUND_MONIKER --chain-id orbit-alpha-1 --fees 5000ufetf

Заключение

Ощущения от проекта:
В дискорде админы живые. Транзакции мониторятся, людей штрафуют за нарушения. В целом, впечатление хорошее. При этом, если взглянуть на стейк для топ 100 валидаторов, то можно убедиться, что есть все шансы попасть в их число, так что ставим ноды, доим кран и делегируем в себя.
P.S.
Ни в коем случае не просим с нескольких дискордов на 1 кошелёк, это пресекается!

Всем спасибо за внимание. Оставляйте отзывы по поводу гайда, нам очень важен Ваш фидбэк! При возникновении вопросов не стесняйтесь писать в нашу ТГ группу по этому поводу и не только!

Ссылки проекта:

Эксплорер - https://defund.explorers.guru/

Сайт - https://www.defund.app/

Дискорд - https://discord.gg/B6aVYfNS

Установка ноды - https://github.com/defund-labs/testnet/blob/main/orbit-alpha-1/validators.md

Не забываем подписываться на наши социальные сети. В них мы публикуем актуальные новости и активности.

Telegram Announcements | Telegram Chat | Twitter