Dentro del desarrollo de software, los forks (bifurcaciones, en español) son el desarrollo de proyectos alternos que marchan en una dirección distinta al proyecto principal a partir del código ya existente. Esta práctica suele ser muy común en los proyectos de código abierto o software libre. En el caso de las redes blockchain, los forks son usados normalmente para crear nuevos proyectos a partir de uno anterior. Suele verse como la actualización del proyecto antiguo.
Las redes blockchain están regidas por reglas codificadas en un protocolo que le permite a los nodos validar bloques de transacciones de igual manera, logrando mantener un consenso. Son estas normas las que validan que tanto la estructura del bloque como las transacciones realizadas en el y el tamaño del bloque (total del espacio disponible)sean correctas.
Hay situaciones donde las reglas de consenso pueden cambiarse para añadir actualizaciones o aumentar la protección frente a ataques. También pueden ser modificadas con fines específicos, como la creación de una nueva criptomoneda. No importa cual sea la causa de la modificación, existen dos métodos para cambiar las normas: a través de los soft forks (bifurcaciones suaves) o los hard forks (bifurcaciones fuertes).
Soft fork
Tabla de contenidos
Una bifurcación suave modifica el protocolo a un punto en el que los nodos actualizados rechazan transacciones previamente válidas. Sin embargo, los nodos con software antiguo validan las transacciones del antiguo formato como uno nuevo. Esto facilita a los nodos actualizados la creación de una cadena de bloques más larga.
Este tipo de bifurcaciones suelen tener mayor dificultad en la implementación en código en comparación con las hard forks. Debe cuidarse la compatibilidad con versiones de software anteriores, lo cual agrega ciertas limitantes al momento de programar.
Hard Forks
Una bifurcación fuerte cambia el protocolo de modo que los nodos actualizados permiten las transacciones con el nuevo formato, con la diferencia que los nodos desactualizados los rechazan. Ante esta situación, la nueva estructura de las transacciones puede contener formatos previamente inválidos (por ejemplo, las normas anteriores permiten bloques de 1MB mientras que las nuevas de 1MB a 2MB). Por otra parte, los bloques también pueden cambiar el formato, llegando a ser incompatibles.
Actualización de forks
Bien sea un soft fork o un hard fork, los usuarios necesitan ser parte de la actualización de red. Esta puede realizarse a través de la descarga del nuevo software y la activación de los nodos actualizados o mediante la abstención de hacerlo, si es su decisión. No obstante, los soft forks no excluye a quienes no actualicen. Por otra parte, los hard forks si son excluyentes.
No importa el modo en que se desarrolle el cambio, es indispensable desarrollar aplicaciones que permitan el máximo provecho de la actualización. Un ejemplo preciso de este punto es Segregated Witness o Segwit (Testigo Segregado). Esta actualización se añadió por medio de un soft fork en la red Bitcoin, sin embargo, ha tardado algo de tiempo en ser implementada por las diferentes carteras y servicios. Como consecuencia, sus mejores no han podido llegar a todos los usuarios.
Cuando las bifurcaciones se implementan para actualizar la red en cuestión, es indispensable alcanzar el umbral de adopción de los nodos de la red. Esto debe ser acordado e implementado previamente en código por los desarrolladores. Ahora bien, si se busca desarrollar una nueva criptomoneda, el consenso no resulta un obstáculo. Los desarrolladores de la nueva blockchain especifican los nuevos lineamientos y un punto de partida en cuanto a la cadena bifurcada.
Consecuencias de los forks en las criptomonedas
En cuanto a las bifurcaciones fuertes, luego de activarse, se inicia una especie de juego de mercado que puede producir alguno de estos escenarios:
La nueva cadena o la vieja queda desolada. La cadena restante permanece activa, con nodos y mineros migrados a ella en su mayoría. Ante esta situación, puede que los mineros que hayan quedado en la cadena minoritaria o tarden un poco más de tiempo en migrar a la cadena más larga, pierdan dinero. Es una situación común cuando se da una actualización programada.
En este punto ambas cadenas logran seguir con vida. Además, el poder de procesamiento y el valor de cada criptoactivo se divide en base a lo que dictamine el mercado. Esta situación suele darse cuando el hard fork es contencioso o polémico. El mejor ejemplo de esto es la bifurcación de Ethereum y Ethereum Classic.
La cadena que inicia la bifurcación es completamente independiente de la cadena principal. Esto da como resultado el nacimiento de una nueva altcoin que no afecta en lo absoluto el poder de procesamiento o el valor de mercado de la cadena principal. Como ejemplo de ello podemos mencionar la bifurcación de Bcash (Bitcoin Cash) desde la blockchain Bitcoin.
En conclusión, los soft forks son difíciles de programar, minimizan las reglas de consenso y su aplicación no requiere la actualización de todos los nodos de la red. Sin embargo, es lo más recomendable. Por otra parte, los hard forks son mucho más fáciles de desarrollar en código. Solo basta con agregar o cambiar las reglas actuales de consenso. Además, su aplicación requiere una actualización obligatoria de los nodos o la exclusión de la red de no hacerlo, derivando en dos cadenas independientes.