¿Qué es el sharding y cómo funciona?
Inicio
Artículos
¿Qué es el sharding y cómo funciona?

¿Qué es el sharding y cómo funciona?

Intermedio
Publicación: Dec 4, 2023Actualización: Jan 11, 2024
9m

Resumen

  • El sharding divide una blockchain en "shards", o fragmentos más pequeños, para abordar el problema de la escalabilidad asociado con las redes de Capa 1.

  • El sharding mejora la velocidad de las transacciones, minimiza los costos de procesamiento y almacenamiento, y mejora el rendimiento de la red.

  • El sharding presenta posibles inconvenientes, como los problemas de seguridad de la red y la complejidad de las transacciones entre shards.

Introducción

La tecnología blockchain ha introducido un potencial sin precedentes en materia de descentralización, transparencia y seguridad, pero se enfrenta a un desafío importante: la escalabilidad. La escalabilidad es uno de los puntos del "trilema de la blockchain", que también incluye la seguridad y la descentralización. Lograr los tres simultáneamente es un problema persistente en el ámbito de la blockchain. Aquí es donde entran en juego soluciones estratégicas como el "sharding".

¿Qué es el sharding?

El sharding es un concepto tomado de la gestión tradicional de bases de datos. Se refiere al proceso de dividir una base de datos más grande en partes más pequeñas y manejables, llamadas shards. Su aplicación en el ámbito de las blockchains tiene como objetivo mejorar la escalabilidad, manteniendo al mismo tiempo el principio de descentralización. En esencia, el sharding se produce cuando una red blockchain se divide en partes más pequeñas conocidas como shards, cada una capaz de procesar transacciones y contratos inteligentes en paralelo.

¿Cómo funciona el sharding?

Comprender cómo se ejecuta el sharding dentro de una red blockchain requiere comprender cómo se suelen almacenar y procesar los datos de las blockchains. Las maneras de procesar los datos son varias. Vamos a examinar el procesamiento secuencial y el paralelo.

Normalmente, cada nodo de la blockchain es responsable de gestionar todo el volumen de transacciones dentro de la red. Este tipo de procesamiento de datos se conoce comúnmente como procesamiento secuencial. Esto implica que cada nodo debe mantener y almacenar toda la información crítica, como los saldos de las cuentas y el historial de transacciones. En esencia, cada nodo debe procesar todas las operaciones, datos y transacciones de la red.

Aunque este modelo refuerza la seguridad de la blockchain al registrar cada transacción en todos los nodos, ralentiza drásticamente el procesamiento de datos. Aquí es donde entra en juego el procesamiento paralelo de datos, ya que permite ejecutar múltiples operaciones en simultáneo.

El sharding puede ser una potente solución a este problema, ya que divide o "hace particiones" de la carga de trabajo transaccional en toda la red blockchain. Esto significa que no es necesario que todos los nodos gestionen o procesen la totalidad de la carga de la blockchain.

En su lugar, el sharding segrega la carga de trabajo a través de la partición horizontal. En este proceso, los datos se dividen en subconjuntos horizontales, y cada shard actúa como una base de datos independiente capaz de procesar transacciones por separado de los demás. 

Partición horizontal vs. partición vertical

La partición horizontal y la partición vertical son dos enfoques clave para el escalado de bases de datos. Si bien ambos están diseñados para administrar grandes conjuntos de datos de manera más efectiva, funcionan de maneras fundamentalmente diferentes. El sharding es un método común de implementación de particiones horizontales.

En la partición horizontal, los datos se dividen en filas y se distribuyen en diferentes nodos (o bases de datos), cada uno de los cuales contiene un subconjunto de los datos. Cada fila de una tabla es una entidad única, por lo que separarlas no conduce a ninguna pérdida de integridad de los datos. Un ejemplo destacado de partición horizontal en uso es en la distribución de redes blockchain, como Ethereum y Bitcoin.

En la partición vertical, los datos se dividen en columnas, en lugar de filas. Cada división en particiones verticales contiene un subconjunto de datos para cada entidad, o todo el conjunto de datos, pero solo para un determinado conjunto de atributos. Por ejemplo, considera una tabla de clientes con columnas como Nombre, Estado, Descripción y Foto. En un escenario de partición vertical, el "Nombre" y "Estado" pueden mantenerse en una tabla, y "Descripción" y "Foto" en otra.

¿Por qué se prefiere la partición horizontal?

