¿Qué es Tendermint Core? La guía más completa de todos los tiempos

¿Qué es Tendermint Core? …

Tiempo de lectura: 17 minutos

Cosmos es uno de los proyectos más prometedores que existen. Con gente como Jae Kwon y Ethan Buchman en su equipo, tiene mucho potencial. En su corazón y alma se encuentra Tendermint Core.

Guía definitiva de Tendermint

Tendermint Core combina el algoritmo de consenso Tendermint junto con un protocolo de chismes p2p. Entonces, cuando lo pone todo junto en la pila de software, obtiene el Tendermint Core junto con la capa de aplicación Cosmos-SDK.

De todos modos, antes de continuar, veamos por qué Tendermint es una necesidad..

Bitcoin y Blockchain

Cuando Satoshi Nakamoto creó Bitcoin, creó el primer sistema criptográfico descentralizado. La parte realmente notable de este descubrimiento fue que pudo resolver el problema del general bizantino que ayudó a una red de área amplia (WAN) a llegar a un consenso en un entorno sin confianza. Bitcoin usó un algoritmo de prueba de trabajo para cuidar su consenso.

Dicho esto, la principal contribución de Bitcoin bien puede ser el hecho de que introdujo al mundo entero a la tecnología blockchain..

Una cadena de bloques es, en los términos más simples, una serie de registros de datos inmutables con marca de tiempo que es administrado por un grupo de computadoras que no son propiedad de una sola entidad. Cada uno de estos bloques de datos (es decir, bloque) está protegido y vinculado entre sí mediante principios criptográficos (es decir, cadena).

En otras palabras, una cadena de bloques es una estado determinista máquina replicada en nodos que no necesariamente confían entre sí.

Por determinista queremos decir que si se toman los mismos pasos específicos, siempre conducirán al mismo resultado..

P.ej. 1 + 2 siempre será 3.

Entonces, ¿qué significa estado? Veámoslo con Bitcoin y Ethereum.

En Bitcoin, el estado es una lista de saldos para cada cuenta, que es una lista de Salida de transacciones no gastadas (UTXO). Este estado se modifica a través de transacciones que cambian el saldo..

Por otro lado, en Ethereum, la aplicación es una máquina virtual que ejecuta contratos inteligentes. Cada transacción pasa por la máquina virtual Ethereum y modifica el estado de acuerdo con el contrato inteligente específico que se llama dentro de ella..

Si observa la arquitectura de la tecnología blockchain, tendrá tres capas específicas:

  • Redes: La propagación de la transacción / información a través de los nodos.
  • Consenso: Permite a los nodos tomar una decisión proporcionada >2/3 de los nodos no son maliciosos
  • Solicitud: Responsable de actualizar el estado dado un conjunto de transacciones, es decir, procesar transacciones. Dada una transacción y un estado, la aplicación devolverá un nuevo estado.

Para pistas visuales:

Guía definitiva de Tendermint

Problemas con la arquitectura blockchain actual

Resulta que construir una cadena de bloques desde cero con todas estas 3 capas es un trabajo muy duro. Por lo tanto, muchos proyectos prefirieron seguir construyendo bifurcando el código base de Bitcoin. Ahora, si bien esto ahorra mucho tiempo, el hecho es que todavía están esposados ​​por las limitaciones del protocolo Bitcoin. Obviamente, no puede ejecutar proyectos complejos cuando está utilizando un protocolo que es bien conocido por sus problemas de rendimiento..

Las cosas mejoraron mucho cuando Ethereum entró en juego. Ethereum en realidad les dio a los desarrolladores una plataforma que podían usar para crear su propio código personalizado, también conocido como contratos y proyectos inteligentes. Sin embargo, al igual que con Bitcoin, Ethereum también sufre el mismo problema. Ambos tienen arquitectura monolítica en lugar de modular.

Arquitectura monolítica vs arquitectura modular

La arquitectura monolítica significa que todo está compuesto todo en una sola pieza. Cuando el software se considera “monolítico”, los componentes están interconectados y son interdependientes entre sí y el diseño es más autónomo. En este caso, la arquitectura está más estrechamente acoplada y los componentes asociados deben estar todos presentes para que el código se ejecute o compile..

