Validador

Una guía detallada paso a paso sobre cómo ejecutar un validador de Umee

Esta guía contiene instrucciones sobre cómo configurar y ejecutar un validador de Umee. En primer lugar, asegúrese de consultar las instrucciones completas del nodo sobre cómo instalar y configurar el binario umeed, ya que esta guía supone que ya lo tiene instalado y configurado.

Keyring

Antes de crear su validador, debe crear su clave de "operador". Tenga en cuenta que esta no es su clave de consenso y no se utilizará para firmar. En su lugar, se utiliza para identificar su validador en la red Umee.

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

Por defecto, umeed almacenará las claves en su keyring soportado por el sistema operativo. Puede cambiar este comportamiento especificando la bandera --keyring-backend.

Si ya tienes una clave que quieres importar a través de un mnemónico, puedes proporcionar una bandera --recover y el comando keys add te pedirá el mnemónico BIP39.

Visita la documentación de keyring de Cosmos SDK para más información.

Nodo Ethereum

Gravity Bridge requiere que los validadores también ejecuten un orquestador peggo además del proceso umeed. El orquestador requiere acceso a la instancia RPC de un nodo geth. Se puede utilizar un cliente geth light, pero es preferible un nodo completo.

Puedes elegir operar tu propio nodo geth o utilizar uno disponible públicamente. Sin embargo, en entornos de producción, se recomienda que ejecute el tuyo propio. Dependiendo de la red en la que esté ejecutando tu validador Umee, querrás conectar o configurar tu nodo geth a la red Ethereum apropiada. Consulta la documentación CLI de geth para obtener más información sobre cómo conectarte a diferentes redes Ethereum.

Para configurar un nodo geth, primero instala el binario desde la página de go-ethereum. Luego, crea un servicio 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

Si necesitas acceder a la instancia de geth externamente, asegúrate de configurar --http.addr=0.0.0.0.

Recargue systemd e inicie el servicio geth:

$ sudo systemctl daemon-reload
$ sudo systemctl start geth

Por último, comprueba que el servicio geth se está ejecutando y es saludable. Si es así, habilítalo:

$ sudo systemctl status geth
$ sudo systemctl enable geth

Crear Validador

Una vez que tengas umeed y geth ejecutándose, puedes finalmente crear tu validador en la red Umee a través de una transacción MsgCreateValidator:

# Validator's consensus public key
# e.g. {"@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>

Ten en cuenta que debes utilizar chain-id que corresponde a la red a la que te estás uniendo (umee-1 para mainnet). El key-name corresponde a la clave del operador validador que creaste anteriormente.

Gravity Bridge

Los validadores también deben ejecutar un componente crítico de Gravity Bridge conocido como orquestador (peggo). El orquestador sirve para múltiples propósitos, pero principalmente actúa como off-chain relayer y oráculo entre la red Umee y Ethereum.

El orquestador requiere unos cuantos componentes para ejecutárse con éxito:

  • Instancia Umee gRPC

  • Instancia Ethereum RPC

  • Clave de firma en la cadena Umee con fondos para retransmitir transacciones a Umee

  • Clave de firma en la cadena de Ethereum con fondos para retransmitir las transacciones a Ethereum

La red Umee utiliza la implementación de peggo del Gravity Bridge Orchestrator implementado originalmente por Injective Labs. Peggo es un fork del Gravity Bridge Orchestrator original implementado por Althea. Visite la página de versiones para descargar la versión correspondiente de 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

Ahora debemos configurar nuestras claves de peggo:

No utilizar la misma dirección para el validador y el orquestador.

Para enviar la siguiente transacción tu nodo debe estar sincronizado con la red 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>

Asumiendo que ya tienes las instancias de umeed y geth ejecutándose, a continuación debemos establecer las variables para configurar peggo:

$ 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/

El contrato de Gravity Bridge debe ser desplegado antes de configurar e iniciar el proceso del orquestador. Consulte el repositorio de Umee para obtener más información.

A continuación, cree un servicio systemd peggod:

$ 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

Finalmente habilite peggod al inicio y ejecute:

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

Puede comprobar los logs de peggod mediante el siguiente comando:

$ journalctl -u peggod -f -o cat

Last updated