¿Qué es Solana?

Solana Network, es un curioso proyecto de blockchain de alta velocidad que está diseñado para ser una blockchain especializada para la creación de DApps de alto uso y tráfico. Para ello, Solana Network está construida sobre una serie de innovaciones altamente llamativas que permiten que esta sea una de las más rápidas en estos momento, siendo incluso superior en velocidad a redes como EOS o Cardano, y de hecho, compitiendo directamente con redes como Polkadot.

Pero ¿Qué es lo que hace realmente genial a esta red? ¿Cuál es la razón del altísimo interés de la comunidad en la misma? Eso es algo que conocerás en este artículo.

Origen de Solana Network

Los inicios de Solana comienzan con la publicación del whitepaper de Proof of History (PoH), un curioso protocolo de consenso que toma como base de funcionamiento la cronología de los eventos que suceden en una cadena de bloques. Dicho sistema fue diseñado por Anatoly Yakovenko, quien es en la actualidad, el fundador y CEO de Solana. Yakovenko, un graduado en Ciencias de la Computación, había trabajado ya con empresas como Qualcomm (ocupando el cargo de Senior Staff Engineer Manager), en Mesosphere y Dropbox (ocupando en ambas empresas el cargo de Software Engineer). Fue en Mesosphere cuando Yakovenko tuvo la idea de crear su algoritmo, y su corta estadía en Dropbox solo le dio el impulso necesario para terminar y presentar su trabajo.

La idea en ese momento era muy sencilla: crear una blockchain con una cronometración y sincronización de eventos segura y exacta. Esto es fundamental para PoH donde el tiempo es la columna vertebral del algoritmo. Pero, no solo eso, Yakovenko es consciente que en un sistema distribuido la sincronización exacta de las partes puede hacer que el algoritmo sea muy rápido y, en su proyecto blockchain, la velocidad lo es todo.

Con esto en mente, Yakovenko busco resolver uno de los problemas más fuertes del mundo cripto: la sincronización temporal de los nodos dentro de sistemas distribuidos. Puede sonar fácil, pero de hecho el problema es tal, que redes como Bitcoin y Ethereum hacen trampa para solucionarlo. En su lugar, Yakovenko diseñó todo un nuevo esquema de red para resolver este problema y como resultado, su algoritmo PoH puede llevar a redes blockchain muy rápidas, tan rápidas como 100 mil transacciones por segundos, con unos pocos nodos en funcionamiento.

Poco tiempo después de la presentación de su whitepaper, Greg Fitzgerald (un antiguo compañero de trabajo) y Anatoly Yakovenko, comenzaron con una implementación del proyecto que inicialmente recibió el nombre de Loom. Sin embargo, con la salida del proyecto Loom en Ethereum, Yakovenko renombró el proyecto a Solana, y creó la empresa Solana Labs, el 28 de marzo de 2018.

La primera prueba pública de la tecnología de Solana se realizó el 19 de julio de 2018, cuando se creó una pequeña red de pruebas con 50 nodos ejecutando el software de Solana. La prueba resultó ser todo un éxito, hasta el punto que aquella pequeña red logró sostener un pico máximo de 65 mil transacciones por segundo, el mismo nivel que una red del tamaño de VISA. 

Sin embargo, no se quedaron con ello. En pruebas posteriores con 150 nodos, se logró llevar a la red a una velocidad superior a las 100 mil transacciones por segundos de forma sostenida, con picos de 500 mil transacciones. Era el mejor ejemplo de que la tecnología de Solana estaba hecha para grandes volúmenes y el comienzo de un enorme trabajo para trasladar esta velocidad a un sistema de aplicaciones descentralizadas útil para el mundo.

Relacionado con: Solana (SOL) alcanza nuevos máximos debido a la incorporación de DApps, DeFi y stablecoins a la red

Objetivo del proyecto

El objetivo de Solana es bastante fácil de entender: ser una blockchain rápida, económica, flexible y centrada en las aplicaciones descentralizadas. Y en ese sentido, da gusto ver cómo este objetivo se cumple muy bien dentro de la red. En primer lugar, Solana es una blockchain muy rápida, quizás una de las más rápidas existentes dentro del ecosistema cripto actual.