Si bien esto hace que el sistema para el que fue creado sea más sólido, en realidad no puede derivar de él y crear códigos personalizados. No es el más flexible de los sistemas. Además, hay otro problema con este sistema. Si algún componente del programa necesita ser actualizado, toda la aplicación deberá ser reelaborada. Esta no es realmente la situación más ideal ahora, ¿verdad??

Por otro lado, tenemos arquitectura modular. A diferencia de Monolithic, las capas no están tan vinculadas entre sí. Entonces, si bien puede que no sea tan robusto, es bastante fácil actualizar toda la aplicación trabajando con los diferentes módulos separados.

Dado que los módulos son tan independientes, la arquitectura modular le permite actualizar una sección en particular sin causar cambios imprevistos en el resto del sistema. Los procesos iterativos también son mucho más simples en programas modulares, a diferencia de los monolíticos..

Arquitectura y objetivos de Tendermint

Tendermint utiliza la arquitectura modular. Sus objetivos son los siguientes:

  • Proporcionar las capas de red y consenso de una cadena de bloques como plataforma donde se pueden construir diferentes aplicaciones descentralizadas.
  • Los desarrolladores solo deben preocuparse por la capa de aplicación de la cadena de bloques, ahorrando todas las horas que habrían desperdiciado trabajando en el consenso y también en la capa de red..
  • Tendermint también incluye el protocolo de consenso Tendermint, que es el algoritmo de consenso tolerante a fallas bizantino utilizado dentro del motor Tendermint Core

Veamos cómo se verá la arquitectura de Tendermint:

Guía definitiva de Tendermint

Como puede ver, la aplicación está conectada a Tendermint Core a través de un protocolo de socket llamado APCI o Application Blockchain Interface. Dado que Tendermint Core y la aplicación que se ejecuta en él se ejecutan en procesos UNIX separados, necesitan tener un método para comunicarse entre sí. ABCI ayuda a estos dos en su comunicación.

Entonces, ¿cómo es el diseño de ABCI? ABCI tendrá algunos componentes de diseño distintos:

Protocolo de mensajes n. ° 1

  • Pares de mensajes de solicitud y respuesta
  • Las solicitudes se realizan por consenso mientras la aplicación se encarga de la respuesta
  • Se define usando protobuf

# 2 servidor / cliente

  • El motor de consenso ejecuta el cliente
  • La aplicación ejecuta el servidor
  • Hay dos implementaciones adecuadas: async raw bytes y grpc

# 3 Protocolo Blockchain

ABCI está muy orientada a la conexión. Las tres conexiones para Tendermint Core son las siguientes:

  • Conexión Mempool: comprueba si las transacciones deben transmitirse antes de que se confirmen. Solo puede usar CheckTx
  • Conexión de consenso: esta conexión ayuda a ejecutar transacciones que se han comprometido. La secuencia de mensajes es, para cada bloque, BeginBlock, [DeliverTx,…], EndBlock, Commit
  • Conexión de consulta: ayuda a consultar el estado de la aplicación. Esta parte solo usa Consulta e Información

Con todo, el objetivo principal de Tendermint es proporcionar a los desarrolladores una herramienta que no solo sea práctica, sino que también tenga un alto rendimiento. Estas son las propiedades de Tendermint que lo hacen tan atractivo:

# 1 Compatible con blockchain público o privado

Los diferentes proyectos tienen diferentes necesidades. Algunos proyectos deben tener un sistema abierto en el que cualquiera pueda participar y contribuir, como Ethereum. Por otro lado, tenemos organizaciones como la industria médica, que no pueden exponer sus datos a casi todos. Para ellos, requieren algo como la cadena de bloques autorizada..

Bien, entonces, ¿cómo puede ayudar Tendermint a satisfacer estas dos necesidades? Recuerde que Tendermint solo maneja la red y el consenso para blockchain. Por lo tanto, ayuda en:

  • Propagación de la transacción entre los nodos a través del protocolo de chismes
  • Ayuda a los validadores a ponerse de acuerdo sobre el conjunto de transacciones que se adjuntan a la cadena de bloques..

Lo que esto significa es que la capa de aplicación es libre de definirse de la forma que los desarrolladores deseen. Depende de los desarrolladores definir cómo se define el conjunto de validadores dentro del ecosistema..

  • Los desarrolladores pueden permitir que la aplicación tenga un sistema de elección que elija validadores en función de la cantidad de tokens nativos que estos validadores hayan apostado dentro del ecosistema … una prueba de participación y crear una cadena de bloques pública
  • Además, los desarrolladores también pueden crear una aplicación que defina un conjunto restringido de validadores preaprobados que se encargan del consenso y los nuevos nodos que llegan a ingresar al ecosistema. Esto se llama prueba de autoridad y es el sello distintivo de una cadena de bloques privada o autorizada..

