Saltar al contenido principal

Mecanismo de Consenso

QoreChain implementa Triple-Pool Composite Proof-of-Stake (CPoS), un mecanismo de consenso que clasifica a los validadores en tres pools especializados y utiliza una selección ponderada por reputación para equilibrar seguridad, descentralización y rendimiento. CPoS está implementado en el módulo x/qca y opera sobre el QoreChain Consensus Engine.

La capa de optimización por aprendizaje por refuerzo que ajusta los parámetros de consenso en tiempo de ejecución se denomina PRISM (Policy-driven Reinforcement-learning for Intelligent State Machines). Consulta el Motor de Consenso PRISM para más detalles.

El diagrama siguiente resume un ciclo de bloque/consenso de Triple-Pool CPoS sobre el QoreChain Consensus Engine, y muestra dónde PRISM retroalimenta los parámetros ajustables de x/qca.


Arquitectura Triple-Pool

CPoS divide el conjunto activo de validadores en tres pools según métricas de reputación, stake y delegación. Cada pool desempeña un rol diferenciado en el proceso de consenso.

Clasificación de Pools

PoolCriteriosPeso de Selección
RPoS (Reputation Proof-of-Stake)Puntuación de reputación >= percentil 70 Y stake auto-vinculado >= mediana40%
DPoS (Delegated Proof-of-Stake)Delegación total >= 10,000 QOR35%
PoS (Standard Proof-of-Stake)Todos los validadores activos restantes25%

La clasificación se evalúa con la siguiente prioridad: RPoS > DPoS > PoS. Un validador que cumple los requisitos tanto de RPoS como de DPoS se asigna a RPoS.

La reclasificación ocurre cada 1,000 bloques. En cada época de reclasificación:

  1. Recopilar puntuaciones de reputación — Las puntuaciones de reputación se recopilan del módulo x/reputation para todos los validadores activos.
  2. Calcular el umbral de reputación — El umbral de reputación del percentil 70 se calcula a partir de la distribución ordenada de puntuaciones.
  3. Calcular la mediana del stake auto-vinculado — La mediana del stake auto-vinculado se calcula a partir de la distribución ordenada de stake.
  4. Reasignar validadores — Cada validador activo se reasigna al pool de mayor prioridad para el que cumple los requisitos.
  5. Asignación por defecto — Los validadores sin clasificar (aquellos aún no evaluados) se asignan por defecto al pool PoS.

Selección de Proponente Ponderada por Pool

La selección del proponente de bloque sigue un proceso determinista de dos etapas.

Etapa 1: Selección de Pool

Un valor aleatorio determinista selecciona qué pool propone el siguiente bloque:

seed = SHA256(lastBlockHash || height || "pool")
randVal = uint64(seed[:8]) / MaxUint64 // uniform in [0, 1)

El pool se elige comparando randVal con los umbrales de peso acumulado:

  • randVal < 0.40 → pool RPoS
  • 0.40 <= randVal < 0.75 → pool DPoS
  • randVal >= 0.75 → pool PoS

Etapa 2: Selección Dentro del Pool

Dentro del pool seleccionado, el proponente se elige mediante una CDF ponderada por reputación × stake. Para cada validador del pool:

  1. La puntuación de reputación r se obtiene de x/reputation.
  2. El peso compuesto es w = r * tokens.
  3. Se construye una función de distribución acumulada (CDF) a partir de todos los pesos compuestos.
  4. El proponente se selecciona mediante un sorteo aleatorio determinista contra la CDF, sembrado por el hash y la altura del bloque.

Comportamiento de Respaldo

Si el pool seleccionado está vacío, el sistema recurre al pool PoS. Si el pool PoS también está vacío, la selección recurre a la selección ponderada por reputación sobre todo el conjunto activo de validadores.


Curva de Vinculación Personalizada

Las recompensas de los validadores se calculan mediante una curva de vinculación multifactorial que incentiva la participación a largo plazo, la alta reputación y la alineación con las fases de crecimiento del protocolo.

Fórmula

R(v, t) = beta * S_v * (1 + alpha * ln(1 + L_v)) * Q(r_v) * P(t)

Definiciones de Factores

FactorSímboloDescripciónPor Defecto
Multiplicador de Recompensa BasebetaEscala la magnitud global de la recompensa1.0
Stake Auto-vinculadoS_vLos tokens auto-vinculados del validador (uqor)--
Sensibilidad de LealtadalphaControla cuánto amplifica la duración de lealtad las recompensas0.1
Duración de LealtadL_vNúmero de bloques consecutivos en que el validador ha estado activo--
Calidad de ReputaciónQ(r_v)Mapea la reputación r a un multiplicador de recompensa en [0.75, 1.25]--
Fase del ProtocoloP(t)Multiplicador dependiente de la fase para impulsar o moderar recompensasVer abajo

Función de Calidad de Reputación

Q(r) = 1 + 0.5 * (r - 0.5)

El resultado se restringe al rango [0.75, 1.25]:

Puntuación de ReputaciónQ(r)
0.00.75
0.250.875
0.51.0
0.751.125
1.01.25

Multiplicadores de Fase del Protocolo

FaseP(t)Descripción
Genesis1.5Recompensas más altas para impulsar el conjunto de validadores
Growth1.0Recompensas estándar durante la expansión de la red
Mature0.8Emisión reducida a medida que la red se estabiliza

Matemática Determinista

