¿Qué es el Sharding en Blockchain?

sharding principal
Blockchain

¿Qué es el Sharding en Blockchain?

Aunque la tecnología blockchain se conoce por facilitar nuestro día a día, no siempre es tan lineal. En momentos donde el mercado está cambiante, hay lanzamientos o algún evento importante, puede que atravieses retrasos o altas comisiones. Por esto se implementó el sharding en la blockchain.

Imaginemos una carretera llena de coches que avanzan poco a poco, como un atasco. El sharding lo que hace es dividir esa carretera en múltiples carriles paralelos que permiten la entrada y avance de nuevos coches (que en este ejemplo serían transacciones). Este ejemplo, llevado al ecosistema cripto, se traduce en fragmentar la blockchain en partes más pequeñas. A cada trozo se le llama “shard”, de ahí el “sharding”. Cada shard tiene la capacidad de procesar transacciones de forma independiente.

Esta técnica mejora las redes a nivel técnico, pero también permite aumentar la escalabilidad y distribuir mejor la carga de trabajo. Por ende, se aceleran las transacciones y reducen costos, haciendo la blockchain más eficiente.

Qué es y principios básicos del sharding

Tal y como hemos mencionado, el sharding es una técnica de escalabilidad que se basa en dividir la blockchain en pedazos más pequeños llamados shards. Cada shard funciona como una blockchain independiente, procesando su propio subconjunto de transacciones y contratos inteligentes. Todo esto sucede de forma paralela al resto de la red. Esta fragmentación es lo que permite gestionar un mayor volumen de operaciones al mismo tiempo. A raíz de ello mejora notablemente la velocidad y la eficiencia del sistema.

Este concepto no pertenece solo al ecosistema cripto. Ya se conocía en las bases de datos tradicionales. En estos casos se utiliza para repartir la carga de trabajo y optimizar el rendimiento de grandes sistemas de información. 

El sharding adaptado al entorno blockchain, lo que hace es distribuir tanto el procesamiento como el almacenamiento de datos entre diferentes grupos de nodos. Cada nodo se encarga de gestionar solo la información correspondiente a su shard. Así, no hace falta que todos los nodos validen todas las transacciones de la red. Con este sistema reducen carga y es más fácil escalar el número de operaciones sin perder la descentralización.

Sharding aplicado a la blockchain

Implementar el sharding en la blockchain significa trabajar con una arquitectura compleja para distribuir la carga y aumentar la capacidad de procesamiento de la red. Para ello es necesario definir cómo se dividirán los datos y las transacciones, así como el papel que desempeñan los nodos en cada fragmento y cómo se valida la información.

Fragmentación de datos y transacciones

El primer paso en el diseño de sharding es establecer cómo se repartirán las transacciones entre los distintos shards. Esto se hace con algoritmos que asignan eficientemente cada operación a un shard específico. Así, cada fragmento procesará solo una parte del total de transacciones. 

Con este sistema la capacidad de la red puede aumentar de forma casi lineal según se vayan añadiendo más shards. Esto resulta especialmente útil en blockchains con alta demanda y congestión.

El papel de los nodos en cada shard

En el sharding los nodos se organizan en grupos. Cada grupo se encarga de mantener y validar la información de su shard correspondiente. Los nodos de un shard solo almacenarán y procesarán los datos de ese fragmento. Esto reduce los requisitos de hardware y facilita la participación de más usuarios en la red. Por otro lado, también se necesitan mecanismos de coordinación y consenso orientados a garantizar la seguridad y la coherencia entre los diferentes shards.

Procesamiento paralelo y validación independiente

Como ya sabemos, gracias a la fragmentación, cada shard puede validar y añadir transacciones de forma independiente y simultánea. Cada shard funciona como una pequeña red autónoma que procesa y valida su propio conjunto de transacciones. Esto significa que, en lugar de depender de un único canal de validación para todas las operaciones de la red, múltiples canales trabajan a la vez.

Cuando una transacción entra en la red, esta es asignada a un shard específico según reglas predefinidas. Los nodos de ese shard serán los únicos responsables de verificar y registrar la transacción. Esto permite que otros shards hagan lo mismo con sus propias operaciones, sin interferencias entre sí. Mientras un shard valida una transferencia de tokens, otro puede estar ejecutando un contrato inteligente y otro procesando una operación NFT. Todo esto pasa de manera independiente y en paralelo.

