Bitcoin gana usuarios sin parar pero, ¿Hasta dónde puede aguantar su infraestructura? ¿Puede soportar millones de usuarios? ¿Hasta dónde es posible la escalabilidad de Bitcoin?
Paradójicamente, que a Bitcoin llegasen de repente millones de usuarios encantados por sus ventajas no lo beneficiaria, es más, podría perjudicarlo mucho, pues la experiencia de todos los usuarios se vería gravemente afectada.
Y no es algo desconocido. Una de las preguntas más frecuentes sobre Bitcoin es: ¿puede funcionar si millones de personas deciden hacer de él su principal medio de pago?
Lamentablemente, con la versión actual de Bitcoin, la respuesta es no.
No obstante, este problema tiene los días contados, pues ha sido la obsesión de muchos programadores que han creado múltiples propuestas increíbles de escalabilidad. Ahora solo falta decidir, a través de consenso de los nodos, cual y cuando se implementará.
En el siguiente capítulo te ayudaremos a entender, aún más, las entrañas de Bitcoin y por qué actualmente no es escalable, al tiempo que te acompañaremos a conocer algunas de las propuestas de escalabilidad más destacables.
Bitcoin y la escalabilidad: Bitcoin actualmente no es escalable
Primero recalquemos que con escalabilidad no nos referimos a que Bitcoin no pueda ser comprendido por la mayor parte de la población debido al cambio de paradigma como dinero. Tampoco a que, debido al precio que pueda alcanzar, sea inaccesible para algunas personas. Ni tampoco a que no pudieran haber bitcoins suficientes para todos.
Todo esto anterior, a parte de ser falso, no es a lo que nos estamos refiriendo al hablar de la escalabilidad.
A día de hoy, Noviembre del 2016, Bitcoin no es perfecto:
- Los pagos no son instantáneos (aunque se reflejen al instante, no se confirman al instante).
- Los micropagos se están haciendo totalmente inviables. Una de las grandes características de Bitcoin.
- Existe un riesgo constante de una alta centralización minera.
- Bitcoin no es escalable.
Como vemos, hay mucho que mejorar (o como algunos lo ven: oportunidades de crear cosas geniales) pero, de entre todos los asuntos por resolver de Bitcoin, el último de los que hemos mencionado es una de las principales tareas a conseguir: que Bitcoin sea escalable. Solucionar esto hará que los otros problemas mencionados mejoren en cascada.
Bitcoin aspira a ser un sistema financiero global, y los datos demuestran que gente está a favor de ello, por ello debe estar preparado para su uso por millones de usuarios concurrentes, y todo ello, sin perder ninguna de sus principales características que lo hacen único y valioso de verdad.
Y es que Bitcoin todavía es un experimento. Un experimento increíble y popular, si, pero que no deja de estar en una fase temprana. De hecho, pese a haber revolucionado todo el sector financiero desde sus pilares más arcaicos (y otros sectores también), ni siquiera ha salido la versión 1.0 del software, todavía estamos en la versión 0.20.1 (liberada en Agosto de 2020).
Esto quiere decir que aún estamos en un momento de constante desarrollo para conseguir crear el software con potencia suficiente para ser usado masivamente y de forma óptima.
De hecho, su problema de escalabilidad es un debate casi tan antiguo como el propio Bitcoin y el principal motivo de ello está muy localizado: el bloque.
El bloque
Como ya explicamos en el capítulo dedicado a la blockchain, los bloques son la pieza esencial de la cadena de bloques, que es el libro de cuentas distribuido que sustenta Bitcoin.
En los bloques se almacena la información esencial relativa a todas las transacciones que ocurren. El problema es que cada bloque tiene limitado el tamaño máximo de información que puede almacenar.
En ¿Cómo funcionan las transacciones Bitcoin?? os explicábamos que un bloque almacena todas las transacciones que han ocurrido desde el último bloque. Cada una de estas transacciones está compuesta por una serie de información, y que ocupa una cantidad variable de espacio en disco y que será añadida en el bloque.
Como medida temporal para evitar ataques a la red (más abajo veremos por qué), y hasta encontrar soluciones mejores, Satoshi Nakamoto decidió añadir una línea de código extra para limitar la capacidad de cada bloque en 1 Megabyte (pese a que inicialmente no se puso ningún límite o posteriormente se pusieran de acuerdo los mineros para no aceptar bloques superiores a 500kb). Un tamaño, que en su época, era más que suficiente.
Lo que significa que cada nodo de la red Bitcoin tiene funcionando el programa Bitcoin el cual tiene escrito en su código fuente que ningún bloque pueda ocupar un espacio en disco superior al indicado, y si lo supera hay que rechazarlo.
Y aquí está la clave, el tamaño, pues esto determina la capacidad de Bitcoin. Veamos por qué.
Llenando el bloque
Una transacción normal en Bitcoin suele ocupar entre 0.2kb y 1kb dentro del bloque (aunque hay algunas que ocupan más, lo normal es esto).
Con estos datos tomaremos 0.5kb (que es un tamaño bastante común) como tamaño medio por transacción. Si además tenemos en cuenta que el tamaño máximo del bloque que se crea cada 10 minutos es de 1024kb (1mb), podemos despejar la incógnita con una simple operación matemática:
1024 / 0.5 = 2048 transacciones caben en un bloque.
7 transacciones por segundo de media, ¿cierto?
Mientras que algunos sistemas de pago, con infraestructuras más tradicionales y centralizadas como VISA, pueden llegar a soportar hasta 56000 transacciones por segundo (aunque de media procesa 2000), se dice que Bitcoin tiene un límite de 7 tps (transacciones por segundo).
¿¿¿ 7 transacciones por segundo ??? Posiblemente ahora te estés preguntando cómo, con una potencia tan baja de operaciones «concurrentes», hay quienes ven en Bitcoin una alternativa seria al sistema financiero mundial.
Vayamos poco a poco ;).
7 transacciones por segundo… es decir, si 7 personas cada segundo propagan una transacción a la red podrían colapsarla (lo cual ha sido intentado en varias ocasiones para tirar al suelo la reputación de Bitcoin y su expansión).
No obstante, la realidad es más cruel para Bitcoin, y viendo los datos, debemos decir que 7 tps es un límite demasiado optimista. Hagamos unos pequeños cálculos.
Recordemos que Bitcoin tiene configurado que los mineros pueden minar un bloque cada 10 minutos.
Así que, tomemos de nuevo el tamaño medio de transacción, los 0.5kb, y no olvidemos tampoco que el tamaño máximo del bloque que se crea cada 10 minutos es de 1024kb (1mb):
1024 / 0.5 = 2048 transacciones caben en un bloque. 10 * 60 = 600 segundos tiene 10 minutos. 2048 / 600 = 3.41 tps.
Así que la respuesta es no, actualmente no soporta 7 tps de media.
Bitcoin soporta alrededor de 3.5 tps de media. Este sería un cálculo más próximo a la realidad que las 7 que comúnmente se ha difundido como un mantra.
De hecho, es un cálculo bastante sencillo de realizar con datos reales, veamos.
Estos son gráficos de actuales (Octubre de 2016). En ellos podemos ver como hay cerca de 2000 transacciones cada 10 minutos (por bloque, primer gráfico), lo que hace que el tamaño del bloque se acerque a 1MB (segundo gráfico). Saquemos la calculadora:
17 Octubre 2016 - 02:00 1898 transacciones en el bloque y 0.93mb. 1898 / 0.93mb = 2040 tps por 1mb
Con lo que el cálculo teórico indicado inicialmente se aproxima bastante a la realidad.
Por otro lado, si vemos las transacciones diarias, podemos hacer otro cálculo rápido para sacar las transacciones por segundo por las que está pasando la red Bitcoin actualmente.
Viendo el gráfico de arriba tenemos que:
60 x 60 x 24 = 86400 segundos en un día. 274486 transacciones en Bitcoin en un día 274486 ÷ 86400 = 3.176 tps (1905 transacciones / bloque)
Así que, el resultado, también es muy similares al cálculo inicial.
Si recordamos el escenario donde se dice que Bitcoin soporta 7 tps tendríamos que en un día podría soportar alrededor de 604800, mientras que la realidad demuestra que está entorno a las 275000 transacciones diarias.
No obstante, destaquemos que 3.5 transacciones por segundo de media, en un sistema de dinero electrónico programable totalmente descentralizado, es algo increíble, y ya junta a decenas de millones de usuarios. Pero es cierto, no es suficiente para llevarlo a escala mundial. Sigamos.
El gran debate: El tamaño del bloque
Lo que convierte estos cálculos en un debate intenso, como pocos se ha visto en la comunidad Bitcoin, es que las consecuencias de esto no se prevén para años, si no que ya está suponiendo un problema.
Es más, ha creado tal división de opiniones en el núcleo de desarrolladores principales de Bitcoin que algunos han decidido proponer nuevas versiones de Bitcoin alternativas a la «oficial», como es el caso de Bitcoin Classic, Bitcoin Unlimited, XT y Bitcoin Core.
Fíjate en los datos que ponemos arriba. Un bloque no puede tener más de 1mb de tamaño y casi todos los bloques que se minan se hacen ahora casi al 100% de su capacidad.
Y es que este tamaño de bloque ya está ralentizando la red Bitcoin. En periodos puntuales de mucha actividad, hay miles de transacciones que se están quedando fuera de su siguiente bloque natural debido a que no caben más transacciones, teniendo que esperar a otros bloques para que esta pueda ser introducida (confirmada). Lo que se traduce en que una transacción puede tardar horas o días en ser confirmada.
Pero, si este límite era un simple apaño que puso Satoshi Nakamoto en una línea de código del software, ¿por qué no se cambia esa linea y donde pone 1mb se pone 10mb o cualquier otra cantidad? Al fin y al cabo es un arreglo que llevaría unos pocos segundos que permitiría soportar mucho más.
No es tan simple como eso. Veamos las partes claves con las que interactúa el software de Bitcoin con el objetivo de que nos ayude mejor a entender el trasfondo de esa decisión.
Almacenamiento
A continuación podemos ver el ritmo que está cogiendo el espacio en disco que ocupa Blockchain y como, en solo un año, se ha doblado debido a la fama que Bitcoin está gozando. A fecha de este artículo roza los 90 GB.
Con una media de transacciones por segundo más alta significaría que cada bloque ocuparía más. Si intentamos llevarlo a escenarios un poco más cercanos a otros medios de pago, por ejemplo las 2000 tps de media que procesa actualmente VISA, cada bloque podría llegar a ocupar hasta 600 MB.
Imagina 600 MB cada 10 minutos… quién es el «guapo» que almacena tanto? Por eso, hay riesgo de centralización si no salen mejoras como las que ya están empezando a tomar forma, como la funcionalidad de «pruning«, que apareció en la versión 0.11.0 de Bitcoin y permite que un nodo pueda almacenar únicamente los últimos X MB de la cadena de bloque.
Recodermos que, actualmente, cada nodo por regla general tiene una copia completa de la blockchain, y son más de 5000 nodos los que existen. Es cierto que, algunos de estos nodos, solo hacen tareas de revisión no de minado, pero igualmente han de tener una copia completa del blockchain.
CPU
Por esta parte los problemas no son graves. Los ordenadores actuales están capacitados para procesar muchas más transacciones de las que pasan por Bitcoin actualmente.
Recordemos que cada nodo, en toda transacción que se realiza en la red, debe primero descargarla y posteriormente verificarla. No hablamos de nodos que además son mineros, hablamos de todos los nodos.
Estas operaciones, que son algoritmos de criptografía (ECSDA,RIPEMD-160, SHA256), pueden realizarse sin problema a una velocidad de 10 ms por cada megabyte de datos, y todo con un ordenador casero de gama media.
Por lo que tampoco sería un gran coste procesar 10 MB, y posiblemente tampoco 600 MB en 10 minutos.
Aún así, como en todas las piezas que componen Bitcoin, se busca constantemente su optimización y no fue hace mucho (a finales del 2015) cuando se mejoró de nuevo el algoritmo de verificaciones criptográficas libsecp256k1 llevando un aumento en su velocidad de operación entre un 500% y 600%.
Red
Aquí se complica un poco. En el ejemplo de las 2000 transacciones por segundo:
2000tps * 512 bytes = 1024000 bytes por segundo O lo que es lo mismo... 1024000 b / 1000 = 1024 kilobytes por segundo 1024 kb / 1024 = 1 megabyte por segundo 1 mb * 8 = 8 megabits / segundo aproximados.
*Recordemos que tenemos que obtener el resultado en megabits, que es como se mide la velocidad en internet.
Esta velocidad de conexión es posible tenerla en algunas partes del planeta. Pero no todos pueden disfrutar de una velocidad de este tipo actualmente, lo cual preocupa desde el punto de vista de la centralización de los nodos y las barreras que puedan favorecer a que quede el control de la red en unas pocas manos.
Energía / Coste
Bitcoin posee la red de cálculo más potente del planeta. Es mayor que el del SETI, la NSA o el mismísimo Google.
Este cálculo es generado a través del hardware (conocido como los mineros) a través de un proceso que técnicamente se llama «Proof of woork«, y son los encargados de hacer funcionar la blockchain.
No obstante, hacer funcionar esta red tiene un coste energético enorme, y hay quienes vaticinan que, de seguir así, para el 2020 Bitcoin consumirá más energía que el país entero de Dinamarca y que generar un solo bitcoin podría generar más de 4000 kilos de carbono directos a la atmósfera.
Es un poco arriesgado hacer este tipo de predicciones esperando que se hagan realidad, pues la tecnología evoluciona a un ritmo de locura, pero lo que es comprobable es que actualmente Bitcoin genera un impacto eléctrico considerable. Aunque muy lejos del coste e impacto del dinero tradicional.
Escalando Bitcoin
Ahora imaginemos que queremos llevar Bitcoin tal cual está hoy a otro nivel. Imaginemos un escenario donde 7 billones de personas (la tierra ya cuenta con una población ligeramente mayor), hacen dos transacciones con Bitcoin al día.
7000000000 * 2 = 14000000000 transacciones por día 14000000000 / (60*60*24) = 162037 transacciones por segundo 162037 * 0.5 kb = (81018 kb/s * (60*10 minutos)) / 1024 / 1024 = 46gb por bloque aprox. (46GB * 6 * 24) / 1024 = 6.5 TB aprox por día. (6.5TB * 365) / 1024 = 2.32 Petabytes aprox al año.
Imagina una cadena de bloques así. Menuda locura. Es más, ¡Bitcoin moriría!:
- Desaparición de nodos debido a la incapacidad de seguir el ritmo de almacenamiento.
- Centralización de la minería.
- Incapacidad de validar las transacciones de la red.
Conclusión, Bitcoin deja de ser Bitcoin.
¿La solución es aumentar el bloque?
Lo que parece evidente es que no, al menos no de esta forma.
Aunque la opinión está dividida, y hay quienes apuntan a tomar una medida urgente (como aumentar a 2mb el tamaño a modo de medida de contingencia, ver BIP102, Jeff Garzik) para dar margen temporal en el que implementar soluciones más inteligentes, los cálculos anteriores invitan a pensar que hay que hacer las cosas de forma diferente.
Aumentar el bloque parece que es «pan para hoy, hambre para mañana», o como se dice comúnmente: arrastrar el problema.
Si nos falta espacio en casa, ¿por qué antes de hacer una casa más grande no ordenamos lo que tenemos en ella? Esto es lo que algunos desarrolladores defienden, y es en lo que se han centrado muchos desarrolladores, viendo de que forma, con lo que hay, puede primero optimizarse al máximo.
¿Reducir el tiempo de minado?
Esta es otra postura que desarrolladores conocidos del software de Bitcoin, como Sergio Lerner, han propuesto. Consiste en reducir la frecuencia en la que los nuevos bloques se añaden a la cadena. Si en vez de a 10 minutos, se reduce a 5 minutos, se puede meter el doble.
La matemática lo deja claro a primera vista: sería como tener 2mb. No obstante los detractores de esta propuesta afirman que los 10 minutos son clave para mantener una red de consenso descentralizada con la potencia que requiere un sistema global como el que aspira ser Bitcoin.
Al mismo tiempo, en un escenario donde llegan millones de nuevos usuarios, seguiríamos con algo inmantenible por los mismos motivos indicados anteriormente, y es cuestión de tiempo que nos encontremos en el mismo problema que ya sufre la red.
Bitcoin, ¿descanse en paz?
Entonces con todos estos aspectos que limitan Bitcoin ¿cual es la solución?, ¿tiene Bitcoin los días contados?
Para desgracia de los bancos centrales, y algunos malvados en la sombra, seguramente la respuesta es no.
Ahora bien, no vale cualquier solución y debe tener cuestiones importantes en cuenta, y que otros sistemas centralizados como VISA no deben tener , por ejemplo estar protegido frente a ataques DDoS (denegación de servicio).
Recordemos que Bitcoin es abierto, cualquiera puede montar un nodo y cualquiera podría propagar transacciones, cual Eduardo Inda acusaciones sobre Podemos, bombardeando la red de transacciones sin un objetivo real excepto el de molestar y ralentizarla)
5 Propuestas de optimización
Debido a su carácter de código abierto, Bitcoin cuenta con una comunidad de desarrolladores apasionante que crece cada més. Esta es otra de las patas mágicas que tiene Bitcoin, algunos de los mejores cerebros del planeta trabajando de forma totalmente altruista por un bien común. No hay dinero que pague eso.
Esto permite que miles de mentes piensen de forma colaborativa y paralela en soluciones desde diferentes puntos de vista a un mismo problema. Y aunque las decisiones se tomen lentas, las implementaciones no se detienen.
Entre las decenas de propuestas atacando por diferentes aristas del problema, a continuación hemos seleccionado 5 categorías que pretenden colaborar para hacer que el motor de Bitcoin pase de ser un Renault dos caballos a un Ferrari.
1. Lightning Network
Lightning Network es probablemente una de las propuestas más interesantes. Propone una única solución para 3 problemas que actualmente tiene Bitcoin: La escalabilidad, las transacciones instantáneas y los micropagos.
Para ello utiliza lo que se conoce como canales de pagos convertidos en smart contracts que, teóricamente, podrían permitir escalar a Bitcoin a niveles de millones de transacciones instantáneas de verdad y baratas.
Os recomendamos el siguiente artículo edicado a Lightning Network.
2. Bloques dinámicos
Con esta propuesta se busca sustituir el tamaño máximo del bloque, que actualmente es fijo, por un tamaño de bloque máximo controlado dinámicamente que pueda aumentar o disminuir con el cambio de dificultad de minado a través de diversos factores de la red.
De esta forma, si la red lo necesita tamaño extra en un momento dado, el bloque aumentaría, si le sobra disminuiría.
En este artículo lo tratamos más en detalle: bloques dinámicos.
3. Invertible Bloom Lookup Table (IBLTs) y weak blocks
Estas mejoras van dirigidas a optimizar el tiempo que tardan en propagarse los bloques a los mineros.
Dada la preocupación de los mineros en como la escalabilidad puede repercutir en sus ingresos, e incluso la desaparición de estos, estas propuestas prometen ahorrar hasta un 90% en ancho de banda al optimizar la forma en cómo la información se propaga entre los nodos.
Estas funcionalidades se han mencionado en el hoja de ruta de desarrollo de Bitcoin del 2016 (aunque no con una fecha concreta) y se esperan que aparezcan implementadas en cualquier momento.
Puedes ver aquí una presentación del 2015 sobre estas propuestas (en inglés).
No obstante, es interesante ver como Kalle Rosenbaum (que fué parte de la presentación) tiene serias dudas sobre la propuesta de bloques débiles y sus ventajas e intenta desmarcarse de ella tras la aparición pública que hizo en la presentación de 2015 en Hong Kong.
«Siempre he dudado de la propuesta de bloques débiles, a pesar de que hice una presentación conjunta con Rusty Russell sobre esta propuesta (bueno, él hizo la parte de bloques débiles, yo hablé de IBLT, pero compartí el escenario con alguien hablando sobre bloques débiles)»
Kalle Rosenbaum – Ver post completo, publicado meses después de la presentación
4. Cadenas laterales (Sidechains)
Las Sidechain es otro de los conceptos más sonados y que está ligado, de alguna forma, a la escalabilidad de Bitcoin.
Con las sidechains podrían crearse blockchains alternativas para casos de uso concretos, con reglas concretas pero conectadas completamente a la cadena de bloques de Bitcoin, a la cual le permitirían reducir la carga.
Técnicamente no se trata de una mejora en la escalabilidad, pues no ayuda a que Blockchain pueda soportar ningún kb extra, pero en la práctica ofrecen la posibilidad de procesar más transacciones, pues cadenas laterales pueden usarse para casos concretos reduciendo la carga de la principal.
Te recomendamos el capítulo dedicado a explicar más de cerca esto: sidechains.
5. Testigos segregados (Segregated Witness)
Esta es la apuesta más famosa en la línea de «ordenar la casa antes que tirar las paredes para ampliarla».
Buscan transacciones más pequeñas y no bloques más grandes. ¿Cómo se hace esto? Reduciendo, a través de criptografía, la información que va añadida a cada transacción.
Este sistema, que afirma poder doblar (e incluso en algunos casos cuadruplicar) el número de transacciones que entrarían en un solo bloque sin modificar el tamaño de este ya se ha implementado en la red testnet de Bitcoin.
Ha sido finalmente añadida a la última versión del software y en los próximos meses se empezarán a ver los resultados de la medida.
Te recomendamos el artículo de Bit2Me que habla sobre Bitcoin Classic, Unlimited o el fallecido XT, para conocer tres propuestas alternativas a Bitcoin Core (el código fuente de Bitcoin y el programa de referencia por otros desarrolladores) con implementaciones de algunas propuestas sobre escalabilidad que, además, tiene una infografía sobre Segregated Witness.
La unión hace la fuerza
Aunque son muchísimas las propuestas para mejorar la escalabilidad de Bitcoin (de hecho hay un evento que se va realizando por diferentes lugares del planeta donde proponen decenas de ideas y cualquiera que lo desee puede acudir a proponer la suya), con este artículo has podido entender qué es el problema de la escalabilidad y cómo es cuestión de tiempo que Bitcoin no solo lo solvente si no que posiblemente llegue a niveles nunca vistos antes en otros sistemas.
Por supuesto todas estas propuestas podrían llegar a implementarse, y la combinación de todas o algunas de ellas pueden llevar a Bitcoin a niveles de transacciones por segundo más altos que cualquier otro sistema de pago conocido, y todo ello manteniendo la operativa distribuida.
Algunas de las propuestas ya están implementándose, otras requerirán del consenso necesario para salir adelante, pero sin duda el futuro que depara esta tecnología no solo es emocionante sino que, por primera vez, cualquiera puede participar en el diseño del sistema financiero global con más repercusión de la historia.
Esperamos que te haya servido el capítulo para entender qué está ocurriendo con este asunto y a tener las herramientas suficientes para seguir explorando en cada aspecto que permita formar tu opinión.
Si te has quedado con ganas de saber más, te recomendamos encarecidamente la web de Scaling Bitcoin (la web del evento que mencionabamos antes), la cual tiene una colección de información enorme sobre las propuestas de escalabilidad. Dispone de videos de los desarrolladores de la propuesta, explicándola en detalle (con las diapositivas y transcripciones), además de papers académicos y futuros eventos entre otras cosas. Sin duda, el epicentro donde estar al tanto sobre la escalabilidad de Bitcoin.
[Tweet «Escalabilidad de Bitcoin: Bitcoin para 7000 millones de personas»]