Валидатор (Validator)

Пошаговая инструкция по установке и запуску Umee валидатора.

Эта инструкция содержит описание того, как установить и запустить Umee валидатор. Сперва убедитесь, что выполнены все инструкции по установке полной ноды в отношении того, как установить и сконфигурировать бинарный файл umeed. Далее подразумевается, что вы уже установили, сконфигурировали и запустили.

Ключи

Перед тем, как создавать валидатора, вы должны создать ваш ключ "оператора". Помните, что это ключ не для консенсуса и не будет использоваться в подписании блоков. Но это ключ будет использоваться для определения вас как валидатора в сети UMEE.

$ umeed keys add <key-name> [flags]

По умолчанию, umeed хранит ключи в скрытом виде (OS-backed keyring). Вы можете изменить это поведение, указав флаг --keyring-backend.

Если вы уже имеете ключ, который вы бы хотели импортировать используя мнемоническую фразу, вы можете указать флаг --recover и команда keys add запросит у вас BIP39 мнемоническую фразу.

Посетите страницу документации о ключах в Cosmos SDK для большей информации.

Ethereum Нода

Gravity Bridge необходимо, чтобы валидатор использовал запущенный peggo оркестратор параллельно с работой umeed. Оркестратору необходим доступ к RPC geth вашей ноды. Легкий клиент geth может быть использован, но предпочтительнее использование полной ноды.

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

Для установки geth ноды, сначала установите бинарный файл со страницы go-ethereum. А затем создайте systemd сервис:

/etc/systemd/system/geth.service
[Unit]
Description=Geth node
After=online.target

[Service]
Type=root
User=root
ExecStart=/usr/bin/geth --syncmode "light" --http ...
Restart=on-failure
RestartSec=3
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target

Если вам нужно иметь внешний доступ к geth, удостоверьтесь, что установлен флаг --http.addr=0.0.0.0

Перезагрузите systemd и запустите geth сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl start geth

В заключении удостоверьтесь, что geth сервис запущен и работает хорошо. Если так, то добавим его в автозагрузку:

$ sudo systemctl status geth
$ sudo systemctl enable geth

Создание Валидатора

Когда запущены umeed и geth, вы можете создать валидатора в сети Umee через MsgCreateValidator транзакцию:

# Публичный консенсусный ключ валидатора
# например {"@type":"/cosmos.crypto.ed25519.PubKey","key":"..."}
$ UMEE_VAL_CONS_KEY=$(umeed tendermint show-validator)
$ umeed tx staking create-validator \
  --amount=<amount> \
  --pubkey=$UMEE_VAL_CONS_KEY \
  --moniker="<moniker>" \
  --chain-id="<chain-id>" \
  --commission-rate="<commission>" \
  --commission-max-rate="<max-commission>" \
  --commission-max-change-rate="<max-commission-rate-change>" \
  --min-self-delegation="<min-self-delegation>" \
  --fees=<fees> \
  --from=<key-name>

Помните, что вы должны использовать chain-id который указывает на сеть, к которой вы присоединяетесь (umee-1 для мэйннета). Ключ key-name относится к ключу оператора валидатора, который вы создавали ранее.

Gravity Bridge

Валидатор обязан запустить критический компонент Gravity Bridge, известный как оркестратор peggo. Оркестратор необходим для решения нескольких задач, но в первую очередь он нужен как Мост работающий между сетью Umee и Ethereum.

Для успешной работы оркестратору необходимы несколько компонентов:

  • Umee gRPC

  • Ethereum RPC

  • Ключ подписи для сети Umee (адрес должен быть пополнен) для перевода транзакций в сеть Umee

  • Ключ подписи для сети Ethereum (адрес должен быть пополнен) для перевода транзакций в сеть Ethereum

Сеть Umee использует peggo вариацию Оркестратора Gravity Bridge, в оригинале разработанную Injective Labs. Peggo сам по себе является форком оригинального оркестратора Gravity Bridge разработанного Althea. Посетите страницу релизов чтобы скачать подходящую версию peggo.

$ PEGGO_VERSION=v0.2.4
$ wget https://github.com/umee-network/peggo/releases/download/$PEGGO_VERSION/peggo-$PEGGO_VERSION-linux-amd64.tar.gz
$ tar xvf peggo-$PEGGO_VERSION-linux-amd64.tar.gz && cd peggo-$PEGGO_VERSION-linux-amd64 && rm LICENSE README.md
$ chmod +x ./peggo
$ mv ./peggo /usr/local/bin
$ peggo --help

Теперь мы должны сконфигурировать наши ключи peggo:

Не используйте один адрес для оператора валидатора и оркестратора.

Для отправки транзакции ниже, ваша нода должны быть полностью синхронизирована с сетью umee-1

# umeed tx gravity set-orchestrator-address [validator-address] [orchestrator-address] [ethereum-address] [flags]
umeed tx gravity set-orchestrator-address VALIDATOR_OPERATOR_ADDRESS ORCHESTRATOR_ADDRESS ETHEREUM_ADDRESS --chain-id="umee-1" --from=<key-name>

Предполагается, что umeed и geth уже запущены, далее следует установить следующие переменные:

$ PEGGO_ETH_PK="ETHEREUM_ADDRESS_PRIVATE_KEY"
$ ETH_RPC="YOUR_ETH_NODE_ADDRESS"
$ BRIDGE_ADDR="0xb564ac229e9d6040a9f1298b7211b9e79ee05a2c"
$ START_HEIGHT="14211966"
$ ORCHESTRATOR_WALLET_NAME="ORCHESTRATOR_ADDRESS_WALLET_NAME"
$ ORCHESTRATOR_WALLET_PASSWORD="ORCHESTRATOR_ADDRESS_WALLET_PASSWORD"
$ ALCHEMY_ENDPOINT="YOUR_WSS_ALCHEMY_ENDPOINT" # https://www.alchemy.com/

Контракт Gravity Bridge должен быть поднят прежде чем сконфигурирован и запущен оркестратора. Для более детальной информации, пожалуйста изучите официальный репозиторий Umee.

Далее создайте peggod.systemd сервис:

$ echo "[Unit]
Description=Peggo Service
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=/usr/local/bin/peggo orchestrator $BRIDGE_ADDR \
  --bridge-start-height=\"$START_HEIGHT\" \
  --eth-rpc=\"$ETH_RPC\" \
  --relay-batches=true \
  --relay-valsets=false \
  --cosmos-chain-id=umee-1 \
  --cosmos-keyring-dir=\"$HOME/.umee\" \
  --cosmos-from=\"$ORCHESTRATOR_WALLET_NAME\" \
  --cosmos-from-passphrase=\"$ORCHESTRATOR_WALLET_PASSWORD\" \
  --eth-alchemy-ws=\"$ALCHEMY_ENDPOINT\" \
  --cosmos-keyring=\"os\" \
  --log-level debug \
  --log-format text
Environment=\"PEGGO_ETH_PK=$PEGGO_ETH_PK\"
Restart=always
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > $HOME/peggod.service
$ sudo mv $HOME/peggod.service /etc/systemd/system

В завершении добавим peggod в автозагрузку и перезапустим:

$ sudo systemctl daemon-reload
$ sudo systemctl enable peggod
$ sudo systemctl restart peggod

Вы можете проверить логи peggod, используя следующую команду:

$ journalctl -u peggod -f -o cat

Last updated