¿Qué es Solana?
El proyecto Solana Network, es un proyecto de tecnología blockchain centrado en ofrecer funciones avanzadas para dApps y una red de alta velocidad de procesamiento para hacer frente a aplicaciones de alta concurrencia.
De hecho, Solana Network se erige como uno de los más serios competidores de Ethereum 2.0, la próxima versión de Ethereum, con la salvedad de que Solana, ya es un proyecto real, tangible, perfectamente usable en este momento, y conoceremos a fondo a continuación.
Historia y origen de Solana
El origen de Solana comienza gracias al trabajo de Anatoly Yakovenko, un desarrollador de software con una amplia experiencia de desarrollo de sistemas operativos en Qualcomm (Brew OS), sistemas distribuidos en Mesosphere y sistemas de compresión en Dropbox. Yakovenko, comenzó a interesarse en la capacidad de la tecnología blockchain y, muy especialmente, en los protocolos de consenso con los que había tenido ya experiencia en Mesosphere.
De este interés inicial surgió el white paper de Proof of History (PoH) o Prueba de Historia presentado en 2018, y en el cual venía trabajando desde 2017. Proof of History es un curioso protocolo de consenso que usa el tiempo para crear un sistema de hashing seguro para una blockchain. Este sistema funciona en base a los VDF o Funciones de Retraso Verificables, un tipo muy especial de función que permite este tipo de construcciones, en las que el tiempo marca de forma ineludible que una transacción ha tenido lugar en una secuencia particular de creación, transmisión y verificación de la misma. Este sistema permite la construcción de redes muy seguras pero, sobre todo, rápidas y muy eficientes a nivel de consumo de recursos computacionales y de energía.
El Nacimiento de la Idea
Poco tiempo después de presentar este trabajo, Yakovenko comenzó a trabajar con Greg Fitzgerald, para llevar a una realidad tangible su idea sobre PoH dentro de una blockchain. El proyecto inicialmente fue conocido como Loom, pero poco tiempo después cambió de nombre a Solana, nombre que luego sería utilizado para el registro de la empresa Solana Labs, en marzo de 2018.
Hasta ese momento, Yakovenko y Fitzgerald continuaron trabajando en una temprana implementación de PoH en blockchain, pero finalmente el 19 de julio de 2018 su trabajo rindió frutos. Ese día se puso en funcionamiento una versión inicial de Solana con 50 nodos en funcionamiento y con el que alcanzaron una velocidad envidiable: 65.000 transacciones por segundo. Fue el inicio de una nueva tecnología que tenía todos los elementos para dejar en el pasado el problema de la escalabilidad de blockchain.
La primera beta de Solana
El trabajo de Yakovenko continuó hasta que, en febrero de 2020, se lanzó la primera beta de la red, conocida como Tour de SOL Testnet, el cual fue una testnet completamente funcional de la red Solana. Para marzo de 2020, se anunció el lanzamiento de mainnet beta (en realidad una testnet con funciones más avanzadas), con soporte básico para smart contracts y prácticamente todas las funciones de la red a excepción del sistema de inflación y recompensa para los validadores.
Esta decisión fue tomada con el fin de probar las funciones iniciales de la red en condiciones lo más cercanas a producción. Esta segunda testnet es la red que actualmente funciona y se espera que un hard fork active tanto el sistema de inflación de la red y habilite el resto de funciones del sistema, para finales de 2021.
¿Cómo funciona Solana Network?
Para comprender cómo funciona Solana Network, debemos examinar en primer lugar, las partes que conforman este protocolo. Entre esas partes podemos destacar lo siguiente:
Proof of History (PoH), el protocolo de consenso de Solana Proof of History (PoH) es la piedra angular de Solana, ya que este protocolo es quien brinda la capacidad de procesar operaciones a gran velocidad y con total seguridad. Proof of History, es un protocolo de consenso del tipo Proof of Stake (PoS) cuyo funcionamiento depende del uso del tiempo y un tipo de función conocida como VDF o Función de Retraso Verificable.
Para que un validador de PoH pueda funcionar en la red, este debe realizar un determinado staking que le da poder de voto dentro de la red, pero el proceso de generación y validación usa las VDF como un medio de seguridad adicional, al de la simple lotería que se suele ver dentro de la mayoría de algoritmos PoS.
En tal sentido las VDF de PoH funcionan de dos formas:
- Permite ordenar las transacciones de la red de forma cronológica para que sean atendidas exactamente en esa secuencia.
- Crea un sistema criptográfico unido intrínsecamente al tiempo en el que las transacciones son realizadas, tomadas y verificadas por la red. Esto es posible porque las VDF usan los parámetros temporales de las TX para realizar una función criptográfica única para asegurar la validez de las mismas.
Estos dos puntos permiten que las VDF dentro de PoH sean muy seguras y, además, muy rápidas en su ejecución. Entender esto puede ser un poco complejo, pero creemos que este ejemplo podrá ayudarte:
Ejemplo de PoH
Supongamos que Ana quiere enviar una transacción (TX) a Juan para pagar una reparación de su laptop. Ana envía la TX, a una hora y fecha determinada, datos que están incluidos en la metadata de dicha TX. La red Solana toma esa TX y comienza su procesamiento, sin embargo, en toda la red hay cientos e incluso miles de operaciones, todas y cada una de ellas con una hora y fecha específica de creación. Lo que hace Solana con PoH es tomar cada una de estas TX y crear una cronología, ordenando las mismas de la forma más exacta posible.
Aquí las diferencias de 0,1 segundos, pueden ponerte al frente o detrás muchas otras transacciones dentro de la red. Esto es vital porque evita que Ana pueda hacer un doble gasto (moviendo dinero que temporalmente no está bajo su propiedad, o alterando una TX anterior por medio de un vector de ataque como el de Vector76). En este punto, cuando la red ordena las TX para su próximo bloque, los validadores aplican de forma paralela una serie de funciones VDF para marcar dicho bloque y comenzar con la generación del siguiente bloque.
Este otro punto es vital, porque la generación temporal del primer bloque y su marcado, serán esenciales para crear la relación criptográfica con el segundo. En todo caso, las VDF se encargan de verificar los timestamps de las TX, creando un hash único para ese bloque junto con su propia marca de tiempo, y creando no sólo una cronología en las transacciones del bloque, sino también un orden temporal con los propios bloques de la blockchain.
Es decir, la TX y los bloques están organizados temporalmente, hasta el punto que las diferencias temporales entre ellos no superan 1 segundo, permitiendo leer la blockchain de Solana como una línea de tiempo continúa segundo a segundo que queda grabada y es inalterable. En todo eso, la TX de Ana es validada y Juan recibe su dinero, y aunque esta explicación es extensa, todo este proceso dentro de Solana apenas ha llevado de media un segundo de ejecución.
El ejemplo anterior ya nos va diciendo mucho de PoH y su velocidad, y es que el tiempo de producción de bloques de la red Solana es de lejos uno de los más rápidos que existen, de tan sólo 400 milisegundos. Esto significa que Solana es capaz de generar dos bloques por segundo, con algo de margen de tiempo para armar un tercer bloque. Dicho de esa forma, Solana parece ciencia-ficción para blockchainers, pero no, es algo tan real que podemos palparlo simplemente mientras usamos la red.
Una red P2P veloz, eficiente y temporalmente exacta
Sin embargo, la altísima velocidad de Proof of History y sus VDF genera dos problemas:
- Transmitir información por la red (TX y bloques) de forma óptima es un verdadero dolor de cabeza.
- La exactitud temporal puede crear discrepancias entre distintos nodos.
El primer problema es algo con lo que muchos proyectos blockchain han luchado por mucho tiempo. Es el conocido problema del ancho de banda y, es fácil de entender, porque a mayor tamaño de red, más información tiene que moverse a través de ella, ya que todos los nodos deben sincronizarse. Sí contamos con un alto número de envíos de transacciones, en consecuencia los bloques se multiplicarán y contendrán más información. Una situación insostenible y con riesgo de romper la red, especialmente en lugares donde el ancho de banda es limitado. De allí que ideas como agrandar los bloques en Bitcoin no tenga buena acogida, y que cosas como las que hizo BCH y BSV sean consideradas por muchos como una amenaza de centralización, o directamente una locura.
El segundo problema es algo para lo que incluso Satoshi Nakamoto tuvo que hacer trampa, porque en Bitcoin sí bien se usa un sistema de tiempo bastante exacto, sus nodos realmente no tienen la misma sincronización. Existen pequeñas variaciones, deltas que pueden considerarse imperceptibles dentro de los 10 minutos de validación de los nodos de Bitcoin. Sin embargo, eso en Solana es impensable, porque su tiempo de validación de 400 ms lo hace inviable.
Entonces ¿Qué solución aplican en Solana para ambos problemas?
Turbine, la transmisión de información por Solana Network
Turbine es el nombre con el que se conoce al sistema de propagación de datos por Solana Network. Este protocolo es un derivado del protocolo Gossip, y su tarea es entregar la información a los nodos que forman parte de la red. El funcionamiento de Turbine es bastante sencillo porque lo que hace es diseccionar la información de los bloques, para que pueda ser enviada a todos los nodos de forma mucho más rápida.
Es decir, Turbine se asegura de que primero se envíe la metadata del bloque, y luego la información interna del mismo. Esto hace que la transmisión sea más rápida porque, para términos de verificación, todo lo importante se encuentra dentro de la metadata. De esa forma, Turbine logra llevar la información de la red a todos sus nodos de forma óptima. Algo parecido a lo que hace actualmente la red Bitcoin con sus compacts blocks.
GulfStream, una caché para transacciones
GulfStream es el nombre del protocolo que se encarga de almacenar y priorizar las transacciones en la red Solana. Básicamente GulfStream es una mempool avanzada que se encarga de transmitir las transacciones a los validadores para facilitar su orden y verificación.
Solana es una red con funcionamiento paralelo. Es decir, sus validadores son capaces de trabajar en la validación de un bloque, y al mismo tiempo, preparar el camino para el siguiente. Para lograr esto, GulfStream orquesta la entrega de transacciones de forma tal que se mantenga este funcionamiento paralelo. Y, al mismo tiempo, mantiene la temporalidad necesaria para mantener la cronología de validación del sistema. En pocas palabras, GulfStream es un protocolo de almacenamiento, ordenación y paralelización de bloques determinista, y sobre él recae buena parte del proceso de validación de transacciones.
Además, GulfStream se encarga de que los validadores de un bloque sincronicen sus relojes para mantener la temporalidad de la red. Y cuando ese bloque es creado, sincroniza el siguiente quorum de validación con el tiempo del bloque anterior y el actual, manteniendo así la sincronización temporal de la red en todo momento.