Soft Fork

Una actualización compatible con versiones anteriores del software

Diagrama que muestra un soft fork en la blockchain.

Un soft fork es cuando se realiza una actualización en el software de Bitcoin que es compatible con versiones anteriores.

Para resumir la diferencia entre un soft fork y un hard fork:

Con un soft fork, los nodos que no actualizan su software todavía pueden aceptar bloques/transacciones creados por el software actualizado. Por lo tanto, los nodos que no actualizan pueden mantenerse al día con la blockchain y no se quedan atrás.

Diagrama que muestra un soft fork en la red bitcoin, con nodos antiguos recibiendo los nuevos bloques de los nodos actualizados.

Para que un cambio vía soft fork tenga éxito, solo necesitas una mayoría de los mineros actualizando. Porque, si la mayoría de los mineros actualiza, el poder de minería de ellos construye la cadena más larga de bloques actualizados (que los nodos antiguos adoptarán).

Escenario

¿Cómo se crea un soft fork?

Para crear un soft fork, necesitas restringir las reglas sobre lo que se considera un bloque o transacción válida. En otras palabras, necesitas volver inválidos bloques/transacciones antes válidos.

Por ejemplo, digamos que el límite de tamaño del bloque es 1 MB. Un cambio vía soft fork sería crear una nueva regla que restringe el tamaño del bloque a 0,5 MB. Cuando los mineros actualizados empiezan a minar esos bloques más pequeños, los nodos antiguos todavía los ven como válidos, así que no hay una ramificación de la blockchain como ocurriría en un hard fork.

Método

¿Cómo hacer que un soft fork tenga éxito?

Para que un soft fork tenga éxito, quieres una mayoría de mineros actualizando. Como los nodos siempre aceptan la cadena más larga, si la mayoría de los mineros está minando los bloques actualizados con las reglas restringidas, los nodos antiguos naturalmente lo adoptan como su blockchain.

Riesgos

¿Cuáles son los riesgos de un soft fork?

El principal riesgo es si no consigues que la mayoría de los mineros actualice. Eso provocaría que la blockchain se dividiera en dos. Sin embargo, a diferencia de un hard fork (donde las cadenas nunca convergen), esa división puede resolverse poniendo más poder de minería en la nueva cadena. Si los mineros actualizados consiguen construir la cadena más larga, los nodos antiguos hacen una reorganización de la cadena para adoptar la blockchain hecha con los nuevos bloques.

Compromisos

¿Cuál es la desventaja de un soft fork?

La mayor desventaja es que los soft forks tienden a hacer que el software sea más complejo (el Segregated Witness es un gran ejemplo). Como necesitas mantener los cambios compatibles con el software antiguo, tienes que hacer más rodeos técnicos.

Ejemplos

¿Ha habido soft forks en bitcoin?

Todas las grandes actualizaciones de Bitcoin hasta ahora se han desplegado como soft forks. Algunos ejemplos, con las nuevas restricciones que introdujeron:

1. BIP 16: Pay to Script Hash (03/01/2012)

Agregó reglas de validación a un patrón específico de ScriptPubKey (ver P2SH), permitiendo bloquear bitcoins a un script personalizado mediante su hash.

2. BIP 30: Transacciones duplicadas (22/02/2012)

Prohibió que un bloque contenga una transacción con un TXID igual al de una transacción anterior aún no totalmente gastada en la misma cadena.

3. BIP 34: Bloque v2, Altura en la Coinbase (06/07/2012)

Exigió que la transacción coinbase contenga la altura del bloque como primer campo del ScriptSig, garantizando que cada coinbase tenga un TXID único.

4. BIP 65: OP_CHECKLOCKTIMEVERIFY (01/10/2014)

Reutilizó el opcode OP_NOP2 como OP_CHECKLOCKTIMEVERIFY, permitiendo hacer que una salida no sea gastable hasta una fecha futura.

5. BIP 66: Firmas DER estrictas (10/01/2015)

Restringió las firmas a seguir un único formato de codificación, eliminando la dependencia de OpenSSL.

6. BIP 141: Segregated Witness (21/12/2015)

Introdujo nuevos patrones de ScriptPubKey (P2WPKH, P2WSH) y una nueva estructura de transacción, donde las firmas quedan al final (en el área de testigo) y no entran en la creación del TXID. También permitió un aumento del tamaño del bloque.

7. BIP 341: Taproot (19/01/2020)

Introdujo un nuevo patrón de ScriptPubKey (P2TR) que permite un mecanismo de bloqueo que revela solo una condición de gasto (y no todas las demás), mejorando la privacidad.

Despliegue

¿Cómo se implementan los soft forks?

El objetivo es lograr que una mayoría de mineros esté de acuerdo con la actualización. Entonces, antes de que el cambio se active, se pide a los mineros que señalen su preparación estableciendo un bit específico en el campo version del encabezado del bloque. Por ejemplo:

00100000 00000000 00000000 00000001 = Bit 0 = CHECKSEQUENCEVERIFY
00100000 00000000 00000000 00000010 = Bit 1 = Segregated Witness (BIP 141)
00100000 00000000 00000000 00000100 = Bit 2 = Taproot (BIP 341)

Cuando el 90-95% de los mineros señalan acuerdo con la actualización dentro de un período de ajuste de dificultad, el soft fork queda "bloqueado" (locked in), y en una altura de bloque específica los mineros empiezan a minar los nuevos bloques.

  • Los 3 primeros bits de la versión deben ser 001 para señalar preparación para soft forks.
  • Los soft forks anteriores (por ejemplo, BIP 16) se desplegaron antes de este sistema de señalización.
  • Los soft forks generalmente requieren que el 95% de los mineros señalen, pero para Taproot eso se cambió a solo 90%.

Resumen

Un soft fork es una actualización del software de Bitcoin que es compatible con versiones anteriores. Mantiene esa compatibilidad restringiendo las reglas sobre bloques/transacciones válidos, en lugar de relajarlas como en un hard fork.

La principal ventaja es que todos los nodos pueden mantenerse al día incluso sin actualizar. La clave del éxito es lograr que una mayoría de mineros actualice. Todas las actualizaciones de Bitcoin hasta ahora se han hecho mediante soft forks.

Recursos