• El consenso de avalancha explicado en términos simples.

Collin Cusce.- En 2018, un equipo anónimo que se hacía llamar Team Rocket introdujo el Protocolo de consenso de Avalanche. 

Esta publicación describe el protocolo con propiedades aparentemente mágicas (pero reales), lo pone en contexto en comparación con otros enfoques y describe los fundamentos técnicos que lo hacen único.

¿Qué es el consenso?

El consenso es el medio por el cual una serie de votantes independientes (a menudo llamados «validadores») llegan a un acuerdo sobre una decisión. De un vistazo, el proceso parece sencillo: averigüe si un dato es consistente con las reglas de su sistema y si el resto de la red está de acuerdo con su evaluación.

Los protocolos de consenso (como Avalanche) facilitan el acuerdo entre todos los validadores, asegurando que la red tenga una vista sincronizada de los datos. Los protocolos de consenso sólidos funcionan incluso si algunos validadores en la red son defectuosos o maliciosos.

Al final de este proceso, todos los nodos compartirán los mismos datos, denominados “state”, que se acordaron en este proceso de toma de decisiones. 

Si se realiza una transacción en conflicto en cualquier nodo y no está totalmente de acuerdo con el resto de la red, esto se denomina «safety violation (infracción de seguridad)». Esto significa que al menos una máquina no es coherente con las demás máquinas de la red. 

El propósito de los protocolos de consenso es minimizar la posibilidad de violaciones de seguridad en la red, preferiblemente hasta el punto en que sea increíblemente improbable.

Concepto bastante simple, ¿verdad? Sin embargo, el tema de los protocolos de consenso es una de las áreas más difíciles de la informática.

Historia de Consensus

Durante los 45 años de historia de los sistemas distribuidos, solo ha habido tres enfoques para el problema del consenso: clásico, Nakamoto y Avalanche. Analicemos estos tres enfoques para ilustrar qué los distingue entre sí y determinar sus respectivas fortalezas y debilidades.

Protocolos clásicos

Los protocolos de consenso clásicos, como Practical Byzantine Fault Tolerance (PBFT) y HotStuff, se basan en la votación de todos a todos. Esto significa que un validador necesita escuchar a un vasto conjunto de nodos que componen la red para tomar una decisión. Además, son protocolos de “probabilidad de 1”, o P=1, lo que significa que la red acuerda una decisión con absoluta certeza. 

Las transacciones finalizan inmediatamente después de que un nodo ha recibido respuestas de la fracción requerida de los nodos que componen el sistema.

El consenso clásico tiene dos problemas importantes en entornos abiertos similares a Internet. 

  • El primer problema es que estos protocolos son frágiles: su corrección depende en gran medida de que todos en el sistema conozcan y estén de acuerdo con las identidades de los validadores que componen el sistema en cualquier punto. Como resultado, cualquier error en el mantenimiento de la membresía en el sistema o cualquier diferencia en las vistas de la red puede conducir a violaciones de seguridad. Además, un atacante solo necesita el control del 33% de la red para lanzar un ataque de doble gasto con garantía de éxito.
  • En segundo lugar, estos sistemas, aunque rápidos, no se adaptan bien al número de participantes. El protocolo clásico más escalable, HotStuff (diseñado por cierto por Ted Yin, que ahora está trabajando en el protocolo Avalanche) utilizado por Libra de Facebook, solo admite aproximadamente 100 validadores antes de que el rendimiento comience a sufrir.

Estos dos defectos hacen que el consenso clásico sea un candidato inviable para redes abiertas y sin permiso donde los nodos pueden unirse y salir a voluntad y los nodos pueden comportarse de manera adversa a la intención de la red.

Consenso de Nakamoto

Durante más de una década, los sistemas prácticos bizantinos tolerantes a fallos fueron una novedad porque el consenso clásico no pudo escalar para manejar las necesidades globales. 

Luego, de la nada, apareció Satoshi Nakamoto y dejó caer el documento de Bitcoin y le mostró al mundo que era posible crear un protocolo de consenso resistente al adversario que funcionaba a escala global. 

Nakamoto logró esto redefiniendo el problema del consenso y haciendo probabilística la definición de corrección.

