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?
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 CHECKSEQUENCEVERIFY
bifurcació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: true
está 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
.
a través de BIP8
Según BIP8, una propuesta se activaría a través de los siguientes pasos:
El período de señalización comienza a start_height
las cambiando de DEFINED
a STARTED
. Se start_height
establecería al menos un mes después del lanzamiento del código de activación. Tenga en cuenta que timeout_height
debe ser el final de una época de dificultad.
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
:
timeout_height
, la propuesta se establece en el FAILED
estado final al final del período de señalización.LOCKED_IN
estado.lockinontimeout: true
y se alcanza la última época de dificultad del período de señalización con la propuesta en STARTED
estado, la propuesta pasa a MUST_SIGNAL
. Esto hace que los nodos actualizados rechacen cualquier bloque que no indique que está listo.La propuesta permanece en LOCKED_IN
el estado durante un período de dificultad y luego pasa al ACTIVE
estado final. Los nodos actualizados ahora aplican las reglas de bifurcación suave en la red.
ogw_yuya
muro