Turbina: el protocolo de propagación de bloques de Solana resuelve el trilema de escalabilidad

Comprende 1 de las 7 tecnologías clave que hacen de Solana la cadena de bloques con mayor rendimiento del mundo.

Solana es la cadena de bloques sin permiso con mayor rendimiento en el mundo. En las iteraciones actuales de Solana Testnet, una red de 200 nodos físicamente distintos admite un rendimiento sostenido de más de 50,000 transacciones por segundo cuando se ejecuta con GPU. Lograr esto requiere la implementación de varias optimizaciones y nuevas tecnologías, y el resultado es un gran avance en la capacidad de la red que señala una nueva fase en el desarrollo de blockchain.

Hay 7 innovaciones clave que hacen posible la red de Solana:

Prueba de la historia (POH): un reloj antes del consenso; Torre BFT – una versión de PBFT optimizada para PoH; Turbina – un protocolo de propagación de bloques; Gulf Stream – Protocolo de reenvío de transacciones sin mempool; Pipeline VM – ridículamente paralelo contratos inteligentes en tiempo de ejecución Cloudbreak – Base de datos de cuentas escaladas horizontalmente; andReplicators – Tienda de contabilidad distribuida

En este post, exploraremos Turbine, el protocolo de propagación de bloques de Solana, inspirado en BitTorrent, que resuelve el trilemma de escalabilidad de la cadena de bloques.

El trilemma de la escalabilidad en la tecnología blockchain tiene que ver con el ancho de banda. En la mayoría de las redes de blockchain de hoy, dada una cantidad fija de ancho de banda por nodo, al aumentar el número de nodos aumentará el tiempo necesario para propagar todos los datos a todos los nodos. Eso es un gran problema

Sin embargo, hay innumerables oportunidades para optimizar la forma en que se propagan los datos. Existen muchas técnicas novedosas de propagación de datos, cada una de las cuales está optimizada para aplicaciones específicas. Por ejemplo, BitTorrent está optimizado para servir archivos grandes a grandes grupos de personas que usan TCP, mientras que MediaFLO, un proyecto con el que trabajé, es un protocolo optimizado para la propagación de datos en la capa física para mejorar la eficiencia de la multidifusión a través de redes inalámbricas.

Con ese contexto, saltemos a Turbine, el protocolo de propagación de bloques de Solana, para explicar cómo la red de Solana propaga los datos para resolver el trilema de escalabilidad de la cadena de bloques.

Uno de los desafíos para las cadenas de bloques de alto rendimiento es cómo la red propaga grandes cantidades de datos a un gran número de pares. Consideremos, por ejemplo, una red de 20,000 validadores. El líder debe transmitir un bloque de 128 MB (aproximadamente 500,000 transacciones a 250 bytes / transacción) a todos los 20,000 validadores. La implementación ingenua requeriría que el líder tenga una conexión única con cada validador y transmita el total de 128 MB 20,000 veces. Simplemente no hay suficiente ancho de banda para acomodar tantas conexiones.

Nuestra solución a este problema, Turbine, se basa en gran medida en BitTorrent, aunque algunos detalles técnicos importantes los diferencian. La turbina está optimizada para la transmisión y transmite datos usando solo UDP, e implementa una ruta aleatoria por paquete a través de la red a medida que los líderes (productores de bloques) transmiten sus datos. El líder rompe el bloque en paquetes de hasta 64 KB de tamaño. Para un bloque de 128MB, el líder produce 2,000 paquetes de 64KB y transmite cada paquete a un validador diferente.

A su vez, cada validador retransmite el paquete a un grupo de pares que llamamos un vecindario. Puede visualizar la red como un árbol de vecindarios, lo que permite que la red crezca más de 1.000 validadores:

Cada vecindario es responsable de transmitir una parte de sus datos a cada vecindario debajo de él.

