Bifurcaciones (o forks) en la cadena de bloques

Explicado de una forma sencilla, una bifurcación o fork ocurre cuando una blockchain se divide en dos potenciales cadenas. Estas divisiones se pueden producir por motivos de latencia y la ambigüedad de no saber qué bloque ha sido generado antes, o por cambios en las reglas del protocolo que deciden si una transacción o bloque es válido.

Vamos a explicar el primero de los motivos porque suele causar confusión y es algo que mucha gente desconoce. En redes blockchain como bitcoin, las bifurcaciones ocurren con bastante frecuencia. Debido a su mecanismo de consenso distribuido, los forks ocurren siempre que dos mineros encuentran una solución a la prueba de trabajo y proponen su bloque prácticamente al mismo tiempo. En este caso, y por motivos de latencia, unos nodos recibirán el bloque generado por uno de los mineros primero y otros recibirán primero el bloque del segundo minero. La ambigüedad es resuelta cuando se recibe un nuevo bloque de forma que se acepta como válida la cadena más larga o con más cantidad de trabajo acumulado. Es decir, si la primera de las ramas encuentra un bloque antes que la segunda rama, la primera será considerada como buena y la segunda se descartará. Si ambas cadenas descubrieran nuevos bloques de forma simultánea de nuevo, se mantendría las dos cadenas hasta que se resuelva la ambigüedad y una encuentre un bloque antes que la otra.

A continuación se muestra lo explicado anteriormente con un ejemplo, dónde nodos en Canadá (rojo) y Australia (verde) encuentran bloques diferentes que extienden la cadena común (azul).

fork 1

Cada nodo recibirá un bloque dependiendo de la proximidad (latencia) a los nodos que encontraron los bloques.

fork 2

Un nodo de la cadena con el bloque australiano encuentra un nuevo bloque que se propaga por la red. Se decidirá entonces que la cadena más larga y con mayor prueba de trabajo es la válida y la cadena con el bloque canadiense será descartada.

fork 3

 

Hay algoritmos de consenso en los que estos forks no ocurren y una vez que un bloque ha sido generado y añadido a la cadena, no se puede revertir. Es lo que se conoce como finality. Ethereum, que próximamente espera introducir el algoritmo de prueba de participación con Casper, pasaría a tener un algoritmo de consenso con finality frente al algoritmo de prueba de trabajo que utiliza actualmente.

Sin embargo, las bifurcaciones o forks también pueden ser producto de un cambio en las reglas del software. Cuando un bloque contiene transacciones invalidas, el bloque es ignorado por la red y el minero que había encontrado el bloque no recibiría su recompensa. Ésto es un incentivo para que los mineros validen solo bloques de acuerdo las reglas de la cadena más larga y con mayor prueba de trabajo.

¿Qué es un hard fork?

Un hard fork se produce cuando las nuevas reglas introducidas en el protocolo hacen que los bloques generados por los nodos con estas nuevas reglas no sean aceptados por nodos corriendo la antigua versión del software. Por ejemplo, si el máximo tamaño de bloque antiguo era de 1 Mb y el nuevo tamaño máximo es de 2 Mb, los nodos que esperan bloques con tamaño máximo de 1Mb rechazarán los bloques con mayor tamaño a no ser que decidan actualizar el software a la nueva versión.

Normalmente los hard fork son consecuencia de algún desacuerdo entre los miembros de la comunidad y que deciden seguir caminos separados.

Ejemplos de hard forks son los que producieron la división Ethereum/Ethereum Classic o Bitcoin/Bitcoin Cash.

¿Qué es un soft fork?

Un soft fork también implica cambio de reglas pero de forma que las nuevas reglas son más restrictivas y por lo tanto los bloques generados el nuevo software además cumplen las reglas antiguas. Así, por ejemplo, imagina que pasamos de bloques de 2Mb a bloques de 1Mb. Los nuevos bloques de 1Mb serían aceptados por nodos que juegan con las reglas antiguas pero no al contrario. Es por esto que soft forks necesitan de una mayoría de poder computacional en la red.

Un ejemplo de soft fork fue la inclusión de segwit en el protocolo bitcoin.

Espero que os haya gustado y que sepáis un poquito mejor qué es y por qué se producen las bifurcaciones (o forks).

¡Un saludo y hasta el próximo artículo!

Nota: las imágenes han sido tomadas del libro Mastering Bitcoin de Andreas Antonopoulos.

Anuncios

WordPress.com.

Subir ↑

A %d blogueros les gusta esto: