Bitcoin Forks — ¿qué son y cómo me afectan?

En este blog post presentamos información técnica detallada de la situación actual de Bitcoin para beneficio de la seguridad de nuestros usuarios.

Introducción

Bitcoin es una red descentralizada conformada por muchos participantes. Entre ellos destacan:

Los ingenieros y científicos que desarrollan el código. Los mineros que procesan transacciones y mantienen la seguridad de la red. Las carteras que proveen interfaces para que los usuarios puedan interactuar fácilmente con la red. Los exchanges (como Bitso) que dan acceso y liquidez a la divisa digital alrededor del mundo. Los usuarios de la red.

Para que esta red opere, es importante que la mayoría de los participantes sigan las mismas reglas de consenso (las reglas del juego). Estas reglas de consenso determinan, entre otras cosas, cómo se deben generar los bloques que conforman la cadena de bloques de la red de Bitcoin. Cuando existe un cambio en las reglas de consenso se crea un fork. Si una fracción de los participantes de la red decide cambiar las reglas del juego sin tener consenso de todos los participantes de la red, la cadena de bloques de Bitcoin se podría dividir: una cadena seguiría las reglas originales y la otra cadena seguiría las nuevas reglas introducidas. A esta división se le conoce como un “chain split”.

Representación Gráfica de un “chain split”

Al ser una red descentralizada, los diferentes tipos de participantes en la red pueden tener diferentes intereses, ideas, motivaciones, e ideologías. Por ejemplo, no todos los ingenieros y científicos que desarrollan el código están de acuerdo con cómo mejorar ciertos aspectos del protocolo. Otro ejemplo es que diferentes mineros piensan que la red debería de evolucionar de diferentes maneras.

Aunque siempre han existido estas diferencias entre los diferentes participantes de la red, hasta el día de hoy a grandes rasgos se podría decir que la gran mayoría de los participantes de la red de Bitcoin han siempre seguido las mismas reglas de consenso. Aunque las reglas de consenso han evolucionado y cambiado mucho desde el inicio de Bitcoin en 2009, todos los participantes hasta ahora han estado de acuerdo con su evolución. Esto significa que cuando alguien habla de “Bitcoin” todo mundo se refiere a la misma cadena de bloques, la que aparece en blockchain.info, en TradeBlock, la que puedes obtener en Bitso, la que lees en el periódico, etc…

No hay nada que prevenga a un individuo o una serie de individuos de cambiar las reglas de consenso de la red de Bitcoin. De hecho, esto ha pasado muchas veces durante la historia de Bitcoin, pero lo que sí es difícil es atraer el interés de participantes en la red. Sin ingenieros no hay código, sin mineros no hay bloques, sin exchanges no hay liquidez, sin wallets no hay como transaccionar, y sin usuarios los tokens en la nueva cadena no valen nada. La dificultad radica en obtener el interés de todo un ecosistema.

En Ethereum, otra divisa digital que puedes comprar y vender en Bitso, hace un año hubo un cambio importante en el protocolo que llevó a una división de cadenas: una mantuvo el nombre de Ethereum y la otra se le denominó Ethereum Classic. Esto fue posible porque existió suficiente interés de los participantes en ambas contingencias en mantener vivas ambas cadenas.

Los Bloques de Bitcoin

Cada 10 minutos, en promedio, se genera un nuevo bloque en la cadena de bloques de Bitcoin. Los bloques, creados por los mineros, tienen tres componentes:

Una referencia al bloque anterior (de ahí el nombre “cadena de bloques” o “blockchain”) Una lista de transacciones que se confirmarán con la creación del bloque Una transacción donde se generan nuevas monedas (así es como crece la oferta de bitcoin a nivel global)

Estos datos se agrupan para crear estos bloques y en 2010 se introdujo un límite de 1MB al tamaño de cada bloque. Esto limita la cantidad de transacciones que pueden ocurrir en la red de Bitcoin a cerca de 7 transacciones por segundo. Como comparación, la red de Visa maneja un promedio de 2,000 transacciones por segundo y en teoría podría procesar hasta 56,000 transacciones por segundo.