En general, en las redes blockchain se favorece la partición horizontal sobre la vertical por tres razones clave: escalabilidad, descentralización y seguridad.

Escalabilidad: el sharding proporciona una solución al dividir los datos en "shards" más pequeños y manejables. Cada partición puede funcionar de forma independiente, lo que permite procesar más transacciones simultáneamente y mejorar la velocidad y la eficiencia de la red. En cambio, con la partición vertical, la distribución de las columnas en diferentes bases de datos podría generar una mayor complejidad para la recuperación de una transacción completa o información de bloque y podría limitar la escalabilidad.

Descentralización: de acuerdo con el espíritu fundamental de la blockchain, la partición horizontal apoya la descentralización. Cuando los nodos solo tienen que procesar una parte de los datos totales (un shard), esto permite que más nodos participen en la red, ya que se reducen las cargas computacionales y de almacenamiento. La partición vertical, comparativamente, restringiría esto ya que cada nodo necesitaría acceso a todas las particiones (todas las columnas de datos) para comprender y verificar los datos completos del bloque.

Seguridad e integridad de los datos: la partición horizontal mantiene la integridad de los datos porque cada shard (o partición) contiene datos completos de la transacción, lo que garantiza que cada nodo tenga una copia completa y precisa de su parte de la blockchain. En la partición vertical, esencialmente se estarían dividiendo los datos de un bloque en diferentes nodos, lo que dificultaría garantizar la integridad y seguridad de los datos, un aspecto primordial de las redes blockchain.

¿Cuáles son los beneficios del sharding?

Profundicemos en los beneficios potenciales que el sharding aporta a la tecnología blockchain:

Mayor velocidad de transacción: el sharding facilita el procesamiento paralelo de las transacciones. En lugar de procesar las transacciones una por una de forma secuencial, el sharding permite que las transacciones se procesen simultáneamente, pero en diferentes shards. Cada shard funciona de forma independiente, lo que aumenta significativamente la velocidad de la transacción. Esto no solo agiliza la velocidad de las transacciones, sino que también significa que toda la red puede gestionar más usuarios, lo que fomenta la adopción masiva.

Un ejemplo de una red blockchain existente que utiliza shards para abordar la escalabilidad es Ziliqa. El mecanismo de sharding de Ziliqa le permite procesar miles de transacciones por segundo.

Costos de procesamiento y almacenamiento minimizados: el diseño convencional de blockchain obliga a cada nodo a almacenar todas las transacciones, lo que aumenta las demandas de hardware a medida que la blockchain crece. Pero con el sharding, cada nodo es responsable de procesar y almacenar solo una fracción de los datos de toda la red, lo que disminuye los recursos necesarios para que un nodo participe en la red.

De esta manera, más participantes pueden unirse como validadores, lo que mejora la descentralización de la red sin incurrir en costos prohibitivos. Esto mitiga los problemas en los que solo las entidades con recursos informáticos costosos y de alta gama podrían participar de manera realista en el proceso, manteniendo así la naturaleza democratizada de las redes blockchain.

Rendimiento de red mejorado: el sharding puede ayudar a mejorar el rendimiento y la capacidad general de la red. En las blockchains tradicionales, a medida que más nodos participan en la red, paradójicamente el rendimiento disminuye debido a la necesidad de una mayor comunicación de datos y sincronización entre nodos.

Sin embargo, el sharding transforma este escenario. Como cada shard funciona de forma independiente y simultánea, el sistema puede procesar más transacciones y cálculos. Cuando un nuevo nodo se une, se puede agregar a un shard en lugar de a toda la red, lo que mejora la capacidad de la red para escalar. Se mejora la eficiencia y se obtienen transacciones más fluidas y una mejor experiencia de usuario.

Recuerda que los futuros avances y mejoras en la tecnología de sharding pueden desarrollar otras ventajas, o fortalecer las existentes, para la mejora continua del ecosistema de la blockchain.

¿Cuáles son las limitaciones del sharding?

Aunque el sharding ofrece varias ventajas potenciales que podrían ayudar a que las redes blockchain sean más eficientes, el proceso también presenta un conjunto único de desafíos. Algunas de las vulnerabilidades potenciales que introduce el sharding incluyen: 

