Consenso y bloques

La cadena de Velum produce bloques por turnos entre los nodos completos activos, con un objetivo de 2 segundos por hueco. El ritmo real se mide: el explorador y la portada muestran la media reciente. Cada época (1.800 bloques, una hora30 bloques, unos 60 segundos) los nodos descubren el VEL de esa época con su trabajo comprobado.

Turnos

El tiempo se divide en huecos de 2 s (el objetivo) desde el génesis (slot = floor((ts − génesis) / 2000)). Para cada hueco, todos los nodos calculan el mismo orden de turno:

activos = nodos completos registrados con señal de vida en los últimos 15 bloques
orden   = activos ordenados por sha256(hash_bloque_anterior | slot | dirección)
  • El primero del orden (rango 0) propone el bloque al empezar el hueco.
  • Los suplentes esperan medio segundo por puesto (rango × 500 ms) antes de poder proponer.
  • Un bloque firmado antes de su turno se rechaza.

El orden cambia con cada bloque (depende del hash anterior), así que nadie sabe con antelación cuándo le toca a quién.

Señales de vida

Cada nodo firma periódicamente una señal de vida (presence: nodo, altura, hora). Las señales entran en los bloques y definen quién está activo. También cuentan para la disponibilidad, uno de los requisitos de nivel.

La cadena no se para

Si los nodos activos se apagan a la vez, cada hueco vacío adelanta un puesto a todos los demás. En pocos huecos, cualquier nodo registrado puede seguir produciendo. Los nodos ligeros nunca producen bloques: los bloques que firmen se rechazan.

Épocas

En el último bloque de cada época:

  1. Se suma lo que hay por descubrir: emisión de la época, el 80 % de las comisiones guardadas y el 0,1 % que devuelve la Reserva de la Red.
  2. 15 % lo descubren quienes produjeron y validaron bloques, a partes iguales por bloque.
  3. 85 % lo descubren quienes abrieron puentes: entregas comprobadas × multiplicador de nivel.
  4. Se liberan las bolsas de tokens (pool.fund) que sigan activas.
  5. Se publican la dificultad (trabajo verificado / VEL emitidos) y el precio del oráculo.
  6. Caducan las órdenes del mercado con ttl vencido.

El trabajo de cada nodo no entra recibo a recibo: cada nodo publica una reclamación agregada (work.claim) con la raíz de Merkle de sus recibos, y la época siguiente comprueba 16 recibos al azar (work.prove). Ver Monta un nodo.

En la red de pruebas una época dura un minuto; en la red principal, una hora.En la red principal una época dura una hora (1.800 bloques).

Ver Moneda VEL para la emisión y Monta un nodo para los niveles.

Elección de cadena y reorganizaciones

Cuando dos bloques compiten por la misma altura, gana la regla:

mejor = la cadena más alta; a igual altura, el bloque con el hash menor

Un nodo que ve una rama mejor cambia a ella (reorganización). Por el diseño de turnos, las reorganizaciones son cortas: normalmente de uno o dos bloques, cuando dos suplentes proponen casi a la vez. El indexador del explorador guarda los estados recientes para seguirlas y marca los bloques descartados como «rama descartada».

Finalidad {#finalidad}

En {{chain}} la finalidad es probabilística: cuantos más bloques tenga encima, más difícil es que un bloque se descarte.

Uso Confirmaciones recomendadas Tiempo aproximado
Mensajes, pagos pequeños entre personas 1 Un bloque
Comercios y pasarelas de pago 6 Unos segundos
Exchanges, importes normales 30 ≈ 1 min con el ritmo objetivo
Exchanges, importes grandes Una época ≈ 1 h en la red principal

La finalidad inmediata con firmas de 2/3 de los validadores está en la hoja de ruta de la red principal.

Estructura de un bloque

BlockHeader = { chain, height, prev, ts, slot, proposer, txRoot, receiptRoot, presenceRoot, stateRoot }
Block       = { header, hash, sig, txs[], receipts[], presence[], rewards[], tokenRewards?[] }
hash        = sha256(JSON canónico de header)
sig         = ed25519 del proponente sobre hash

Las raíces son árboles de Merkle (SHA-256) de las transacciones, los recibos y las señales de vida. stateRoot es la huella del estado completo tras aplicar el bloque: dos nodos honrados llegan siempre al mismo.