Tendermint Explained – Llevando PoS basados ??en BFT al dominio público de Blockchain

Entrantes

Introducción

No puedo sentir la sobrecarga de información para los recién iniciados para obtener un curso acelerado sobre Tendermint, la red Cosmos, y donde los dos se cruzan. Hemos escrito sobre la pila Cosmos / Tendermint a un alto nivel, pero en esta publicación profundizaremos un poco más en las capas de consenso y redes de Tendermint Core. El diseño de dicha pila de software se compone de una capa de aplicación (Cosmos-SDK), una capa de consenso y una capa de red (Tendermint Core). Tendermint combina el consenso con un protocolo de chismes p2p de una manera completamente nueva. El uso de una arquitectura monolítica suele ser una mala práctica en informática, ya que dificulta la reutilización de los componentes del código, y los intentos de hacerlo resultan en complejos procedimientos de mantenimiento para las horquillas de la base de código .

Top Down: Capa de aplicación (Cosmos-SDK), Application Blockchain Interface (ABCI), Tendermint Core stack (algoritmo de consenso + protocolo de red p2p).

Primero lo primero: semántica. Tendermint Core, la pieza de software, se utiliza como sinónimo de Tendermint, la organización que está implementando Tendermint Core y la pila de software Cosmos Network. Técnicamente, Tendermint Core es un protocolo de bajo nivel que en realidad se compone de dos protocolos en uno: un algoritmo de consenso y un protocolo de red de igual a igual. Jae Kwon y Ethan Buchman, inspirados por el objetivo del diseño detrás de Raft y PBFT, especificaron Tendermint como un algoritmo fácil de entender y fácil de usar para desarrolladores mientras realizaban ingeniería de sistemas algorítmicamente compleja.

La nueva generación de algoritmos BFT de prueba de estaca (PoS) extraen elementos de la adaptación de BFT de Tendermint al dominio público de la cadena de bloques. Esta adaptación es a lo que nos referimos como Tendermint BFT, y generalmente se clasifica como Prueba de Estaca basada en BFT (a diferencia de Prueba de Estaca basada en la cadena). Para un curso intensivo de PoS basado en la cadena en función de BFT, ver: Casper vs. Tendermint .

Ahora que eso está fuera del camino, mordímonos en la carne de la introducción: ¿Qué es Tendermint y cómo funciona a un alto nivel?

Tendermint BFT Stack

B itcoin es el ancestro intelectual de todos los sistemas criptográficos basados ??en blockchain que conocemos y amamos hoy en día. El protocolo de Tendermint comparte características comunes con Bitcoin en la medida en que los dos protocolos registran todo en una cadena de bloques, pero cada uno proporciona sus soluciones únicas al problema del general bizantino, también conocido como el problema de consenso o de "acuerdo". El linaje de Tendermint se remonta estrechamente al mundo de la computación distribuida y la literatura sobre tolerancia bizantina a fallas (BFT) en la academia (por ejemplo, ver la tesis de Ethan Buchman). Mientras que en la historia de génesis de Bitcoin, después de los muchos intentos fallidos de los sistemas de caja electrónicos anteriores, con la excepción de PayPal, Bitcoin se elevó por encima de las cenizas como un sistema de moneda descentralizado resistente a la censura.

El protocolo de Bitcoin optimiza para la resistencia a la censura, de manera crítica, debido a su función principal como sistema de pago. Tendermint, por otro lado, se optimiza para las aplicaciones distribuidas torakantinas generalizadas con tolerancia a fallas y para el procesamiento de datos en una red de área amplia (WAN), por ejemplo, cientos de nodos (alta cantidad de nodos). Esta distinción se matiza y merece una investigación más profunda.

Por contexto, en el mundo de la academia, se han realizado muy pocas investigaciones sobre los sistemas BFT para WAN y solo para un pequeño número de nodos, de 4 a 7 como máximo, y siempre para un solo dominio administrativo. En cuanto a los sistemas BFT para WAN con un gran número de nodos y para múltiples dominios administrativos, en la práctica no se ha adoptado ampliamente un cuerpo de trabajo significativo.

