El sharding es una técnica informática por la cual se busca dividir una base de datos o red para hacer que su funcionamiento sea mucho más escalable y descentralizado. Una interesante estrategia que puede ayudar a que la tecnología blockchain supere su principal problema: la escalabilidad.
Una de las técnicas para el manejo de bases de datos que está ganando popularidad en la comunidad criptográfica actual es el Sharding. Se trata de un proceso de fragmentación o división horizontal de las bases de datos en partes o fragmentos más pequeños con el fin de permitir un mejor manejo de las mismas, haciéndolas menos pesadas y más fáciles de operar.
El sharding se creó con la finalidad de facilitar la escalabilidad en sistemas distribuidos y descentralizados. Pero en la actualidad, su aplicación en la tecnología blockchain podría mejorar considerablemente los problemas de escalabilidad a los que se enfrentan redes como Bitcoin y Ethereum.
Ventajas de implementar sharding
La principal ventaja que ofrece la fragmentación para una blockchain es mejorar la escalabilidad. Ya que las transacciones podrán ser procesadas y validadas de forma más rápida, reduciendo la cantidad de tiempo requerida para este proceso. Y por tanto, la red tendrá la capacidad de procesar mayor número de transacciones por segundo.
Así mismo, la implementación de sharding reduce el riesgo de centralización de las redes. Actualmente Bitcoin requiere la utilización de equipos con gran poder computacional para poder soportar toda la información que se maneja en estas redes. Equipos que poseen altos costos de adquisición, por lo que no muchos usuarios puede tener la capacidad de comprarlos.
Con la implementación de sharding ya no será necesario almacenar toda la blockchain completa en un mismo nodo, por lo que no se requerirá la compra de equipos costosos. Esto permitiría que muchas más personas tengan la posibilidad de participar en la red con sus equipos convencionales, garantizando la descentralización de la misma.
¿Por qué se necesita sharding en las redes blockchain?
No es un secreto que el creciente auge comercial que viven criptomonedas como Bitcoin y Ethereum, ha causado que el problema de escalabilidad se acentúe mucho más en sus redes. Hoy son muchísimos los usuarios que desean realizar transacciones con Bitcoin o usar aplicaciones descentralizadas de Ethereum. Ocasionando que muchos nodos sean demandados para la validación y verificación de todos esos procesos.
Actualmente, los nodos de estas redes operan de forma tal que todos y cada uno de ellos deben almacenar una copia exacta de sus blockchains. Con todos los datos contenidos en ella desde el principio. Y que además, debe ser actualizada de forma constante y permanente a medida que más información es creada y añadida. Así las velocidades de transacción se ven gravemente afectadas. Llegando a puntos en los que las redes pueden colapsar y necesitar una gran cantidad de tiempo para poder procesar una transacción. Algo que no es nada conveniente para la sostenibilidad y adopción de esta tecnología a largo plazo.
Así, aunque esta metodología y estructura de trabajo le proporciona a la blockchain un alto nivel de seguridad y protección, también provoca que la escalabilidad de dichas redes se vea limitada. Haciendo que sus blockchain no puedan procesar más información de la que pueden procesar cada uno de sus nodos de forma individual. En la actualidad la red de Bitcoin, por ejemplo, requiere el uso de equipos con gran poder computacional, el problema de escalabilidad sigue estando presente. Por lo que Bitcoin no puede procesar más de 5 o 7 transacciones por segundo. Mientras que Ethereum, aunque tiene una mayor capacidad en comparación con Bitcoin, igual presenta un problema de escalabilidad que le impide superar en promedio las 10 o 15 transacciones por segundo.
Por ello, la implementación de sharding puede representar esa solución viable y factible que elimine los problemas de escalabilidad, y que permita el procesamiento de un mayor número de transacciones en menor cantidad de tiempo, de forma segura y eficiente.
¿Cómo mejorará sharding la escalabilidad en las redes blockchain?
El sharding permite la fragmentación de una base de datos completa en pequeñas partes mucho más manejables y organizadas.
Por ejemplo, si se maneja una base de datos informativa de todo un país o región, con todos los datos de sus habitantes, como localidades, sector de residencia, dirección exacta de la propiedad, dirección de trabajo, fecha de nacimiento, edad, cantidad de hijos, ingresos económicos, entre otros, la gran cantidad de información hará que sea mucho más complicado buscar o actualizar una información específica.
En cambio, si esa gran base de datos se subdivide en fragmentos más pequeños y específicos, la información será mucho más manejable y eficiente. Ya que cada fragmento manejará información clara y precisa sobre su contenido de forma independiente a lo que se maneje en otras sub listas, volviéndose más ligeras y organizadas.
Esto es lo que logra el sharding aplicado en la blockchain. Con la fragmentación, ya no será necesario que todos los nodos de la blockchain trabajen de forma lineal para validar todos los datos que se añaden a la cadena. Sino que operarán de forma paralela y manejarán shards (fragmentos específicos) donde se distribuirá la información y estos shards se encargarán de validar y procesar sólo los datos que les correspondan.
Solo cuando todos los grupos de nodos terminen de ejecutar el proceso que se les asignó, toda la información será añadida a la blockchain, manteniéndola íntegra y completa, con la diferencia de que los nodos no manejarán la información en totalidad como sucede hasta ahora.
La aplicación del método sharding permitirá que las transacciones puedan ser procesadas de forma mucho más rápida, mejorando la escalabilidad y eficiencia de la red.
¿Aplicar la fragmentación en las redes blockchain no disminuirá su seguridad?
Implementar el método de fragmentación en la blockchain de Bitcoin o Ethereum podría suponer un problema de seguridad y comunicación en la red. Ya que los nodos, al ser asignados a un subgrupo, no tendrían comunicación directa con los nodos que pertenezcan a los demás subgrupos. Haciendo necesaria la creación e implementación de medios de comunicación y canales externos que permitan a los nodos comunicarse entre sí.
Así mismo, garantizar la seguridad y protección de cada uno de los subgrupos también es un desafío para esta nueva metodología. Al subdividir los nodos en fragmentos, el poder de hash de cada grupo disminuirá considerablemente. Lo que puede suponer un problema de seguridad y permitir que algún actor malintencionado pueda efectuar un ataque con mayor facilidad. Una situación que pone en riesgo la seguridad e integridad de la información.
Sin embargo, los subgrupos creados utilizarán el mismo protocolo de consenso que se emplea dentro de la red. Así existirán nodos completos que descarguen y combinen cada uno de los procesos realizados por cada grupo de nodos. A fin de formar y mantener la blockchain completa y verificar absolutamente todos los procesos realizados. Permitiendo incluso que los clientes ligeros puedan tener acceso a todos los fragmentos para la verificación de las operaciones.
Por lo tanto, se puede mantener una cantidad de nodos suficientes para que el sistema siga siendo seguro y confiable. Al tiempo que pueda procesar un mayor número de transacciones por segundo.
Otros problemas de seguridad asociados
Una de los mayores problemas de seguridad a los que se puede enfrentar una blockchain con fragmentación es un ataque de adquisición de un sólo fragmento. Que le permite a un atacante poder controlar un subgrupo de la cadena y así impedir, por ejemplo, que este subgrupo pueda realizar validaciones de la información como obtener las firmas correspondientes. O en otro caso, presentar transacciones inválidas o fraudulentas a la blockchain principal.
Como solución a esta problemática se presenta el muestreo aleatorio. Donde cada grupo de la blockchain contará con filtradores o notarios que se elegirán de forma aleatoria para la validación y aprobación de la información de los bloques.
Implementaciones actuales de sharding
La fragmentación es un tema que aún está en desarrollo para algunas blockchain como Ethereum y Cardano. Los desarrolladores de estos proyectos están estudiando la forma en cómo pueden implementar este método para optimizar sus redes. Pero otras criptomonedas como Zilliqa (ZIL) ya han implementado sharding en sus blockchains. Algo que le ha permitido alcanzar en su red de pruebas un total de 2.828 transacciones por segundo.
Otro interesante proyecto que ha mostrado el poder del sharding es TON (The Open Network). Su desarrollo ya ha demostrado que la blockchain TON hace uso de sharding para garantizar el mayor nivel de escalabilidad posible. Sin embargo, debido a problemas con la SEC, Telegram se ha visto imposibilitado de hacer público el lanzamiento de su red. Por esa razón, solo podemos acceder a sus herramientas de desarrollo y testeo.
Curiosamente, la misma situación aplica a Libra de Facebook, un proyecto que pese a sus enorme problemas de privacidad, sorprendía a nivel técnico debido al uso del sharding en su red de validadores.