# 2 alto rendimiento

Las aplicaciones realizadas a través de Tendermint Core pueden esperar un rendimiento excepcional. Tendermint Core tiene un tiempo de bloqueo de solo 1 segundo. También puede manejar un volumen de transacciones de 10,000 transacciones por segundo para transacciones de 250 bytes, siempre que la aplicación lo permita..

# 3 Finalidad

Que es la finalidad?

En términos simples, significa que una vez que se ha ejecutado una determinada acción, no se puede retirar. Entonces, tomemos el ejemplo de una simple transacción financiera. Suponga que compra algunas acciones en una empresa, solo porque hay una falla en su sistema, no debería perder la propiedad de sus acciones. Como puede imaginar, la finalidad es muy crítica para un sistema financiero. Imagínese hacer una transacción de un millón de dólares y luego, al día siguiente, esa transacción ya no es válida debido a una falla.

Como mencionamos antes, Bitcoin y Ethereum (hasta la implementación completa de Casper FFG) realmente no tienen carácter definitivo. En ocasión de un ataque de bifurcación o un ataque del 51%, las transacciones tienen posibilidades de revertirse.

Tendermint, por otro lado, brinda una finalidad instantánea dentro de 1 segundo de la finalización de la transacción. Las bifurcaciones nunca se crean en el sistema, siempre que menos de 2/3 de los validadores sean maliciosos. Tan pronto como se crea un bloque (que es en un segundo), los usuarios pueden estar seguros de que su transacción está finalizada..

# 4 seguridad

Tendermint es seguro y obliga a sus participantes a ser responsables de sus acciones también. Como dijimos antes, tendermint nunca se puede bifurcar mientras menos de 2/3 de los validadores sean maliciosos. Si en algún caso, la cadena de bloques se bifurca, hay una forma de determinar la responsabilidad. Además, el consenso Tendermint no solo es tolerante a fallas, es óptimamente tolerante a fallas bizantinas

# 5 Fácil de usar

Otra gran ventaja de Tendermint es su facilidad de uso. Como hemos mencionado antes, tienen una arquitectura modular donde la capa de aplicación se puede personalizar adecuadamente. Esto hace posible que las bases de código blockchain existentes se vinculen sin esfuerzo a Tendermint a través de ABCI. El ejemplo perfecto de esto es Etheremint, que es básicamente el complemento de base de código de la máquina virtual Ethereum encima de Tendermint..

Ethermint funciona exactamente como Ethereum, pero también se beneficia de todas las características positivas que hemos enumerado anteriormente. Todas las herramientas de Ethereum como Metamask y Truffle son compatibles con Ethermint.

# 6 escalabilidad

La implementación de prueba de participación de Tendermint es mucho más escalable que un algoritmo de consenso de prueba de trabajo tradicional. La razón principal es que los sistemas basados ​​en POW no pueden hacer fragmentación.

La fragmentación básicamente particiona horizontalmente una base de datos y crea bases de datos o fragmentos más pequeños que luego los nodos ejecutan en paralelo. La razón es que un grupo de minería fuerte puede apoderarse fácilmente de un fragmento.

Tendermint permitirá la implementación de fragmentación que aumentará en gran medida la escalabilidad.

Protocolo de consenso Tendermint

Bien, veamos cómo funciona el protocolo de consenso de Tendermint. ¿Qué es exactamente un protocolo de consenso??

Así es como Wikipedia define la toma de decisiones por consenso:

“La toma de decisiones por consenso es un proceso de toma de decisiones en grupo en el que los miembros del grupo se desarrollan y acuerdan apoyar una decisión en el mejor interés de todos. El consenso puede definirse profesionalmente como una resolución aceptable, que puede ser apoyada, incluso si no es la “favorita” de cada individuo. Merriam-Webster define el “consenso” como, en primer lugar, un acuerdo general y, en segundo lugar, la solidaridad grupal de creencias o sentimientos “.

