1️⃣ Ноды
November 4, 2022

Установка ноды Defund (orbit-alpha-1)

  1. Описание проекта
  2. Автоматическая установка (скрипт)
  3. Ручная установка ноды
  4. Обновление ноды до orbit-alpha-1
  5. Работа с кошельком
  6. Работа с валидатором
  7. Удаление ноды
  8. Полезные команды

Описание проекта

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

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

Миссия DeFund заключается в устранении самой сложной части создания кросс-чейн структурированных продуктов в криптовалюте: инфраструктуры. Это, в свою очередь, позволяет управляющим активами, квантам, финансовым консультантам и финансовым учреждениям строить чрезвычайно сложные торговые стратегии на основе кросс-сетей, не написав ни строчки логики кросс-сетей.

Фактически, построение на основе DeFund - это полностью управление состоянием. Когда вы создаете контракт dETF на DeFund, вы просто сосредотачиваетесь на создании своей стратегии, а DeFund занимается всем остальным.

Минимальные требования к серверу:

CPU - 4 ядра;

RAM - 16 Gb;

SSD - 200 Gb;

Ubuntu 20.04.

Explorer сети: https://defund.explorers.guru | https://exp.utsa.tech/defund-test/staking

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

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

Автоматическая установка

Подключаемся к серверу через Putty или MobaXterm, после чего приступаем к установке.

В установочный файл встроен снапшот, поэтому рекомендуется запускаться при помощи screen

Запускаем автоматический скрипт для установки:

wget -q -O defund.sh https://nodes.wenmoney.io/defund.sh && chmod +x defund.sh && ./defund.sh

Во время установки нода запросит ввести имя для вашей ноды. Также по окончанию установки скрипт даст возможность создания или восстановления кошелька.

Также мы сделали шпаргалку с командами по работе с нодами в сети Cosmos, пригодится каждому - https://teletype.in/@wen_money/cheat-sheet-cosmos-nodes

Ручная установка ноды

Каждая строка - отдельная команда (если не указано иначе). Ручная установка предусматривает использование стандартных портов для Cosmos-ноды, если хотите кастомизированные порты, то используйте автоматический скрипт для установки.

В первую очередь обновляем репозиторий и устанавливаем необходимые пакеты:

sudo apt update && sudo apt upgrade -y
sudo apt install build-essential pkg-config libssl-dev git jq wget make gcc nano htop net-tools screen lz4 -y < "/dev/null"

Если сервер "чистый", то устанавливаем Go (1.19.1):

wget -q -O go_install.sh https://nodes.wenmoney.io/go_install.sh && chmod +x go_install.sh && ./go_install.sh

Вводим имя своей ноды и устанавливаем CHAIN_ID:

read -p "Введите имя ноды: " DEFUND_NODENAME
echo 'export DEFUND_NODENAME='\"${DEFUND_NODENAME}\" >> $HOME/.bash_profile
echo "export DEFUND_CHAIN_ID=orbit-alpha-1" >> $HOME/.bash_profile
source $HOME/.bash_profile

Далее компилируем ноду из исходников:

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

Инициализируем и настраиваем ноду:

defundd init $DEFUND_NODENAME --chain-id $DEFUND_CHAIN_ID && sleep 2
source $HOME/.bash_profile

curl -Ls https://snapshots.kjnodes.com/defund-testnet/genesis.json > $HOME/.defund/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/defund-testnet/addrbook.json > $HOME/.defund/config/addrbook.json

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

indexer="null"
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.defund/config/config.toml

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

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

sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@defund-testnet.rpc.kjnodes.com:40659\"|" $HOME/.defund/config/config.toml

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

