¿Qué es Sharding?
Una de las técnicas para el manejo de bases de datos que está tomando vida 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. Esto cone l fin de que permitan 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 permitir una mayor 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 ende, 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 las blockchain de Bitcoin y Ethereum demandan 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.
Y puesto que 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 los inicios. 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 donde las redes pueden colapsar y demandar 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. Y aunque en la actualidad la red de Bitcoin, por ejemplo, demanda la utilización de equipos con gran poder computacional, el problema de escalabilidad sigue estando presente. Por lo que la red 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, en dicha base de datos será mucho más complicado buscar o actualizar una información específica. Ya que por la gran cantidad de datos que se manejan dentro de una misma lista, ésta se volverá más pesada y mucho más lenta de operar.
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 se estos shards se encargarán de validar y procesar sólo los datos que les correspondan. Y 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. Ello se debe a 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.