Con los protocolos basados ​​en Nakamoto, en lugar de esperar una certeza absoluta en todos los nodos de la red, Nakamoto intercambia una diferencia indistinguible en la probabilidad por una mayor escalabilidad. 

Cuando los protocolos clásicos deben llegar a un consenso con una probabilidad de 1 (P = 1), Nakamoto llega a un consenso con una probabilidad de 1 menos una mínima posibilidad de error (P=1-ε). 

En Nakamoto, este valor de error se hace cada vez más pequeño con el tiempo a medida que se producen más bloques. Cuantos más bloques, las posibilidades de una reorganización disminuyen exponencialmente.

Sin lugar a dudas, Nakamoto es un gran avance como protocolo global robusto, pero tiene inconvenientes. Es lento, consume mucha energía y lleva mucho tiempo sentirse seguro de la finalidad de una transacción. Si bien esos son inconvenientes aceptables para un activo que se mueve con poca frecuencia o actúa como una reserva, son una carga demasiado pesada para casos de uso como pagos de igual a igual y finanzas descentralizadas.

Avalanche

A raíz del trabajo de Nakamoto, el mundo todavía quería un protocolo con todos los beneficios del consenso de Nakamoto (robustez, escala, descentralización) y todos los beneficios del consenso clásico (velocidad, finalidad rápida y eficiencia energética). La propia versión de Crypto del proverbial, «ten tu pastel y cómetelo también».

Luego, en mayo de 2018, un grupo seudónimo llamado Team Rocket distribuyó un documento que propuso una tercera clase de protocolo de consenso que denominaron «Avalanche». 

Con todos los beneficios del consenso clásico y la descentralización masiva del consenso de Nakamoto, demostró que los protocolos clásicos se pueden generalizar para comportarse de manera probabilística y obtener mejoras masivas de rendimiento como resultado.

Este artículo contiene explicaciones de alto nivel. Si desea leer información detallada sobre Avalanche, consulte https://avalabs.org/whitepapers .

Imagen para publicación

¿Qué es Avalanche Consensus?

El consenso de avalancha, como el consenso de Nakamoto, es un protocolo probabilístico. Así como Nakamoto intercambió una pequeña posibilidad de probabilidad por rendimiento, Avalanche adopta la probabilidad para hacer que la posibilidad de error sea igual de microscópica (y mejor aún, como todas las partes de Avalanche, configurables por validadores en subredes personalizadas).

Avalanche puede hacer que el error sea tan pequeño que es incluso menos probable que ocurra una violación de seguridad en un nodo Avalanche que las probabilidades de encontrar una colisión de hash SHA-256. 

Para poner esto en una mayor perspectiva, hay decenas de órdenes de magnitud más probable que un asteroide que acabe con la vida colisione con la Tierra en los próximos cien años que una colisión SHA-256 que se detecte en los próximos mil años por una red que calcula 1 quintillón. hashes un segundo. ¡Eso es realmente seguro!

Avalanche también finaliza todas las transacciones de inmediato, sin esperar confirmaciones. Avalanche puede hacerlo porque es una generalización sobre el consenso clásico, por lo que hereda esta propiedad tan deseable. 

De hecho, Avalanche ve que las transacciones finalizan en menos de un segundo en promedio. Esto es increíblemente rápido en comparación con las redes descentralizadas existentes.

Como consenso clásico generalizado con modelos probabilísticos incluidos, Avalanche también tiene la propiedad de estar vinculada a la CPU y de alto rendimiento

No requiere hardware especializado (léase: caro) para alcanzar números de alto rendimiento que superen las 4.500 transacciones por segundo. Eso significa que la computadora que ya tiene (o incluso la que está acumulando polvo en su armario) es lo suficientemente potente como para ejecutar Avalanche. La combinación hace que los nodos Avalanche sean extremadamente ecológicos y económicos.

Mejor aún, como el consenso de Nakamoto, no hay un límite conocido sobre cuántas personas pueden participar en la red en sus niveles más profundos; no se puede decir lo mismo de los protocolos clásicos cuyo rendimiento se degrada exponencialmente con una mayor participación ( más en la nota avanzada a continuación ) . A pesar de todo lo que se habla sobre hacer que estas redes sean accesibles a las masas, Avalanche no tiene igual en este sentido.