En cuanto a ser una red económica, este es otro punto que se cumple muy bien dentro de la plataforma. Por ejemplo, una transacción de interacción con un smart contract en Solana tiene un costo promedio de unos 0.000005 SOL, que es equivalente a unos (0.000185 $). Esto está muy lejos de lo que redes como Ethereum o EOS pueden ofrecernos en la actualidad, y una demostración del poder de Solana en este aspecto.

Finalmente, en cuanto a ser una red flexible y especializada en el despliegue de smarts contracts, Solana también cumple lo prometido. De hecho, es en este punto donde Solana destaca fuertemente sobre otros proyectos blockchain. En primer lugar, el lenguaje de programación de Solana no es un lenguaje de programación de reciente creación y explícito de la plataforma, en su lugar han apostado por dos estándares dentro de la industria: lenguaje C y Rust. 

Esto significa que si quieres programar un smart contract en Solana puedes hacerlo usando estos dos lenguajes de programación lo que permite una enorme flexibilidad de desarrollo. Adicional a esto, el compilador para estos dos lenguajes es otro estándar en la industria: el conocido compilador LLVM, lo que otorga un enorme conjunto de herramientas de depuración y desarrollo multiplataforma. En pocas palabras, Solana apuesta por herramientas maduras, bien conocidas y disponibles para todos.

La elección en este sentido ayuda a desarrollar DApps de forma única y muy flexible. Pero además ayuda en otro punto: velocidad de ejecución.  La compilación de C y Rust genera un bytecode (código máquina) que puede ser fácilmente ejecutado por cualquier computador que esté soportado por el compilador LLVM. De hecho, este sistema es tan rápido y consume tan pocos recursos, que es otro de los "secretos" en la velocidad de procesamiento de transacciones en Solana. 

Y, sumado a todo esto, Solana tiene la capacidad de ejecutar DApps bajo el estándar Web3, permitiendo que herramientas creadas para Ethereum puedan interactuar fácilmente con DApps diseñadas en Solana, permitiendo así, una mejor compatibilidad entre las mismas.

¿Cómo funciona Solana Network?

El funcionamiento de Solana Network recae en una serie de innovaciones creadas específicamente para esta red. Con esto en mente comenzaremos a describir cada una de estas innovaciones, sus implicaciones, posibilidades y su papel dentro de Solana.

Proof of History (PoH), un protocolo de consenso veloz

Como ya hemos comentado la historia de Solana comienza con la publicación del whitepaper de Proof of History (PoH) o Prueba de Historia. Este es un protocolo de consenso muy peculiar. En primer lugar, Proof of History es muy diferente a otros protocolos de consenso conocidas como Proof of Work (PoW) o Proof of Stake (PoS).  ¿La razón? Proof of History usa el tiempo (y las marcas de tiempo o timestamp) para generar un sistema de consenso, a diferencia de Proof of Work (donde se usa un acertijo criptográfico) o Proof of Stake (donde se "apuesta" o se retienen monedas para participar en un sistema de votos).

¿Pero cómo funciona esto? Veámoslo de esta manera: los profesores de física suelen decir que todo lo que sucede a tu alrededor sucede en el espacio y, en el transcurrir lineal del tiempo. Esta "linealidad" del tiempo es esencial para entender fenómenos sencillos como lanzar una pelota y ver como con el tiempo la posición de esa pelota cambia. Así por ejemplo, el momento en el que sueltas la pelota para que esta salga disparada, puedes decir que su tiempo "0 segundo" la pelota está en el origen (tu mano). Pero, al cabo de 10 segundos, la pelota ha llegado a su destino y, en esos 10 segundos transcurridos puedes crear una cronología exacta de lo que ha pasado con la pelota. De hecho, con el conocimiento necesario puedes saber todo sobre lo que ha pasado con la pelota.

Pues esto mismo se aplica a Proof of History. Este protocolo crea un registro con marcas de tiempo exactas de todo lo que sucede en la blockchain. De esta forma, si una moneda se mueve de un monedero a otro, el protocolo anota este evento con una marca de tiempo exacta, un hecho que permite recrear los eventos con exactitud. De esta manera, si nos interesa saber sobre los eventos pasados sobre un token, dirección o determinado smart contracts, solo basta con mirar los registros temporales pasados de esos elementos y lo sabremos todo, desde su origen hasta el momento actual.