Antes de 2009, cuando Bitcoin introdujo una tecnología de cambio de paradigma -el concepto de cadena de bloques- para el mundo, el problema de consenso en un entorno de WAN para altas cuentas de nodos quedó en gran parte sin respuesta. A pesar de resolver el problema de los Dos Generales, sin embargo, Bitcoin no era realmente un algoritmo para resolver el consenso, en el sentido puramente teórico en el área de investigación de sistemas distribuidos. Fomentar el trabajo en el dominio BFT estaba lejos de haber terminado.

En 2014, Jae Kwon, proveniente de una experiencia en ingeniería de sistemas e informática, concibió un protocolo puramente basado en BFT que se escalaría a la melodía de cientos de nodos en un entorno sin permisos con prueba de estaca (PoS) como la seguridad subyacente. mecanismo. Y así se creó Tendermint . En consecuencia, este modelo de sistema diseñado con PoS como el mecanismo de seguridad principal sobre un gran número de nodos de validación en una WAN resultó ser un esfuerzo de ingeniería significativamente complejo, que tardó casi 4 años en implementarse en la configuración pública de blockchain. Esa configuración es Cosmos, cuyo lanzamiento está programado para este verano en 2018.

El modelo

Tendermint se modela como un protocolo determinista, vive bajo sincronía parcial, que logra el rendimiento dentro de los límites de la latencia de la red y los procesos individuales en sí mismos. ¿Ves dónde se dibuja la púrpura en el triángulo de Vlad Zamfir ? Tendermint cae en algún lugar a lo largo de la esquina inferior izquierda.

Triángulo Tradeoff de Vlad Zamfir para protocolos de consenso tolerantes a fallas

Imposibilidad de FLP

Teorema : "… mostramos el sorprendente resultado de que ningún protocolo de consenso completamente asincrónico puede tolerar ni siquiera una muerte por proceso no anunciado. "Como en, el consenso no se puede resolver en redes puramente asíncronas con un protocolo determinista si al menos un proceso puede fallar.

Definido por Dwork, Lynch y Stockmeyer en su documento, Consenso en presencia de sincronización parcial : " La sincronía parcial se encuentra entre los casos de un sistema sincrónico y un sistema asíncrono. En un sistema síncrono, existe un límite superior fijo conocido … en el tiempo requerido para enviar un mensaje de un procesador a otro y un límite superior fijo conocido … en las velocidades relativas de diferentes procesadores. En un sistema asíncrono no existen límites superiores fijos … existen …. El problema es diseñar protocolos que funcionen correctamente en el sistema parcialmente síncrono, independientemente de los valores reales de los límites … "Fue en el intento de resolver este problema que nació Tendermint. Tendermint es por lo tanto una versión modificada del protocolo DLS antes mencionado.

Algoritmo de consenso

Comunicación parcialmente síncrona, síncrona y asíncrona

Exploremos el caso sincrónico, utilizando un protocolo conocido de referencia: el protocolo Bitcoin. En Bitcoin, hay un "límite superior fijo conocido". Esto se refiere al tiempo de bloque de 10 minutos. Para que la red de Bitcoin avance con la creación de bloques, el protocolo impone artificialmente una suposición de tiempo, dando a toda la red de nodos 10 minutos enteros para escuchar, recopilar, validar y chismear las transacciones que se propagan a través de su red de pares.

Ethereum es otro ejemplo de un protocolo que hace suposiciones de sincronía con tiempos de bloqueo de 15 segundos en promedio. Si bien 15 segundos es mucho más rápido que 10 minutos, lo que da a la red Ethereum el beneficio de un mayor rendimiento, esto se logra a expensas de los mineros, ya que esto genera bloques más huérfanos; hay menos tiempo para que las transacciones se propaguen a través de su red.