Cuando la red se empieza a saturar, las transacciones pueden tomar muchas horas antes de ser confirmadas y es necesario subir las comisiones para que las transacciones sean procesadas y confirmadas. Esta es la razón por la cual Bitso tuvo que, después de años de subsidiar las comisiones de los retiros de Bitcoin, empezar a cobrar por retiros de Bitcoin para compensar el pago correspondiente a los mineros.

Escalando la Plataforma de Bitcoin

Algunos participantes en la red de Bitcoin opinan que este límite es totalmente artificial y que simplemente deberíamos incrementarlo. Otros participantes argumentan que hacer eso podría tener consecuencias importantes para la descentralización de Bitcoin y por ende para su seguridad. Esto es porque incrementar el tamaño de los bloques generaría un aumento importante en la capacidad requerida para guardar la cadena de bloques en una computadora. Esto ocasionaría que algunos individuos dejen de participar en la descentralización de Bitcoin por el alto costo requerido en mantener una copia de la cadena de bloques.

Aunque existen cientos de ideas respecto a cómo escalar la transaccionabilidad de la red Bitcoin, una de las críticas más grandes a los sistemas que operan con base en una cadena de bloques es que son pésimos para escalar.

Como todo en las ciencias de la computación, la tecnología subyacente del protocolo de Bitcoin puede ser mejorada de manera sustancial y ya existen muchas ideas para mejorar la capacidad de la red sin tener que incrementar el tamaño de estos bloques y atentar contra la descentralización de Bitcoin. Aunque la comunidad está muy emocionada por estas innovaciones al protocolo, algunos participantes piensan que un incremento al límite ayudaría de manera importante a aliviar los problemas de saturación en la red.

El 21 de febrero de 2016 se organizó una junta en Hong Kong para decidir como mejor escalar la red Bitcoin. El resultado de esa junta fue el Hong Kong Agreement.

SegWit

O Segregated Witness, es una mejora al protocolo de consenso de Bitcoin ideado a principios de 2016 que mueve cierta información fuera de las transacciones de Bitcoin y por ende incrementa la capacidad de la red Bitcoin sin necesidad de incrementar el tamaño de los bloques. Como parte del Hong Kong Agreement, se estableció que los ingenieros y científicos trabajando en el proyecto de Bitcoin, conocidos como el equipo de Bitcoin Core, iba a proceder con la implementación de SegWit la cual estaría lista en abril 2016. También se acordó que tres meses después el equipo de Bitcoin Core iba a establecer un plan para incrementar el tamaño de los bloques mediante un fork.

Para activar las reglas de SegWit, el equipo de Bitcoin Core estableció que el 95% de los mineros deberían señalar su intención de migrar hacia SegWit. Se establecieron 26 periodos de señalamiento con una duración de dos semanas cada uno. Si en alguno de esos periodos mas del 95% de los mineros señalan su intención de migrar a SegWit entonces se crea un lock-in y dos semanas después se activan las reglas de consenso de SegWit en toda la red.

Por muchas razones fuera del alcance de este blog post, el código de SegWit no estuvo listo hasta el primero de noviembre de 2016 y tres meses después el equipo de Bitcoin Core no estableció un plan para incrementar el tamaño de los bloques. Esto resultó que muy pocos mineros adoptaran el código de SegWit.

UASF

Después de meses de inacción por parte de los mineros en aceptar el código de SegWit, un contingente de usuarios creó una propuesta a mediados de marzo de 2017, más comúnmente conocida como BIP148 o UASF. Este contingente de usuarios proponía que, a partir del primero de agosto de 2017, los participantes corriendo esta versión del código empezarían a ignorar bloques que no señalaran su intención de migrar a SegWit. Este grupo empezó a trabajar en una nueva versión del código a principios de abril 2017.

Y aquí es en donde la cosa se complica un poco. Aquí algunos posibles escenarios:

