Qué es el sharding - Una explicación sencilla

- 12 minute read

Waiting in line
Paul Hopmans
Crypto Expert
Paul Hopmans

✔️ Sharding significa fragmento o pequeña parte de un todo.

✔️ Sharding se remonta a la década de 1990.

✔️ Sharding se desarrolló para hacer más rápida una base de datos.

✔️ El objetivo principal de la fragmentación en una cadena de bloques es que sea rápida y barata.

✔️ Ethereum ha encontrado su solución al problema de la escalabilidad

Probablemente hayas oído hablar de sharding, pero tiene un significado diferente. Después de leer este blog, sabrás exactamente lo que es.

What is sharding?

Índice de contenidos

  1. ¿Qué es la fragmentación?
  2. ¿Cómo funciona la fragmentación en una cadena de bloques?
  3. Astillamiento de sharding
  4. Formas de sharding
  5. Danksharding en detalle
  6. Los puntos fuertes de la fragmentación
  7. Puntos débiles de la fragmentación
  8. Ejemplos de cadena de bloques con fragmentación
  9. Sharding frente a otras soluciones
  10. El futuro de la fragmentación

¿Qué es la fragmentación?

El término "sharding" apareció por primera vez en la década de 1990. Se puede traducir como "fragmento" o "pequeña parte de un todo". Era necesario resolver todo tipo de problemas informáticos y de red con las bases de datos. Incluso se llegó a predecir que no habría futuro para las bases de datos distribuidas con hardware especializado.

Estaban completamente equivocados, ¡como podemos ver con blockchain! Pero, de nuevo, es más difícil predecir el futuro que simplemente ser negativo.

Desde entonces, el hardware, el software y las técnicas de bases de datos han experimentado un enorme desarrollo.

En 1997, el término "shard" también apareció en un popular juego llamado Ultima Online. Cada jugador se encontraba en su propia parte del mundo virtual, por lo que podemos hablar con razón de un "shard". El juego sigue existiendo y desde entonces ha batido 8 récords Guinness.

La fragmentación es una técnica de gestión de bases de datos que consiste en dividir una base de datos en crecimiento en particiones más pequeñas y manejables. Una partición tan pequeña se denomina "shard".

La idea es almacenar estas piezas en distintos ordenadores como fragmentos independientes.

Una base de datos se compone de filas y columnas. La compartición de bases de datos implica la partición horizontal, por la que una base de datos más grande se divide en secciones más pequeñas con el fin de acelerar y simplificar la gestión de la base de datos.

La compartición se utiliza generalmente cuando un conjunto de datos se vuelve demasiado grande para ser almacenado en una sola base de datos. Cuando una base de datos se vuelve demasiado grande, una consulta normal de la base de datos, para la que obviamente se creó en parte, puede tardar demasiado o costar demasiado. Un shard es, por tanto, una solución que evita la necesidad de trabajar con hardware caro y proporciona tiempos de respuesta aceptables para las consultas. Un conjunto lógico de datos se divide entonces en varias partes más pequeñas de esta base de datos total.

Sharding es, por tanto, escalado horizontal. En esta técnica, se añaden dispositivos adicionales para distribuir la carga de trabajo. El escalado vertical aumenta la potencia de procesamiento de los dispositivos existentes. Esto no es posible indefinidamente. Por ello, cuando los dispositivos ya no pueden ocuparse de todo o resultan demasiado caros, se puede considerar la posibilidad de agrupar los datos o el escalado horizontal. Lo que antes realizaba un dispositivo, ahora puede distribuirse entre varios. En teoría, con la fragmentación es posible escalar infinitamente, simplemente añadiendo más y más dispositivos para compartir el trabajo.

Compartir también significa que las unidades individuales no tienen que buscar en toda la base de datos. Están en una pequeña partición responsable de una parte específica de la base de datos global. De este modo, están listas mucho más rápidamente cuando llega una consulta a su base de datos o hay que procesar una transacción de la que es responsable su partición. Por supuesto, esto es mucho más rápido, especialmente con las bases de datos cada vez más grandes por las que se conocen las blockchains.

Una cola es una buena representación visual del reparto. Supongamos que todo el mundo en los Países Bajos tiene que obtener un nuevo documento de identidad en una fecha determinada. Por supuesto, millones de personas no pueden esperar ante una ventanilla en Utrecht o en cualquier otro lugar. Si se abre una segunda ventanilla, la cola ya se reduce a la mitad. Ese es el poder de la fragmentación. Cada vez que se abre una ventanilla adicional, la cola se reduce. En este caso, el objetivo de la fragmentación es claro: aumentar la productividad abriendo más ventanillas.

Cola

¿Cómo funciona la fragmentación en una cadena de bloques?