En términos más simples, el consenso es una forma dinámica de llegar a un acuerdo en un grupo. Si bien la votación solo se conforma con una regla de la mayoría sin pensar en los sentimientos y el bienestar de la minoría, un consenso, por otro lado, asegura que se alcance un acuerdo que podría beneficiar a todo el grupo en su conjunto..

Desde un punto de vista más idealista, el consenso puede ser utilizado por un grupo de personas diseminadas por todo el mundo para crear una sociedad más equitativa y justa..

Un método mediante el cual se logra la toma de decisiones por consenso se denomina “mecanismo de consenso”.

Entonces, ahora lo que hemos definido qué es un consenso, veamos cuáles son los objetivos de un mecanismo de consenso (datos tomados de Wikipedia).

  • Buscando acuerdo: Un mecanismo de consenso debe generar el mayor acuerdo posible del grupo..
  • Colaborativo: Todos los participantes deben tratar de trabajar juntos para lograr un resultado que priorice el mejor interés del grupo..
  • Cooperativa: Todos los participantes no deben anteponer sus propios intereses y trabajar en equipo más que como individuos.
  • Participativo: El mecanismo de consenso debe ser tal que todos deben participar activamente en el proceso general..
  • Inclusivo: En el proceso de consenso deben participar tantas personas como sea posible. No debería ser como una votación normal en la que las personas no tienen ganas de votar porque creen que su voto no tendrá ningún peso a largo plazo..
  • Igualitario: Un grupo que intente lograr un consenso debe ser lo más igualitario posible. Lo que esto significa básicamente es que todos y cada uno de los votos tienen el mismo peso. El voto de una persona no puede ser más importante que el de otra.

Ahora que hemos definido qué son los mecanismos de consenso y a qué deben apuntar, debemos pensar en el otro elefante en la sala..

Qué mecanismos de consenso se deben utilizar para una entidad como blockchain.

Antes de Bitcoin, hubo un montón de iteraciones de sistemas monetarios descentralizados de igual a igual que fallaron porque no pudieron responder al mayor problema cuando se trataba de llegar a un consenso. Este problema se llama “Problema de los generales bizantinos”.

Problema del general bizantino

Para hacer cualquier cosa en una red peer-to-peer, todos los nodos deberían poder llegar a un consenso. Sin embargo, para que este sistema funcione, se pone mucho énfasis en que las personas actúen en el mejor interés de la red en general. Sin embargo, como ya sabemos, las personas no son realmente dignas de confianza cuando se trata de actuar de manera ética. Aquí es donde entra en juego el problema del general bizantino.

Guía definitiva de Tendermint

Imagina esta situación.

Hay un ejército que rodea un castillo bien fortificado. La única forma en que pueden ganar es si atacan el castillo juntos como una unidad. Sin embargo, se enfrentan a un gran problema. El ejército está muy alejado el uno del otro y los generales no pueden comunicarse ni coordinar el ataque directamente y algunos de los generales son corruptos..

Lo único que pueden hacer es enviar un mensajero de general a general. Sin embargo, al mensajero le podrían pasar muchas cosas. Los generales corruptos pueden interceptar al mensajero y cambiar el mensaje. Entonces, ¿qué pueden hacer los generales para asegurarse de que lanzan un ataque coordinado sin depender de la ética de cada general individual? ¿Cómo pueden llegar a un consenso sin confianza para hacer lo que hay que hacer??

Ese es el problema del general bizantino y Satoshi Nakamoto resolvió este problema utilizando el mecanismo de consenso de prueba de trabajo (POW).

¿Qué es la prueba de trabajo??

Veamos cómo funciona POW con el contexto de nuestro ejemplo anterior. Supongamos que un general quiere comunicarse con otro general. ¿Cómo crees que bajará??

  • Se agrega un “nonce” al mensaje original. El nonce es un valor hexadecimal aleatorio.
  • A continuación, se aplica un hash a este nuevo mensaje. Supongamos que los generales acuerdan de antemano que solo enviarán mensajes, que cuando se aplica el hash comienza con 4 “0” s.

    Si el hash no da el número deseado de ceros, se cambia el nonce y el mensaje se vuelve a aplicar hash. Este proceso sigue repitiéndose hasta que se recibe el hash deseado.

  • Todo el proceso lleva mucho tiempo y consume mucha potencia de cálculo.
  • Ahora, cuando finalmente obtienen el valor hash, al mensajero se le da el mensaje original y el nonce y se le dice que se comunique con los otros generales. Entonces, ¿qué sucede si alguien intenta interceptar el mensaje? Bueno, ¿recuerdas el efecto de avalancha de las funciones hash? El mensaje cambiará drásticamente y dado que ya no comenzará con el número requerido de “0”, las personas se darán cuenta de que el mensaje ha sido manipulado..

