Un hard fork, o “tenedor duro” como dijo Vitalik en la conferencia ETHLatam, es un cambio en las reglas de una blockchain que no es compatible con las reglas anteriores. Los hard forks son usualmente actualizaciones que cambian un aspecto importante en el funcionamiento de una red. Al generar nuevas reglas incompatibles con las anteriores, se genera el riesgo de que una blockchain se divida en dos. Veamos…
Entendiendo los hard forks
Para entender los hard forks, vayamos un paso para atrás y repasemos cómo funciona una blockchain. Una blockchain no es más que un conjunto de computadoras, o nodos, que tienen instalado las reglas de juego de la red. Por esa razón, pueden comunicarse entre sí, intercambiar transacciones y llevar una copia en conjunto de todos los balances.
Teniendo esto en cuenta, no es necesario que todos los nodos estén corriendo exactamente el mismo software. De hecho, hay distintas implementaciones, o versiones, del código de Bitcoin. La más común se llama Bitcoin Core. Para que la blockchain funcione, estas versiones deben ser compatibles una con otra.
¿Qué pasa si un nodo corre una versión de Bitcoin incompatible con las demás? Si alguien decide desarrollar una implementación de Bitcoin con algún cambio importante, la red no lo va a reconocer como un nodo válido. Esto significa que no podrá comunicarse con los demás nodos e intercambiar transacciones.
Esto es exactamente lo que sucede durante un hard fork, una actualización produce un cambio de reglas que va en contra de las anteriores. Entonces, todos los nodos deben actualizar su software para pertenecer a la nueva red y comunicarse entre sí. En el caso que un grupo de nodos no esté de acuerdo con las nuevas reglas y decida seguir corriendo la versión vieja del código, se van a formar dos redes. Veamos esto más en detalle.
¿Qué pasa si algunos nodos no actualizan su software?
Si parte de los nodos de una red no actualiza su software y la otra si, estos grupos no se van a poder comunicar. Entonces, esencialmente pasan a haber 2 redes diferentes. Pongamos un ejemplo para que se entienda más.
Supongamos que sale una nueva actualización de Bitcoin que propone multiplicar por 10 la cantidad de BTC en circulación. Pasaríamos de un máximo de 21 millones de BTC a 210 millones. Para que este cambio no afecte a los usuarios, se va a multiplicar por 10 también el saldo de todas las wallets. Si teníamos 0.1 BTC, pasamos a tener 1 BTC. Sin embargo, no todos están de acuerdo con esta actualización, la mitad de los mineros siguen corriendo el código original de Bitcoin.
Ahora, ¿qué pasa si queremos hacer una transacción de 0.5 BTC? Por un lado, los nodos con el código nuevo la van a ver como válida, ya que nuestro saldo para ellos es de 1 BTC. Por otro lado, los demás van a rechazar esta operación, ya que a su criterio nuestra wallet solo tiene 0.1 BTC. Esta diferencia irreconciliable va a hacer que ambos grupos no puedan convivir en una sola red.
Cuando ocurre un hard fork, si algunos nodos deciden no actualizar su código, se forman dos redes que comparten la misma historia pero a partir de ese momento generan bloques distintos. De ahí viene el nombre fork, o bifurcación.
¿Qué ocurre con nuestras monedas en el caso de un fork?
Si la red se divide, ¿qué pasa con nuestras monedas? ¿Tenemos que elegir a qué red mandarlas? En la gran mayoría de los casos, los forks no requieren ninguna accion por parte del usuario. Tampoco debemos elegir que red apoyar, sino que vamos a tener el mismo monto inicial de monedas en ambas redes. Al momento del fork, se crea una nueva blockchain que tiene las mismas wallets y los mismos saldos. Es decir, si tenemos 1 BTC y la red de Bitcoin sufre un fork, vamos a tener 1 BTC en la red nueva (que probablemente tenga otro nombre) y 1 en la original.
Los hard forks más famosos
- Bitcoin Cash
El hard fork de Bitcoin Cash en el 2017 fue el resultado de años de discusiones sobre la mejor forma de escalar la red de Bitcoin. Por un lado, algunos argumentaban que la mejor forma era aumentar el tamaño de los bloques, generando más espacio para transacciones. Esto provoca que la red se vuelva más económica, especialmente cuando hay mucha demanda.
Por otro lado, parte de la comunidad decía que este cambio iba a afectar la descentralización de la red. Bloques más grandes iban a llevar a una blockchain más pesada. Por lo tanto, los nodos iban a requerir un hardware más potente para procesar transacciones. Si correr un nodo se vuelve muy caro, menos gente lo va a hacer, por lo cual se pierde la descentralización.
Al reconocer esta incompatibilidad, se lanzó en agosto del 2017 una nueva versión del código de Bitcoin con bloques 8 veces más grandes. Así fue como se creó Bitcoin Cash y su nueva moneda BCH. Como es un fork de Bitcoin, todas las wallets que tenían BTC antes de esta fecha pasaron a recibir la misma cantidad de BCH en la nueva red.
- Ethereum Classic
El hard fork de Ethereum Classic ocurrió en la blockchain de Ethereum en el 2015. Poco tiempo antes había surgido un protocolo llamado TheDAO que pretendía ser un fondo de inversión liderado por la comunidad. Cualquiera podía poner plata y recibir un poder de voto proporcional que iba a servir para elegir a los proyectos en los cuales invertir. En mayo del 2015, TheDAO logró juntar un total de 150 millones de dólares de más de 10 mil inversores.
Desafortunadamente, en julio de ese mismo año un hacker explotó una vulnerabilidad en los contratos inteligentes del protocolo y se pudo robar un tercio de los fondos. Esta fue una pérdida enorme en la pequeña comunidad de Ethereum. Por esa razón, decidieron hacer un hard fork y crear una nueva red donde el hackeo no había sucedido. Hubo una parte de la comunidad que no estuvo de acuerdo con esta acción y decidió seguir desarrollando la red original, la cual pasó a llamarse Ethereum Classic.