Lo bueno de este sistema es que crear marcas de tiempo con pruebas criptográficas no es un trabajo muy complejo computacionalmente hablando. Esto permite que Proof of History (PoH) sea un algoritmo de consenso muy rápido. De hecho, quizás sea uno de los más rápidos solo superado por Proof of Elapsed Time (un tipo de Proof of History, que funciona con aceleración por hardware y que fue creado por Intel para HyperLedger). ¿Lo malo? Proof of History es un algoritmo poco resistente a ciertos ataques y para evitar esto requiere de su uso bajo ciertas condiciones para hacerlo seguro.

En primer lugar, PoH requiere de un fuerte sistema de comprobación y verificación de timestamp. Para ello, este algoritmo se sirve de una función de retardo verificable que requiere de una cantidad específica de pasos secuenciales para evaluarse. Sin embargo, este sistema ofrece una salida única que puede ser verificada pública y eficientemente. Esto evita que cualquier actor malicioso pueda manipular los timestamps y hacer un desastre con el protocolo. Para estar seguros de la potencia de este sistema, el algoritmo hace uso de la función SHA-256 (la misma que usa Bitcoin) para realizar un hash de comprobación, determinando así que verdaderamente se ha cumplido con este paso.

Este proceso de generación de timestamp y verificación de los mismos se hace con cada bloque dentro de Solana. No solo eso, la generación se hace de forma incremental, permitiendo crear una cronología exacta de cada evento.

Tower BFT, un potente protocolo de tolerancia a fallas bizantinas

Otra de las innovaciones de Solana es Tower BFT, un protocolo de tolerancia a fallas bizantinas que combinado a Proof of History ayuda a mantener el funcionamiento seguro de su protocolo de consenso y red descentralizada. Tower BFT, es una evolución de Practical Bizantine Fault Tolerance (PBFT) un protocolo de tolerancia a fallas bizantinas bien conocido en el mundo de la computación distribuida.

El papel de Tower BFT es servir de "juez" dentro del sistema de marcas temporales que se ejecuta en toda la red Solana. De esta manera, Tower BTF usa el reloj sincronizado entre todos los nodos, para servir de punto de control, verificación y aceptación del trabajo realizado por los nodos, permitiendo que se cree un consenso descentralizado sobre dicho trabajo y aceptando el mismo en la red, si este trabajo respeta todas las reglas propuestas por el protocolo Solana.

Al ser Tower BTF un derivado de PBFT, este sistema es muy rápido y, de hecho, el equipo de desarrollo de Solana lo optimizó aún más para evitar que genere latencia innecesaria dentro del sistema. Como resultado, Tower BFT y PoH son capaces de permitirle a Solana altas velocidad de generación de bloques y generación de consenso dentro de la red, estando en promedio en 0,5 segundos por bloque generado dentro de la red.

Turbine y Gulf Stream, transacciones que viajan rápido por la red

Uno de los problemas más grandes dentro de los sistemas distribuidos es el ancho de banda y la necesidad de llevar toda la información generada en la red a todos los nodos que forman parte de la misma. El problema se ve fácilmente, si tienes una red con miles o decenas de miles de nodos, será necesario que cada transacción y evento dentro de la red sea enviado a cada uno de esos nodos para que el evento sea registrado y se genere el consenso deseado. Así, si tienes muchas transacciones (o estas pesan demasiado) esto genera un grave problema de ancho de banda y ralentización dentro de la red.  Bitcoin y muchas criptomonedas solucionan esto desde dos puntos:

  1. Usan algoritmos de propagación de información optimizados para redes descentralizadas (como Gossip, Kademlia, u otros).
  2. Minimizan al máximo el tamaño de sus transacciones y mantienen "bajo en grasa" sus bloques.

De allí posiciones como los bloques de 2 MB en Bitcoin, o el hecho de que se busque optimizar a un nivel extremista el tamaño de las transacciones.  Sin embargo, esto no es práctico en redes diseñadas para sostener aplicaciones descentralizadas, debido a que limita su crecimiento en muchos sentidos. Así que, para hacer frente a estos dos problemas en Solana se dedicaron a crear los protocolos Turbine y Gulf Stream.

