Cualquier persona familiarizada con Bitcoin es consciente del problema molesto causado por el límite de bloques de 1 MB y la controversia que surgió sobre cómo escalar la red. Probablemente valga la pena mirar hacia atrás cómo llegó a existir ese límite, con la esperanza de que las futuras crisis puedan ser evitadas por una sólida comprensión del pasado.
Hace mucho tiempo, en una tierra lejana
En el 2010, cuando se introdujo el límite de tamaño de bloque, Bitcoin fue radicalmente diferente a la actual. Theymos, administrador del foro Bitcointalk y el subreddit /r/bitcoin, dijo, entre otras cosas:
- "Nadie anticipó la minería por pools, así que consideramos que todos los mineros sean nodos completos y casi todos los nodos completos sean mineros.
- No esperaba ASICs, que causan demasiada centralización de la minería.
- SPV es más débil de lo que pensaba. En realidad, sin la gran mayoría de la economía corriendo nodos completos, los mineros tienen todo el incentivo para unirse y romper las reglas de la red en su favor.
- El mercado de comisiones no funciona realmente como describí y como Satoshi pretendía por razones económicas y que toman algunos párrafos para explicar."
Parece que a finales del 2010, Satoshi se dio cuenta de que tenía que haber un tamaño de bloque máximo, de lo contrario algunos mineros podrían producir bloques más grandes que otros mineros estaban dispuestos a aceptar, y la cadena podría dividirse. Por lo tanto, Satoshi insertó un límite de 1 MB en el código.
Y lo guardó en secreto.
Ardillas secretas
Sí, Satoshi mantuvo este cambio en secreto hasta que el parche se desplegó, y al parecer pidió a los que descubrieron el código por su propia cuenta para mantener la calma. Es probable que mantuvo las cosas en silencio para minimizar las posibilidades de que un atacante podría averiguar cómo usar un tamaño de bloques ilimitado para vulnerar la red.
Theymos lo dice:
"Satoshi nunca usó el IRC, y rara vez explicó sus motivaciones para nada. En este caso, mantuvo el cambio en secreto y dijo a las personas que lo descubrieron que lo mantuvieran en silencio hasta que terminara, de modo que la controversia o los atacantes no causaran ruido con el cambio de reglas en curso."
También es probable que Satoshi nunca esperó que el tamaño de 1 MB fuera un problema. En ese momento, el tamaño medio de bloques era de órdenes de magnitud inferior a 1 MB, y parecía que habría tiempo suficiente para idear una solución. Satoshi mismo dijo, del límite del blockize:
"Podremos introducir un cambio más adelante si nos acercamos a necesitarlo."
Y otra vez:
"Puede ser escalonado, como:
if (blocknumber > 115000)
maxblocksize = largerlimit
Puede empezar a estar en las versiones muuy posteriores, por lo que cuando llegue a ese número de bloque y entre en vigor, las versiones anteriores que no lo tienen ya estarían obsoletas.
Cuando estemos cerca del número de bloque de corte, puedo poner una alerta a versiones antiguas para asegurarse de que saben que tienen que actualizar."
Es evidente que Satoshi previó la eliminación del límite de bloques como trivial y no tenía idea de que un cambio de código tan pequeño generaría una tormenta de fuego.
Problemas previsibles
El usuario de Bitcointalk, "kiba" prescientemente comentó, poco después de que la capa fuera creada:
"Si actualizamos ahora, no tendremos que convencer a mucha gente más tarde si la economía bitcoin continúa creciendo."
En respuesta al comentario de Satoshi de que el límite siempre podría ser removido si fuera necesario para apoyar una mayor capacidad de transacción, Jeff Garzik señaló:
"En mi opinión, es una cosa de marketing. Es difícil conseguir que la gente compre en un sistema, si la red es técnicamente incapaz de soportar altas tasas de transacción."
Claramente las advertencias estaban presentes.
¿Por qué no más grande?
Muchos han preguntado por qué Satoshi no creó un tamaño de bloques mayor, como 8 MB. La respuesta es triple:
- No era necesario, ya que incluso 1 MB era mucho mayor que los bloques más grandes que habían sido minados.
- Era técnicamente fácil de cambiar, simplemente sustituyendo un valor en el código por otro.
- Los bloques más grandes crean desafíos técnicos.
En el 2010, la tecnología de Internet era tal que los bloques más grandes no se habrían propagado correctamente. En el 2015, recordó:
"Un problema obvio y fácil de entender es que para ser un nodo de red constructivo, necesita cargar rápidamente nuevos bloques a muchos de sus peers de 8+. Así que los bloques de 8 MB requerirían algo muy similar (8 MB * 8 bits * 7 pares)/30 segundos = 15 Mbit / s upstream, que es una extraordinaria capacidad de upstream. Dado que la mayoría de las personas no pueden hacer esto, la red (tal como está diseñada actualmente) se deshará de la falta de capacidad ascendente: no habría suficiente capacidad de carga total para que todos puedan descargar bloques a tiempo y la red a menudo iría "fuera de sincronía" (causando estancamientos y divisiones temporales en el estado de cadena global)."
Segregated Witness y Lightning Network
Hoy Bitcoin utiliza un código llamado Segregated Witness (SegWit) para separar las firmas de los datos de transacción, lo que permite a la red "engañar" al crear bloques más grandes que 1 MB, aún así contándolos por debajo de la capa. SegWit también corrige una vulnerabilidad llamada maleabilidad de transacciones, permitiendo la creación de algo llamado la Lightning Network.
La Lightning Network se prevé como una forma para que los usuarios y/o comerciantes de Bitcoin puedan abrir canales de pago entre sí de una manera segura. Los fondos pueden ser intercambiados entre estas partes sin que las transacciones se escriban en Blockchain. Esto mantiene la Blockchain pequeña, capaz de ser servida por computadoras razonablemente poderosas. La Lightning Network necesitaría periódicamente "anclarse" a la Bitcoin Blockchain principal, pero permitiría aumentos enormes en la capacidad de transacción con aumentos muy pequeños en el tamaño de Blockchain.
Hasta ahora no hay una implementación de trabajo de la Lightning Network en la red principal, aunque hay versiones en la red de prueba. La Lightning Network será totalmente opcional, y los usuarios pueden optar por enviar transacciones ordinarias en su lugar, si así lo desean.