Avalanche no depende de la Prueba de trabajo como el consenso de Nakamoto. En protocolos como Bitcoin, la prueba de trabajo es necesaria tanto para la organización como para la seguridad contra actores deshonestos. Avalanche podría usar Prueba de trabajo, pero eligió Prueba de participación para obligar a los usuarios a tener cierta cantidad de tokens antes de poder votar en las transacciones.

Finalmente, a diferencia de Bitcoin y otros sistemas basados ​​en el trabajo de Nakamoto que requiere una acción perpetua, los nodos Avalanche solo funcionan cuando hay trabajo por hacer. No hay minería ni sondeos para obtener nuevos bloques. Las transacciones se transmiten a la red más amplia, que luego las escucha y comienza a votar. Si no hay transacciones para votar, los nodos de la red no hacen nada excepto escuchar hasta que se escuchan nuevas transacciones. En pocas palabras, Avalanche funciona de manera más inteligente, no más difícil.

Nota avanzada: la propiedad más importante de Avalanche, que realmente lo distingue de los protocolos clásicos existentes, es que, al igual que el consenso de Nakamoto, puede operar sin un límite superior conocido de participantes en la red. Las decisiones en Avalanche se pueden tomar en O (1) (número constante) de mensajes por nodo. Compare esto con los protocolos clásicos que toman O (n²) mensajes para llegar a un consenso y los problemas de escalamiento de la red que enfrentó Classical desaparecen en Avalanche.

Cómo funciona el consenso de Avalanche

Para empezar, hablemos de lo que hace un validador en el consenso de Avalanche. Avalanche es un protocolo de votación. Los validadores escuchan las transacciones. Cuando escuchan una transacción, votan si una transacción debe ser «Aceptada» y, si no lo es, se marca como «Rechazada». 

Las transacciones que parezcan virtuosas serán votadas como «Aceptadas» por un validador. Si hay un conflicto, la transacción se votará como «Rechazada». Esa es la suma de todo. Un validador ve una decisión, toma una decisión inicial y luego colabora con el resto de la red para determinar si la red está de acuerdo con esta decisión. Esta es la misma expectativa en los protocolos de votación clásicos, pero en Avalanche esto sucede en conteos de validadores mucho más altos.

Este proceso de votación en Avalanche es lo que lo hace tan único. Cada validador es un tomador de decisiones completamente independiente. No hay elección de líder. Sin embargo, por protocolo, cada nodo usa el mismo proceso para determinar si una decisión es virtuosa y qué tan probable es que esté en consenso con el resto de la red. Una vez que ven una alta probabilidad de acuerdo en la red, el nodo bloquea su voto y acepta una transacción como definitiva.

El proceso utilizado para determinar si se prefiere una transacción y si el resto de la red está de acuerdo con esta decisión se denomina “submuestreo aleatorio repetido”.

En un nivel alto, esto significa que un validador selecciona aleatoriamente a otros validadores para preguntarles qué les gusta. Hace esto una y otra vez en nuevos nodos seleccionados al azar hasta que acumula suficientes datos para determinar que su probabilidad de ser correcta es tan alta que también puede considerar imposible que esté mal.

Con más detalle, funciona de la siguiente manera:

  1. A un validador se le presenta un conjunto de transacciones que se han emitido y se le solicita que decida qué transacciones «Aceptar».
  2. El cliente de nodo presenta las máquinas virtuales («VM») con sus transacciones, y las VM proporcionarán información para ayudar al cliente a determinar qué transacciones son aceptables.
  3. El validador selecciona un subconjunto de estas transacciones que no entran en conflicto, las marca como preferidas e intenta aceptarlas a través de la red.
  4. Cualquier nodo que consulte este validador recibe su última opción preferida para esta decisión.
  5. Este validador selecciona K nodos de toda la lista de validadores (la probabilidad de selección está ponderada por la cantidad de apuesta) para consultar su decisión preferida.
  6. Cada validador consultado responde con sus decisiones preferidas, los votos del validador se actualizan en consecuencia y se genera confianza.
  7. Mientras tanto, otros nodos también están seleccionando validadores aleatorios del conjunto de validadores para ser consultados por su respuesta preferida y actualizando sus respuestas en consecuencia.
  8. Esto continúa durante al menos M rondas o hasta que se alcanza un umbral de confianza suficiente, lo que suceda al final, con K validadores seleccionados al azar en cada ronda (sin reemplazo).
  9. Una vez que se alcanza un umbral de confianza, la decisión sobre la transacción se bloquea como definitiva.
  10. Si es «Aceptada», la transacción se envía a la VM para ser manejada; si es «Rechazada», la transacción se elimina del consenso.
