Proof of Participation
Proof of Participation (PoP) es la forma en que ZooBC se pone de acuerdo sobre sus bloques. Los bloques los producen los nodos de un registro de nodos en la cadena, elegidos por sorteo a partir de la semilla del bloque anterior, con la misma probabilidad para cada plaza. Cada nodo se mide por el trabajo que una red necesita, pasar bloques y transacciones a los pares que el protocolo le asigna, y esa medida decide su parte de las monedas nuevas. Un bloque es válido porque lo firmó la clave correcta, y cada nodo lo comprueba por sí mismo.
Cuatro objetivos de diseño
- Poder de producción de bloques uniforme. El saldo, el stake, el hardware y la puntuación no cambian la probabilidad de una plaza.
- Pertenencia abierta pero pausada. Cualquiera puede ponerse en la cola para obtener una plaza bloqueando un stake; el protocolo admite a un recién llegado por ciclo.
- Participación medida y recompensada. La retransmisión se demuestra con recibos que firman los pares que reciben, y los recibos deciden los ingresos de cada nodo.
- Ningún trabajo desperdiciado. La seguridad proviene de firmas, hashes y una función aleatoria verificable, no de acertijos.
Proof of Participation frente a PoW y PoS compara estos objetivos con Proof of Work, Proof of Stake y sus variantes delegadas y federadas.
Un bloque, paso a paso
- El sorteo. La semilla del bloque anterior inicia un generador aleatorio que todos los nodos ejecutan igual. Designa a un productor para la ronda 1, a otro para la ronda 2, y así sucesivamente (sorteo).
- Las rondas. El productor de la ronda 1 apunta a estampar su bloque 15 segundos después del anterior. Si guarda silencio, el productor de la ronda 2 toma el relevo 15 segundos más tarde (rondas, tiempos y ventanas). Solo las diez primeras rondas pueden llevar transacciones, y el productor del bloque anterior queda degradado (rondas de prioridad, bloques vacíos y el productor anterior).
- El bloque. El productor firma el bloque con su clave de nodo y demuestra la nueva semilla con una función aleatoria verificable, así que no puede elegir esa semilla (semilla del bloque (VRF)).
- Las comprobaciones. Cada nodo comprueba que el productor fue sorteado para la ronda en la que cae su marca de tiempo o para la ronda anterior, la firma, la prueba de la semilla, cada transacción y cada recibo. Un bloque vacío es válido.
- El trabajo. Los nodos retransmiten bloques y transacciones a sus pares prioritarios y reúnen recibos firmados (recibos y la topología de la red). Los recibos que un nodo muestra en sus propios bloques mueven su puntuación de participación, que pondera la lotería coinbase.
- El coste de la ausencia. Un turno saltado deja a un nodo «ausente»: sin ingresos y con una puntuación que baja. Cuatro fallos seguidos lo suspenden, y una puntuación de cero lo expulsa (turnos perdidos, suspensión y expulsión).
Poder e ingresos, por separado
El sorteo de productores ignora la puntuación, y la lotería ignora el stake. Un nodo con una puntuación alta gana más, pero no produce más bloques ni elige más semillas: el poder es el mismo para todas las plazas, mientras que los ingresos siguen al trabajo que hace cada nodo. Más poder significa más plazas, y las plazas solo llegan a través de la cola, una admisión a la vez (ritmo de admisión).
Cuando compiten varias ramas
Los nodos siguen la rama con la mayor dificultad acumulada, en la que los bloques puntuales pesan más que los tardíos; un empate exacto se resuelve a favor del hash de punta más bajo (elección de bifurcación y dificultad acumulada). Ningún nodo revierte más de 720 bloques (3 horas) ni por debajo del último punto de control cofirmado en la cadena spine (finalidad y reversión). Un productor que firma dos bloques sobre el mismo bloque padre puede ser denunciado y penalizado (doble firma (equivocación)).
Cifras clave
| Elemento | Valor (mainnet) |
|---|---|
| intervalo de bloque y duración de una ronda | 15 segundos |
| plazas génesis por cadena | 11 |
| rondas que pueden llevar transacciones | de la 1 a la 10 |
| puntuación de participación inicial | 20 % |
| turnos perdidos seguidos antes de la suspensión | 4 |
| pares prioritarios por nodo, rebarajados cada | 12, cada 40 bloques |
| límite de reversión | 720 bloques (3 horas) |
Véase también
Artículos de este tema
- Doble firma (equivocación)
Qué ocurre cuando un productor firma dos bloques distintos sobre el mismo bloque padre: cómo lo evitan los nodos honestos, cómo cualquier nodo registrado lo demuestra con un EquivocationReport y cuánto cuesta. - El sorteo: quién produce el siguiente bloque
Cómo cada nodo calcula, a partir de la semilla del bloque anterior, la misma lista ordenada de productores para el siguiente bloque, y por qué todas las plazas activas tienen la misma probabilidad. - Elección de bifurcación y dificultad acumulada
Cómo eligen los nodos de ZooBC entre ramas que compiten: gana la mayor dificultad acumulada, los bloques puntuales pesan más que los tardíos y los empates exactos se resuelven a favor del hash de punta más bajo. - La puntuación de participación
La puntuación del 0 al 100 % que mide lo bien que un nodo hace su trabajo: cómo sube y baja, qué decide (los ingresos de la lotería, la expulsión) y qué no toca nunca (la producción de bloques). - La semilla del bloque (VRF)
La semilla de 64 bytes de cada bloque impulsa las elecciones aleatorias de la cadena. Es la salida de una función aleatoria verificable, así que su productor no puede elegirla y cualquiera puede comprobarla. - Los recibos y la topología de la red
Cómo ZooBC demuestra que un nodo retransmitió bloques y transacciones: los pares prioritarios sorteados cada 40 bloques, el recibo firmado de 232 bytes y las comprobaciones que hace cada validador. - Proof of Participation frente a PoW y PoS
En qué se diferencia el Proof of Participation de ZooBC de Proof of Work, Proof of Stake y los diseños delegados y federados: quién produce los bloques, cómo se gana poder y en qué se basa la seguridad de un bloque. - Rondas de prioridad, bloques vacíos y el productor anterior
Por qué solo las diez primeras rondas pueden llevar transacciones, por qué un bloque vacío sigue siendo un bloque completo y por qué el productor del bloque anterior queda degradado, nunca excluido. - Rondas, tiempos y ventanas
Cómo ZooBC divide el tiempo después de cada bloque en rondas de 15 segundos, en qué ronda cae una marca de tiempo y por qué ningún productor ausente puede detener la cadena por sí solo. - Turnos perdidos, suspensión y expulsión
Qué le pasa a un nodo que se salta su turno: un turno perdido, el estado «ausente», que detiene sus ingresos y baja su puntuación, la suspensión tras cuatro fallos y la expulsión al llegar a cero.