Tendermint pertenece a una clase de protocolos que resuelve el consenso bajo comunicación parcialmente síncrona, donde un modelo de sistema parcialmente síncrono alterna entre períodos de sincronía y asincronía; a veces nos referimos a este modelo como "débilmente sincrónico". Lo que esto significa es que Tendermint depende de las suposiciones de tiempo para avanzar. Sin embargo, a diferencia de los sistemas sincrónicos, la velocidad del progreso no depende de los parámetros del sistema, sino que depende de la velocidad real de la red.

Liveness y terminación

Definido: " La propiedad de terminación es solo que cada procesador correcto eventualmente debe tomar una decisión. "

Los algoritmos de consenso de Nakamoto, Peercoin, NXT, Blancanieves, Ouroboros, etc., en el modelo de sistema síncrono, se basan en suposiciones de sincronía no solo para la terminación del proceso, sino también para la seguridad. Esos algoritmos diseñados para sistemas síncronos siempre tienen límites fijos que son conocidos y siempre se mantienen. Y en el caso de que los límites de sincronía no se mantengan, el consenso se rompe y la cadena se bifurca. Por lo tanto, el tiempo de bloqueo de 10 minutos de Bitcoin, por ejemplo, es debidamente conservador, para preservar la seguridad.

Por el contrario, Tendermint nunca se bifurca en presencia de asincronía si hay menos de 1/3 de los procesos defectuosos. Esta propiedad es lo que hace que Tendermint sea un protocolo PoS basado en BFT, en el que estrictamente prefiere la seguridad sobre la vitalidad (ver: Teorema CAP ). Como resultado, una cadena de bloques Tendermint se detendrá momentáneamente hasta que una mayoría, es decir, más de 2/3 del conjunto de validadores llegue a un consenso.

Ahora bien, existen protocolos de consenso que trabajan en redes totalmente asincrónicos, pero, cumpliendo con el Teorema de Imposibilidad de FLP, que no pueden ser al mismo tiempo determinista.

Protocolo determinista vs. no determinista

Los protocolos no deterministas que resuelven el consenso en el caso puramente asincrónico se basan potencialmente en oráculos aleatorios y generalmente incurren en gastos elevados de complejidad de mensajes, ya que dependen de la difusión confiable para todas las comunicaciones. En el entorno asíncrono, el costo general de una única transmisión confiable equivale aproximadamente a una round de Tendermint . Protocolos como HoneyBadger BFT caen dentro de esta clase de protocolos no deterministas bajo asincronía. Normalmente, requieren tres instancias de transmisión confiable para una sola ronda de comunicación.

Tendermint en cambio es un protocolo totalmente determinista; no hay aleatoriedad en el protocolo en absoluto. Los líderes se eligen de manera determinista, a través de una función matemática definida en la implementación. Como tal, podemos demostrar matemáticamente que el sistema es en vivo y que el protocolo está garantizado para tomar decisiones.

Elección del líder rotativo

Tendermint gira a través del conjunto del validador, es decir, los proponentes del bloque, en una forma ponderada de todos contra todos. Cuanta más participación, es decir, el poder de voto, que un validador les haya delegado, más peso tendrán, y proporcionalmente más veces serán elegidos como líderes. Para ilustrar, si un validador tiene la misma cantidad de poder de voto que otro validador, ambos serán elegidos por el protocolo una cantidad igual de veces.

La explicación simplificada de cómo funciona el algoritmo se ve así:

  1. Se establece el peso del validador
  2. Validator es elegido, su turno para proponer un bloque
  3. El peso se vuelve a calcular, disminuye una cierta cantidad después de que se completa la ronda
  4. A medida que progresa cada ronda, el peso aumenta gradualmente en proporción al poder de votación
  5. El validador se selecciona de nuevo