Avalanche
Ava

El documento técnico del Team Rocket mostró que con la parametrización correcta, una red llegará a la misma decisión utilizando este proceso con una probabilidad parametrizable.

Finalidad probabilística

Los científicos necesitan tener certeza en sus modelos. Es muy agradable y elegante poder decir, «esto es absolutamente cierto más allá de una sombra de duda», al describir un sistema o proceso. Los protocolos clásicos se esfuerzan por alcanzar este modelo idílico, pero en el mundo real, nada es seguro.

Con 100 máquinas en una red clásica, existe la posibilidad de que el 33% de ellas se desconecten todas a la vez o que alguien se haga cargo socialmente del 33% de ellas e intente imponer su voluntad en la red. También existe una probabilidad distinta de cero de que todo el oxígeno en una habitación salte al otro lado a través de colisiones aleatorias y haga que cualquiera que tenga la mala suerte de estar en el lado equivocado se asfixie en un charco de nitrógeno. Es posible, pero las probabilidades son tan bajas que no preocupan a nadie.

Nakamoto continúa demostrando al mundo que la finalidad probabilística es aceptable, siempre y cuando la posibilidad de una falla de seguridad sea tan astronómicamente remota que, si ocurre, sería más fascinante que la red tenga un pequeño contratiempo por un momento. El mundo lo considera un nivel de servicio aceptable. Diablos, eso es mucho mejor que cinco nueves (99,999%) que obtienes con los SLA de nivel de operador.

Avalanche, al aceptar este mismo margen de error menor, está aceptando la posibilidad de error una vez cada 20.000 años en el modelo con los parámetros correctos. 

Es más probable que la infraestructura de Internet obsoleta provoque cortes masivos de la red. Fue esta información clave la que ayudó al Team Rocket a allanar el camino para un nuevo protocolo de consenso que escala tremendamente mejor que las redes clásicas existentes.

Un futuro escalable y descentralizado con Avalanche

Los protocolos prácticos clásicos bizantinos tolerantes a fallos mostraron que una red puede llegar a un consenso a pesar de los participantes adversarios. 

Los protocolos de Nakamoto demostraron que los protocolos probabilísticos son seguros en la práctica y pueden proporcionar una descentralización y solidez sin precedentes.

Avalanche toma estas revelaciones y las combina en un nuevo protocolo, mostrando que puedes tener lo mejor de Classical y Nakamoto sin las desventajas que vienen con cualquiera de las clases de protocolos.

Al hacer que un validador seleccione aleatoriamente a otros validadores para preguntarles cuáles son sus preferencias, los participantes de Avalanche generan confianza en la decisión correcta compartida por todos los nodos de la red. Con suficiente confianza, se toma una decisión de inmediato. Este proceso ocurre tan rápido que Avalanche compite con los principales sistemas de pago en su capacidad de proceso y transacciones claras en una red.


Sobre Avalanche

Avalanche es una plataforma de código abierto para lanzar aplicaciones financieras descentralizadas e implementaciones de blockchain empresarial en un ecosistema interoperable y altamente escalable. Los desarrolladores que se basan en Avalanche pueden crear fácilmente aplicaciones potentes, confiables y seguras y redes de blockchain personalizadas con conjuntos de reglas complejos o construir sobre subredes públicas o privadas existentes.

Sitio web | Whitepapers | Twitter | Discord | GitHub | documentación | Explorer 

Avalanche-X | Telegram | Facebook | LinkedIn | Reddit | Youtube