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.
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.
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
| De | A | Causa |
|---|---|---|
| (ninguno) | registrado | el génesis, en la altura 0 |
| (ninguno) o eliminado | en cola | un registro |
| en cola | registrado | la admisión |
| registrado | eliminado | la expulsión, la retirada por el propietario o una reclamación |
| en cola | eliminado | la 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=alllista todas las plazas con su propietario y su altura de registro; las plazas génesis conservan la altura 0.GET /api/v1/nodes?status=queuedlista la cola, con el stake y la altura de registro de cada nodo.GET /api/v1/blockchain/ruleslista las reglas vigentes.
No es una lista de billeteras: una cuenta normal no necesita registrarse para tener o enviar ZBC.