El cálculo de ln(1 + L_v) utiliza una aproximación por serie de Taylor con reducción de argumento (TaylorLn1PlusX), operando enteramente sobre decimales de precisión fija LegacyDec. No se utiliza aritmética de punto flotante en los cálculos de recompensa críticos para el consenso.


Slashing Progresivo

QoreChain reemplaza las tasas de slashing fijas por un modelo de penalización progresiva que escala las consecuencias para los reincidentes a la vez que permite que las infracciones decaigan con el tiempo.

Fórmula

penalty = base_rate * escalation_factor^effective_count * severity_factor

Decaimiento Temporal

Las infracciones pasadas contribuyen un peso decreciente al recuento efectivo:

effective_count = SUM( 0.5^(blocks_since_i / decay_halflife) )

Para cada infracción pasada i, la contribución se reduce a la mitad cada decay_halflife bloques (por defecto: 100,000). Esto significa que una sola infracción antigua de hace 200,000 bloques contribuye solo 0.25 al recuento efectivo.

Factores de Severidad

Tipo de InfracciónFactor de Severidad
Downtime1.0
Double Sign2.0
Light Client Attack3.0

Penalización Máxima

La penalización está limitada al 33% por evento de slash, independientemente de cuántas infracciones pasadas haya acumulado un validador.

Ejemplo de Cálculo

Un validador con 2 infracciones previas (una de hace 50,000 bloques, otra de hace 150,000 bloques) comete un double-sign:

  1. Contribuciones de decaimiento:
    • Infracción 1: 0.5^(50000 / 100000) = 0.5^0.5 = 0.707
    • Infracción 2: 0.5^(150000 / 100000) = 0.5^1.5 = 0.354
    • effective_count = 0.707 + 0.354 = 1.061
  2. Escalado: 1.5^1.061 = 1.516
  3. Penalización: 0.01 * 1.516 * 2.0 = 0.0303 (3.03%)

Compáralo con un infractor primerizo: 0.01 * 1.5^0 * 2.0 = 0.02 (2.0%).


Gobernanza QDRW

La gobernanza de QoreChain utiliza Quadratic Delegation with Reputation Weighting (QDRW) para prevenir la captura plutocrática a la vez que recompensa a los participantes de la red a largo plazo.

Fórmula de Poder de Voto

VP(v) = sqrt(staked + 2 * xQORE) * ReputationMultiplier(r)

Donde:

  • staked = los tokens QOR vinculados del votante
  • xQORE = el saldo de xQORE del votante (derivado de staking a largo plazo)
  • 2 = el multiplicador de peso de xQORE (configurable por gobernanza)
  • r = la puntuación de reputación del votante de x/reputation

Multiplicador de Reputación

El multiplicador de reputación mapea r en [0, 1] a un multiplicador en [0.5, 2.0] mediante una curva sigmoide:

ReputationMultiplier(r) = 0.5 + 1.5 * sigmoid(6 * (r - 0.5))
Puntuación de ReputaciónMultiplicador
0.00.50
0.10.52
0.20.58
0.30.71
0.40.93
0.51.25
0.61.57
0.71.79
0.81.92
0.91.98
1.02.00

Escalado Cuadrático

La función raíz cuadrada garantiza que el poder de voto escale de forma sublineal con el stake. Un votante con 4x el stake de otro votante recibe solo 2x el poder de voto, no 4x. Esto evita que los grandes poseedores de tokens dominen las decisiones de gobernanza.

Matemática Determinista

IntegerSqrt utiliza el método de Newton con precisión LegacyDec. SigmoidApprox utiliza una ExpApprox por serie de Taylor con 12 términos. Toda la matemática de gobernanza es completamente determinista en todos los nodos validadores.


Parámetros de QCA

La siguiente tabla enumera todos los parámetros configurables por gobernanza en el módulo x/qca:

Parámetros Centrales

ParámetroTipoPor DefectoDescripción
use_reputation_weightingbooltrueHabilita la selección de proponente ponderada por reputación
min_reputation_scorefloat640.1Puntuación mínima de reputación para participación activa

Configuración de Pools

ParámetroTipoPor DefectoDescripción
classification_intervaluint641000Bloques entre reclasificaciones de pool
weight_rposLegacyDec0.40Peso de selección del pool RPoS
weight_dposLegacyDec0.35Peso de selección del pool DPoS
min_delegation_dposuint6410,000,000,000Delegación mínima para DPoS (10,000 QOR en uqor)
rep_percentile_rposuint6470Umbral de percentil de reputación para RPoS

Configuración de la Curva de Vinculación

ParámetroTipoPor DefectoDescripción
alphaLegacyDec0.1Coeficiente de sensibilidad de lealtad
betaLegacyDec1.0Multiplicador de recompensa base
phase_multiplierLegacyDec1.5Multiplicador de recompensa por fase del protocolo (fase Genesis)

Configuración de Slashing

ParámetroTipoPor DefectoDescripción
base_rateLegacyDec0.01Tasa de slash base (1%)
escalation_factorLegacyDec1.5Base de escalado progresivo
max_penaltyLegacyDec0.33Penalización máxima por evento (33%)
decay_halflifeuint64100,000Bloques para la vida media del peso de infracción

Configuración de Gobernanza QDRW

ParámetroTipoPor DefectoDescripción
enabledboolfalseHabilita el conteo de gobernanza QDRW
xqore_multiplierLegacyDec2.0Peso de xQORE relativo a los tokens en stake
rep_min_multiplierLegacyDec0.5Multiplicador de reputación mínimo
rep_max_multiplierLegacyDec2.0Multiplicador de reputación máximo

Relacionado