Mañana 1 de agosto, hard-fork de BitCoin

Mañana es un día bastante especial. BitCoin sufre desde hace algún tiempo problemas de escalabilidad. Su éxito como primera criptomoneda la ha hecho ser la más conocida, la más extendida, la más utilizada y la que mayor cotiza. Pero tiene un límite: cada 10 minutos se procesa un bloque de 1 MB que debe contener todas las transacciones que haya pendientes en toda la red en ese momento. ¿Todas? No siempre, claro. Cada segundo, cientos de personas por el mundo envían sus transacciones a la red y estas quedan en la memoria temporal (mempool) de los mineros. Cuando se mina un bloque, todos los mineros se ponen otra vez en marcha para minar el siguiente, y para ello usan las transacciones que cada uno tenga en memoria en ese momento. Pero ¿caben todas en 1 MB? no siempre, así que algunas se quedarán fuera y seguirán en el mempool pendientes para el siguiente bloque, cuando haya menos trafico. Pero el tráfico no baja, y la gente quiere recibir su dinero ya. Las transacciones se acumulan y el dinero no llega (o tarda días). Así que para asegurarse de que sus transacciones sean procesadas las primeras, los usuarios pagan una comisión (cuyo importe es decidido por el emisor y puede ser cualquiera) cada vez más alta, compitiendo entre sí por entrar en el siguiente bloque.

Lo que suponía una alternativa al dinero fiat, rápida, fiable y con un bajo coste, se ha convertido en lo contrario: lenta y cara. Tener que esperar días o pagar una comisión muy alta para que llegue el dinero es un problema de escalabilidad importante, y hay que arreglarlo. Si BitCoin lo llevase una empresa sería fácil: se cambia el sistema, se actualizan los servidores y ya lo tenemos. Quizá se pare la red durante una hora o dos mientras despliegan la nueva versión de BitCoin, pero se arreglaría rápido. Quizá no se enteraría nadie del cambio ¿o acaso nos enteramos si Google amplia sus servidores de Gmail o pone una nueva versión de su buscador?

Pero BitCoin no funciona así. Nadie gobierna BitCoin, no hay empresa detrás que controle los servidores. Cualquiera pueda minar y cualquier puede usar la red desde cualquier sitio. No hay filtro, funciona sola. Entonces ¿como se llevan a cabo estos cambios? Pues con mucho cuidado. Puede que si hubiera un líder carismático y genio brillante detrás (como es el caso de Ethereum, en el que el simple rumor de su muerte hace caer la moneda) todo fuera más fácil: lo que él diga seguramente sea la mejor opción, o al menos, la que más apoyos tendría y todo el mundo la seguiría. Pero en BitCoin no es así: Satoshi Nakamoto, el nombre con el que se firma el primer paper de BitCoin, la persona (¿o es un grupo de personas?) que minaron el primer bloque, el mayor poseedor de BitCoins del mundo, desapareció de las listas de correo al cabo del año del arranque de BitCoin, en el 2010, y nunca más se supo de él. Desde entonces la red se gobierna sola, en una suerte de equilibrio entre todos los desarrolladores y mineros, que van actualizando el software poco a poco que corre en los nodos de BitCoin siempre y cuando no rompan la compatibilidad hacia atrás.

Compatibilidad, claro. Por que, ¿qué pasa si cambiamos las reglas con las que se validan los bloques? ¿Qué pasaría si un grupo de mineros actualiza su software y, de repente, empiezan a minar los bloques con un tamaño distinto y estos bloques son rechazados por toda la red, menos por este grupo de nodos que tienen un software nuevo? Pues sencillamente este grupo de mineros seguiría ampliando su blockchain con bloques en el formato nuevo, mientras que el resto de nodos también harían lo mismo, ampliando su propio blockchain con bloques en el formato antiguo. Tendríamos por tanto dos blockchains, una bifurcación en la historia, una división en la línea temporal, continúa e inmutable que detalla todos los movimientos de una moneda desde su creación. Tendríamos un hardfork.