Cabe destacar que, la validación independiente implica que cada shard mantiene su propio registro del estado de cuentas, saldos y contratos. Además, los nodos dentro de ese fragmento llegan a consenso sobre las transacciones que les corresponden sin necesitar la aprobación de toda la red. Esta autonomía agiliza la confirmación de operaciones y reduce la latencia, ya que los procesos no se quedan atascados esperando la validación de toda la red.

Ventajas y desafíos del sharding para la escalabilidad y descentralización

Aunque el sharding surgió para facilitar numerosos procesos, tiene tanto soluciones como desafíos que deben tenerse en cuenta. Por ello es necesario conocer las ventajas y desventajas de implementar el sharding en la blockchain.

Ventajas del sharding

  • Transacciones más rápidas: Al permitir que los shards procesen transacciones en paralelo, la red puede gestionar un mayor volumen de operaciones por segundo.
  • Menos necesidad de hardware: Cada nodo solo necesita almacenar y procesar solo la información de su propio fragmento, no toda la blockchain. Así se disminuye la demanda de recursos.
  • Menos congestión y comisiones: El poder procesar más transacciones simultáneamente reduce la congestión en la red y hace que las comisiones sean más bajas, beneficiando tanto a usuarios como a desarrolladores.
  • Escalabilidad eficiente: La incorporación de nuevos nodos puede distribuirse entre los distintos fragmentos sin sobrecargar el sistema general. Esto permite escalar la red.

Desventajas del sharding

  • Posibles ataques a fragmentos individuales: Cuando la red se divide en shards, cada fragmento se vuelve potencialmente más vulnerable a ataques. Un ejemplo de ello es el ataque del 1%. En este caso, un actor malicioso podría controlar un shard con menos recursos que los necesarios para atacar toda la red.
  • Equilibrio de carga y recursos: Una distribución desigual de transacciones o nodos entre los shards puede provocar cuellos de botella o fragmentos sobrecargados. Esto afectaría a la estabilidad y el rendimiento de la red.
  • Complejidad en las transacciones entre shards: Otro inconveniente sería que las operaciones entre varios fragmentos necesitan mecanismos de sincronización y validación. Esto es necesario para evitar problemas como el doble gasto o inconsistencias en el estado de la red.

Proyectos que implementan sharding

Esta solución de escalabilidad se ha convertido en una herramienta clave desde su primera implementación en la tecnología blockchain. Dos de sus principales implementaciones y de las que hablaremos a continuación son Ethereum 2.0 y MultiversX (antes llamado Elrond). En ambos casos se aplicó el sharding con la idea de solucionar los cuellos de botella en el procesamiento de transacciones.

Ethereum 2.0 y el sharding como motor de escalabilidad

Ethereum, la segunda blockchain más importante del mundo, desde siempre ha tenido problemas de congestión y altas comisiones durante picos de demanda. A modo de solución, la hoja de ruta de Ethereum 2.0 incorporó el sharding. 

En este sistema se divide la red en 64 shards, cada uno con la capacidad de procesar transacciones y contratos inteligentes de forma independiente y simultánea. De este modo se multiplica la capacidad total de la red.

MultiversX: sharding adaptativo y elasticidad en tiempo real

MultiversX, que antes se llamaba Elrond, es otro proyecto pionero en la aplicación de sharding. La diferencia es que en este caso el enfoque es un poco más dinámico. Su arquitectura utiliza algo llamado “Adaptive State Sharding”. Esto se trata de un sistema que permite ajustar el número de shards dependiendo de la demanda de la red. Cuando el tráfico aumenta, el sistema puede crear nuevos shards para repartir la carga. En cambio, si disminuye, puede fusionar shards para optimizar los recursos.

En este proyecto la red se divide en varios shards de transacciones y una metachain central. Esta metachain coordina y valida el trabajo de los shards. Un aspecto a destacar es el reagrupamiento periódico de nodos entre shards. Esto aumenta la seguridad y dificulta la colusión entre validadores. Con este diseño, MultiversX puede procesar hasta 12,500 transacciones por segundo. Todo ello con bajas comisiones y una alta resistencia a ataques.