Wiki de ZooBC
Seguridad y arquitectura

Las reglas de los dos tercios

La mayor parte de lo que ocurre en ZooBC no necesita ninguna votación: un productor sorteado firma cada bloque, y cada nodo lo comprueba. Pero algunas decisiones hablan en nombre de todo el registro: un punto de control que hace definitivo el historial, monedas acuñadas por un depósito en otra cadena, el veto a una versión defectuosa. Para estas, ZooBC usa un único listón: dos tercios de las plazas registradas. Con 11 plazas, son 8.

Dónde se aplican los dos tercios

DecisiónQué hace falta
guardar un bloque de la spinecofirmas del 67 % de toda la lista de firmantes, redondeando hacia arriba (8 de 11); más de la mitad (6 de 11) solo tras 3 periodos de la spine sin ningún bloque de la spine; nunca menos de 5
abonar un depósito del puente, liberar un retiro del puenteatestaciones de dos tercios del registro, cada una firmada con una clave de nodo
una acuñación del puente por encima del tope diariotodas las plazas que no están suspendidas
resolver un hecho de oráculo que activa pagosdos tercios del registro activo atestiguando el mismo valor
vetar una versióndos tercios de las plazas registradas atestiguando un veto
sustituir a la autoridad de versionesel mismo quórum de dos tercios, contado solo cuando su voto más antiguo tiene una semana
activar un paquete de reglas nuevasal menos dos tercios de los productores registrados habiendo producido recientemente un bloque con la nueva versión

Con más detalle:

  • Bloques de la spine. El listón es max(spine_min_signatures, ceil(n × 67 / 100)), donde n es el número de plazas de la lista de firmantes de la spine: el 67 % de la lista, redondeando hacia arriba. Cada firmante comprueba el contenido del bloque con su propia cadena antes de firmar. Véase cadena spine.
  • El puente. Sus reglas forman parte del nodo a partir de la versión 0.5.8. Unos programas guardianes que funcionan junto a los nodos vigilan las direcciones de custodia en la otra cadena y votan con atestaciones sin comisión. Un depósito se acuña, uno por uno y sin comisión de puente, cuando dos tercios de las plazas contadas, los nodos registrados que no están suspendidos, atestiguan el mismo token, importe y destinatario. Si las acuñaciones de un día de una moneda superaran la mayor de estas cantidades, una moneda entera o el 10 % de su suministro, deben estar de acuerdo todas las plazas no suspendidas. Las cadenas se relanzan con la versión 0.5.8 sin poner en marcha el servicio del puente. Véase puente y las monedas envueltas.
  • Hechos de oráculo. Los nodos registrados atestiguan eventos; cuando dos tercios del registro activo atestiguan el mismo valor, el evento se resuelve y paga todos los disparadores pendientes que lo nombran. Véase disparadores y atestaciones.
  • Versiones. Un veto atestiguado por dos tercios de las plazas revoca una versión exactamente como lo haría la propia revocación de la autoridad de versiones. Un voto que nombra una nueva autoridad de versiones solo cuenta cuando su voto más antiguo tiene una semana (40 320 bloques), de modo que el titular actual lo ve venir. Véase versiones y actualizaciones.
  • El umbral de preparación. Un paquete de nuevas reglas de consenso solo se activa cuando al menos ceil(2 × R / 3) productores registrados distintos han producido un bloque con la nueva versión dentro de una ventana reciente de max(720, 5 × n) bloques, y no antes de que la versión lleve un día registrada. Aquí R es el número de plazas registradas que no están suspendidas, y n el número de nodos registrados.
Una tabla de decisiones: el bloque de la spine (las plazas suspendidas siguen contando), el depósito o retiro del puente, el veto a una versión y el hecho de oráculo necesitan dos tercios; un bloque normal y un precio votable, no.
Una tabla de decisiones: el bloque de la spine (las plazas suspendidas siguen contando), el depósito o retiro del puente, el veto a una versión y el hecho de oráculo necesitan dos tercios; un bloque normal y un precio votable, no.

Cómo cuentan las plazas suspendidas

A partir de la versión 0.5.8, las plazas suspendidas (véase turnos perdidos, suspensión y expulsión) salen de todos los recuentos de dos tercios: ni votan ni cuentan en el total. La spine es la única excepción deliberada. Sigue contando todas las plazas de su lista de firmantes, estén suspendidas o no, para que un punto de control de la spine hable siempre en nombre de dos tercios de todas las plazas.

El mínimo del registro

Las decisiones de todo el registro tienen además un mínimo: ninguna atestación de todo el registro se resuelve mientras el registro tenga menos de max(3, min_registry_size) plazas o cuentas de propietario distintas: 7 en mainnet. Dos plazas de un mismo operador son una sola voz en el recuento de propietarios.

Lo que no necesita dos tercios

  • Un bloque normal. Lo firma un productor, sorteado mediante la semilla, y cada nodo lo comprueba (véase sorteo).
  • Los precios votables, como el alquiler de cuenta o la comisión de transferencia. Una vez por ciclo, cada precio pasa al promedio de los votos de las plazas contadas, con cada voto limitado antes a como máximo un 20 % al alza o a la mitad a la baja (véase votos de precio).

Algunas comprobaciones que un nodo hace por su cuenta también usan un listón de dos tercios, o cercano a él, pero son política local, no consenso: un nodo rezagado sigue la punta que indican dos tercios de una muestra de pares registrados; la ronda ampliada de la comprobación de instantáneas necesita dos tercios de los pares que responden (véase instantáneas y sincronización rápida); y el sondeo de bifurcaciones de un nodo necesita al menos 0.66 de los pares que votan, algo menos de dos tercios.

La otra cara de los dos tercios

Un listón de dos tercios significa que algo más de un tercio de las plazas, actuando juntas o simplemente sin votar, puede frenar una decisión. En la spine esto se suaviza con el paso a más de la mitad tras tres periodos inactivos. El umbral de preparación no tiene fecha límite: algo más de un tercio de las plazas puede frenar una actualización.

Véase también