Ejecutar un Validador
Esta guía cubre cómo crear un validador en la red QoreChain, entender el sistema de clasificación de pools, registrar una clave PQC para seguridad resistente a la computación cuántica, y monitorear tu nodo.
Esta guía está orientada a la mainnet qorechain-vladi (chain ID EVM 9801), activa desde el 7 de junio de 2026 y ejecutando la versión de cadena v3.1.95. Se recomienda la testnet qorechain-diana (chain ID EVM 9800) para ensayar tu configuración antes de pasar a producción. Sustituye el --chain-id adecuado según tu red objetivo.
Requisitos previos
- Un nodo
qorechaindcompletamente sincronizado (ver Conexión a Testnet) - Una cuenta con fondos de al menos 100,000 QOR (100,000,000,000 uqor) para la autodelegación inicial — este mínimo se aplica on-chain y
create-validatorse rechaza por debajo de él - Una licencia
validator_operatoractiva en tu cuenta — ver la nota más abajo; sin ella,create-validatorfalla conErrUnauthorizedsin importar cuánto QOR autodelegues - Familiaridad con el modelo de Staking y Delegación
Crear un Validador
Gate de licencia: validator_operator
create-validator está protegido por dos verificaciones independientes, ambas aplicadas on-chain, y necesitas ambas — un autobond grande por sí solo no es suficiente:
- Autobond mínimo de 100,000 QOR.
- Una licencia
validator_operatoractiva en la cuenta que envía la transacción.
El expires_at de una licencia es una altura de bloque, no una fecha ni una duración — 0 significa sin vencimiento. Si falta o está vencida, create-validator falla con ErrUnauthorized, sin importar cuánto autodelegues; esta es la razón más común por la que un intento bien financiado falla y parece inexplicable. Este gate existe específicamente porque la vía de ejecución EVM no puede verlo ni aplicarlo (un único decorador de ante allí lo eludiría por completo) — es una de las razones por las que el staking y la validación permanecen exclusivamente en la vía Native.
qorechaind tx staking create-validator \
--amount 100000000000uqor \
--pubkey $(qorechaind comet show-validator) \
--moniker "my-validator" \
--commission-rate 0.10 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from mykey \
--gas auto \
--gas-adjustment 1.3 \
-y
| Parámetro | Descripción |
|---|---|
--amount | Monto de autodelegación — mínimo 100,000 QOR (100000000000uqor) |
--pubkey | Clave pública de consenso del validador (ed25519) |
--moniker | Nombre legible para tu validador |
--commission-rate | Tasa de comisión inicial (p. ej., 0.10 = 10%) |
--commission-max-rate | Tasa de comisión máxima (inmutable tras la creación) |
--commission-max-change-rate | Tasa máxima de cambio diario de comisión |
--min-self-delegation | Cantidad mínima de tokens que el operador debe autodelegar |
Una vez confirmada la transacción, verifica tu validador:
qorechaind query staking validator $(qorechaind keys show mykey --bech val -a)
Clasificación de Pools
QoreChain utiliza un sistema de clasificación de tres pools gestionado por el módulo x/qca (Quantum Consensus Allocation). Cada 1,000 bloques, los validadores se reclasifican en uno de tres pools según su reputación y stake:
| Pool | Criterio | Asignación de Bloques |
|---|---|---|
| RPoS (Reputation Proof-of-Stake) | Reputación >= percentil 70 Y stake >= mediana | 40% de los bloques |
| DPoS (Delegated Proof-of-Stake) | Delegación total >= 10,000 QOR | 35% de los bloques |
| PoS (Proof-of-Stake) | Todos los demás validadores activos | 25% de los bloques |
Dentro de cada pool, los proponentes de bloque se seleccionan mediante selección aleatoria ponderada proporcional a su stake efectivo. La clasificación garantiza que tanto los validadores de alta reputación como los de alta delegación reciban una representación justa, permitiendo a la vez que los validadores más pequeños participen.
Consultar tu Clasificación de Pool
qorechaind query qca pool-classification $(qorechaind keys show mykey --bech val -a)
Vía JSON-RPC:
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "qor_getPoolClassification",
"params": ["qorvaloper1..."],
"id": 1
}'
Curva de Bonding
La recompensa de staking para un validador se determina mediante una curva de bonding que incorpora múltiples factores:
R = beta * S * (1 + alpha * log(1 + L)) * Q(r) * P(t)
| Variable | Descripción |
|---|---|
R | Monto de la recompensa |
beta | Tasa base de recompensa |
S | Stake efectivo |
alpha | Constante de escalado de lealtad |
L | Duración de lealtad (tiempo continuo de staking) |
Q(r) | Factor de calidad de reputación, rango [0.75 - 1.25] |
P(t) | Multiplicador de fase del protocolo (se ajusta según el ciclo de vida de la red) |
Puntos clave:
- Bono por duración de lealtad: Los validadores que hacen staking de forma continua reciben recompensas crecientes mediante el término logarítmico de lealtad. Esto incentiva el compromiso a largo plazo.
- Factor de calidad de reputación: Va de 0.75 (reputación pobre) a 1.25 (reputación excelente). La reputación se calcula a partir del uptime, las propuestas exitosas, la participación comunitaria y la calidad de validación de transacciones.
- Multiplicador de fase del protocolo: Se ajusta a medida que la red madura a través de distintas fases (bootstrap, crecimiento, madurez).
Slashing
Las penalizaciones base por infracción, consultables en vivo y vigentes al momento de escribir esto:
qorechaind query slashing params
| Parámetro | Valor |
|---|---|
| Ventana de bloques firmados | 10,000 bloques (aproximadamente 6 horas para acumularse) |
| Mínimo firmado por ventana | 95% (encarcela por debajo de este umbral) |
| Duración del encarcelamiento por inactividad | 600 segundos (10 minutos) |
| Fracción de slashing por inactividad | 1% del stake |
| Fracción de slashing por doble firma | 5% del stake |
El encarcelamiento es un tiempo de espera fijo de 10 minutos con una penalización fija; es independiente del modelo progresivo descrito a continuación, que superpone consecuencias adicionales y crecientes sobre las infracciones reincidentes a lo largo de un horizonte más largo.
Slashing Progresivo
QoreChain utiliza un modelo de slashing progresivo que escala las penalizaciones para infractores reincidentes, permitiendo al mismo tiempo que los validadores se recuperen con el tiempo:
penalty = base_rate * escalation^effective_count * severity
| Parámetro | Valor |
|---|---|
| Penalización máxima por evento | 33% del stake |
| Vida media de decaimiento | 100,000 bloques |
| Severidad por inactividad | 1.0 |
| Severidad por doble firma | 2.0 |
| Severidad por ataque de light client | 3.0 |
-
Cada infracción incrementa el contador efectivo. Cada infracción (inactividad, doble firma, etc.) incrementa el contador efectivo del validador, lo cual afecta las penalizaciones futuras.
-
La penalización escala exponencialmente. La penalización escala según el contador efectivo usando la fórmula anterior, de modo que los infractores reincidentes enfrentan penalizaciones mucho mayores.
-
El contador efectivo decae con el tiempo. El contador efectivo decae con una vida media de 100,000 bloques (~7 días con bloques de 6s), permitiendo que los validadores se recuperen tras un período de buen comportamiento.
-
Eventos únicos frente a infracciones repetidas. Un único evento accidental de inactividad resulta en una penalización menor, mientras que las infracciones repetidas desencadenan consecuencias exponencialmente crecientes.
Registro de Clave PQC
Registra tu clave pública criptográfica post-cuántica (PQC) — ML-DSA-87 — antes de solicitar una licencia de validador o ejecutar create-validator. Esto no es opcional ni automático: la cadena exige una firma híbrida PQC en cada transacción por la vía cosmos, MsgCreateValidator no es uno de los tipos de mensaje exentos y — a diferencia de una cuenta regular, que registra su clave automáticamente en su primera transacción — un validador debe ejecutar este comando por sí mismo, en su propio nodo, con antelación.
qorechaind tx pqc register-key <pubkey-hex> hybrid \
--from mykey \
--gas 600000 \
-y
| Parámetro | Descripción |
|---|---|
<pubkey-hex> | Clave pública ML-DSA-87 de 2592 bytes en codificación hex |
hybrid | Modo de registro (hybrid = clásico + PQC combinados) |
--gas explícitamenteLa clave pública ML-DSA-87 ocupa 2,592 bytes, y escribirla on-chain supera el límite de gas por defecto de 200,000. Sin --gas 600000 (o superior), la transacción falla con un error opaco out of gas in location: WritePerByte.
Verificar el registro:
qorechaind query pqc key <account-address>
Monitoreo
Métricas de Prometheus
QoreChain expone métricas de Prometheus en el puerto 26660:
http://localhost:26660/metrics
Métricas clave a monitorear:
| Métrica | Descripción |
|---|---|
qorechain_missed_blocks_total | Total de bloques perdidos por tu validador |
qorechain_validator_uptime | Porcentaje de uptime en los últimos N bloques |
qorechain_reputation_score | Puntuación de reputación actual |
qorechain_pool_classification | Asignación de pool actual (0=PoS, 1=DPoS, 2=RPoS) |
qorechain_consecutive_signed | Bloques consecutivos firmados |
consensus_height | Altura de bloque actual |
consensus_rounds | Rondas de consenso para la altura actual |
Consultar Puntuación de Reputación
qorechaind query reputation score $(qorechaind keys show mykey --bech val -a)
Vía JSON-RPC:
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "qor_getReputationScore",
"params": ["qorvaloper1..."],
"id": 1
}'
Verificaciones de Salud
# Node status
qorechaind status | jq '.sync_info'
# Validator signing info (uptime, missed blocks)
qorechaind query slashing signing-info $(qorechaind comet show-validator)
# Check if your validator is in the active set
qorechaind query staking validators --status bonded | grep "my-validator"
Buenas Prácticas Operativas
-
Usa una arquitectura de nodos sentry. Ejecuta tu validador detrás de nodos sentry para protegerlo de ataques DDoS. Expón solo los nodos sentry a la red pública.
-
Configura alertas. Configura alertas para bloques perdidos, uptime bajo y reinicios inesperados. Unos pocos bloques perdidos son normales; las pérdidas sostenidas activarán slashing.
-
Mantén un uptime alto. El sistema de reputación premia el uptime consistente. El tiempo de inactividad prolongado degrada tu factor de calidad de reputación, reduciendo las recompensas.
-
Mantén el software actualizado. Sigue las versiones de QoreChain y aplica las actualizaciones con prontitud. Coordínate con la comunidad de validadores para las actualizaciones de cadena.
-
Asegura tus claves. Usa un módulo de seguridad de hardware (HSM) o un firmante remoto para la clave de consenso del validador. Nunca almacenes las claves en la misma máquina que el nodo.
-
Registra una clave PQC. Protege tu validador a futuro frente a las amenazas cuánticas registrando una clave ML-DSA-87.
-
Monitorea tu pool. Rastrea tu clasificación de pool cada 1,000 bloques. Mejorar tu reputación puede moverte de PoS a RPoS, aumentando significativamente las oportunidades de proponer bloques.
Referencia de Comandos del Validador
# Edit validator metadata
qorechaind tx staking edit-validator \
--moniker "new-name" \
--website "https://myvalidator.com" \
--details "Description of my validator" \
--from mykey -y
# Unjail after downtime slashing
qorechaind tx slashing unjail --from mykey -y
# Delegate additional stake
qorechaind tx staking delegate $(qorechaind keys show mykey --bech val -a) \
500000000uqor --from mykey -y
# Withdraw rewards
qorechaind tx distribution withdraw-rewards $(qorechaind keys show mykey --bech val -a) \
--commission --from mykey -y
Validar Redes Conectadas
A partir de la versión de cadena v3.1.80, un validador de QoreChain también puede ayudar a validar las redes conectadas a través del bridge. Esto es opt-in y está sujeto a licencia:
- Poseer la licencia. El validador debe tener una licencia activa
validator_<chain>(oqcb_bridge) para la red objetivo. El orquestador se niega a iniciar un cliente externo sin ella (fail-closed). - La activación aprovisiona el cliente automáticamente. Cuando se activa la licencia, QoreChain aprovisiona el cliente de la red correspondiente en tu nodo: descarga el cliente fijado, renderiza su configuración y lo ejecuta bajo la orquestación de QoreChain. No se descarga nada hasta la activación.
- Aporta las claves y el stake de la red. El validador/stake y las claves de firma de la red externa son suministrados por el operador para cada red; QoreChain proporciona el framework de drivers y el gate de licencia obligatorio, no tu stake en la cadena externa.
Existen drivers para las 37 redes del bridge, clasificadas según cómo puede participar un validador:
| Clase | Participación | Ejemplos |
|---|---|---|
| Validador sin permisos (permissionless) | Hacer stake y ejecutar | Solana, Ethereum, Avalanche, Sui, Aptos, Cardano, Tezos, Algorand, Starknet |
| Con tope / electo / por admisión | Hacer stake, sujeto a un tope o elección | BSC, Polygon, Polkadot, TRON, Sei, Injective, NEAR, Hedera |
| Nodo completo L2 | Ejecutar un nodo completo (sin staking) | Optimism, Base, zkSync Era, Linea, Scroll, Arbitrum |
| Sin staking / lista de confianza | Observar / participar sin hacer stake | Bitcoin, Filecoin, XRPL, Stellar |
Las versiones fijadas de los clientes son best-effort; verifica la versión del cliente upstream para tu red objetivo antes de una activación en producción.
Próximos Pasos
- Compilación desde el Código Fuente — Compila el binario
qorechaind - Desarrollo EVM — Despliega contratos inteligentes en QoreChain
- Abstracción de Cuentas — Cuentas programables para las operaciones de tu validador