BIP34, BIP66 y BIP65 deberían haberse aplicado en alturas de bloque únicas. ¿Por qué diferentes fuentes reclaman diferentes alturas de bloque para la aplicación?

Consenso/Activación inconsistente de los BIP

BIP34

Altura de bloque activado 227,835 ( Referencia BitMEX )

Altura del bloque activado 227,930 ( referencia de desarrollador de Bitcoin )

Altura del bloque activado 227,931 ( referencia de Github )

BIP66

Altura del bloque activado 363,724 ( pregunta anterior )

Altura del bloque activado 363,725 ( referencia de Github )

Altura de bloque activado 363,731 ( Referencia BitMEX )

BIP65

Altura de bloque activado 388,380 ( Referencia BitMEX )

Altura de bloque activado 388,381 ( referencia de Github )

Documentación confusa

BIP34 dice que se activa cuando 950 de 1000 bloques señalan la Versión 2. No está claro si esto incluye el bloque actual o se refiere a bloques anteriores.

BIP66 dice que se activa cuando 950 de los 1000 bloques anteriores señalan para la Versión 3. Sin embargo, las notas del cliente dicen 951 de los 1001 bloques anteriores. Entonces BIP66 dice que se activa usando el protocolo de BIP34. Ahora tenemos tres métodos posibles. No coinciden.

¿Algún consejo sobre lo que está pasando aquí?

Respuestas (1)

Comenzaré explicando la documentación confusa.

BIP34 dice que se activa cuando 950 de 1000 bloques señalan la Versión 2. No está claro si esto incluye el bloque actual o se refiere a bloques anteriores.

Hace referencia a bloques anteriores. Para determinar si las reglas están activas para el bloque en altura n, comprobamos si 950 de los bloques de n-1001a n-1señalizan la versión 2 o superior.

BIP66 dice que se activa cuando 950 de los 1000 bloques anteriores señalan para la Versión 3. Sin embargo, las notas del cliente dicen 951 de los 1001 bloques anteriores. Entonces BIP66 dice que se activa usando el protocolo de BIP34. Ahora tenemos tres métodos posibles. No coinciden.

Solo hay dos métodos posibles, y en realidad son lo mismo. 950 del bloque anterior de 1000 es lo mismo que el método BIP 34. Y esto es en realidad lo mismo que el 951 del 1001 anterior si considera una perspectiva ligeramente diferente. De cualquier manera, BIP 66 usa el mismo mecanismo que BIP 34. Específicamente, usan una función llamada IsSuperMajority para determinar si están activos. Así que ambos usan el mismo mecanismo. El problema es cómo describimos este mecanismo.

La redacción "950 de los 1000 bloques anteriores" que se usa en los BIP es la que describí anteriormente. Está determinando si las reglas se hacen cumplir para el bloque nmirando los 1000 bloques que lo preceden. Así que aquí nno está incluido en el conteo ni en la secuencia.

La redacción "951/1001" incluye bloque n. Mira los bloques de n-1001a bloque n(inclusive) y verifica si 951 de esos bloques tienen el número de versión correcto. Estas dos redacciones son idénticas porque la 1001 incluye el bloque de activación mientras que la 1000 no.

Una forma de pensar en el 950/1000 es: después de ver una secuencia de 1000 bloques donde 950 bloques señalan la nueva versión, el próximo bloque que se extraerá debe seguir las nuevas reglas. Las nuevas reglas están a punto de comenzar a aplicarse.

Una forma de pensar en el 951/1001 es: después de ver una secuencia de 1001 bloques donde 951 bloques señalan la nueva versión, el bloque 1001 en esa secuencia ya aplicó las nuevas reglas y la aplicación ya comenzó.

Básicamente, los humanos apestamos describiendo cosas con palabras. Todo es mucho más claro cuando miras el código.


Ahora a las discrepancias. Escribí una secuencia de comandos de python que realiza la verificación IsSuperMajority para verificar estos números.

PBI 34

No estoy seguro de dónde obtuvo BitMex su altura de bloque. Verificar esa altura, y las anteriores y posteriores no dan como resultado la activación. Así que creo que esto es simplemente incorrecto.

Ahora, para 277930 vs 277931, este es un problema de interpretación. Como mencioné anteriormente con el 950/100 frente al 951/1001, esto depende de la inclusión y la perspectiva. En la altura 277930, se encontró una secuencia de 1000 bloques donde 950 tenían la versión de bloque 2. Esto significa que en la altura 277930, las reglas no se aplicaron para ese bloque, pero se aplicarían para el siguiente, es decir, 277931. Bitcoin Core usa 277931 porque ese es el primer bloque para el que se aplican las reglas BIP 34, por lo que ese es el valor que está en el código fuente.

PBI 66

La discrepancia 363724 vs 363725 es lo mismo que 277930 vs 277931 en BIP 34.

El número de BitMex es un poco más confuso. La única forma en que esto tiene sentido es si están mirando la activación ligeramente difícil que tuvo BIP 66. Debido a la minería espía de los mineros, hubo una bifurcación de cadena involuntaria cuando se activó BIP 66. El bloque 363725 fue el primer bloque donde se aplicarían las nuevas reglas. Sin embargo, un minero que no se había actualizado encontró un bloque 363725. Debido a que no se actualizó, este bloque no era válido según las nuevas reglas y la mayoría de la red lo rechazó. Pero muchos mineros no validaron completamente ese bloque y extrajeron encima de él. Esto resultó ser una parte significativa del hashrate y terminaron produciendo una bifurcación de 6 bloques de longitud antes de que la cadena principal válida los alcanzara y los alcanzara. Esto sucedió con el bloque 363731. Entonces se podría decir que fue cuando se activó BIP 66.

Pero ese no es el final de esa historia. Al día siguiente, hubo una bifurcación de 3 bloques debido al mismo problema. Entonces también se podría decir que BIP 66 se activó un día después.

De cualquier manera, BIP 66 comenzó a aplicarse con el bloque 363725 como el primer bloque bajo las nuevas reglas.

PBI 65

La discrepancia 388380 vs 388381 es lo mismo que 277930 vs 277931 en BIP 34.

No sigo su argumento con respecto a la activación de BIP 66. Hubo dos puntas de cadena que se extinguieron debido a que no siguieron las reglas activadas. No son parte de la mejor cadena. ¿Cómo cambia eso de que las reglas se hicieron cumplir a partir del bloque 363,725?
Estaba más tratando de encontrar algo que tuviera sentido para su número, pero estoy de acuerdo en que no tiene tanto sentido.
Esa fue una excelente respuesta. Gracias. ¿Puedo citarte en mi estudio?