Entonces, para poner POW en el contexto de la minería criptográfica:

  • Los mineros intentan resolver acertijos criptográficos para agregar un bloque a la cadena de bloques.
  • El proceso requiere mucho esfuerzo y poder computacional.
  • Los mineros luego presentan su bloque a la red bitcoin..
  • Luego, la red verifica la autenticidad del bloque simplemente verificando el hash, si es correcto, se agrega a la cadena de bloques..

Por lo tanto, descubrir el nonce y el hash requeridos debería ser difícil, sin embargo, comprobar si es válido o no debería ser sencillo. Esa es la esencia de la prueba de trabajo..

Ahora, probablemente se esté preguntando, ¿por qué los mineros deberían sacrificar su tiempo y recursos para extraer bitcoins? Bueno, resulta que tienen un incentivo económico bastante saludable:

Cuando descubre un bloque, recibe una recompensa de bloque de 12,5 bitcoins. La recompensa se reduce a la mitad cada 210.000 bloques..

Una vez que hayas extraído un bloque, te convertirás en el dictador temporal del bloque. Usted es el responsable de colocar las transacciones dentro del bloque y, por lo tanto, tiene derecho a tarifas de transacción..

Solo hay un número limitado de bitcoins, 21 millones para ser exactos. Entonces, ¿qué impide que estos mineros extraigan todos los bitcoins a la vez??

Resulta que la minería de bitcoins se vuelve cada vez más difícil con el tiempo. Esta característica se llama “dificultad”, y la dificultad de la minería sigue aumentando a medida que continúa minando.

Esta es la razón por la que hoy en día es prácticamente imposible que los mineros en solitario extraigan Bitcoins usando solo sus computadoras. Los mineros ahora han unido fuerzas y han creado “grupos de minería” para poner en común su poder computacional y el mío como grupo. Estos grupos utilizan ASIC (circuitos integrados específicos de la aplicación) creados específicamente para minar bitcoins..

Problemas con POW

Hay tres problemas principales con los algoritmos de Prueba de trabajo. Hemos hablado de esto en detalle antes, por lo que solo vamos a hacer una descripción general.

  • Desperdicio de energía: Bitcoin consume más energía que Irlanda y la República Eslovaca. Este enorme desperdicio de energía es uno de los principios de Bitcoin. Es desperdicio por desperdicio.
  • Centralización: Como ya te dijimos, Bitcoin usa ASIC para minar. El problema con eso es que los ASIC son costosos y los grupos con más dinero tienden a tener más ASIC y, en consecuencia, más potencia minera. Como tal, Bitcoin no está tan descentralizado como quisiera..
  • Escalabilidad: La propia arquitectura de POW evita la escalabilidad. Bitcoin gestiona solo 7 transacciones por segundo. Para un sistema financiero moderno, simplemente no es lo suficientemente adecuado.

Entra Tendermint

Entonces, para contrarrestar los muchos problemas con el sistema de consenso de Prueba de trabajo, Jae Kwon, un graduado en ciencias de la computación e ingeniería de sistemas, creó Tendermint. Tendermint es un protocolo puramente basado en BFT, construido en un entorno sin permisos con la Prueba de participación (PoS) como mecanismo de seguridad subyacente..

Debido a la complejidad, Tendermint ha tardado casi 4 años en completarse.

Jae Kwon y el CTO de Tendermint, Ethan Buchman, se inspiraron en Raft y PBFT para crear un sistema de consenso que satisfacía el problema del general bizantino.. Es

“Modelado como un protocolo determinista, vivo bajo sincronía parcial, que logra un rendimiento dentro de los límites de la latencia de la red y los procesos individuales en sí mismos”.

Muy bien, sabemos que son muchas palabras complicadas para lanzar una tras otra, pero para comprender qué es el consenso de Tendermint y por qué fue diseñado de la manera en que fue diseñado, debe comprender qué significan algunos de esos términos complicados. Verás cómo todos se vinculan entre sí como un intrincado rompecabezas..

Imposibilidad # 1 de FLP

