Validar en Testnet
Convertirse en un validador en el testnet de Mchain es un paso esencial antes de unirse al mainnet. Este proceso comienza una vez que tu nodo está sincronizado con el testnet. Sigue la guía sobre Ejecutar un nodo en Testnet para la configuración inicial.
Paso 1: Configurar un llavero de cartera
Para transformar tu nodo en un validador, debes establecer una cartera dentro de tu llavero. Esto se puede hacer añadiendo una cartera existente utilizando tu frase semilla o creando una nueva. Copia y guarda de forma segura la frase mnemotécnica para la recuperación futura de la cartera y anota tu dirección de Mchain.
Elige un backend de llavero (opciones: os, file, kwallet, pass, test, memory) para almacenar tus claves. Se recomiendan los backends 'file' y 'pass' para entornos headless como servidores. Más información sobre los backends de llaveros está disponible en la documentación de Cosmos SDK.
Creando una nueva cartera:
- Para el backend de llavero
os
:
export KEY_NAME=mykey
mchaind keys add $KEY_NAME
- Para el backend de llavero
file
(sustituyeKEYPASSWD
por una contraseña fuerte de al menos 8 caracteres):
export KEY_NAME=mykey
export KEYPASSWD=password
(echo $KEYPASSWD; echo $KEYPASSWD) | mchaind keys add $KEY_NAME --keyring-backend file
echo $KEYPASSWD | mchaind keys show $KEY_NAME --keyring-backend file
Para confirmar que se ha añadido exitosamente la cartera al llavero:
echo $KEYPASSWD | mchaind keys list --keyring-backend file
Continúa con los siguientes pasos para configurar completamente tu nodo validador en la testnet de Mchain.
Paso 2: Adquirir tokens MARK de Testnet
Obtén tokens MARK para el testnet a través del Testnet Faucet. Ingresa tu dirección de Mchain y solicita "Obtener Tokens de Testnet".
Paso 3: Recuperar clave pública del Validador
Tu clave pública de validador es crucial para la inicialización. Recupérala usando:
mchaind tendermint show-validator
Paso 4: Comando de creación del Validador
Asegúrate de que tu cartera tenga un pequeño saldo de MARK. Crea tu validador con el siguiente comando, rellenado con valores apropiados:
mchaind tx staking create-validator \
--from=[KEY_NAME] \
--amount=[staking_amount_umark] \
--pubkey=$(mchaind tendermint show-validator) \
--moniker="[moniker_id_of_your_node]" \
--security-contact="[email/método de contacto de seguridad]" \
--chain-id="[chain-id]" \
--commission-rate="[commission_rate]" \
--commission-max-rate="[maximum_commission_rate]" \
--commission-max-change-rate="[maximum_rate_of_change_of_commission]" \
--min-self-delegation="[min_self_delegation_amount]"
Ejemplo con valores:
mchaind tx staking create-validator \
--from=$KEY_NAME \
--amount=1000000000umark \
--pubkey=$(mchaind tendermint show-validator) \
--moniker="Mariner" \
--security-contact="mariner@email.com" \
--chain-id="mchain-testnet-1" \
--commission-rate="0.1" \
--commission-max-rate="0.2" \
--commission-max-change-rate="0.05" \
--min-self-delegation="100000000" \
--keyring-backend=file
Explicación de los flags del comando:
from
: El KEY_NAME creado para tu llaveroamount
: Cantidad de staking en umark (por ejemplo, 1000000000umark equivale a 1000 MARK)pubkey
: Clave pública del validador recuperada anteriormentemoniker
: Un nombre elegido para tu validadorsecurity-contact
: Email de contacto para delegadoreschain-id
: La ID de cadena, como 'mchain-testnet-1' para el testnet de Mchaincommission-rate
: La tarifa cobrada a los delegados (por ejemplo, 10%)commission-max-rate
: La tasa máxima cobrable a los delegados (por ejemplo, 20%)commission-max-change-rate
: La tasa máxima de cambio diario de la comisión (por ejemplo, 5% por día)min-self-delegation
: Fondos personales mínimos requeridos para permanecer enlazado (por ejemplo, 100 MARK)keyring-backend
: Selecciona el backend de llavero correcto
Si encuentras un error de 'falta de gas', ajusta el valor del gas:
--gas=<valor superior al gasUsed del error>
Paso 5: Monitorear el estado del Validador
Para ver el conjunto actual de validadores:
mchaind query staking validators --limit 300 -o json | jq -r '.validators[] | [.operator_address, .status, (.tokens|tonumber / pow(10; 6)), .commission.update_time[0:19], .description.moniker] | @csv' | column -t -s","
Filtrar por tu moniker:
... | grep Mariner