
Cómo mitigar el spam QUICkly: todo lo que debes saber sobre Solana y QUIC
¿De qué trata este artículo?
Solana es la blockchain más rápida y escalable disponible actualmente en el mercado. Es reconocida por la velocidad de sus transacciones, lo que la convierte en la cadena perfecta para diversos casos de uso. Pese a estos logros, la red de Solana ha sido objeto de miedo, incertidumbre y duda (conocidos coloquialmente como FUD) debido a sus interrupciones. Aunque este FUD fue una preocupación legítima en el pasado, actualmente es injustificado. ¿Por qué? Durante el último año, los ingenieros de Solana Labs han trabajado en varias actualizaciones de la red. La más destacada reemplazó el protocolo personalizado de Solana basado en UDP puro para recibir transacciones por QUIC.
En este artículo, examinaremos el funcionamiento de los protocolos de red, TCP y UDP, y veremos cómo QUIC mejora ambos. Después, centraremos la atención en Solana y analizaremos sus ventajas particulares. Este artículo busca darte una comprensión integral de por qué esta actualización de red representa un hito técnico importante para Solana.
Actualizaciones de la red de Solana
El 13 de diciembre de 2022, Solana Foundation publicó una noticia titulada “Actualizaciones de la red de Solana”. En ella, describió varias actualizaciones de la red y el avance de cada una. Estas son las actualizaciones:
QUIC
- Actualmente activo en Mainnet-beta
QoS ponderada por stake
- Actualmente activo en Mainnet-beta
Mercados de comisiones
- Actualmente activo en Mainnet-beta; la compatibilidad con RPC y billeteras estará disponible pronto
- Puedes seguir su progreso aquí
Aumento del tamaño de las transacciones
- Actualmente en desarrollo
Estado de voto compacto
- Actualmente activo en Testnet
Una de las principales razones por las que Solana ha sufrido interrupciones en el pasado ha sido el spam. Algunos ejemplos incluyen:
- El spam del IDO de Grape del 14 de septiembre de 2021
- Los ataques DDoS ocurridos del 6 al 12 de enero de 2022
- El spam de acuñación de NFT ocurrido del 30 de abril al 1 de mayo de 2022
Solana no ha registrado ningún caso de interrupción relacionado con spam desde la implementación de QUIC. Esto convierte a QUIC en un logro histórico para mejorar el tráfico de red y la recepción de datos de Solana. Antes de conocer QUIC, debemos explorar cómo funcionan los protocolos de red. Comprender mejor los fundamentos de las redes nos permite reconocer el verdadero impacto de QUIC en la red de Solana.
¿Qué es un protocolo de red?
Un protocolo de red es un conjunto establecido de reglas que define cómo se envían datos entre dispositivos de una misma red. Los protocolos de red permiten que los dispositivos conectados se comuniquen fácilmente entre sí, sin importar sus componentes internos, estructura o diseño.
Imagina que estás sentado frente a un amigo en un restaurante de París. Ambos deciden hablar francés y, como resultado, la conversación fluye sin problemas. Su decisión mutua de hablar francés es un acuerdo sobre un conjunto de reglas gramaticales, vocabulario y pronunciación que ambas partes comprenden.
Los protocolos de red funcionan de manera similar para los dispositivos conectados, así como el francés sirve de “protocolo” para tu conversación en un restaurante parisino. Decidir usar TCP, UDP o QUIC significa aceptar un conjunto establecido de reglas y convenciones para intercambiar información. Seguir un protocolo de red específico garantiza que los dispositivos conectados puedan entenderse sin confusiones.
¿Qué es TCP?
Transmission Control Protocol (TCP) es una interfaz de comunicación estandarizada para enviar flujos de datos entre dos endpoints de una red. Vint Cerf y Bob Kahn crearon Transmission Control Program, un protocolo monolítico que luego dividieron en una arquitectura modular compuesta por TCP e Internet Protocol (IP). El conjunto completo se conoce como TCP/IP. En este artículo, cuando uso la abreviatura TCP, me refiero a Transmission Control Protocol y no al conjunto completo.
TCP está orientado a conexiones: requiere establecer una conexión entre el cliente y el servidor antes de enviar datos. TCP utiliza un protocolo de enlace de tres pasos para establecer una conexión: sincronizar (SYN), sincronizar-confirmar (SYN-ACK) y confirmar (ACK). Puedes pensar en SYN como extender la mano para saludar y preguntar si la otra persona está lista para hablar; en SYN-ACK, como la otra persona estrechando tu mano, diciendo que está lista para hablar y preguntando si quieres continuar; y en ACK, como tú devolviendo el apretón de manos y diciendo que quieres seguir hablando. Así se establece una sesión. Ambas partes saben que están conectadas entre sí y aceptan que están listas para compartir información.
TCP divide los datos en paquetes que se envían por la red. A cada paquete se le agregan pequeñas cantidades de datos. Estos datos adicionales incluyen un número de secuencia que permite detectar paquetes perdidos o fuera de lugar, y una suma de comprobación que permite detectar errores dentro de un paquete.
Cuando una conversación se interrumpe, le pedimos a la otra persona que repita lo que dijo para asegurarnos de haberla escuchado bien. TCP gestiona las interrupciones de forma similar mediante Automatic Repeat Request (ARQ). Cuando ocurre un problema, ARQ le indica al remitente que reenvíe el paquete dañado o perdido. Luego, TCP le indica al emisor que reduzca su velocidad de transmisión de datos y limita la cantidad de paquetes sin confirmar que pueden estar en tránsito. Una vez resuelto el error, TCP utiliza mecanismos para evitar la congestión y aumenta gradualmente la velocidad.
TCP no es el protocolo adecuado para todos los casos de uso porque ordena todo el tráfico. Por lo tanto, si una parte de los datos se pierde o se daña, todo lo que viene después de ese paquete debe esperar. Pero ¿qué pasaría si no tuviéramos que esperar?
¿Qué es UDP?
User Datagram Protocol (UDP) es una interfaz de comunicación estandarizada que se utiliza para transmitir datos por una red. A diferencia de TCP, UDP no requiere conexión ni garantiza la entrega, el orden o la ausencia de duplicados en los paquetes de datos. UDP no utiliza ningún diálogo de enlace, lo que expone la transmisión de datos a cualquier inestabilidad de la red subyacente. Esto hace que UDP sea más rápido que otros protocolos porque no dedica tiempo a establecer una conexión con el destino. Sin embargo, también hace que algunas personas llamen al protocolo “Unreliable Datagram Protocol”.
UDP funciona enviando datagramas por la red. Los datagramas son conjuntos de datos más independientes que incluyen información para el enrutamiento desde el origen hasta el destino. Gracias a esta información, no dependen de otros datagramas para el enrutamiento. Estos datagramas constan de un encabezado y datos. El encabezado tiene cuatro campos, todos de 16 bits: un puerto de origen opcional, un puerto de destino, una longitud y una suma de comprobación opcional. El proceso de envío es el siguiente:
- La aplicación emisora crea un socket UDP
- La aplicación emisora coloca los datos que desea enviar en un datagrama UDP, con un encabezado que contiene el puerto de destino y cualquier otra información relevante
- El datagrama se envía a la capa IP para su enrutamiento y entrega
- La capa IP toma el datagrama, lo transfiere a la capa UDP y elimina su encabezado
- El datagrama se envía a la aplicación que escucha en el puerto especificado
Piensa en UDP como hablar con alguien al otro lado de una sala concurrida. Le gritas sin preocuparte por si te escuchó ni esperar su respuesta. Quieres transmitir el mensaje rápidamente, sin mantener una conversación prolongada. Es arriesgado porque la persona podría no haber escuchado todo lo que dijiste, pero puede ser muy eficaz.
¿Por qué usarías un protocolo de comunicación sin conexión como UDP si tienes una opción más confiable como TCP? UDP es muy útil para aplicaciones sensibles al tiempo o en casos donde cierta pérdida de datos es aceptable. Perder algunos fotogramas al jugar videojuegos con tus amigos es muchísimo mejor que sufrir pausas y almacenamiento en búfer constantes. UDP también se utiliza en llamadas VoIP, consultas al Domain Name System (DNS), monitoreo y registro.
QUIC: equilibrio entre eficiencia y confiabilidad
QUIC es un protocolo moderno de capa de transporte diseñado por Jim Roskind en Google en 2013. Combina la confiabilidad de TCP con las ventajas de baja latencia de UDP para crear un entorno optimizado que permite una comunicación asíncrona rápida y segura. QUIC se distingue por incorporar sesiones seguras y estrategias avanzadas de control de flujo, características de TCP, al marco más flexible y rápido que ofrece UDP.
En QUIC, el establecimiento de la conexión se simplifica al integrar el intercambio de claves criptográficas y los detalles del protocolo en el enlace inicial, que siempre se cifra de forma segura con Transport Layer Security (TLS). El protocolo habilita conexiones multiplexadas mediante UDP, lo que permite que varios flujos de datos independientes lleguen a sus endpoints sin afectarse entre sí. QUIC controla de manera independiente el flujo de cada stream. Así, aunque uno encuentre errores, no obstaculiza a los demás. Esto ayuda a evitar el bloqueo de cabecera (es decir, cuando el primer paquete retiene en una cola a una línea de paquetes), un problema que suele afectar a las conexiones TCP.
Si un paquete se pierde o se daña, QUIC se encarga de retransmitir los datos de forma inteligente para preservar la integridad y continuidad de la comunicación. Además, QUIC resiste los cambios en el entorno de red. Cada paquete lleva un identificador de conexión que identifica de forma única la conexión con el servidor, sin importar el origen. Por eso, la conexión puede restablecerse enviando otro paquete, ya que todos contienen este ID y la conexión original sigue siendo válida. En sentido figurado, esto significa que, si te cambias de sala, tu conversación no se interrumpe y continúa sin problemas.
Imagina que vuelves a estar en esa sala concurrida e intentas hablar con tu amigo. Esta vez, ambos tienen walkie-talkies cifrados que permiten un intercambio claro y seguro. Mientras la conversación abarca varios temas, tu amigo confirma cada mensaje levantando el pulgar. Una expresión de confusión te indica que debes repetir cualquier mensaje que no haya entendido, para que nada se pierda en la comunicación. Y si tú o tu amigo se cambian de sala, el diálogo continúa sin interrupciones. Esa es la esencia de QUIC: una comunicación robusta, adaptable y eficiente.
Cómo implementa Solana QUIC
QUIC ofrece varias ventajas a Solana, entre ellas:
- Menor tiempo para establecer conexiones: al optimizar el proceso de enlace, QUIC minimiza la latencia
- Multiplexación y gestión eficiente de paquetes: la capacidad de QUIC para gestionar varios flujos de datos simultáneamente sin bloqueos de cabecera mejora el rendimiento y la eficiencia de las transacciones
- Adaptabilidad y resiliencia: el protocolo está diseñado para adaptarse a condiciones cambiantes de la red, un requisito esencial para un sistema distribuido y descentralizado como Solana
- Personalización para optimizar la red: la flexibilidad de QUIC permite crear implementaciones a medida, como la de Solana, para cumplir objetivos específicos de rendimiento y seguridad de la red
QUIC se agregó a los puertos que reciben las transacciones de los usuarios. Esto permite limitar el tráfico de cada participante para que la red pueda concentrarse en procesar transacciones legítimas. QUIC está activo en Solana y se adoptó por completo en Mainnet-beta con la versión 1.13.4. Tras su integración, la red ha mostrado mejoras notables de estabilidad y rendimiento.
A pesar de estos avances, la reciente congestión de la red ha generado un debate sobre la eficiencia computacional de QUIC frente a la implementación anterior de UDP en Solana. Los críticos señalan que el enfoque de UDP puro permitía a los validadores centrarse exclusivamente en procesar transacciones, en lugar de gestionar el spam de enlaces y el cifrado. Además, el intercambio y la verificación de claves no forman parte del enlace inicial en la implementación de Solana. Solana utiliza la opción de QUIC para enviar un “paquete de desafío” que verifica las direcciones IP. El objetivo de este desafío es evitar la verificación del certificado en el primer paso del enlace y realizarla en la segunda parte, después de validar la IP. Sigue siendo debatible si Solana ha sufrido interrupciones relacionadas con spam o ataques DDoS, ya que la reciente interrupción de la red de Solana en febrero podría considerarse una denegación de servicio.
A medida que la red evoluciona, es importante revisar y mejorar continuamente las implementaciones que se han incorporado. QUIC busca resolver muchos de los problemas de TCP y UDP, pero, en retrospectiva, su eficacia es discutible. Un aspecto importante es analizar cómo funcionaría una solución en el hardware. Debido a su simplicidad, TCP funciona mucho mejor que QUIC en el hardware. Podría argumentarse fácilmente que, con un conjunto de instrucciones AES, un protocolo basado en TCP ofrecería más rendimiento que QUIC y sería más eficiente en términos de TPS.
En particular, el equipo de Jump Crypto está llevando QUIC al límite. El equipo creó su propia implementación robusta y escalable mientras desarrollaba Firedancer, un nuevo cliente validador para Solana. La red de Firedancer se diseñó desde cero para aprovechar el escalado del lado del receptor, un tipo de balanceo de carga acelerado por hardware. Esta arquitectura paralela permite que cada núcleo de CPU gestione de manera eficiente un segmento del tráfico entrante. El equipo publicó en X que:
Puedes encontrar una demostración y un hilo sobre el hito técnico de QUIC en Firedancer aquí.
Conclusión
¡Felicitaciones! En este artículo, exploramos los fundamentos de los protocolos de red, con énfasis en las funciones de TCP y UDP y su evolución hacia QUIC. También examinamos la implementación de QUIC en Solana y destacamos su papel fundamental para mejorar la red. Aunque QUIC ha fortalecido la resiliencia de la red de Solana frente al spam y los ataques DDoS, el crecimiento de la red ha revelado los desafíos y debates relacionados con su eficiencia computacional y los matices de su implementación.
QUIC encarna el objetivo principal de Solana: facilitar una red de alto rendimiento y baja latencia. Sus capacidades de multiplexación y recuperación ante la pérdida de paquetes colocan a Solana a la vanguardia de las discusiones sobre rendimiento y escalabilidad. La implementación del equipo de Firedancer demuestra la adaptabilidad de QUIC y destaca el potencial de las optimizaciones a medida para responder a las necesidades cambiantes de la red.
Comprender QUIC como desarrollador de Solana te ayuda a tomar decisiones mejor fundamentadas sobre temas que van desde las arquitecturas de aplicaciones hasta los errores de transacciones. Solana evoluciona constantemente, y QUIC también. Mantenerte al día con los últimos cambios de la red es la mejor forma de crear aplicaciones de alto rendimiento sobre Solana. Incluso si no eres desarrollador, comprender QUIC desde una perspectiva más técnica puede ayudarte a entender por qué Solana es una blockchain de alto rendimiento, reconocida por su velocidad y escalabilidad.
Si llegaste hasta aquí, anon, ¡gracias! Ingresa tu dirección de correo electrónico a continuación para no perderte ninguna novedad de Solana. ¿Quieres profundizar? Explora los artículos más recientes en el blog de Helius y continúa hoy mismo tu recorrido por Solana.
Recursos adicionales y lecturas complementarias
Artículos relacionados
Suscríbete a Helius
Mantente al día con las novedades del desarrollo en Solana y recibe actualizaciones cuando publiquemos