La imposibilidad de FLP (Fischer Lynch Paterson) establece que un algoritmo de consenso solo puede tener 2 de las siguientes 3 propiedades:

  • La seguridad
  • Terminación o vida garantizada
  • Tolerancia a fallos

Guía definitiva de Tendermint

Credito de imagen: Medio

En otras palabras, la imposibilidad de FLP estados ese

“Tanto la terminación como el acuerdo (vida y seguridad) no pueden satisfacerse de manera limitada en el tiempo en un sistema distribuido asíncrono, si debe ser resistente a al menos una falla (demuestran su resultado para la tolerancia general a fallas, que es más débil que la falla bizantina tolerancia, ya que solo requiere un nodo de parada de falla, por lo que BFT se incluye dentro de las afirmaciones de imposibilidad de FLP) “.

Entonces, básicamente, es bastante imposible que una WAN asincrónica llegue a un consenso, ya que no hay una cantidad específica de tiempo que los nodos tomarán para recibir, procesar y responder a los mensajes. Obviamente, esto es un gran problema porque es extremadamente poco práctico para una gran red de nodos como Bitcoin asumir que se van a sincronizar.

Ok, entonces la sincronicidad iba a ser un problema. Sin embargo, los investigadores Dwork, Lynch y Stockmeyers lanzaron un salvavidas aquí con su artículo titulado “Consenso en presencia de sincronía parcial.”Esto se llamó consenso DLS.

# 2 Consenso DLS y Sincronocidad Parcial

El documento DLS establece que entre un sistema síncrono y un sistema asíncrono, existe un sistema especial que es “parcialmente síncrono”. Dado que este sistema parcialmente síncrono puede tener un límite de tiempo superior dado, podrá diseñar un protocolo BFT factible.

Según DLS, el verdadero desafío en el diseño de protocolos es tener uno que funcione correctamente en un sistema parcialmente síncrono.

Entonces, veamos cómo funcionan los protocolos descentralizados populares como Bitcoin y Ethereum en ese sentido..

Bitcoin tiene un límite superior conocido que es de alrededor de 10 minutos. Entonces, se produce un bloque de transacciones cada 10 minutos. Esta suposición de tiempo se impone a la red para que los nodos tengan 10 minutos completos para recopilar la información y transmitirla a través de chismes..

¿Qué es la máquina de estado?

Por otro lado, tenemos Ethereum que hace suposiciones de sincronía para sus bloques y red al mantener un tiempo de bloque superior en 15 segundos. Con un tiempo de bloque tan bajo, son más escalables que Bitcoin, sin embargo, no son realmente tan eficientes. Los mineros de Ethereum producen muchos bloques huérfanos.

# 3 Vitalidad y terminación

La terminación es una propiedad que establece que cada procesador correcto debería eventualmente tomar una decisión. La mayoría de los algoritmos de consenso que tenemos en este momento se basan en modelos síncronos para su seguridad y terminación. Tienen límites fijos y reglas que se conocen, por lo que, en caso de que no se mantengan, la cadena se bifurca en varios protocolos.

Seguro que hay protocolos de consenso que funcionan en redes asincrónicas, sin embargo, siguiendo el teorema de imposibilidad de FLP, no pueden ser deterministas. Lo que nos lleva a ….

# 4 Protocolos deterministas versus no deterministas

Por lo general, los protocolos de consenso puramente asincrónicos dependen de miembros no deterministas como Oracles, lo que implica un alto grado de incertidumbre y complejidad..

Entonces, ¿cómo maneja Tendermint todos estos factores??

Tendermint es un consenso BFT mayoritariamente asincrónico y determinista en el que los validadores tienen una participación que denota su poder de voto. En el triángulo de imposibilidad de FLP, prefiere la tolerancia a fallas y la seguridad (consistencia) sobre la vitalidad..

Tendermint oscila constantemente entre períodos de sincronía y asincronía. Esto significa que, si bien se basa en supuestos de tiempo para progresar, la velocidad de dicho progreso no depende de los parámetros del sistema, sino de la velocidad real de la red..

Además, Tendermint nunca se bifurca en presencia de asincronía si menos de un tercio de los validadores son corruptos / descuidados. Esta es la razón por la que Tendermint es tolerante a fallas bizantinas. Como hemos dicho antes, Tendermint se centra en la seguridad por encima de la vitalidad. Entonces, si más de un tercio de los validadores son maliciosos, en lugar de que la red se bifurque, la cadena de bloques Tendermint simplemente se detendrá temporalmente hasta que más de 2/3 de validadores lleguen a un consenso..