Turbine, es un protocolo de propagación de bloque que facilita la tarea de entregar la información a los nodos, ayudando a mantener el consenso dentro de la red. Este es un proceso esencial que debe ser rápido, puesto que la velocidad de generación de bloques de Solana es veloz (un promedio de 0,5 segundos por bloque) lo que nos indica que la propagación de esta información a la red debe ser igual o más rápida. Para lograr esto, Turbine divide el problema y, con dividir, nos referimos a que la información de los bloques es dividida en pequeñas secciones que son enviadas a la red y reconstruidas por los nodos de acuerdo a sus propios estados.

En pocas palabras, Turbine hace trampa, en lugar de enviar toda la información del bloque, indica el contenido del mismo, ayudando al resto de nodos a reconstruir dicho bloque. Y, en caso de que un nodo no tenga la información necesaria para su recreación, puede solicitar dicha información al resto de la red de forma paralela para hacerlo, reduciendo así el consumo de ancho de banda, maximizando la velocidad y logrando su objetivo de mantener un consenso seguro. Lo curioso es que este sistema funciona en base a un sistema que bien podríamos llamar "piramidal", porque el nodo generador (el primer nodo), envía una parte de la información a un determinado grupo de nodos, y estos otros nodos reparten la información correspondiente a grupos determinados por ellos. Al final, toda la red recibe la información, recrean el bloque y se genera el consenso.

Pero te preguntarás ¿Cómo saben el resto de nodos de la información necesaria para recrear el bloque recién generado por el primer nodo? Es allí, donde entra en funcionamiento Gulf Stream. Gulf Stream es un protocolo de almacenamiento en cache de transacciones de la red Solana. Su papel es recibir la transacción y enviarla a todos los nodos, pero priorizando a los nodos generadores. De esta forma, todos los nodos de la red tienen en su poder la información necesaria para recrear los bloques usando Turbine. Además recordemos que Solana crea sus bloques gracias a la elección de un quorum que tiene la potestad de generar un bloque y emitir el mismo a la red.

Sin embargo, el papel de estos generadores no es solo crear el bloque, sino también servir de selector del próximo grupo de generación. Así, en todo momento, se conoce de antemano cuáles serán los nodos que generarán el próximo bloque. Aprovechando esto, los nodos pueden recibir las transacciones y enrutarlas a los próximos nodos generadores. De esta manera, se pueden tomar dichas transacciones e incluirlas en el próximo bloque, minimizando el tiempo de producción de bloques. Todo esto es posible porque el proceso de selección de líderes de generación de bloques en Solana es determinista, es decir, se puede saber con antelación quién será el próximo generador de bloques.

Para evitar manipulaciones al sistema, toda transacción en Gulf Stream tiene un tiempo de vida marcado de unos 24 segundos. Si una transacción no es confirmada en ese espacio de tiempo solo se puede esperar una salida: un fallo de transacción y la necesidad de reenviar la transacción. Sin embargo, la velocidad de procesamiento de Solana es tal, que esto solo puede suceder si se llega a su pico máximo de rendimiento, y con la capacidad de llegar hasta 50 mil TPS en su red mainnet actual, esto es difícil de alcanzar.

Sealevel, paralelización de smart contracts

Uno de los mayores avances de Solana es su capacidad para paralelizar la ejecución de transacciones y smart contracts. Recordemos, que en blockchain hasta la más sencilla transacción es en realidad un smart contract, y esto aplica desde Bitcoin y por supuesto en Solana. Pues bien, Solana se sirve de lenguaje C y Rust para crear un ambiente de programación de smart contracts único, y entre sus posibilidades está, la de paralelizar su ejecución. Esto es posible gracias a Sealevel, el nombre con el que los desarrolladores de Solana han identificado esta función.

https://lh4.googleusercontent.com/0at-fim4ZIgAfPjB7x7BwlC40_2cg2jQgW2Nl5AivHDttjh8UzKG1JpTWd2BDMXSAG1nKPw-J6sT3a4-HVrgKe6HtPQkXS5E7YCTF9Wuw05sDAgMliIWEOCs7ka6rh3IPO3yOmI5

Ejemplo de smart contract en Solana escrito en lenguaje C

Sealevel permite que Solana puede leer, ejecutar y escribir instrucciones de forma paralela dentro del layer de ejecución de smart contracts de Solana. A diferencia de redes como Ethereum y EOS, donde sus sistemas de smart contracts son de un solo hilo de ejecución (solo se puede hacer una acción a la vez), Solana puede ejecutar múltiples acciones al mismo tiempo, ejecutar diferentes smart contracts y usar todos los recursos computacionales de la red de forma paralela.