Y eso es, precisamente, lo que va a pasar mañana. Desde hace más de un año, programadores, mineros, casas de cambio y más gente influyente en el mundo de BitCoin discute sobre cuál es la mejor manera de mejorar la red BitCoin. No se puede hacer una simple actualización que sea retro-compatible (un soft-fork), se necesita algo más, un cambio radical que permita que quepan más transacciones en cada bloque. Una de dos: o se rompe el límite de 1 MB o se cambia el formato para que quepan más transacciones en el mismo tamaño. Se sugieren varias soluciones pero no hay consenso. El BitCoin core propone sacar las firmas de las transacciones de cada bloque, dejando más espacio libre dentro de ese único MB que es aprovechable para que quepan más transacciones sin firmas. Esto es lo que se denomina Segregated Witness (o SegWit) y que otras monedas ya implementan, como LiteCoin.

Pero a otro grupo de desarrolladores no les gusta esa solución: dicen que no respeta el espíritu de BitCoin que define una criptomoneda como una cadena de transacciones firmadas. Si las firmas van fuera, entonces no es un bloque “puro” de una criptomoneda. Además, dejar la firma fuera del bloque abre la puerta a que los mineros no las validen ya que para minar un bloque solo es necesario validar el contenido del bloque, no las firmas. Así que si alguien enviase una transacción válida pero con una firma incorrecta, es posible que no sea rechazada si un minero decide que no merece la pena validar las firmas. ¿Porqué haría esto un minero? Pues para tardar menos, ganando una ventaja sobre los demás (los que si validan las firmas) y teniendo por lo tanto un poco de tiempo más para minar su bloque, incrementando (muy poco, pero incrementando) la probabilidad de minar su bloque antes que los demás. Así que esta solución no le gusta a todo el mundo y se propone una alternativa: dejar el formato de bloque actual como está, con las transacciones y sus firmas, pero ampliando a 8 MB el tamaño del bloque.

Y esta es la solución que propone el equipo de BitCoin Cash. Las dos alternativas se discuten, el tono se eleva y no se llega a un acuerdo. Se propone una votación (cuya forma de votar es curiosa: consiste en emitir tu voto usando un bit dentro de un bloque minado, lo que da voto solo a los grandes pools que concentran toda la potencia de minado de la red y no a todos los usuarios de la red) y gana SegWit. Tema arreglado, ¿no? Pues no, el grupo de BitCoin Cash decide seguir por su cuenta y su propuesta es apoyada por un pequeño grupo de mineros y casas de cambio, que van a actualizar su software mañana día 1 de agosto a las 12:20 del mediodia hora UTC, o sea, a las 14:40 de mañana, a la hora de comer. En ese momento un grupo de mineros empezará a minar bloques de 8 MB incompatibles con la red actual BitCoin, creando por lo tanto espacio para una nueva moneda distinta pero que conserva todo el historial de transacciones (y por tanto, de saldo) de BitCoin. Es decir, que todos los poseedores de BitCoin pasarán a tener la misma cantidad que tenían de BitCoin en BitCoin Cash sin perder sus BitCoins.

Para que quede todavía más claro: si tienes 1 BitCoin hoy, mañana tendrás 1 BitCoin y además 1 BitCoin Cash.

Pero, ¿qué clase de brujería es esta? ¿cómo es esto posible? Simplemente por la manera en que se gestiona el saldo de BitCoins disponibles para gastar. Los BitCoins que tienes no son “monedas” en una “cartera”. Son transacciones que has recibido y que no han sido gastadas todavía. Una transacción se gasta cuando su saldo es usado para generar otra/s transacción/es, y así sucesivamente. Solo las últimas transacciones de una cadena (un grafo en realidad) determinan el dinero que tienes disponible. Así que si ambas monedas conservan todo el historial de transacciones hasta ahora, entonces tienes la misma cantidad de transacciones sin gastar que has recibido hasta ahora en ambas redes asociadas a la misma dirección. Y lo que gastas en una red a partir del 1 de agosto no se gasta en la otra, así que las cantidades son independientes. Dinero gratis, así, como suena. ¿Gratis? Bueno, depende como se mire. Es gratis porque no te cuesta nada, pero puede (seguro) que su valor cambie. Cada moneda cotizará por separado así que es posible que el valor en euros o dólares de las dos combinadas sea el mismo que el de BitCoin ahora. Pero eso nadie lo sabe, tendremos que esperar a mañana.