Tendermint también es completamente determinista y no hay aleatoriedad en el protocolo. Todos los líderes del sistema se eligen en una versión determinista, mediante una función matemática definida. Entonces, en realidad podemos demostrar matemáticamente que el sistema se está comportando de la manera en que se supone que debe comportarse..

Tendermint – El sistema de prueba de participación

En un sistema de prueba de participación (POS), tenemos ciertas personas llamadas “validadores”. Estos validadores encierran una estaca dentro del sistema. Después de eso, tienen la responsabilidad de apostar por el bloque que creen que se agregará al lado de la cadena de bloques. Cuando se agrega el bloque, obtienen una recompensa proporcional a su apuesta..

Muy bien, así es como funciona un POS genérico. Ahora, veamos cómo funciona la tendermint.

Primero, familiaricémonos con algunos de los términos que usaremos:

  • Una red se compone de muchos nodos. Los nodos que están conectados a un nodo en particular se denominan pares..
  • El proceso de consenso tiene lugar a una altura de bloque en particular H. El proceso para determinar el siguiente bloque consta de múltiples rondas.
  • La ronda consta de muchos estados que son: NewHeight, Propose, Prevote, Precommit y Commit. Cada estado se denomina paso redondo o simplemente “paso”.
  • Se dice que un nodo está a una altura, redondez y escalón determinados, o en (H, R, S), o en (H, R) en resumen para omitir el escalón.
  • Prevotar o precommitir algo significa transmitir un voto previo o precommitir un voto para algo.
  • Cuando un bloque se pone >2/3 de las notas previas en (H, R) entonces se llama prueba de cambio de bloqueo o PoLC.

¿Qué es la máquina de estado??

La máquina de estado es el motor del protocolo Tendermint, por así decirlo. El siguiente diagrama le da una buena idea de cómo se verá:

¿Qué es la máquina de estado?

Ok, entonces que esta pasando aqui?

¿Recuerdas los estados por los que pasa cada ronda? NewHeight, Proponer, Prevote, Precommit y Commit.

De estos, “Proponer, Prevotar, Precomprimir” consisten en una ronda mientras que las otras dos son rondas especiales. En un escenario ideal, la transición estatal actuaría así:

NewHeight -> (Proponer -> Prevote -> Pre cometido)+ -> Cometer -> NewHeight ->…

Sin embargo, no es así como siempre funciona. Pueden ser necesarias varias rondas antes de que se confirme el bloqueo. Las siguientes son las razones por las que pueden ser necesarias varias rondas:

  • El proponente designado puede estar ausente.
  • El bloque propuesto puede ser inválido.
  • El bloqueo no se propagó a tiempo.
  • >2/3 de las notas previas no fueron recibidas a tiempo por los nodos de validación.
  • Aunque +2/3 de las notas previas son necesarias para avanzar al siguiente paso, al menos un validador puede haber votado o votado maliciosamente por otra cosa..
  • >2/3 de los compromisos previos para el bloque no se recibieron a pesar de que se pudieron haber recibido los comentarios previos.

Que sucede durante cada estado?

Muy bien … así que ahora echemos un vistazo a todos y cada uno de los estados y veamos cómo se junta todo.

Proponer

En esta etapa, el proponente designado, es decir, el nodo seleccionado propone un bloque que se agregará en (H, R). Esta etapa termina de una de estas dos formas:

Se propone el bloque y que entra en etapa previa.

El tiempo del proponente para elegir el bloque expira en el que ingresa a la etapa previa de todos modos.

Prevote

Ahora llegamos a la etapa previa. En esta etapa, cada validador debe tomar una decisión..

  • Si de alguna manera, el validador está bloqueado en un bloque propuesto de alguna ronda anterior, automáticamente cierra la sesión y transmite ese bloque..
  • Si el validador había recibido una propuesta aceptable para la ronda actual, entonces firma y transmite una nota previa para el bloque propuesto..
  • Sin embargo, si encuentran algo sospechoso en la propuesta o no han recibido ninguna propuesta (por ejemplo, si se agota el tiempo del proponente), entonces firman con una nota previa “nula”..
  • No ocurre ningún bloqueo durante esta etapa.
  • Durante este período, todos los nodos propagan los prevotes por todo el sistema a través del protocolo de chismes..

