Introducción a los Hard Forks y Soft Forks
Introducción a los Hard Forks y Soft Forks
InicioArtículos

Introducción a los Hard Forks y Soft Forks

Intermedio
Published Nov 29, 2018Updated Jun 14, 2021
8m


Contenido


Introducción

Cuando se te solicita que actualices tu app de banca digital en el teléfono móvil, probablemente no te lo pensarás dos veces. Quizás, tu teléfono incluso se autoactualice sin que te des cuenta. Después de todo, se trata de un proceso necesario –si no instalas la última versión del software, corres el riesgo de que se te deniegue el acceso a sus servicios.

En las criptomonedas de código abierto, las cosas son muy distintas. No es necesario leer cada línea del código que sustenta a Bitcoin para poder usarlo, pero tener la opción de hacerlo es importante. Como ves, eso significa que no hay una jerarquía, no hay un banco que sencillamente impulse las actualizaciones y cambie las cosas según le plazca. Como resultado, implementar nuevas funciones en las redes blockchain puede ser un reto.
En este artículo, exploraremos cómo pueden actualizarse las redes de las criptomonedas, a pesar de la falta de una autoridad central. Para ello, éstas utilizan dos mecanismos distintos: hard forks y soft forks


¿Quién toma las decisiones en una red blockchain?

Para comprender cómo funcionan los forks, es importante entender primero quiénes son los participantes involucrados en el proceso de toma de decisiones (o gobernanza) de la red.
Uno puede, en líneas generales, distinguir entre tres subconjuntos de participantes en Bitcoin –desarrolladores, mineros y usuarios de nodos completos (full nodes). Estas son las partes que realmente contribuyen a la red. Los light nodes (es decir, los monederos de teléfonos, ordenadores portátiles, etc.) se utilizan de manera generalizada, pero en lo que respecta a la red, no son realmente “participantes”.


Desarrolladores

Los desarrolladores son los responsables de crear y actualizar el código. En una moneda típica, cualquiera puede contribuir a este proceso. El código está disponible de manera pública, por lo que se podrán enviar modificaciones para que otros desarrolladores las revisen.


Mineros

Los mineros son los encargados de proteger la red. Éstos ejecutan el código de la criptomoneda y dedican recursos a añadir nuevos bloques a la blockchain. En la red Bitcoin, por ejemplo, lo hacen a través de Proof of Work. Los mineros son premiados por sus esfuerzos mediante una recompensa de bloque (block reward).


Usuarios de nodos completos (full nodes)

Los nodos completos (full nodes) son la espina dorsal de la red de una criptomoneda. Se encargan de validar, enviar y recibir bloques y transacciones, así como de mantener una copia de la blockchain.


A menudo te encontrarás con que estas categorías se solapan. Uno podría, por ejemplo, ser un desarrollador y un usuario de un nodo completo, o un minero y un usuario de un nodo completo. Podrías incluso ser las tres cosas o ninguna. De hecho, muchos de los individuos que consideramos usuarios de criptomonedas no asumen ninguno de esos roles. En su lugar, optan por utilizar "light nodes" o servicios centralizados.

Partiendo de las descripciones de arriba, uno podría argumentar que son los desarrolladores y mineros los que toman las decisiones de la red. Los desarrolladores crean el código –sin ellos, no dispondrías del software que se ejecuta, y nadie se encargaría de corregir los fallos del código o añadir nuevas funcionalidades. Los mineros protegen la red –sin una sana competencia minera, la cadena podría ser secuestrada, o detenerse por completo.
Sin embargo, si estas dos categorías intentaran forzar al resto de la red a seguir sus deseos, la cosa no terminaría muy bien. Para muchos, el verdadero poder lo concentran los nodos completos. Esto es en gran medida un reflejo de que la red es de tipo opt-in (de adhesión), lo que significa que los usuarios pueden escoger qué software ejecutarán. 
Los desarrolladores no asaltarán tu casa y te amenazarán a punta de pistola para que descargues los binarios de Bitcoin Core. Si los mineros adoptan una actitud del tipo “o se hace a mi manera, o os váis a la calle” para forzar en los usuarios un cambio no deseado, los usuarios simplemente optarán por "la calle". 
Estos actores no son caciques todopoderosos –son proveedores de servicios. Si la gente decide no utilizar la red, entonces la moneda perderá valor. La pérdida de valor impacta de manera directa en los mineros (sus recompensas valdrán menos en dólares). En cuanto a los desarrolladores, éstos podrán ser simplemente ignorados por los usuarios.
Así que como ves, no es como si el software está registrado. Uno puede realizar todos los cambios que desee, y si otros ejecutan el software que has modificado, todos podréis comunicaros. En este caso, habrás realizado un fork del software y creado una nueva red en el proceso.


¿Qué es un fork?

El fork de un software se produce en el momento en que éste es copiado y modificado. El proyecto original perdura, pero es ahora independiente del nuevo -que toma una dirección distinta. Pongamos por caso que el equipo de tu página web favorita sobre criptomonedas se ve enfrentado a un importante desacuerdo sobre cómo proceder. Una parte del equipo podría replicar la web en un dominio distinto. Pero de ahí en adelante, publicará contenidos distintos de la original.

Los proyectos han construido una base común y comparten una historia. Pero igual que ocurre con una carretera única que se bifurca, existe ahora una divergencia permanente en sus caminos.

