¿En qué se diferencian BIP8 y BIP9, en qué se parecen?

Con Taproot en boca de todos, la gente ha comenzado a discutir enfoques de activación. El debate actualmente parece favorecer a BIP8. Las bifurcaciones blandas anteriores usaban BIP9. ¿Cómo se relacionan los dos y cuáles son las diferencias entre los dos?

Respuestas (1)

Cada una de las primeras bifurcaciones blandas tenía su propio método de activación incluido en la propuesta que se basaba en flagdays o señalización de versión de bloque . Este último solo permitió que se considerara una sola propuesta al mismo tiempo, ya que se basaba en incrementar la versión en bloque.

BIP9 propuso un estándar de activación que permitía considerar múltiples propuestas al mismo tiempo. Las bifurcaciones blandas que se activaron con BIP9 se coordinaron teniendo una gran mayoría de señales de hash power preparadas para la actualización (tradicionalmente, el 95 %). Los mineros tienen la tarea de evaluar la aceptación de la propuesta por parte de la red y señalar la preparación configurando bits específicos en el campo de versión de sus bloques. La señal de preparación de los mineros se mide durante el último período de dificultad en cada altura de reorientación. Por ejemplo, la bifurcación suave segwit y la CHECKSEQUENCEVERIFYbifurcación suave que activó BIP68, BIP112 y BIP113 usaron activación basada en BIP9.

BIP8 es una variante y el sucesor de BIP9. BIP8 utiliza alturas de bloque en lugar de marcas de tiempo para delimitar la ventana de señalización y ofrece la opción de fallar o bloquear la actualización al final de la ventana de señalización. Cuando lockinontimeout: trueestá configurado, los nodos que ejecutan el código de activación solo aceptan bloques que indican que están listos en el último período de dificultad antes del timeoutheight. Esto obliga a la actualización a bloquearse hasta el final de la ventana de señalización. Por el contrario, BIP9 siempre fallaba después de que transcurriera la ventana de señalización sin activación, por lo que BIP9 funcionó de manera equivalente a BIP8 con lockinontimeout: false.

Gráfico de transición de estado BIP8 a través de BIP8

Según BIP8, una propuesta se activaría a través de los siguientes pasos:

  1. El período de señalización comienza a start_heightlas cambiando de DEFINEDa STARTED. Se start_heightestablecería al menos un mes después del lanzamiento del código de activación. Tenga en cuenta que timeout_heightdebe ser el final de una época de dificultad.

  2. En cada reorientación de dificultad, cada nodo que ejecuta el código de activación verifica de forma independiente si se alcanzó el umbral de señalización en el período de dificultad concluido. Hay tres posibles transacciones de estado de STARTED:

    1. Si el umbral no se alcanza en timeout_height, la propuesta se establece en el FAILEDestado final al final del período de señalización.
    2. Si se alcanzó el umbral de señalización, la propuesta pasa al LOCKED_INestado.
    3. Si la propuesta fuerza la activación vía lockinontimeout: truey se alcanza la última época de dificultad del período de señalización con la propuesta en STARTEDestado, la propuesta pasa a MUST_SIGNAL. Esto hace que los nodos actualizados rechacen cualquier bloque que no indique que está listo.
  3. La propuesta permanece en LOCKED_INel estado durante un período de dificultad y luego pasa al ACTIVEestado final. Los nodos actualizados ahora aplican las reglas de bifurcación suave en la red.

Un umbral de activación del 90 % en BIP8 difiere del 95 % en BIP9. Creo que es más probable que BIP8 se active que BIP9 debido a este umbral. ¿Sabes por qué y de dónde vienen estos números de umbral?
@ogw_yuya: Se eligen como parámetros para un intento de activación, BIP8 o BIP9 podrían usar un umbral de 90% o 95%.