¿Qué significa realmente "activación" en Bitcoin?

Durante los múltiples problemas con Bitcoin este año con bifurcaciones blandas y duras, y Segwit, he leído todo lo que he podido sobre cómo se "implementan" todos estos cambios, por ejemplo, BIP9, BIP91, BIP148, BIP's 141-146.

Sin embargo, todavía no tengo clara la terminología, como "bloqueo", "señalización", "activación", "implementación".

Entiendo que Segwit se implementó en v0.13.1 (y superior) de Bitcoin Core, que se lanzó el 27/10/2016.

Entonces, ¿todos los cambios de Segwit han estado en el software Bitcoin Core desde esa fecha?

Entonces, cuando ocurrió la "activación" de Segwit, ¿significó eso que una bandera dentro del cliente de Bitcoin, digamos " ACTIVATION_FLAG", se hizo realidad y luego la funcionalidad de Segwit comenzó a ejecutarse, porque está contenida dentro de un bloque "si"?

if (ACTIVATION_FLAG) {
    do Segwit stuff
}

Sin embargo, Segwit es una actualización compleja de Bitcoin, por lo que debe haber muchos lugares donde se realizan cambios en Bitcoin para Segwit, entonces, ¿cuántos bloques "si" hay?

¿Puede alguien darme algunos enlaces a dónde se encuentran estos bloques "si" en el código fuente de Bitcoin?

Respuestas (1)

Sin embargo, Segwit es una actualización compleja de Bitcoin, por lo que debe haber muchos lugares donde se realizan cambios en Bitcoin para Segwit, entonces, ¿cuántos bloques "si" hay?

Al momento de escribir, hay de 23 a 34 lugares donde el comportamiento cambia en función de si segwit está activo, dependiendo de cómo cuente. (por ejemplo, si pasa un valor booleano a una función, y esa función contiene un si, y el valor de retorno de la función se pasa a otro si, ¿son 1 o 2 declaraciones si?)

Si tiene una copia del repositorio, puede encontrarlos con los siguientes comandos:

  1. grep -RI "SEGWIT" * | grep THRESHOLD_ACTIVE
  2. grep -RI "fPreSegWit" *
  3. grep -RI "IsWitnessEnabled" *
  4. grep -RI "fWitnessEnabled" *
  5. grep -RI "witnessEnabled" *