Es curioso ¿de verdad que lo que gasto en una red no se gasta en la otra? Si pero no. Si, porque lo que tu envías a una red se queda en esa red y no pasa a la otra. ¡Hasta que alguien lo haga por ti claro! Se llama replay attack y es posible porque si generas una transacción usando el saldo de una transacción sin gastar que existe en las dos monedas, la transacción es válida para en las dos también. Que tu se la mandes solo a una no significa que no valga en la otra. Y supone un problema: imagina que decides vender unos BitCoins a una persona (o casa de cambio) por unos cuantos euros. Esta persona puede replicar la transacción para recibir también la misma cantidad de BitCoin Cash en la otra red, suponiendo un gasto no consentido para ti.

¿Cómo se arregla esto? Pues la gente de BitCoin Cash ha pensado en ello y además de cambiar el tamaño del bloque, ha cambiado el formato de la transacción variando un bit de manera que sus transacciones sean incompatibles para los minero de BitCoins y viceversa. De momento estamos a salvo, aunque la manera más segura de evitar esto es: pasado el 1 de agosto, mover el dinero que tengas en tus direcciones que existen en las dos monedas a dos direcciones, cada una distinta y creada en cada red o moneda. Es decir, si tienes dinero en las direcciones X1, X2 y X3 que existen en ambas redes porque fueran generadas antes del hardfork, debes crear una dirección Y para BitCoin y otra dirección Z para BitCoin Cash. Después simplemente envías todo el dinero de X1, X2 y X3 a X en BitCoin y luego a Z en BitCoin Cash. A partir de ahora, ya tienes direcciones distintas en cada red. Si alguien intenta replicar tu transacción en la otra red (suponiendo que pudiera), la dirección no existiría por lo que jamás se llevaría a cabo. Interesante, ¿verdad?

Mientras tanto, disfrutemos de este momento histórico. No es el primer hard-fork que ocurre, otras monedas ya lo han hecho antes (como Ethereum y Ethereum Classic, aunque este se hizo para revertir un hack en The Dao), pero si es el primero que sucede en BitCoin. Teniendo en cuenta que lo que le pase a BitCoin repercute en todas las criptomonedas, tendremos que aguantar la respiración 24 horas más para ver qué pasa el 1 de agosto.

Mañana, a la hora de comer, pide de postre palomitas, mira la cotización y chequea reddit y Twitter, porque lo que pase, no saldrá por televisión. ¡Larga vida a las criptomonedas!

6 thoughts on “Mañana 1 de agosto, hard-fork de BitCoin

  1. Good summary! Its critical for Bitcoin owners to have their bitcoins in their own wallet and not in an exchange like Coinbase – which is not even distributing out the Bitcoin Cash. This way one can actually control your own Bitcoin Cash.

  2. Más que interesante, teóricamente podrías vender los bitcoins de una rama para comprar en la otra incrementando tu saldo en esa rama como por arte de magia… jugada redonda si la rama elegida es la ganadora (y nefasta si es la perdedora), podría ser una estrategia para tumbar una de las ramas por parte de los stakeholders de grandes cantidades de bitcoins (los propios mineros o las propias casas de cambio como indica Ashish)

  3. Por otra parte teniendo en cuenta como de alta está la dificultad del algoritmo de minado en Bitcoin la rama sin apoyo podría tener dificultades para minar bloques y los 10 minutos teóricos se podrían alargar bastante… al menos hasta el siguiente reajuste del algoritmo (2 semanas) para luego poder oscilar brusca y peligrosamente… no sé si esto lo tienen también pensado los de Bitcoin Cash o tendrán que hacer un fork sobre el fork!

  4. No está claro ,si tengo un bitcoin solamente y envío un bitcoin convencional ,que es lo que sigue mostrándome la cartera de electrum a la dirección Y y a continuación quiero volver a enviarlo a la dirección Z de bitcoin cash ,simplemente no podré hacerlo porque ya lo envié a Y.
    La cartera de electrum por ejemplo ,no se ha actualizado y sigue mostrando la situación igual que antes.

Comments are closed.