Blockchain

El Sharding como solución a la escalabilidad. Parte I: Caso Ethereum

single-image

La promesa de descentralización y registro inmutable hacen de Blockchain posiblemente una de las innovaciones tecnológicas más poderosas de los últimos años. Mientras que plataformas como la de Bitcoin y Ethereum apenas pueden manejar un par de docenas de transacciones por segundo y son hoy en día las aplicaciones más famosas de la cadena de bloques, también es cierto que su problema de escalabilidad ha limitado a muchas empresas FinTech y algunas fuera de este segmento a usarlas como alternativa real de uso para casos cotidianos.

Cuando comparamos la cifra que maneja Ethereum de un máximo de 30 TPS con la que maneja VISA o MasterCard por ejemplo, es obvio que Bitcoin y Ethereum no están procesando las transacciones lo suficientemente rápido como para ser consideradas alternativas viables para las transacciones diarias.

Y esto precisamente lo han comprendido un número importante de empresas tecnológicas que están trabajando para interrumpir los verticales de la industria en que se encuentran con la ayuda de la tecnología Blockchain.

Para que Blockchain sin embargo sea oblicuo, se debe abordar lo concerniente a los problemas de escalabilidad, de latencia y bajo rendimiento. Las cadenas públicas sin permiso tienen nodos que mantienen una versión compartida de la información permitiendo la permanencia de la cadena, es decir, un atacante cibernético no puede destruirlo simplemente sacando un servidor central.

A través de mecanismos de consensos como PoW, estas Blockchain mantienen la seguridad de su plataforma intacta al mantener la santidad del orden de las transacciones. Si bien todos los nodos que tienen la información completa en la cadena de bloques y el algoritmo de consenso PoW hacen que la cadena de bloques sea muy segura y permanente, los principios de diseño también impactan adversamente la escalabilidad y el rendimiento de las transacciones. Aquí es donde entra en escena el SHARDING, una posible solución a los problemas de escalabilidad, latencia y rendimiento de la transacción.

El sharding es un concepto que se usa ampliamente en base de datos para hacerlas más eficientes. Un fragmento es una parte horizontal de una base de datos, con cada fragmento almacenado en una instancia de servidor independiente, que permite de esta manera distribuir la carga y hacer que la base de datos sea más eficiente.

A medida que se están implementando blockchains en un número creciente de programas pilotos para todo, desde transacciones fronterizas hasta la gestión de la cadena de suministro, un problema persistente sigue siendo la falta de escalabilidad.

Sharding es uno de varios métodos populares que están siendo explorado por desarrolladores para incrementar la capacidad transaccional. En pocas palabras, sharding es una forma de partición para distribuir la carga de trabajo de almacenamiento y computación en una red P2P de modo que cada nodo no sera responsable de procesar la carga transaccional de toda la red. En su lugar, cada nodo solo mantiene información relacionada con su partición o fragmento.

La descentralización se logra gracias a que los nodos pueden compartir entre sí la información contenida en un fragmento, manteniendo segura la red por que todos aún pueden ver todas las entradas del libro mayor.

Sharding en Ethereum

Sharding es un concepto que se originó con la partición horizontal de la base de datos y está siendo adoptado por Ethereum como solución neuralgica a su problema de escalabilidad. Adicional a su solución de ‘capa 2’, el sharding está sobre la mesa para Ethereum 2.0.

En Ethereum después de activar el sharding, el ‘estado’ de la cadena de bloques se divide en fragmentos o particiones. Cada cuenta de usuario única equivale a un fragmento, y las cuentas solo pueden realizar transacciones con otras cuentas en el mismo fragmento. Esto permite que muchas transacciones paralelas ocurran al mismo tiempo. Un protocolo separado elegido por Ethereum permite la comunicación entre fragmentos.

Además de abordar la escalabilidad, algunos sostiene que la fragmentación también mantiene la seguridad nativa de una cadena de bloques porque conserva ‘la mayoría de las propiedades de descentralización y seguridad deseadas de una cadena de bloques’, como escribió Vitalik Buterin en su blog, el creado de Ethereum.

Sin embargo, el sharding enfrenta desafíos y uno de los primeros es lograr evitar la corrupción de validadores que conlleve a comprometer los fragmentos y por lo tanto la integridad de la cadena de bloques nativa. Casi todos los diseños de fragmentos hoy en día se basan en alguna fuente de aleatoriedad para asignar validadores a los fragmentos.

La aleatoriedad en Blockchain en sí misma es un tema muy desafiante y tanto la asignación de aleatoriedad como la de validación requieren un cálculo que no sea específico de ningún shard en particular.

En el modelo de la red Ethereum, por ejemplo, los nodos deben asignarse al azar a un fragmento, y en momentos aleatorios, se reasignan a otro shard elegido al azar. De esta manera a un atacante se le hace más difícil predecir, o forzar, a qué fragmento se asigna su nodo malicioso.

En los sistemas PoS, los nodos en la cadena de bloques realizan tes tareas importantes: no solo 1) procesan transacciones, sino que también 2) retransmiten transacciones validadas y bloques completados a otros nodos y 3) almacenan el estado y el historial de todo el libro mayor de la red.

Lo anterior supone un requisito creciente en los nodos que operan en la red:

  1. La necesidad de procesar transacciones requiere más poder de cómputo con el mayor número de transacciones que se procesan.
  2. La necesidad de retransmitir transacciones y bloques requiere más ancho de banda de la red con la mayor cantidad de transacciones que se retransmiten.
  3. La necesidad de almacenar datos requiere más almacenamiento a medida que el estado de la red crece. Vale destacar, que este requisito aumenta incluso si la tasa de transacción permanece constante.

De la lista anterior puede parecer que el requisito de almacenamiento sería el más urgente, ya que es el único que aumenta con el tiempo incluso si la cantidad de transacciones por segundo no cambia, pero en la práctica, el requisito más urgente hoy en día es el poder de cómputo.

De allí que el sharding es un requisito para la escalabilidad e inclusive para la fragmentación de almacenamiento y de la red como una fragmentación estatal. A este sharding, supone otro reto y un problema a resolver: la comunicación entre los fragmentos.

Incluso hoy en día cuándo no se dispone de fragmentación, existe una gran demanda de interoperatividad entre varias cadenas de bloques para garantizar las transacciones entre cadenas o fragmentos, sea sincrónica o asincrónica como proponen la mayoría de las soluciones actuales.

La correcta rotación de validadores y un consenso tolerante a fallas bizantinas, evitan los forks, transiciones de estado inválidas y ataques maliciosos. Evitar la corrupción de fragmentos es imprescindible en las plataformas Blockchain que utilizan la tecnología del sharding como solución para su escalabilidad.

Asimismo y no menos importante, estas plataformas deben garantizar la disponibilidad de datos mediante nodos completos y nodos ligeros que permitan la integridad de la cadena y eviten la vinculación errónea entre posibles fragmentos corrompidos por nodos maliciosos.

La validez de los datos y la disponibilidad de los mismos, siguen siendo dos problemas al diseñar protocolos seguros que todavía no tienen una solución satisfactoria. Veamos en líneas generales algunos ejemplos de plataformas Blockchain que abordan con éxito éstos y otros problemas del sharding.

Deja un comentario

Loading data ...
Comparison
View chart compare
View table compare