Para verlo de forma más simple, imagine que tiene que una carpeta con 100 hojas de papel y cada hoja tiene 10 problemas. Esto es un total de 1000 problema que debe ser resuelto por la red computadoras. Si ponemos a una red como Ethereum a resolver estos problemas, lo que pasará es que se tomaría cada hoja, y se resolvería cada problema uno por uno hasta terminar con todos ellos. En Solana, lo que pasaría es que se tomarían las 100 hojas y se resolverán los 10 problemas de cada una de ellas, al mismo tiempo. Esto deja en claro una cosa: si los computadores de la red Solana son potentes, la ejecución de Solana será mucho más rápida de la que podría hacer Ethereum. De hecho, para Ethereum sería imposible alcanzar la velocidad de Solana.

Sealevel resulta útil porque ayuda a Solana a escalar de una forma en que otras redes no pueden. Por ejemplo, si instalamos un nodo de Solana en equipo poco potente, nuestra capacidad de procesamiento será menor. Pero si actualizamos el equipo, nuestra capacidad de procesamiento aumenta. Esto permite que la eficiencia y potencia de nuestros equipos computacionales tenga un impacto directo en la escalabilidad de Solana, lo que precisamente se pudo demostrar en sus redes de pruebas y sus picos de rendimiento de hasta 500 mil transacciones por segundo. Adicionalmente esto nos dice otra cosa de Solana: no se necesita de segundas capas, Solana es lo suficientemente capaz de manejar todo directamente sobre la blockchain.

Otras funciones interesantes en Solana

Por otro lado, Solana es una red dedicada al despliegue de aplicaciones descentralizadas (DApps). En tal sentido, Solana cuenta con sistemas para el almacenamiento distribuido (conocido como Archivers), el cual permite almacenar información de primer nivel para las aplicaciones facilitando el acceso a dichos recursos en toda la red.  Adicional a esto, Solana cuenta con un sistema conocido como Cloudbreak, que permite mantener una estructura de datos uniforme en todos sus nodos.

En pocas palabras, Solana es un proyecto altamente innovador con soluciones propias a muchos de sus problemas y desafíos técnicos, con el fin de hacer realidad una de las redes blockchain más rápidas que existen en la actualidad.

Casos de uso de Solana

Solana no es una red centrada en la movilización de valor. Si bien su token SOL puede usarse con ese fin, está en realidad no es la finalidad principal con la que Solana fue creada. Ese lugar se lo llevan las aplicaciones descentralizadas, ya que todo lo anterior fue pensado para hacer que las mismas puedan ser implementadas en la red Solana y usarse de forma masiva.

El éxito de Solana en ese punto es tal que actualmente grandes proyectos usan esta red gracias a sus capacidades técnicas. Por ejemplo, Tether tiene implementado su token USDT sobre la red Solana, y el valor actual sobre la red es superior a los 300 millones de dólares. El caso se repite por ejemplo para el token USDC, el cual también está implementado sobre Solana y alcanza un valor superior a los 400 millones de dólares.

El DEX Serum, es otra muestra del potencial de Solana, donde podemos ver que la complejidad de los smart contracts no es ninguna limitante. Otros proyectos enmarcados en el ecosistema DeFi son Step Finance,  Raydium, Oxygen, Band Protocol, ChainLink, LunaDex, entre otros.

Relacionado con: Los tokens USDT estarán disponibles en la red blockchain de alta velocidad, Solana

Conclusiones

Es claro en este punto que Solana, pese a su reciente nacimiento y su estado de desarrollo aún incompleto, es un serio contrincante contra blockchains como Ethereum, Cardano y EOS. Sus capacidades avanzadas de smart contracts, su velocidad, paralelización de tareas y funciones avanzadas le hacen una opción perfecta si deseas crear una DApp capaz de hacer frente a una gran cantidad de usuarios.

Si bien, aún queda mucho trabajo por hacer, Solana es capaz de demostrar sus capacidades perfectamente, y esa es la razón por la que muchos en la comunidad apuestan a que se convierta en un punto de desarrollo importante para muchas DApps dentro del ecosistema.