echo "
[Unit]
Description=Defund Node
After=network-online.target
[Service]
User=$USER
Type=simple
ExecStart=$(which defundd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target" > $HOME/defundd.service  

И переносим его к службам:

sudo mv $HOME/defundd.service /etc/systemd/system

Устанавливаем снапшот для быстрой синхронизации:

curl -L https://snapshots.kjnodes.com/defund-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.defund

Запускаем ноду:

sudo systemctl daemon-reload
sudo systemctl enable defundd
sudo systemctl restart defundd

Чекаем логи что все завелось и работает как надо:

journalctl -u defundd -f -o cat

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

Обновление ноды до orbit-alpha-1

Если до этого момента у вас уже была установлена нода и корректно работала, то обновиться можно при помощи двух вариантов:

1. ПРЕДПОЧТИТЕЛЬНЫЙ: запустить автоматический скрипт и выбрать 2 пункт Обновление на 0.2.6 и orbit-alpha-1. В этом случае скрипт сам сделает бэкап priv_validator_key , затем полностью удалит ноду и установит актуальную версию. Вам понадобится дождаться синхронизации с сетью, после чего восстановить кошелек (удобнее через скрипт), запросить токены в кране и создать валидатора.

Последний шаг - восстанавливаем priv_validator_key командой:

cp $HOME/priv_validator_key.json.defund $HOME/.defund/config/priv_validator_key.json

Перезагружаем ноду и смотрим логи что все ок:

systemctl restart defundd && journalctl -u defundd -f -o cat

На всякий случай можете проверить статус своего валидатора:

defundd query staking validator $DEFUND_VALOPER

2. Ручной способ. Здесь будет рассказан общий ход, так как дублировать информацию не видим смысла. В этом случае вам необходимо сделать бэкап priv_validator_key, удалить ноду и установить ее с нуля (предварительно заменив в .bash_profile значение DEFUND_CHAIN_ID). Ну а далее восстанавливаете кошелек, запрашиваете токены и создаете валидатора (не забывая восстановить priv_validator_key).

Работа с кошельком

Если вы создаете / восстанавливаете кошелек вручную, то для начала создадим переменную (имя кошелька) и запишем ее в bash_profile для удобства:

source .bash_profile
wallet="wallet"
echo "export DEFUND_WALLET=$wallet" >> $HOME/.bash_profile

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

source .bash_profile
defundd keys add $DEFUND_WALLET --keyring-backend os

Не забываем сохранить мнемонику кошелька!

Получаем адрес кошелька и VALOPER и запишем их в bash_profile для удобства:

DEFUND_ADDRESS=$(defundd keys show $DEFUND_WALLET -a --keyring-backend os)
DEFUND_VALOPER=$(defundd keys show $DEFUND_WALLET --bech val -a --keyring-backend os)
echo 'export DEFUND_ADDRESS='${DEFUND_ADDRESS} >> $HOME/.bash_profile
echo 'export DEFUND_VALOPER='${DEFUND_VALOPER} >> $HOME/.bash_profile

Проверяем баланс кошелька:

defundd query bank balances $DEFUND_ADDRESS

Баланс кошелька отобразится только в том случае, когда нода полностью синхронизируется с сетью!

Для получения тестовых токенов переходите в Дискорд в канал #faucet и получаете токены в формате !faucet YOUR_ADDRESS

Работа с валидатором

Не забываем о том, что валидатора создаем только после того, как ваша нода полностью синхронизируется с сетью.

Создаем валидатора:

defundd tx staking create-validator \
--chain-id=$DEFUND_CHAIN_ID \
--keyring-backend os \
--commission-rate 0.05 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.1 \
--min-self-delegation "1000000" \
--amount 1000000ufetf \
--pubkey $(defundd tendermint show-validator) \
--moniker=$DEFUND_NODENAME \
--from=$DEFUND_WALLET \
--fees 650ufetf \
--gas=auto \
--gas-adjustment=1.4

После чего идем в эксплоер и по txhash проверяем транзакцию на предмет успешного создания валидатора (если Success, то валидатор корректно создан).

Делегировать токены в своего валидатора (в примере делегируется 1 токен):

defundd tx staking delegate $DEFUND_VALOPER 1000000ufetf --from $DEFUND_WALLET --keyring-backend os --chain-id=$DEFUND_CHAIN_ID --fees 650ufetf --gas=auto --gas-adjustment=1.4 -y

После чего идем в эксплоер и по txhash проверяем транзакцию на предмет успешного делегирования (если Success, то делегирование прошло успешно).

Также мы сделали шпаргалку с командами по работе с нодами в сети Cosmos, пригодится каждому - https://teletype.in/@wen_money/cheat-sheet-cosmos-nodes

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

Для удаления ноды выполните команду (это одна команда, или просто запустите установщик, там есть команда на удаление ноды) :

systemctl stop defundd && \
systemctl disable defundd && \
rm /etc/systemd/system/defundd.service && \
systemctl daemon-reload && \
cd $HOME && \
rm -rf .defund defund && \
rm -rf $(which defundd)

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

Список полезных команд, пригодится каждому.

Проверить последний синхронизированный блок:

defundd status 2>&1 | jq ."SyncInfo"."latest_block_height"

Проверить логи:

sudo journalctl -u defundd -f -o cat

Проголосовать за предложение (говернанс) c ID=1:

defundd tx gov vote 1 yes --from $DEFUND_WALLET --keyring-backend os --fees 500ufetf

Не забывайте ставить свои 👍


Есть вопросы или не работает нода после установки? Задавайте их в нашем телеграмм-канале Wen Money:[NODES]. Пишем только по делу.