Debido a que el protocolo selecciona determinantes de bloques de forma determinista , dado que conoce el conjunto de validadores y el poder de votación de cada validador, puede calcular exactamente quiénes serán los siguientes proponentes de bloques en las rondas x , x + 1 , …, x + n . Debido a esto, los críticos argumentan que Tendermint no está suficientemente descentralizado. Cuando pueda saber predeciblemente quiénes serán los líderes, un atacante podría apuntar a esos líderes y lanzar un ataque DDoS contra ellos y posiblemente evitar que la cadena progrese. Mitigaremos este vector de ataque implementando algo llamado Sentry Architecture en Tendermint.

Protocolo de red P2P

Sentry Node Architecture

Un validador configurado correctamente nunca expondrá la dirección IP ni aceptará conexiones entrantes a su nodo validador. Un validador correctamente configurado y bien defendido generará activamente nodos centinela , que actúan como servidores proxy de nodo completo para la red, para ocultar la ubicación real de su nodo validador. Las direcciones IP en la capa p2p nunca están expuestas.

Dicho esto, aprovechar Sentry Node Architecture es opt-in; la carga está en el validador para mantener un nodo completo tolerante a fallas. Aquí es donde hacemos suposiciones extra-protocolo basadas en incentivos criptoeconómicos. La suposición es que un validador querrá tomar todas las medidas de precaución para mantener la tolerancia a fallas, permanecer disponible y, en última instancia, desempeñar su parte para mantener la red en funcionamiento. Porque si no lo hacen, son expulsados ??del conjunto de validadores por estar fuera de línea durante un período de tiempo determinado.

Intercambiador de pares (PEX) Reactor

Tendermint toma prestado del protocolo de descubrimiento de pares de Bitcoin. Más específicamente, Tendermint adopta la AddressBook p2p de btcd , la implementación alternativa de Bitcoin en Go. El PEX permite el descubrimiento dinámico de pares por defecto.

Tendermint en la práctica

Después de todo lo dicho y hecho, más allá del sofisticado diseño algorítmico y la jerga académica, ¿para qué sirve Tendermint realmente?

Las malas noticias son que las personas comunes no encontrarán útil a Tendermint. La buena noticia es que los desarrolladores de aplicaciones pueden cerrar la brecha entre el protocolo y el usuario final. Tendermint está diseñado para ser personalizable y lo suficientemente flexible como para adaptarse a cualquier configuración, ya sea pública o empresarial, donde se desea un protocolo de consenso.

Tendermint es ideal para un desarrollador que desea implementar una aplicación sobre su propia blockchain. Viene premontado, por lo que si el desarrollador opta por un motor de consenso basado en BFT de prueba de estallido para alimentar su dAppzone , puede hacerlo fácilmente.

La parte divertida viene cuando los usuarios implementan su lógica comercial de alto nivel con Cosmos-SDK. Para interactuar con las capas de consenso / red de Tendermint se hace a través de un protocolo de socket Tendermint que llamamos Application Blockchain Interface, o el ABCI .

La investigación en curso

Actualmente, estamos profundizando en la investigación de firmas de BLS que podría potencialmente conducir a una reducción en el tamaño de los encabezados de bloques de Tendermint de 3.2 KB (con ~ 100 validadores) a 64 bytes.

También tenemos un diseño para aleatorizar la función de selección de proponentes round-robin de una manera segura para hacer que DDoS'ing el próximo proponente sea aún más difícil, pero el paso inicial es la arquitectura Sentry Node.

¡Encuentro Inaugural de Cosmos Academy!

Estamos organizando una próxima reunión en Berkeley, California, con Zarko Milosevic, investigador principal de sistemas distribuidos de BFT, quien dará una sesión de preguntas y respuestas sobre todo Tendermint. Transmitiremos en vivo esta reunión y publicaremos la transmisión en el canal de YouTube de Cosmos Network .

  • Regístrese para el primer Meetup de Cosmos Academy el 26 de mayo: aquí .