Por tanto, un fragmento es responsable de una parte de toda la base de datos. Una cadena de bloques es una base de datos gestionada por muchos ordenadores. Es una base de datos distribuida. Si todos los nodos, validadores o mineros tienen que hacer un seguimiento de toda la base de datos, esto puede suponer una carga de trabajo considerable, especialmente en el caso de grandes bases de datos como Ethereum con sus populares contratos inteligentes. Al dividir la base de datos en particiones o partes, los nodos individuales sólo tienen que vigilar una parte de la base de datos y, por tanto, son mucho más rápidos. Por tanto, se reduce considerablemente el esfuerzo necesario para que los nodos se comuniquen entre sí.

Uno de los problemas de blockchain es su escalabilidad. Al principio de una cadena de bloques, la base de datos no es muy grande, pero cada vez que se añade un nuevo bloque, la base de datos crece. Con el tiempo, las copias de seguridad de la base de datos pueden causar problemas. Las redes más populares, como Bitcoin y Ethereum, tienen problemas de escalabilidad. Las velocidades de procesamiento de sólo 20 por segundo ya no son realistas cuando una red es utilizada por tanta gente. No podemos obligar a la gente a esperar indefinidamente a que se valide su transacción. Además, los mineros o nodos a menudo intentan aprovecharse de la congestión de la red cobrando lo máximo posible por la validación.

Una forma de resolver este problema es mediante la fragmentación. Este proceso permite un gran número de transacciones en una blockchain por segundo si se lleva a cabo correctamente. Estamos hablando de cifras superiores a 100.000 por segundo.

Una vez conocida la disposición de los fragmentos, tienen que hacer lo que ocurre normalmente allege Los nodos deben hacer: comprobar una transacción dentro de su ámbito. Un ejemplo sería comprobar todas las transacciones con un valor de tipo hash empezando por 1. A partir de entonces, todos los miembros de este fragmento deben unirse según un protocolo de consenso de este fragmento y, a continuación, recopila las transacciones aprobadas en un nuevo bloque que se formará. Éstas pasan a formar parte de la cadena de bloques. Dado que la base de datos por bloque sigue siendo relativamente pequeña, este tipo de redes blockchain son mucho más rápidas que las blockchains tradicionales como Bitcoin.

Uno de los problemas de la cadena de bloques es el trilema propuesto por Vitalik Buterin, de Ethereum. Una cadena de bloques debe ser descentralizada, segura y escalable. Sharding debería contribuir en gran medida a este último punto dividiendo una base de datos en partes más pequeñas que son mucho más fáciles y baratas de procesar y mucho más rápidas. En teoría, una base de datos dividida es infinitamente escalable.

Si quieres particionar una base de datos, hay varias formas de hacerlo. Por ejemplo, se puede particionar por alfabeto, por números, por hashes o por lo que sea. La idea es que un fragmento sólo sea responsable de esa parte concreta de la base de datos.

Astillamiento de sharding

  • Aumentar la escalabilidad
  • Reducción de los costes de transacción
  • Dividir la carga de trabajo en varias partes
  • Aumento del tiempo de respuesta de las consultas a la base de datos
  • Aumentar la potencia de cálculo de una red añadiendo ordenadores.
  • Uso de máquinas menos costosas para validación o interrogación

Formas de sharding

  1. Partición de datos. Se trata simplemente de una clasificación por alfabeto, por ejemplo.
  2. Partición hash. La base de datos se particiona en función de un hash.
  3. División por intervalos. Se trata de una división basada en un intervalo, por ejemplo, todo lo que empiece por una letra de la a a la f.
  4. División de la red. La red se divide en grupos de consenso que prueban colectivamente parte de todos los bloques de forma aleatoria.
  5. Asignación de transacciones. En este caso, una determinada parte de la carga de trabajo se asigna a un fragmento en función de un identificador de transacción, por ejemplo, todas las transacciones que empiezan por 1 están en el fragmento 1.
  6. Puesta en común de estados. En este caso, un nodo tiene una visión parcial de un componente de todo el sistema. Validar y aprobar una transacción puede requerir varias tablas y, por tanto, varios niveles. Ethereum ha estado trabajando en esto durante algún tiempo y también estaba en su hoja de ruta, pero se decidió continuar con los rollups de nivel 2 para ayudar a Ethereum a evolucionar y hacerlo más barato. Esto también facilita el consenso en Ethereum y no requiere bases de datos compartidas.
  7. Danksharding. Este es el camino actual de Ethereum, y debería permitir un rendimiento de más de 100.000 transacciones por segundo al precio más bajo posible.

Danksharding en detalle

Ethereum es una red muy importante, así que vamos a echar un vistazo a su estrategia.

Danksharding pretende hacer de Ethereum una blockchain verdaderamente escalable. Sin embargo, aún son necesarios pasos intermedios.

Una de estas etapas intermedias es Proto-Danksharding . El nombre proviene de dos investigadores llamados Protolambda y Dankrad Feist. El objetivo de esta propuesta de Ethereum es añadir datos más baratos a los bloques de la blockchain.

Los Rollups deben ahora enviar sus datos a todos los nodos de la red Ethereum, y estos datos permanecen allí para siempre.

