Sharding o fragmentación es un concepto en el diseño de bases de datos, y como implica su nombre, la fragmentación implica la creación de partes más pequeñas a partir de una más grande. En el contexto de las bases de datos, la fragmentación da lugar a la creación de particiones más pequeñas en el libro mayor. Estas particiones se denominan, por tanto, shards.
El sharding se emplea en la arquitectura de bases de datos porque puede mejorar el rendimiento de una base de datos o de un motor de búsqueda.
La metodología sharding también puede ser beneficiosa en el mundo de las criptomonedas ya que podemos crear un ecosistema con múltiples blockchains que pueden comunicarse entre sí. Esta metodología permite procesar transacciones en paralelo lo que aumenta la escalabilidad de la plataforma para que pueda soportar muchos más usuarios.
El caso de Ethereum
Por ejemplo, Ethereum, la segunda blockchain más grande, se diseñó para facilitar la creación de aplicaciones descentralizadas que ofrezcan a los usuarios un mayor control sobre sus finanzas y datos en línea gracias a los contratos inteligentes. La idea es que estas alternativas descentralizadas se extiendan, ofreciendo una alternativa a las aplicaciones -como Robinhood o Twitter- que tienen un punto de control centralizado. Ethereum serviría así como un ordenador global, abierto a todos, que no puede ser apagado.
Sin embargo, para poder ofrecer alternativas sólidas a las aplicaciones existentes, Ethereum tendrá que ser capaz de almacenar cantidades masivas de datos. Para las aplicaciones tradicionales, servicios como Amazon Web Services (AWS) almacenan petabytes de datos de miles de aplicaciones. Sin embargo, ahora mismo Ethereum está lejos de ser capaz de almacenar datos de forma tan eficiente como un servicio web centralizado como AWS. De hecho, Ethereum ha sufrido históricamente caídas de rendimiento en la plataforma debido a la congestión de la red ya que solo es capaz de procesar 15 TPS.
Ethereum pretende mejorar su rendimiento cambiando sus sistema de validación PoW a PoS y el sharding de su red. Estos pasos deben darse antes de que su sistema de ejecución de aplicaciones descentralizadas, o “dapps”, pueda generalizarse.
Vitalik Buterin, el cocreador de Ethereum lo describe así: “Imagina que Ethereum se ha dividido en miles de islas. Cada isla puede hacer su propia cosa. Cada una de las islas tiene sus propias características y todos los que pertenecen a esa isla, es decir, las cuentas, pueden interactuar entre sí y pueden disfrutar libremente de todas sus características. Si quieren contactar con otras islas, tendrán que utilizar algún tipo de protocolo”.
Actualmente, en la red Ethereum, así como en otras blockchains, cada nodo almacena el estado global. El estado global se refiere a los saldos de las cuentas, el código y el almacenamiento de los contratos y toda la información adicional relevante. Además, todos los nodos procesan todas las transacciones. Aunque esto proporciona un libro de contabilidad muy seguro, limita drásticamente hasta qué punto la red puede escalar porque, dentro de este diseño, una blockchain sólo es tan buena como un solo nodo de su red.
Para hacer frente a este reto, la red Ethereum planea implementar una versión de sharding. Dentro de este nuevo diseño, no será obligatorio que cada nodo que participe en el sistema maneje todo el historial de la blockchain cuando intente añadir una nueva transacción al libro mayor. En su lugar, un nodo sólo tendrá que procesar los datos en los que se encuentra el fragmento.
Se empleará tanto la fragmentación cuadrática como la exponencial. La fragmentación cuadrática se refiere a cuando un libro mayor se divide de tal manera que sólo hay un fragmento bajo la cadena principal. Sin embargo, en la fragmentación exponencial, puede haber fragmentos dentro de otros fragmentos.
Además, el nuevo diseño incluirá un contrato inteligente en la cadena principal. El contrato inteligente se encargará de gestionar el consenso entre los fragmentos y la cadena principal. El contrato se llamará sharding manager contract. Además, el nuevo diseño introducirá diferentes tipos de participantes en la red. Dicho de otro modo, múltiples shards son manejados por separado por diferentes subconjuntos de participantes de seguridad, también conocidos como securizadores (que incluyen notarios, proponentes, mineros y validadores).
Además de los nuevos tipos de participantes en la red, el nuevo diseño también dará lugar a diferentes tipos de nodos. El nodo supercompleto almacena todos los cotejos de cada fragmento, así como la cadena principal, comprobándolo todo. El nodo de nivel superior manejará todos los bloques de la cadena principal, dándoles acceso de “cliente ligero” a todos los shards. Además, los nodos de un solo fragmento son un tipo de nodo de nivel superior, que también descargan y verifican completamente cada colación en algún fragmento específico que le interese más. Por último, el nodo ligero descarga y valida las cabeceras de los bloques de la cadena principal exclusivamente y sólo accede a los datos que necesita para una transacción específica.
Aunque la comunicación aleatoria entre fragmentos anularía todo el concepto, los desarrolladores la han previsto para los casos en que sea necesaria. Mediante un sistema de recibos, los fragmentos podrán verificar la información de los demás.
Es importante tener en cuenta que la fragmentación sólo puede implementarse en la red Ethereum después de que se haya pasado a PoS. Sin embargo, una vez implementado, se espera que mejore la red de forma significativa.