Comprendiendo la escalabilidad de Ethereum

Maria Teresa Nieto
5 min readFeb 19, 2019

--

Photo by Simone Hutsch on Unsplash

Imagínate que es un día de diario, vas a tu supermercado de confianza a hacer la compra y a la hora de pagar en vez de euros utilizas una criptomoneda, como por ejemplo ethers. Imagínate de nuevo que, de repente, la cajera te dice que no te puedes llevar tu compra porque han pasado 20 minutos y no se ha verificado la transferencia que te permite pagarla, ¿qué haces?

Uno de los problemas que han tenido siempre las blockchain públicas es la escalabilidad. La escalabilidad es un término utilizado por los “techies” para referirnos a la propiedad que tienen los sistemas de poder aumentar su capacidad de trabajo sin comprometer el funcionamiento básico del mismo.

Esto, si lo traducimos al mundo del Blockchain significa algo parecido a cómo podemos hacer más transacciones sin comprometer la funcionalidad de la red.

Un ejemplo que me gusta contar siempre para explicar los problemas de escalabilidad de las Blockchain públicas es contando la historia de los CryptoKitties.

CryptoKitty

Este juego, implementado en forma de Dapp (aplicación descentralizada). Permite comprar y vender gatitos digitales utilizando la moneda de Ethereum: el ether.

Tanta fue la fiebre por este juego, que en diciembre de 2017 la red pública de Ethereum quedó totalmente colapsada porque no era capaz de procesar todas las transacciones que le llegaban.

Os podréis preguntar, ¿por qué no era capaz de procesarlas? La respuesta es sencilla, Ethereum de media procesa 12 transacciones por segundo, imaginad qué ocurre si llegan 1000 en un segundo, colapsa y… ¿por qué ocurre esto? Si hacemos cálculos, en el caso de una actividad de 1000 transacciones por segundo, 988 transacciones por segundo se quedan a la espera de ser procesadas, pasado un minuto solo se han procesado 720 y dejado de procesar 59280… ¡un 98,8% del tráfico!.

Llegados a este punto uno se puede preguntar, ¿para qué necesito tantas transacciones por segundo? Si lo comparamos con productos que se utilizan día a día, VISA es capaz de procesar 45000.

Además, si volvemos al supuesto del inicio, no te has podido llevar la compra porque la transacción de pago no se ha procesado en tus veinte minutos de espera, y no se sabe cuánto tiempo va a tardar a muy corto plazo.

Por esta razón, las llamadas Blockchain públicas no son muy aconsejables a la hora de tener aplicaciones en el mercado dado el estado de inmadurez de la tecnología hasta la fecha de hoy.

Sin embargo, esto no quiere decir que la tecnología ya no valga para nada, quede descartada y, finalmente, abandonada en el olvido. De hecho, existen tecnologías para crear redes privadas blockchain que ya son capaces de procesar miles de transacciones por segundo.

Y no sólo podemos pensar en soluciones realizadas únicamente con redes privadas, también hay soluciones híbridas. Éstas en concreto consisten en realizar las transacciones en una blockchain privada y cada cierto tiempo volcar un paquete de transacciones en la blockchain pública.

Pero también existen soluciones para aumentar el rendimiento en las redes públicas. En este artículo veremos los mecanismos que se están analizando para poder solucionar el problema de escalabilidad de la blockchain pública Ethereum. En la actualidad se han propuesto tres soluciones: Plasma, Sharding y Casper.

Plasma es una nueva solución introducida por Vitalik Buterin (uno de los creadores de la plataforma) y su objetivo es simplemente llegar a conseguir más transacciones por segundo. Plasma es una técnica, que podríamos llamar de desborde, para poder realizar las transacciones fuera de la cadena principal confiando en la tecnología subyacente de Ethereum y en su seguridad.

La idea es la siguiente: se crean una serie de smart contracts que funcionarían como raíz (o una especie de bloque génesis) de una serie de cadenas de bloques hijas. Este smart contract, desplegado en la cadena de Ethereum que conocemos, contendría las reglas básicas de las sub-cadenas, registraría sus hashes y permitiría a los usuarios poder realizar transacciones entre la cadena principal y las hijas.

Por otro lado, cabe destacar que cada nueva cadena creada podría tener su propio algoritmo de consenso, independiente de la cadena principal y que podría ser mucho más ligero y eficiente a la hora de procesar las transacciones.

Con este nuevo mecanismo, se podría paralelizar una parte de la validación de las transacciones ya que se haría parte del procesamiento en las cadenas hijas y cada cierto tiempo se volcaría en la cadena principal.

En cuanto a Sharding, se trata de un concepto mucho más antiguo que la tecnología blockchain utilizado en el mundo de las bases de datos. Consiste en dividir una base de datos en fragmentos que al unirse conforman la base de datos principal…y, ¿qué es blockchain?, ¡una base de datos distribuida!

Por tanto, extrapolando este concepto a Ethereum, la red de nodos se fragmentaría en subconjuntos y, a cada subconjunto, se le asignaría un grupo de transacciones determinado. De esta manera ya no existiría el problema de que todos los nodos tuvieran que procesar todas las transacciones que ocurren en la red.

Os podréis preguntar, ¿qué pasa si un nodo quiere hacer una transacción que depende de otro fragmento de red al que no está conectado? La respuesta es fácil, este mecanismo habilita un protocolo de comunicación entre los distintos fragmentos que permite que cualquier transacción pueda ser procesada adecuadamente por el segmento al que está asignada.

Por último, Casper es un algoritmo de consenso (y no el fantasma que hemos conocido todos alguna vez en nuestra infancia). Volviendo al principio del artículo, el problema que tienen las redes blockchain públicas viene en gran medida por el algoritmo de consenso. Este algoritmo de consenso llamado Proof of Work, es muy lento y costoso energéticamente debido a que confía en los nodos que ponen mayor capacidad de computación en la red para validar una transacción.

Por esta razón se ha propuesto Casper como solución al problema de escalabilidad generado por el algoritmo de consenso. En concreto, Casper se presenta como una implementación del algoritmo Proof of Stake (PoS).

Este algoritmo funciona de la siguiente manera:

1. Los validadores “juegan” una parte de sus ether.

2. Cuando llega un bloque a validar, lo validan y apuestan por él para poder agregarlo a la cadena de bloques, como si fuera una timba de póker y apostásemos por nuestra mano.

3. Si el bloque se agrega, los validadores recuperan el ether apostado más una recompensa proporcional.

4. En el caso de un ataque malicioso, si se apuesta por un bloque que no es válido el nodo quedaría fuera de juego y perdería sus ether jugados.

Llegados a este punto, ya hemos visto las tres prometedoras alternativas que hay para mejorar la escalabilidad de la red de Ethereum, sin embargo, ninguna ha sido aún aplicada, pero tras haberlas analizado podemos concluir que el mundo blockchain está evolucionando para superar sus propias restricciones y despejar las dudas que pudieran arruinarle un buen futuro. ¡Pero el cambio de consenso se aplicará en breves!

¡Esperemos que el año 2019 traiga más soluciones al ecosistema Blockchain!

--

--

Maria Teresa Nieto

Passionate about technology and decentralisation | Blockchain Technological Specialist @ Telefónica