Pre cometido

Ahora ingresamos al paso final de la “ronda” llamada “compromiso previo”. Al entrar en esta etapa, los validadores se comprometen previamente con su decisión al difundir sus prevotes. Puede ocurrir uno de los siguientes tres escenarios:

  • Si el validador recibe >2/3 de las notas previas para un bloque aceptable particular, luego el validador firma y transmite su compromiso previo al bloque. También quedan atrapados en ese bloque. Un validador puede bloquear solo un bloque a la vez.
  • Sin embargo, si el validador recibe más de 2/3 de las notas previas NUL, se desbloquean y las confirmaciones previas pasan a “NIL”..
  • Por último, si no han recibido una supermayoría de 2/3 en absoluto, no cierran ni bloquean nada..

A lo largo de esta etapa, los nodos continúan cotilleando sobre los compromisos previos en toda la red..

Al final, si el bloque propuesto obtiene más de 2/3 de compromisos previos, nos movemos hacia el paso de “Compromiso”. Sin embargo, si no llegan a esa etapa, ingresan a la etapa “Proponer” de la siguiente ronda..

Cometer

El estado de compromiso no es parte de la “ronda”. Junto con NewHeight, es una de las dos rondas especiales. Durante el estado de confirmación, se comprueban dos condiciones paralelas para ver si se están cumpliendo o no.

  • En primer lugar, los validadores deben recibir el bloque que ha sido precomprometido por la red. Una vez hecho esto, firman y transmiten su compromiso..
  • En segundo lugar, deben esperar hasta haber recibido al menos 2/3 de precommits para el bloque..

    Una vez hecho esto, el bloque se compromete con la red..

NewHeight

Simplemente incrementa la altura del bloque en 1 para mostrar que el bloque se ha agregado.

Elección de los validadores

Como ya habrá entendido, la elección del conjunto inicial de validadores es fundamental para que Cosmos funcione. Entonces, ¿cómo exactamente serán elegidos??

A diferencia de Bitcoin, donde cualquiera puede convertirse en minero en cualquier momento, el sistema Tendermint solo puede admitir tantos validadores. Dado que los validadores individualmente necesitarán realizar muchas funciones, aumentar el número de validadores solo provocará retrasos.

Es por eso que Cosmos decidió elegir 100 validadores durante el día de Génesis (es decir, el día de la recaudación de fondos). El número de validadores aumentará en un 13% cada año hasta 10 años, cuando se establecerá en 300.

Guía definitiva de Tendermint

Entonces, ¿qué pasa con los resultados??

Como dice el documento técnico del cosmos:

“Tendermint proporciona un rendimiento excepcional. En los puntos de referencia de 64 nodos distribuidos en 7 centros de datos en 5 continentes, en instancias de nube de productos básicos, el consenso de Tendermint puede procesar miles de transacciones por segundo, con latencias de confirmación del orden de uno a dos segundos. En particular, el rendimiento de más de mil transacciones por segundo se mantiene incluso en condiciones adversas adversas, con validadores que se bloquean o emiten votos creados con fines malintencionados “.

El siguiente gráfico respalda la afirmación anterior:

Casper vs Tendermint

Junto con Tendermint, Casper es otra implementación popular del protocolo POS.

Mientras que Tendermint se enfoca en la seguridad, el enfoque de Casper está en la vivacidad, lo que es imposible para FLP. Entonces, ¿qué sucede en Casper durante una bifurcación??

Casper FFG permitirá que se continúe construyendo una cadena de bloques, teniendo también la propiedad de que todos los nodos serán conscientes de que esta cadena no está finalizada. Entonces, la cadena de bloques puede permanecer disponible sin ninguna finalidad. Los validadores de la cadena tienen la opción de pasar a la cadena bifurcada. Si más de 2/3 de los validadores votan, entonces cambian de cadena.

Además, Casper tiene un famoso mecanismo de corte. Cualquier tipo de ataque malicioso hará que los validadores obtengan una reducción instantánea de su participación..

Conclusión Tendermint

Así que ahí lo tienes. Esperamos haberle brindado la mayor cantidad de información valiosa posible. ¿Qué opinas de Tendermint y su potencial? Sonido en la sección de comentarios a continuación!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me