Si nadie corre el software de UASF, nada ocurre y todo mundo sigue jugando con las reglas de consenso actual. Si todos corren el software de UASF, entonces todos los bloques señalarían SegWit y se activarían las reglas de SegWit. Si ningún minero corre el software de UASF, nada ocurriría ya que no existiría una división en la cadena Si algunos (pero no todos) los mineros migran, se crearía una bifurcación (chain split) en la cadena de bloques.

New York Agreement

En mayo de 2017, varios participantes en la red de Bitcoin se juntaron para discutir cómo tratar de mitigar los riesgos de una bifurcación en la cadena de bloques y para seguir avanzando el protocolo de Bitcoin para poder lograr escalar la plataforma de manera importante. Bitso fue partícipe en este acuerdo.

Bajo este acuerdo, decidimos activar SegWit usando otro método de señalamiento que requeriría solamente 80% de soporte por parte de los mineros (en vez del 95% originalmente sugerido por el equipo de Bitcoin Core) para activar y también se acordó a hacer un fork a bloques de 2MB dentro de los 6 meses siguientes la activación de SegWit. Este acuerdo es más comúnmente conocido como SegWit2x

¿En Dónde Estamos?

El pasado 16 de julio el código de SegWit2x fue publicado. El código implementa una iniciativa previa para activar Segwit (BIP91) que solamente requiere el soporte de 80% de los mineros en un periodo de 2.5 días (336 bloques) para activar. El jueves 20 de julio de 2017, BIP91 activó. Ahora entramos en un periodo donde todos los mineros deben de empezar a señalar soporte por SegWit y el sábado 22 de julio de 2017 en la noche, aquellos bloques que no señalen soporte por SegWit deberían de ser ignorados por el resto de la red.

Al viernes 21 de julio de 2017 a las 11:50PM, más del 90% de los últimos 144 bloques (un día) han señalado soporte por SegWit en bit1. La expectativa es que todos los mineros señalen SegWit en bit1 antes de que BIP91 se active y que no exista una bifurcación en la red por el UASF en agosto 1.

Actualización julio 22 8:24AM: más del 95% de los últimos 144 bloques están señalando SegWit en bit1. Esto es bueno y significa que la activación de BIP91 tiene un alto grado de probabilidad de ocurrir sin problema y que el UASF no tendrá ningún efecto en la red. Seguimos al tanto.

Actualización julio 23 8:46AM: BIP91 ha activado y el 100% de los bloques post-activación han señalado soporte por SegWit en el bit1. Pueden monitorear el proceso de activación de BIP91 en nuestro Status Page.

Actualización julio 27 6:16PM: La activación de BIP91 ha seguido sin contratiempos, con el 100% de los bloques de Bitcoin señalando SegWit en bit1. Un periodo de activación de SegWit ha comenzado y pueden monitorear su progreso aquí.

UAHF

Existe otro contingente de usuarios que buscan generar una nueva moneda por medio de un hard fork a partir de las 7:20AM del primero de agosto de 2017 (hora Ciudad de México). A este esfuerzo se le ha denominado Bitcoin ABC, Bitcoin Cash, y UAHF. A pesar de mucho tratar no hemos podido encontrar información de este posible hard fork y creemos que es posible que nunca ocurra. Es muy importante mencionar que en Bitso no soportaremos las monedas que se generen a partir de este fork, por lo que si algún usuario de Bitso quiere tener custodia de estas monedas, le sugerimos que haga un retiro a otro exchange o wallet que vaya a soportar UAHF.

Cabe mencionar que hemos tratado, en múltiples ocasiones, contactar al supuesto equipo responsable de UAHF sin éxito.

Actualización julio 23 9:00AM: Hemos logrado contactar el equipo del UAHF y estamos investigando más su propuesta aunque todavía no hay muchos detalles concretos.

Próximos Pasos

Te recomendamos revisar nuestro Status Page constantemente para cualquier actualización. También tenemos un aviso con fechas importantes.

Agradecimientos del Blog Post

Gracias a todo el equipo de Bitso por el excelente trabajo que llevan a cabo día a día y a Ney Villamil, autor de La máquina de la verdad: La segunda revolución internética. Blockchain y Bitcoin.