Ataques de toma de control de shards individuales: en un entorno de sharding, la potencia informática para tomar el control de un shard individual es considerablemente menor que la potencia requerida para tomar el control de toda la red. Esto hace que estos shards individuales sean más vulnerables a un "ataque del uno por ciento" o una "toma de control de shards", por lo que un atacante con una pequeña cantidad de recursos en comparación con toda la red podría hacerse cargo de un shard individual.

Transacciones entre shards: las transacciones que tienen lugar entre diferentes shards (cross-shard) presentan un desafío único. Las transacciones entre shards son complejas y podrían dar lugar a un doble gasto si no se gestionan con cuidado. Si un shard no rastrea con precisión el estado del otro shard durante una transacción, los usuarios pueden aprovecharlo para generar un "doble gasto".

Problemas de disponibilidad de datos: el sharding hace que mantener todo el estado de la red sea un esfuerzo complejo. Si ciertos shards no están disponibles cuando es necesario (porque los nodos que mantienen esos shards están fuera de línea), podría provocar problemas de disponibilidad de datos e interrumpir toda la red.

Seguridad de la red: el sharding requiere la implementación de un protocolo robusto que equilibre la carga entre shards. Si no se hace correctamente, esto podría conducir a una distribución desigual de los datos o un desequilibrio de recursos, lo que podría provocar inestabilidad de la red.

Sincronización de nodos: la sincronización de nodos puede causar retrasos en la red debido al tiempo que toma compartir y actualizar la información entre diferentes nodos. Además, si un nodo con capacidades de procesamiento o conexión de red más lentas se queda atrás, podría ralentizar todo el proceso de sincronización y reducir el rendimiento general de la red blockchain.

¿Está implementado el sharding en Ethereum?

Ethereum tiene planes para implementar el sharding como parte de su actualización Ethereum 2.0. Ethereum 2.0, también conocida como Eth2 o Serenity, es una actualización de la blockchain Ethereum que tiene como objetivo mejorar la velocidad, la eficiencia y la escalabilidad de la red, para procesar más transacciones y aliviar la congestión.

A la fecha, la actualización se está implementando en fases, con la fase final (Fase 2) que incluye la implementación completa del sharding. Los desarrolladores de Ethereum esperan que estas mejoras aborden algunos de los desafíos actuales asociados con la escalabilidad y el costo de transacción que enfrenta la red.

Sin embargo, es importante tener en cuenta que la implementación del sharding conlleva su propio conjunto de desafíos, particularmente para mantener la seguridad y la descentralización de la red. Por lo tanto, los desarrolladores de Ethereum están reflexionando cuidadosamente y realizando pruebas exhaustivas en esta transición para garantizar el éxito de la actualización cuando se implemente por completo.

Conclusiones

En términos generales, el sharding representa un avance notable para resolver el trilema de la blockchain. Si bien introduce nuevas complejidades y posibles inconvenientes, su potencial para aumentar la escalabilidad sin comprometer la descentralización es muy prometedor para el futuro de las redes blockchain.

No es de extrañar que varias blockchains estén explorando el sharding como una posible solución. Ethereum está integrándolo como parte de la actualización Ethereum 2.0 para abordar los problemas de escalabilidad. Se espera que esta implementación se lleve a cabo con la actualización Cancun, un componente crítico del plan general de mejora. No obstante, como cualquier otra tecnología en evolución, el éxito dependerá de la investigación continua, el desarrollo y las pruebas rigurosas de las implementaciones del sharding.

Lecturas adicionales

Aviso legal: Este contenido se presenta "tal cual" únicamente para fines de información general y educativos, sin declaración ni garantía de ningún tipo. No debe interpretarse como un asesoramiento financiero, legal o de otra índole profesional ni pretende recomendar la compra de ningún producto o servicio específicos. Debes buscar consejo particular de asesores profesionales idóneos. Dado que este artículo es producto de la contribución de terceros, ten en cuenta que las opiniones expresadas pertenecen al tercero colaborador y no reflejan necesariamente las de Binance Academy. Para obtener más información, lee nuestro aviso legal completo aquí. Los precios de los activos digitales pueden ser volátiles. El valor de una inversión puede bajar o subir, y podría darse el caso de que no recuperes el monto invertido. Solo tú eres responsable de tus decisiones de inversión. Binance Academy no se responsabiliza de ninguna pérdida en la que puedas incurrir. Este material no se debe interpretar como una asesoría financiera, legal o de otra índole profesional. Si deseas obtener más información, consulta nuestros Términos de uso y la Advertencia de riesgo.