Danksharding introduce bloques de datos (blobs) que pueden vincularse a bloques que no pueden ser recuperados por la máquina virtual de Ethereum y que se eliminan automáticamente tras un cierto periodo de tiempo.

Un rollup consta de dos partes: los datos y la comprobación del examinador. El examinador debe comprobar que el resumen es correcto. Por consiguiente, el resumen no debe permanecer indefinidamente en el MVE.

Compléter Danksharding no es en realidad sharding en absoluto. Las verdaderas cadenas de fragmentación ya no están en la hoja de ruta de Ethereum, porque el thanksharding es una solución sencilla y eficaz.

Danksharding es la implementación completa del escalado de rollups que comenzó con Proto-Danksharding. Con Danksharding, habrá mucho espacio en Ethereum para que los rollups descarguen datos de transacciones comprimidos. Esto permitirá a Ethereum soportar cientos de rollups individuales y alcanzar millones de transacciones por segundo.

Normalmente, diría: "Hablar es barato".

Pero sí, cuando Vitalik lo dice, soy un poco más moderado en mis afirmaciones. Su red y su éxito hablan por sí solos. Si tiene éxito, podría convertirse en el blockchain más rápido del mundo de las criptodivisas. No es como pagar 50 dólares por una transacción y esperar dos horas para recibirla.

Para ello, no se limitarán a añadir un blob, como en la parte proto, sino 64 blobs a un bloque. Antes de que te des cuenta, tendrás un cine de terror ! Bueno, da miedo. Más bien divertido.

El agradecimiento completo tendrá que esperar unos años más, pero tras un verdadero esfuerzo de equipo, ha llegado el momento de actuar. Ceremonia de graduación La magia de Ethereum incluye otra parte en forma de proto-tanksharding, que recuerda en cierto modo a la brujería, aunque esta parte no puede llamarse sharding.

Los puntos fuertes de la fragmentación

  1. Si uno de ellos falla, todos los demás siguen funcionando. Si todo está en un único servidor y ese servidor se cae, ¡toda la red deja de ser accesible! Esta situación es rara con blockchain, debido a su base de datos distribuida.
  2. La fragmentación reduce el tamaño de las bases de datos.
  3. La fragmentación reduce el coste de una red blockchain.
  4. La fragmentación facilita la administración de las bases de datos.
  5. La división del trabajo puede facilitar procesos complejos.
  6. Hace que blockchain sea más rápido.
  7. Es posible utilizar equipos más baratos.

Puntos débiles de la fragmentación

  1. Poner en marcha la distribución puede ser una operación muy compleja y laboriosa.
  2. Si se introduce la fragmentación, los datos de la base de datos pueden perderse o la base de datos puede resultar dañada.
  3. Los datos pueden encontrarse en los lugares más dispares, por lo que a veces es difícil distinguirlos.
  4. Siempre puede producirse una sobrecarga si un separador concreto recibe mucho más trabajo que los demás.
  5. La seguridad de la cadena de bloques o de un fragmento puede verse comprometida.
  6. Si se desea eliminar la fragmentación, puede ser una tarea ingente volver a corregir la base de datos.
  7. Se necesita más hardware y software.
  8. Si los fragmentos son interdependientes, un solo fragmento dañado puede provocar el colapso de toda la base de datos.

Ejemplos de cadena de bloques con fragmentación

  • Zilliqa
  • Ontology
  • Polkadot
  • Near
  • Elrond
  • QuarkChain

Sharding frente a otras soluciones

El objetivo de la fragmentación es aumentar la escalabilidad. Esto se consigue creando islas que controlan sólo una pequeña parte de la cadena de bloques. Con estas islas, generalmente no hay necesidad de comunicarse con otras islas.

Si comparamos estas soluciones con otras, como los roll-ups, las sidechains o la Lightning Network de Bitcoin, vemos que, aunque la red es más escalable, sigue teniendo que comunicarse con la blockchain principal y, por tanto, puede sobrecargarse.

La ventaja de la subdivisión es que puede ampliarse ad infinitum. Si se empieza a trabajar con compartimentos que procesan, por ejemplo, todas las transacciones que empiezan por 1, se puede crear otra subdivisión formada por los dos primeros dígitos, y así sucesivamente, haciendo los compartimentos cada vez más pequeños en relación con la base de datos completa.

El futuro de la fragmentación

La fragmentación es una forma prometedora y rentable de aumentar significativamente la escalabilidad de una cadena de bloques. La reducción de costes también es una parte importante de esta estrategia.

Sin embargo, al ser difícil de implementar, también puede ralentizar el crecimiento de la aplicación de fragmentación.

Si analizamos las desventajas de la fragmentación y las comparamos con la solución de Ethereum, podemos cuestionar la eficacia de la fragmentación.

Sin embargo, dado que incluso los superhéroes de Ethereum tardarán años en desarrollar algo similar, puede que haya algo que decir sobre la fragmentación.

Sin embargo, es innegable que una blockchain que utilice sharding es mucho más barata y rápida que la blockchain tradicional. Se trata de una noticia muy positiva para los usuarios de a pie.