Wiki de ZooBC
Operar un nodo

El registro de nodos y sus plazas

El registro de nodos es la lista en la cadena de los nodos autorizados a producir bloques de ZooBC. Cada entrada es una plaza. En Proof of Participation son las plazas, y no las monedas ni el hardware, las que deciden quién produce los bloques: la probabilidad de un operador de producir el siguiente bloque es igual a su proporción de las plazas. Cada cambio en el registro es una transacción que todos los nodos validan, y cualquiera puede leerlo.

Del registro a una plaza: registrarse con un stake, esperar en la cola pública, ser admitido de uno en uno y luego turnarse para producir bloques
Del registro a una plaza: registrarse con un stake, esperar en la cola pública, ser admitido de uno en uno y luego turnarse para producir bloques

Qué registra una plaza

Para cada nodo, el registro guarda:

  • el id de nodo, un número derivado de la clave de nodo: sus primeros 8 bytes leídos como un entero little-endian, con el bit más alto puesto a cero;
  • la clave de nodo, una clave pública Ed25519 de 32 bytes que firma el trabajo del nodo (véase claves de un nodo);
  • la cuenta del propietario, la cuenta normal que registró el nodo y lo controla;
  • la altura de registro, el bloque en el que se registró el nodo;
  • el stake bloqueado, los ZBC que el propietario bloqueó como fianza;
  • el estado: registrado (activo), en cola o eliminado.

La puntuación de participación del nodo se guarda junto a él. El registro está versionado por altura de bloque, así que la composición en cualquier altura pasada puede reconstruirse, y cada bloque se juzga según el registro tal como estaba en el bloque anterior.

Por qué plazas

En Proof of Work, una parte de la producción de bloques puede comprarse tan rápido como el hardware; en Proof of Stake, tan rápido como las monedas. En ZooBC es una parte de las plazas, y las plazas se admiten de una en una al ritmo que fija el protocolo (ritmo de admisión). Por tanto, una mayoría de la producción de bloques no puede comprarse deprisa. Proof of Participation frente a PoW y PoS pone los tres diseños uno al lado del otro.

El sorteo de productores es uniforme sobre las plazas registradas que no están suspendidas (sorteo). Todas las plazas tienen la misma probabilidad de ser sorteadas, sea cual sea lo que haya bloqueado su propietario. Un operador con 3 de 30 plazas produce aproximadamente un bloque de cada diez, tanto si cada una de sus plazas bloquea 100 ZBC como si bloquea 10 000 ZBC.

Una rueda con un sector igual por plaza sea cual sea el stake, y el stake ordenando en cambio la cola
Una rueda con un sector igual por plaza sea cual sea el stake, y el stake ordenando en cambio la cola

Para qué sirve el stake

Si el stake no compra bloques, ¿para qué sirve?

  • Ordena la cola de nodos que esperan para entrar, por el stake multiplicado por el tiempo de espera (cola).
  • Hace que cada plaza cueste algo: un recién llegado debe bloquear al menos el mínimo de entrada (registrar un nodo).
  • Es una fianza. Se pierde una décima parte si el nodo es expulsado, o si se retira mientras está ausente o suspendido; esa décima parte va al fondo de longevidad, que paga a los nodos que trabajan (salir del registro).

El stake no gana nada por sí mismo. Las recompensas también lo ignoran: la lotería coinbase se pondera por la puntuación de participación, que solo sube con trabajo real (madurez e ingresos).

Plazas génesis y recién llegados

Cada cadena empieza con 11 plazas génesis en manos de la ZooBC Foundation. Se escriben en el registro en la altura 0 sin stake bloqueado, con la puntuación por defecto del 20 % y un saldo operativo de 10 ZBC en la cuenta propia de cada nodo. Todos los demás entran a través de la cola: nadie elige a los aspirantes y no hay ningún paso de aprobación. Tampoco hay un calendario fijo: el tiempo entre dos admisiones depende del número de plazas contadas. Un registro no caduca.

Cómo cambia de estado una plaza

DeACausa
(ninguno)registradoel génesis, en la altura 0
(ninguno) o eliminadoen colaun registro
en colaregistradola admisión
registradoeliminadola expulsión, la retirada por el propietario o una reclamación
en colaeliminadola retirada, una reclamación o la baja por falta de asistencia

La suspensión no es un estado. Un nodo suspendido sigue «registrado», pero queda fuera del sorteo de productores hasta que vuelve (turnos perdidos, suspensión y expulsión).

Leer el registro

El registro es público, y no hace falta ninguna clave para leerlo:

  • GET /api/v1/nodes?status=all lista todas las plazas con su propietario y su altura de registro; las plazas génesis conservan la altura 0.
  • GET /api/v1/nodes?status=queued lista la cola, con el stake y la altura de registro de cada nodo.
  • GET /api/v1/blockchain/rules lista las reglas vigentes.

No es una lista de billeteras: una cuenta normal no necesita registrarse para tener o enviar ZBC.

Véase también