Wiki de ZooBC
Operar un nodo

El ritmo de admisión

ZooBC admite nodos nuevos en su registro de nodos de uno en uno, con un temporizador que va despacio a propósito. La parte de la producción de bloques de un operador es su proporción de las plazas, así que el ritmo al que se pueden ganar plazas es el ritmo al que cualquiera puede ganar poder sobre la cadena. El protocolo fija ese ritmo, y cualquiera puede observarlo.

Por qué despacio

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 esa parte tiene que ser admitida, un nodo por ciclo de admisión, al ritmo que fija el protocolo. Por tanto, una toma de control repentina, por ejemplo para revertir un pago, es imposible por principio, no solo cara (de qué protege Proof of Participation).

La lentitud no tiene nada que ver con la velocidad de la cadena. Un nodo nuevo puede arrancar desde una instantánea reciente en lugar de todo el historial, nadie entrevista a los operadores, y la cadena produce un bloque cada 15 segundos tenga los nodos que tenga.

La fórmula

El retraso entre dos admisiones es:

delay = clamp(base ÷ counted seats, minimum, maximum)

En mainnet la base es de 600 días, el mínimo de 7 días y el máximo de 90 días. Testnet usa los mismos valores. El primer recién llegado puede ser admitido 7 días después del génesis. El temporizador lee las marcas de tiempo de los bloques y admite como máximo un nodo por ciclo, nunca en el bloque que lo puso en cola. Qué nodo admite lo decide la cola.

El retraso hasta la siguiente admisión se fija cuando se admite a un recién llegado, contando las plazas anteriores a ese recién llegado.

Qué plazas cuentan

  • Las plazas génesis cuentan como máximo como 11 (un valor del génesis, 11 en todas las cadenas).
  • Los recién llegados cuentan por completo.
  • Las plazas suspendidas no cuentan en ninguno de los dos grupos.

El límite impide que un génesis grande abra el registro deprisa. Sin él, una cadena lanzada con 100 plazas génesis calcularía 600 ÷ 100 = 6 días, elevados al mínimo de 7 días, y admitiría a un recién llegado cada semana desde el principio. Con el límite el recuento empieza en 11, y el calendario es el mismo que en una cadena de 11 plazas. Dejar fuera las plazas suspendidas significa que solo las plazas que trabajan marcan el ritmo.

100 plazas génesis apretadas en un embudo que cuenta como máximo 11, los recién llegados contados por completo y las plazas suspendidas sin contar, lo que da 600 ÷ 11 ≈ 54.5 días en ambas líneas de tiempo
100 plazas génesis apretadas en un embudo que cuenta como máximo 11, los recién llegados contados por completo y las plazas suspendidas sin contar, lo que da 600 ÷ 11 ≈ 54.5 días en ambas líneas de tiempo

El calendario

Si la cola nunca se vacía y nadie se va, los recién llegados entran así:

Recién llegadoEntra hacia
1.ºel día 7
2.ºel día 61.5
7.ºel día 278
11.ºel día 408

Eso da 9 recién llegados el primer año, 25 al final del segundo, 54 al tercero y unos 155 al quinto. A partir de 86 plazas contadas, 600 ÷ 86 queda por debajo de 7 días, así que manda el mínimo: las admisiones pasan a ser semanales desde aproximadamente el recién llegado número 77, unos 3.5 años después del génesis. Un aspirante que ganara absolutamente todas las admisiones tendría su 12.ª plaza, suficiente para superar en número a las 11 plazas génesis, solo hacia el día 437.

Recién llegados a lo largo de cinco años desde el génesis: 9 tras el primer año, 25 tras el segundo, 54 tras el tercero, unos 155 tras el quinto, y semanales desde aproximadamente los 3.5 años
Recién llegados a lo largo de cinco años desde el génesis: 9 tras el primer año, 25 tras el segundo, 54 tras el tercero, unos 155 tras el quinto, y semanales desde aproximadamente los 3.5 años

Mientras decide el término de la base, el registro crece una fracción fija por unidad de tiempo, porque cada admisión añade una plaza y el retraso es la base dividida entre las plazas. Por tanto, duplicar el registro lleva aproximadamente base × ln 2, unos 416 días en mainnet, sea cual sea su tamaño.

Casos especiales

  • Un registro pequeño. Mientras haya menos nodos activos que min_registry_size (7 en mainnet), el retraso máximo se limita a 7 días.
  • Tras una parada larga, el temporizador admite un nodo y después recupera su cadencia normal.
  • Devnet, la cadena de desarrollo, usa la misma fórmula con una base de 180 segundos, un mínimo de 60 segundos y un máximo de 300 segundos, así que sus admisiones llegan con minutos de diferencia.

Todas las entradas están en la cadena, así que cualquiera puede recalcular cuándo toca la siguiente admisión.

Véase también