Ten en cuenta que este tipo de cosas pasan a menudo en proyectos de código abierto, y han ocurrido desde mucho antes de la aparición de Bitcoin o Ethereum. Sin embargo, la distinción entre "hard forks" y "soft forks" is prácticamente exclusiva del ámbito del blockchain. Procedamos, pues, a analizar ambos un poco más.



Hard forks vs. soft forks

A pesar de tener nombres similares y, en última instancia, cumplir el mismo propósito, los hard forks y soft forks difieren significativamente. Echemos un vistazo a cada una.


¿Qué es un hard fork?

Los hard forks son actualizaciones de software incompatibles con versiones anteriores. Por lo general, esto ocurre cuando los nodos agregan nuevas reglas de una manera que entra en conflicto con las reglas de los nodos antiguos. Los nuevos nodos solo pueden comunicarse con otros que operan la nueva versión. Como resultado, la blockchain se divide, creando dos redes separadas: una con las viejas reglas y otra con las nuevas.


Los nodos se vuelven azules cuando se actualizan. Los nodos amarillos más antiguos los rechazan, mientras que los azules se conectan entre sí.


Entonces, ahora hay dos redes que se ejecutan en paralelo. Ambas continuarán propagando bloques y transacciones, pero ya no están trabajando en la misma blockchain. Todos los nodos tenían una blockchain idéntica hasta el punto del fork (y ese historial permanece), pero luego tendrán diferentes bloques y transacciones.



Debido a que existe ese historial compartido, terminarás con monedas en ambas redes si las holdeabas antes del fork. Supongamos que tienes 5 BTC cuando ocurrió un fork en el bloque 600,000. Podrías gastar esos 5 BTC en la cadena anterior en el bloque 600,001, pero no se han gastado en el nuevo bloque 600,001 de blockchain. Suponiendo que la criptografía no ha cambiado, tus claves privadas aún contienen cinco monedas en la red donde se hizo el fork. 
Un ejemplo de un hard fork fue el fork de 2017 que vio a Bitcoin fragmentado en dos cadenas separadas: la original, Bitcoin (BTC), y una nueva, Bitcoin Cash (BCH). El fork ocurrió después de muchas discusiones sobre el mejor enfoque para escalar. Los proponentes de Bitcoin Cash querían aumentar el tamaño del bloque, mientras que los proponentes de Bitcoin se opusieron al cambio.
Un aumento en el tamaño del bloque requiere la modificación de las reglas. Esto fue antes del soft fork SegWit (más sobre eso en breve), por lo que los nodos solo aceptarían bloques de menos de 1 MB. Si creaste un bloque de 2 MB que de otra manera sería válido, otros nodos lo rechazarían.

Solo los nodos que hayan cambiado su software para permitir bloques de más de 1 MB de tamaño podrían aceptar esos bloques. Por supuesto, eso los haría incompatibles con la versión anterior, por lo que solo los nodos con las mismas modificaciones de protocolo podrían comunicarse.


¿Qué es un Soft fork?

Un soft fork es una actualización compatible con versiones anteriores, lo que significa que los nodos actualizados aún pueden comunicarse con los no actualizados. Lo que normalmente se ve en un soft fork es la adición de una nueva regla que no entre en conflicto con las reglas anteriores.
Por ejemplo, se puede implementar una disminución del tamaño de bloque mediante un soft fork. Una vez más, recurramos a Bitcoin para ilustrar este punto: aunque hay un límite sobre cuán grande puede ser un bloque, no hay un límite sobre cuán pequeño puede ser. Si solo deseas aceptar bloques por debajo de un cierto tamaño, solo debes rechazar los más grandes.

Sin embargo, hacerlo no te desconectas automáticamente de la red. Todavía te comunicas con los nodos que no están implementando esas reglas, pero filtras parte de la información que te pasan.

Un buen ejemplo de la vida real de un soft fork fue el fork Segregated Witness (SegWit) antes mencionado, que ocurrió poco después de la división de Bitcoin / Bitcoin Cash. SegWit fue una actualización que cambió el formato de bloques y transacciones, pero fue hábilmente diseñada. Los nodos antiguos aún podrían validar bloques y transacciones (el formato no rompió las reglas), pero simplemente no las entenderían. Algunos campos solo se pueden leer cuando los nodos cambian al software más nuevo, lo que les permite analizar datos adicionales.



Incluso dos años después de la activación de SegWit, no todos los nodos se han actualizado. Hay ventajas en hacerlo, pero no hay una urgencia real ya que no hay un cambio que rompa la red.


Hard fork vs. soft fork – ¿cuál es mejor?

Básicamente, los dos tipos de forks anteriores tienen diferentes propósitos. Los hard forks contenciosos pueden dividir una comunidad, pero los planificados permiten la libertad de modificar el software con todos de acuerdo.

Los soft forks son una opción más suave. En términos generales, está más limitado en lo que puede hacer, ya que sus nuevos cambios no pueden entrar en conflicto con las viejas reglas. Dicho esto, si tu actualización puede ser diseñada de tal manera que siga siendo compatible, no necesitas preocuparte por fragmentar la red.


Conclusión

Los hard forks y soft forks son cruciales para el éxito a largo plazo de las redes blockchain. Nos permiten realizar cambios y actualizaciones en los sistemas descentralizados, a pesar de la falta de una autoridad central.

Los forks hacen posible que las blockchains y las criptomonedas integren nuevas características a medida que se desarrollan. Sin estos mecanismos, necesitaríamos un sistema centralizado con control de arriba hacia abajo. De lo contrario, estaríamos atascados con las mismas reglas exactas durante la vigencia del protocolo.