- OroyFinanzas.com - https://www.oroyfinanzas.com -

Tipos de forks o bifucaciones de Bitcoin (hard fork vs. soft fork)

(OroyFinanzas.com) – El término fork o bifurcación en Bitcoin se utiliza para referirse a conceptos diferentes. Por ello, en el siguiente artículo trataremos de explicar el concepto genérico de fork o bifurcación, y las diferentes situaciones en las que encontramos este término en Bitcoin, que está teniendo un especial protagonismo en la actualidad con el debate sobre el tamaño de los bloques [1].

1. Fork o bifurcación como clon de código fuente de Bitcoin

Un fork o bifurcación es un término que se utiliza a menudo en el desarrollo de software y que significa clonar un código fuente. En Bitcoin, un fork o bifurcación puede significar, por lo tanto, un proyecto que clona el código fuente de Bitcoin, para tomarlo como base e introducir en él los cambios que crea conveniente.

En este sentido, como el código fuente de Bitcoin es de código abierto [2], y está disponible para que cualquiera pueda descargarlo, e insertar sus propios cambios, se utiliza el término fork o bifurcación para referirnos a este proceso. Normalmente, el uso más común de estos fork o bifurcaciones derivan en la creación de una nueva criptomoneda. Las nuevas criptomonedas [3] que se crean por un fork o bifurcación son las altcoins [4].

2. Fork o bifurcación como actualización del código de Bitcoin

También suele encontrarse este término con frecuencia cuando se habla de una actualización del código fuente de Bitcoin a través del cual se produce una bifurcación de la cadena de bloques (blockchain) [5] y se crean dos cadenas de bloques diferentes. Estos forks pueden darse por error o intencionadamente, y dependiendo de ello, hablamos de un fork accidental, o cuando se introducen intencionadamente al implementar cambios en el código que no son totalmente compatibles con las versiones de software anteriores podemos distinguir entre el término hard fork (bifurcación dura) o el término soft fork (bifurcación blanda). Veamos las diferencias entre los tres:

– Fork o bifurcación accidental

Estos fork o bifurcaciones pueden ocurrir, como su propio nombre indica, de manera accidental (fork o bifurcación accidental) cuando los desarrolladores principales de Bitcoin [6] cometen un error en la actualización de código de la criptomoneda. Si dicha actualización no es compatible con el código anterior, la cadena de bloques se bifurca, lo que crea dos cadenas de bloques diferentes, una basada en el código original y una con la versión más reciente.

Bitcoin sólo puede tener una cadena de bloques, cuando se bifurca, una es elegida como correcta, mientras que las otra son rechazadas. Pero hasta que eso ocurre, y los desarrolladores son capaces de solucionar los problemas, algunos de las transacciones de los usuarios han podido acabar registradas en la cadena de bloques equivocada, lo que puede conllevar la pérdida de esas monedas.

La red Bitcoin sufrió en 2013 un fork accidental, cuando un minero que usaba la versión 0.8.0 del Bitcoin Core [7] creó un bloque grande que era incompatible con las versiones anteriores de Bitcoin Core y que derivó en un fork o bifurcación de la cadena de bloques en la que los mineros, comerciantes y usuarios que ejecutaban la nueva versión del código aceptaban ese bloque como válido y, por lo tanto, esa bifurcación de la cadena de bloques; mientras que los mineros, comerciantes y usuarios que ejecutaban versiones anteriores rechazaron ese bloque y, por lo tanto, esa cadena de bloques. El problema se resolvió en un primer momento pidiendo a los grandes pools de minería que habían cambiado de versión del código, que volvieran a la versión anterior y unos días más tarde, se publicó una nueva versión del código (0.8.1) que resolvía este problema. A pesar de la alarma que generó en el ecosistema Bitcoin este fork, no derivó en la pérdida de bitcoins por parte de nadie.

– Hard fork o bifurcación dura / Soft fork o bifurcación blanda

En este caso el término fork (ya sea hard fork o soft fork) se refiere a cuando se introduce conscientemente cambios o implementaciones en el código Bitcoin. Es decir, se trata de una bifurcación intencionada por diseño. Ocurre cuando los desarrolladores incluyen en la nueva versión del código algún cambio que no es totalmente compatible con las versiones anteriores del código y, por tanto, provoca una bifurcación de la cadena de bloques [8] planificada .