Si cada vecindario está compuesto por 200 nodos, una red de 3 niveles, que comienza con un solo líder en la raíz, puede alcanzar 40,000 validadores en 2 saltos, o aproximadamente 200 milisegundos, suponiendo que cada enlace de red es de 100 ms en promedio.

El desafío que enfrentamos con esta técnica es la seguridad. Por ejemplo: los nodos adversarios pueden elegir no retransmitir datos o retransmitir datos incorrectos. Para manejar los nodos adversarios, el líder genera códigos de borrado de Reed-Solomon. Los códigos de borrado permiten que cada validador reconstruya todo el bloque sin recibir todos los paquetes.

Si el líder transmite el 33% de los paquetes del bloque como códigos de borrado, entonces la red puede eliminar cualquier 33% de los paquetes sin perder el bloque. Los líderes pueden incluso ajustar este número de forma dinámica según las condiciones de la red. Estas determinaciones se realizan según la tasa de caída de paquetes observada por los líderes de los bloques anteriores.

No todos los validadores son creados iguales. Los validadores más importantes son aquellos con la mayor participación. Por lo tanto, damos prioridad a la propagación en consecuencia. Un algoritmo de selección ponderado por estaca construye el árbol de manera que los validadores de estacas más altos se encuentran en los vecindarios más cercanos al líder. Cada validador calcula independientemente el mismo árbol. Si bien los códigos de borrado pueden reparar fallas, es posible que los nodos adversarios se posicionen en el árbol de manera que puedan inducir una falla más alta que el tamaño de su apuesta combinada, especialmente cuando se combinan con ataques de denegación de servicio.

¿Cómo lidiamos con este tipo de ataque de eclipse? Nuestro algoritmo de fanout genera un árbol ponderado de estaca para cada paquete utilizando una fuente aleatoria basada en la firma digital del paquete. Dado que cada paquete toma una ruta diferente, y la ruta no se conoce de antemano, un ataque de eclipse a nivel de vecindario requeriría un control casi completo de la red.

Obtenga más información sobre Tour de SOL: el evento de prueba de incentivos incentivado de Solana.

Con un nivel, esta técnica escala entre 200 y 1.000 nodos. Las tarjetas de red que admiten 1 Gbps pueden transmitir un millón de paquetes por segundo. Un solo validador puede enviar paquetes de hasta 64 KB a 1,000 máquinas en un segundo si la conexión de red lo permite.

La utilización de Solana de la propagación de ambas Turbinas, junto con avances como Proof of History, Pipeline VM, Proof of Replication y Gulf Stream se combinan para crear la cadena de bloques de mayor rendimiento en todo el ecosistema. El testnet de Solana está en vivo hoy. Puedes verlo en https://testnet.solana.com. Para fines de costo, solo estamos ejecutando un puñado de nodos. Sin embargo, lo hemos implementado en muchos casos en más de 200 nodos físicamente distintos (no en hardware compartido) en 23 centros de datos en AWS, GCE y Azure para la evaluación comparativa.

El tiempo de ejecución está funcionando hoy, y los desarrolladores pueden implementar código en el testnow ahora. Los desarrolladores pueden construir contratos inteligentes en C hoy, y estamos trabajando activamente en la cadena de herramientas Rust. Rust será el idioma principal para el desarrollo de contratos inteligentes de Solana. La cadena de herramientas Rust está disponible públicamente como parte del SDK de Javascript de Solana, y estamos realizando una nueva iteración en el Kit de desarrollo de software.

Solana pronto lanzará una versión beta pública que incentivará a los validadores para que ejecuten nodos a través del Tour de SOL, análogo al Juego de estacas de Cosmos, que desafía al público en general a probar los límites de la red de Solana mientras gana fichas por hacerlo.

Para repasar con la base de conocimientos de Solana, lea el Libro de solana y suscribirse a la Blog Solana.

Para participar en la comunidad de Solana, comuníquese con Discordia, Telegramy Gorjeo.