- El futuro de la serie Blockchain
- Sí, blockchain tiene un problema de escalabilidad. Esto es lo que es, y esto es lo que la gente está haciendo para resolverlo.
- Aumentar el tamaño de los bloques o disminuir el tiempo de generación de los mismos no solucionará el problema: una mirada al TPS de Non-SegWit
- La aparición de SegWit
- Enfoques existentes y futuros para resolver la escalabilidad
- Pagos por lotes en una sola transacción
El futuro de la serie Blockchain
Sí, blockchain tiene un problema de escalabilidad. Esto es lo que es, y esto es lo que la gente está haciendo para resolverlo.
La batalla por una solución escalable es la carrera lunar del blockchain. Bitcoin procesa 4,6 transacciones por segundo. Visa realiza unas 1.700 transacciones por segundo de media (según un cálculo derivado de la afirmación oficial de más de 150 millones de transacciones al día). El potencial de adopción está ahí, pero se ve atascado actualmente por la escalabilidad.
Un estudio publicado por Tata Communications en 2018 mostró que el 44% de las organizaciones en su encuesta están adoptando blockchain, pero también alude a los problemas universales que surgen al desplegar nuevas tecnologías. Desde un nivel arquitectónico, el problema no resuelto de la escalabilidad está emergiendo como un cuello de botella para la adopción de blockchain y sus aplicaciones prácticas.
Como dice Deloitte Insights, «los sistemas basados en blockchain son comparativamente lentos. La lentitud de las transacciones de blockchain es una gran preocupación para las empresas que dependen de sistemas de procesamiento de transacciones heredados de alto rendimiento.» El mundo recibió una muestra de los problemas de escalabilidad en 2017 y 2018: graves retrasos en las transferencias y altas tarifas en la red de Bitcoin, y la notoria aplicación Cryptokitties que congestionó la red de blockchain de Ethereum (una red de la que dependen miles de aplicaciones descentralizadas).
Para escalar una blockchain, no basta con aumentar el tamaño del bloque o disminuir el tiempo de bloque reduciendo la complejidad del hash. Con cualquiera de los dos métodos, la capacidad de escalar alcanza un techo antes de poder llegar a las transacciones necesarias para competir con empresas como Visa, que «maneja una media de 150 millones de transacciones cada día» o unas 1.736 transacciones por segundo (TPS).
En comparación, la velocidad de las transacciones de Bitcoin es tremendamente inferior. Actualmente, el tamaño de los bloques está fijado en 1MB (1.048.576 bytes – aunque a través de SegWit, ese tamaño puede escalar hasta unos teóricos 4MB) y el tamaño medio de las transacciones es de 380,04 bytes (asumiendo que cada transacción es de un monedero a x otros monederos – por lo que una transacción por lotes contaría como una transacción. Hablaré más sobre las transacciones por lotes más adelante y por qué lo etiqueté de esta manera) y parece estar en aumento.Por lo tanto, la cantidad promedio de transacciones que pueden caber en uno de los bloques de Bitcoin, actualmente, se calcula como:
Escenarios 1 & 2
Para pasar de 4,4 a los 1.736 de Visa, Bitcoin necesitaría escalar su TPS en 377,5x. En otras palabras, habría que aumentar B de 1MB a 377,5MB (Tabla 1, S1) o reducir TB de diez minutos a 1,6 segundos (Tabla 1, S2). Un tercer escenario sería ajustar ambos. Cualquiera de los tres escenarios es inalcanzable en la blockchain debido a un tercer factor no controlado: el tiempo de retransmisión (TR) necesario para transmitir un nuevo bloque a cada nodo de la red Bitcoin.
Actualmente, se estima que hay 10.198 nodos en la red Bitcoin. Transmitir un 1MB (1.048.576 bytes) a través de la red peer-to-peer lleva cierto tiempo. El Instituto de Tecnología de Karlsruhe mide el tiempo de propagación de bloques de Bitcoin, y el tiempo medio de propagación de bloques reportado el 17 de enero de 2019 fue de 13.989,42 milisegundos o aproximadamente 14 segundos para propagarse al 99% de la red. El TB no puede caer por debajo del 99% de TR (TR99)=14 porque si lo hace, entonces se generaría un nuevo bloque antes de que un bloque antiguo sea recibido por la mayoría de los bloques de la red. Cuanto más se acerque TB a TR99, más problemas surgen con las bifurcaciones, los bloques huérfanos y las reorganizaciones de la cadena, y (en casos extremos) las vulnerabilidades de seguridad como los ataques de doble gasto.
Escenario 3
Incluso si TB = TR99 = 14, con un tamaño de bloque de 1MB, la blockchain de Bitcoin sólo podría aumentar su velocidad a 188 TPS (Tabla 1, S3). Aunque esa escala representa un aumento de 188 veces en TPS, no se acerca ni de lejos a los 1.736 TPS que Visa realiza a diario; además, se superpone a los riesgos antes mencionados. La otra variable, B, puede reajustarse, pero no sin afectar a TR, lo que afectaría a TR99 y, por tanto, al límite inferior de TB.
Escenario 4
Por ejemplo, al duplicar el tamaño de B (de 1MB a 2MB), el tiempo que tarda cada nodo de la red en descargar un nuevo bloque, TR, también aumentaría, aproximadamente 2 veces; así, a 2MB, TR99 = 28s, por lo que el límite inferior de TB también sería 28s. Aumentando B en cualquier factor, y posteriormente aumentando TR en el mismo factor, el TPS neto seguiría siendo el mismo – en este caso, alrededor de 188 TPS (Tabla 1, S4). Una solución para reducir el impacto de B de TR es aumentar el ancho de banda entre todos los nodos de la red Bitcoin. Desgraciadamente, al ser una red P2P, esa responsabilidad recae en el regazo de cada peer de la red.
La aparición de SegWit
En 2017, entró en vigor Segregated Witness (SegWit) en todos los nodos de Bitcoin. Nota – No voy a entrar en todos los detalles de SegWit, pero si quieres conocer su historia y su papel en la aparición de la bifurcación dura de Bitcoin Cash, echa un vistazo a este artículo:
Hace lo que el nombre parece que hace: segregar la parte del testigo de cada transacción de los datos de la transacción real. Se produjo como una bifurcación suave, por lo que se instituyó sin ningún efecto importante en la red blockchain existente y el código. Debido a la forma en que se ponderaría la transacción del testigo, los nuevos bloques de Bitcoin habilitados para SegWit podrían aumentar teóricamente hasta 4MB sin cambiar el tamaño del bloque de Bitcoin.
Digo teóricamente porque hay factores adicionales que contribuyen al tamaño final del bloque SegWit. De hecho, si compruebas un explorador de blockchain de Bitcoin, verás que (al menos en el momento de publicar este artículo) el tamaño medio de los bloques sigue siendo inferior a 1MB.
Pero eso no quiere decir que los bloques no puedan pasar de 1MB. A principios de 2018, fuimos testigos de uno de los mayores (probablemente todavía el mayor) tamaños de bloque generados, llegando a pesar alrededor de 2,1MB. La bifurcación suave de SegWit ha ayudado a mejorar el tamaño de los bloques sin cambios en el código del núcleo, pero sigue sin mejorar el TPS de manera escalable.
Al examinar los cuatro escenarios anteriores bajo un consenso de prueba de trabajo, vimos que simplemente aumentar el tamaño de los bloques o reducir la complejidad de la minería solo podría llevarnos hasta cierto punto. Incluso una combinación de esto sería limitada debido al tiempo de propagación de las transacciones. Tratar de minar nuevos bloques más rápido de lo que se pueden propagar los bloques antiguos provocaría algunos problemas de seguridad bastante importantes. SegWit ha ayudado a aliviar algunos de los problemas de TPS mientras tanto, pero todavía se necesita una solución más escalable para lograr un TPS similar al de Visa.
Parece que mover cualquier pieza en su lugar para aumentar el TPS mueve otra pieza fuera de su lugar en algún otro lugar del rompecabezas de blockchain; independientemente, hay proyectos y startups que trabajan para lograr las respuestas de TPS necesarias para impulsar la adopción de blockchain en una etapa escalable.
Enfoques existentes y futuros para resolver la escalabilidad
Al buscar la respuesta potencial al problema de la escalabilidad, surgen otras múltiples cuestiones. Por ejemplo, si la respuesta sólo es aplicable para una blockchain en particular, entonces se basa en la suposición de que esa blockchain en particular será la que necesite esa escalabilidad en el futuro; de lo contrario, el esfuerzo es indebido o está fuera de lugar. Otra consideración es entender cuál puede ser la compensación. Ahora mismo, todas las soluciones disponibles vienen con limitaciones.
Pagos por lotes en una sola transacción
Pros: Reduce el tamaño de un registro de transacciones al poner múltiples transacciones en una sola, lo que permite más transacciones en general por bloque, lo que puede aumentar el TPS hasta cierto punto.
Contra: No se pueden agrupar las transacciones de múltiples carteras; arriesga la privacidad
Los pagos por lotes han sido una característica de Bitcoin (y por lo tanto, de las bifurcaciones de Bitcoin, incluyendo Digibyte, Dogecoin, Bitcoin Cash, etc.) a través del RPC sendmany. Los intercambios ya lo hacen, y puedes verlo cuando intentas buscar tu ID de transacción en un explorador de blockchain. Lo que puedes acabar viendo es un monedero enviando a varios monederos diferentes. En ese caso, es una transacción por lotes.
La ventaja de esto es que ponerlo en una sola transacción significa que 1) sólo tienes que pagar una tarifa de transacción, y 2) no tienes que escribir una transacción completa que es, como he descrito anteriormente, aproximadamente 380 bytes, para cada transacción. De hecho, de los 380 bytes que puede tener la transacción, sólo 34 bytes podrían ser la información de la transacción.