Le contamos qué solución ofrece Zilliqa al problema de la escalabilidad, cómo permite alcanzar el consenso y cómo comprar tokens ZIL.
Zilliqa es el primer blockchain público diseñado para implementar el sharding, permitiendo así escalar linealmente a medida que crece el blockchain.
Resolviendo el problema de la escalabilidad
El blockchain tiene un problema de escalabilidad inherente. Cuantos más nodos tenga en una red, más difícil será llegar a un consenso. Para ilustrar este punto, resulta fácil imaginarse el escalado del consenso en términos de personas:
Con un pequeño grupo de amigos cercanos, es fácil tomar decisiones. Puede que no siempre esté de acuerdo, pero es fácil ver cómo se sienten todos.
Para un grupo más grande de personas, como un auditorio lleno de gente, podría hacer que la gente levante la mano para votar rápidamente. Pero se vuelve más difícil contar, y no puede estar seguro de que todos actúen con honestidad.
Con grupos de miles o millones de personas, necesitará un sistema de votación más complejo que requiera más energía. Tampoco puede estar seguro de que las personas actúen de buena fe, y es difícil lograr la finalidad: que todo el mundo haya votado y haya una respuesta clara.
Aunque esta analogía no es perfecta, ayuda a comprender cómo el consenso se vuelve más complicado cuanto más grande es la red. La velocidad/calidad del consenso y el tamaño de la red están inversamente relacionados. Cuando uno sube, el otro baja.
Otras soluciones al problema de la escalabilidad del blockchain se centran en sacar información del blockchain o intentan aumentar el tamaño del bloque, estableciendo efectivamente un consenso sobre más transacciones con cada ronda de consenso. Estas soluciones pueden funcionar como una solución temporal, pero no solucionan fundamentalmente el problema de la escalabilidad.
Para solucionarlo, necesitaría cambiar la arquitectura de todo el sistema para que la velocidad de consenso y el tamaño de la red estén correlacionados positivamente.
La respuesta a la escalabilidad de Zilliqa
Zilliqa ha descubierto una forma de procesar más transacciones conforme más nodos se unen a la red. Implica volver a imaginar el blockchain desde cero. Su nuevo modelo implementa un protocolo de consenso híbrido para aumentar el rendimiento de la red con cada ~ 600 nuevos nodos.
En teoría, cada 600 nuevos nodos, el rendimiento de Zilliqa aumenta al dividir el trabajo. En la práctica, existen problemas con la transmisión si la red se vuelve muy grande (más de 1 millón de nodos). Aún así, 1 millón de nodos es un límite superior que no vamos a alcanzar pronto. En el momento de escribir este artículo, el bitcoin tiene ~ 11.000 nodos en funcionamiento. El ethereum, la red más grande de nodos completos, posee casi 25.000.
Las redes de decenas de miles de nodos del bitcoin y el ethereum solo pueden procesar entre 3 y 15 transacciones por segundo. A modo de comparación, las recientes pruebas llevadas a cabo en su testnet privada (prueba virtual de AWS) han demostrado que la red de Zilliqa tiene un rendimiento de 1.218 transacciones por segundo cuando 1.800 nodos están en funcionamiento. Si aumentamos la cantidad de nodos a 3.600, Zilliqa podría procesar hasta 2.488 transacciones por segundo.
Sharding: división del trabajo en toda la red
¿Cómo logra Zilliqa esta escalabilidad? Emplea una solución conocida como sharding. El protocolo Zilliqa divide el número de nodos de minería de la red en grupos de 600 nodos. Cada grupo es conocido como un fragmento o shard.
Por ejemplo, en los ejemplos de testnet anteriores, cuando operaba con 1.800 nodos, la testnet se dividía en 3 fragmentos. Al operar con 3.600 nodos, había 6 fragmentos. A medida que más nodos se unen a la red, Zilliqa puede dividir aún más la red, creando más fragmentos.
Esos fragmentos procesan una porción fraccionaria de las transacciones de la red. En términos simplificados, si hay 6 fragmentos, cada fragmento procesará aproximadamente 1/6 de las transacciones de la red. Cuantos más fragmentos hay, más divide la red la carga de consenso entre los fragmentos, manteniendo las demandas relativamente estables.
Cada fragmento procesa sus transacciones asignadas en un microbloque en paralelo con los otros fragmentos. Al final del período de procesamiento paralelo, conocido como “DS epoch”, esos microbloques se combinan en un bloque completo que es añadido al blockchain.
El Comité DS: administración de los fragmentos
Para cada DS epoch se seleccionan aleatoriamente varios nodos para administrar los diversos fragmentos. Este comité administrativo, conocido como el “comité DS”, dirige la red. Estos deciden qué nodos son asignados a qué fragmento. Cuando llegan nuevas solicitudes de transacción, el comité DS asigna las transacciones a un fragmento para su procesamiento. Al final, el comité DS ensambla el bloque completo de los microbloques creados por los fragmentos.
Encontrar consenso: PoW + BFT
Zilliqa emplea un mecanismo de consenso híbrido. Cuando comience a minar, deberá completar un hash proof-of-work. El PoW requiere potencia de cálculo que garantiza que una máquina solo puede operar un nodo. Como resultado, el PoW ayuda a Zilliqa a establecer su identidad. Hace que sea difícil para un actor fraudulento crear múltiples identidades para abrumar a la red en lo que se conoce como un ataque Sybil. Sin embargo, la red no usa el proof-of-work para alcanzar el consenso.
Una vez que un nodo ha demostrado su identidad, este es asignado a un fragmento. Dentro de los fragmentos, Zilliqa usa el consenso Practical Byzantine Fault Tolerance.
Este es un mecanismo de consenso de mayor rendimiento que tiene finalista (finalidad). Esto significa que la mayoría de los nodos del fragmento deben estar de acuerdo en el minibloque. Una vez que un bloque es confirmado por los fragmentos y el comité DS, es el único bloque que puede hacer referencia al bloque anterior. No hay bifurcación en un mecanismo de consenso con finalidad.
Zilliqa no es el primer registro distribuido en implementar el BFT. NEO, Tendermint e Hyperledger usan versiones del mecanismo de consenso BFT.
Contratos de flujo de datos y transacciones sharding
Las transacciones sharding son bastante sencillas. Puede asignar fácilmente verificaciones de transacciones a varios fragmentos. Cada verificación se sostiene por sí misma. No es necesario que exista comunicación entre diferentes fragmentos.
Sin embargo, la situación es diferente a la hora de ejecutar contratos inteligentes y aplicaciones descentralizadas (dapps) en un blockchain que emplea la tecnología sharding. El problema reside en que las acciones de los contratos inteligentes suelen depender de la verificación de otros estados, variables y funciones. Hacerlo requeriría mucha comunicación entre los fragmentos. Estos mensajes de ida y vuelta requerirían un ancho de banda y una potencia de procesamiento que anularía los beneficios de la fragmentación.
Como resultado, los contratos de Zilliqa se centran únicamente en el flujo de datos y la programación funcional. No permiten verificar, almacenar o cambiar los estados. Al menos no todavía.
Todo el mundo está de acuerdo en que todavía no existe ningún sistema de sharding que sea seguro y eficiente. Si permite que los contratos se ejecuten por separado en varios fragmentos, podría haber todo tipo de ataques potenciales, desafíos a la reconciliación y una comunicación excesiva entre fragmentos.
El ethereum, sin embargo, actualmente está trabajando en una solución de sharding. No está claro hasta qué punto esa iniciativa ha avanzado en su desarrollo.
Dicho eso, Zilliqa todavía se puede usar para dApps que requieren alto rendimiento. Cualquier dApp que necesite tasas de transacción más allá de las que ofrecen los blockchain tradicionales podrían encontrar una gran opción en Zilliqa.
Un nuevo lenguaje de programación
Con el objetivo de hacer que la programación funcional sea más estandarizada y segura, el equipo de Zilliqa ha desarrollado un nuevo lenguaje de programación conocido como Scilla.
Scilla separa el estado y la función. Se trata de un lenguaje de programación funcional que establece una distinción entre los aspectos de comunicación de un contrato (transferir fondos o llamar a otro contrato) y el trabajo computacional real que realiza el contrato.
El nuevo idioma no es Turing completo. Esto significa que no admite aplicaciones que necesitan ciertos tipos de bucles o frases condicionales. Sin embargo, su carácter incompleto le permite estar sujeto a pruebas lógicas formales. Esto es importante por razones de seguridad. Probar contratos permite a los usuarios saber que un contrato es seguro de una manera verificable antes de usarlo.
Scilla ayuda a establecer la distinción entre los contratos funcionales, compatibles con Zilliqa, y los contratos dependientes que Zilliqa aún no puede admitir.
Dónde comprar el token ZIL
Zilliqa cuenta con su propio token. De forma similar a otras plataformas dApps como el ethereum o NEO, el token ZIL sirve como incentivo minero, gas para la ejecución de contratos y medio para pagar comisiones de transacción.
ZIL es un token ERC-20 basado en el blockchain del ethereum. Esto se debe a que la red principal pública de Zilliqa aún no ha sido lanzada. Cuando lo haga, los tokens ERC-20 serán intercambiados por tokens nativos de Zilliqa.
Zilliqa recaudó el equivalente a 12 millones de dólares en ETH en una ronda de financiación privada a finales de 2017. Después de la ronda privada, el aumento del precio del ETH hizo que esos 12 millones acabaran convirtiéndose en 20.
Tras haber alcanzado su límite máximo, Zilliqa le dijo a su comunidad que ya no se necesitaba una venta pública. Sin embargo, debido al interés de la comunidad, Zilliqa asignó 4.445 ETH a una venta pública en enero de 2018.
El token ZIL es incluido actualmente en los intercambios Huobi, EtherDelta. io, e Idex.
Preparado por José Rodríguez