Sin embargo, un hard fork y un soft fork se diferencian entre sí por el nivel de compatibilidad que tienen con las versiones anteriores del software. Precisamente porque un hard fork no es compatible con las versiones anteriores, mientras que un soft fork sí lo es, el nivel de la actualización a la nueva versión de software necesaria de los participantes de la red (sean estos mineros, carteras…) es diferente. Expliquemos ambos términos más en profundidad:

– Un soft fork introduce cambios en el software de Bitcoin, de tal manera que el software actualizado es compatible con las otras versiones de software más antiguas, por lo que ambas versiones pueden coexistir en la misma red Bitcoin. Un soft fork permite introducir nuevas funcionalidades sin disrupciones porque los usuarios sólo tienen que actualizar su software Bitcoin para beneficiarse de las nuevas funciones y los que no quieran actulizar su software pueden seguir con la versión anterior. Un soft fork es, por tanto, un cambio en las reglas de consenso en el cual bloques que habrían sido válidos bajo las reglas viejas podrán ser inválidos bajo las nuevas reglas, pero todos los bloques inválidos o que habrían sido invalidos bajo las reglas viejas siguen siendo inválidos bajo las nuevas reglas. Además, para que un soft fork se active se requiere únicamente que una mayoría de mineros actualicen su software de Bitcoin Core [7], aunque es deseable que todos los nodos [9] instalen el nuevo software para que las reglas de consenso sean las mismas.

– Un hard fork introduce cambios en el software, de tal manera que el software actualizado no es compatible con otras versiones de software. Por lo tanto, un hard fork es un cambio en las reglas de consenso en el cual bloques inválidos bajo las reglas viejas podrían ser válidos bajo las nuevas reglas. Ya que un hard fork imposibilita la coexistencia de diferentes versiones, requiere que todos los participantes (mineros [10] y carteras [11]) actualicen el software llegada la fecha marcada para la migración. El hecho de que no todos los participantes actualicen su software llevaría a una bifurcación (fork) de la cadena de bloques (blockchain) [8] de Bitcoin con el consiguiente riesgo de doble gasto [12] de bitcoins que eso supone.

En la historia de Bitcoin ha habido un hard fork, en agosto de 2010, cuando aún Satoshi Nakamoto [13] estaba al frente del desarrollo de Bitcoin. Los soft forks se han utilizado más frecuentemente.

El debate del tamaño de los bloques Bitcoin divide a los desarrolladores principales de Bitcoin Core entre defensores de los hard forks o de los soft forks

Actualmente el debate sobre el aumento del tamaño de los bloques (que es de 1MB) y las diferentes propuestas que hay sobre la mesa, han dividido a los desarrolladores principales de Bitcoin Core en dos grupos: Los que apoyan un hard fork para introducir este cambio, contra los que defienden la introducción de cambios a través de soft forks.

Las propuestas para ampliar el tamaño de bloques presentadas por Gavin Andresen a los largo de los últimos meses (BIP 101, Bitcoin XT, Bitcoin Classic) todas ellas comparten la modificación del código a través de un hard fork. También el desarrollador Jeff Garzik está en este grupo. Actualmente la propuesta en la que trabajan ambos es Bitcoin Classic que propone un hard fork que aumente el tamaño de los bloques de 1MB a 2MB. Se estima que estará listo para finales de enero 2016.

Por su parte, el resto de los desarrolladores principales del Bitcoin Core, apuestan por la introducción de cambios a través de soft forks. La propuesta principal en la que trabajan actualmente es Testigos Segregados(Segregated Witness) [14]. Una implementación que propone la reducción de la información de la firma de las transacciones [14] y de esta manera se amplía el número de transacciones que los bloques de 1 MB podrían incluir. Se estima que su código estaría listo en abril 2016.

3. Fork o bifurcación de la cadena de bloques

Debido a que la cadena de bloques (blockchain) de Bitcoin es una estructura de datos descentralizada, las diferentes copias de la misma en todos los nodos [9] no siempre son consistentes. Los bloques pueden llegar a algunos nodos en diferentes momentos, haciendo que éstos tengan versiones distintas temporales. Esto provoca una bifurcación de la cadena de bloques o blockchain forks [8], que consisten en la ramificación de dos cadenas de bloques. Sin embargo, esto es algo eventual y que, por como está diseñado el protocolo Bitcoin [15], la re-convergencia de la cadena de bloques se produce de forma automática cuando se añaden más bloques. En un próximo artículo explicaremos cómo y cuándo se producen estos tipos de forks más detalladamente.

EPL

© OroyFinanzas.com