Guía sobre Tendermint
Inicio
Artículos
Guía sobre Tendermint

Guía sobre Tendermint

Intermedio
Publicación: Jan 8, 2021Actualización: Sep 1, 2022
7m

TL;DR - RESUMEN

Las blockchains que conoces y amas tienen una estructura bastante rígida. Como desarrollador, esto te deja dos opciones: crear aplicaciones dentro de un entorno restrictivo o hacer un "fork" del código y crear tu propia cadena. Sin embargo, crear tu propia cadena no es tan fácil –ya que necesitas poner en marcha una red y determinar que mecanismo de consenso utilizarás.

Tendermint es un software de código abierto para el lanzamiento de blockchains, que te permite programar aplicaciones en cualquier lenguaje. Y lo que es todavía mejor, éstas podrán comunicarse con otras blockchains.


Introducción

Crear una criptomoneda o red blockchain exige mucho más esfuerzo que simplemente poner en marcha una base de datos. Requiere un delicado equilibrio de incentivos y contrapartidas entre seguridad, descentralización y escalabilidad.
Como es lógico, una serie de enfoques distintos han sido explorados por los equipos que buscan construir los ecosistemas blockchain más sólidos. En este artículo, analizaremos uno de dichos enfoques: Tendermint.


Qué necesitas saber sobre Tendermint

Gran parte de Tendermint te resultará familiar si sabes un poco sobre blockchains. Vamos a repasar algunos conceptos clave antes de profundizar un poco más.


Comprender la arquitectura blockchain

Tendermint es un tipo de estructura blockchain (blockchain stack). Pero claro, cosas como Bitcoin y Ethereum también lo son. Recuerda, no se trata solamente de la base de datos blockchain en sí misma, sino también de la red peer-to-peer de nodos, cómo interactúan, y las cosas interesantes que puedes hacer con transacciones y smart contracts. El objetivo aquí es que todo el mundo se ponga de acuerdo sobre un estado (algo así como una instantánea de la base de datos), incluso en el caso que no confíen en los demás.
En general, las principales blockchains de hoy en día presentan el ingrediente secreto que hace que esto sea posible. Sin embargo, a menudo, éstas dependen de una arquitectura monolítica: un concepto de ingeniería de software que alude al hecho que los componentes están interconectados y son interdependientes. No sería posible tomar una parte de la misma y conectarla a otra cosa.
Una arquitectura monolítica no es genial si lo que quieres es flexibilidad. En el tipo de modelo opuesto (con arquitectura modular), puedes ajustar componentes individuales sin preocuparte de que se estropee nada. En una estructura monolítica, debes asegurarte que cada componente siga siendo compatible cuando actualizas uno de los mismos. 

Ahora que entendemos esta diferencia, podemos hablar un poco más del protocolo Tendermint.


Tolerancia a Faltas Bizantinas (BFT)

Es posible que sepas que la gran innovación que representaría Bitcoin sería resolver algo llamado el Problema de los Generales Bizantinos. No entraremos en los detalles de dicho problema (consulta nuestro artículo sobre tolerancia a faltas bizantinas si estás interesado). Todo lo que necesitas saber es que el mismo describe un escenario en el que los participantes han de comunicarse en un entorno distribuido. 
Dichos participantes no saben si los demás mienten o si los mensajes que se intercambian entre sí están siendo modificados. Se dice que un sistema es tolerante a faltas bizantinas (BFT) si los participantes pueden ponerse de acuerdo respecto a un conjunto de datos, incluso cuando los problemas anteriormente descritos están presentes.
Obviamente, en un entorno descentralizado, lograr esto es crucial. Las criptomonedas que no son tolerantes a faltas bizantinas en realidad no funcionan –necesitarías algún tipo de tercera parte centralizada que se encargara de coordinar, lo que arruinaría el propósito original. Como muchas monedas digitales, Bitcoin lo soluciona utilizando un algoritmo de consenso Proof of Work (PoW).


Las tres capas de una blockchain

Así que ya conocemos la diferencia entre arquitectura monolítica/modular, y sabemos que las redes descentralizadas de criptomonedas deben ser tolerantes a faltas bizantinas. Vamos ahora a enumerar las capas que habitualmente vemos en una blockchain: la capa de aplicaciones, la capa de consenso, y la capa de networking.
Las capas de consenso y networking son el lugar donde los nodos se comunican entre sí, y tratan de ponerse de acuerdo respecto a un conjunto de hechos. La capa de aplicaciones es el lugar donde puedes hacer cosas tú mismo –piensa en aplicaciones descentralizadas y smart contracts en Ethereum o transacciones "custom" en Bitcoin.



Tendermint Core

En primer lugar, una rápida aclaración sobre la terminología. En este artículo utilizaremos los términos “Tendermint” y “Tendermint Core” de manera indistinta dado que sólo nos centramos en la tecnología.

Sin embargo, Tendermint es el nombre de la empresa (fundada por el desarrollador que escribió el whitepaper original, Jae Kwon), mientras que Tendermint Core es el software real en el que trabaja la empresa. Más específicamente, el software tiene dos componentes principales: su motor de consenso central (Tendermint Core) y su interfaz de aplicación (ABCI).

Tendermint Core es un sistema que logra tolerancia a fallas. En esencia, es una computadora grande y distribuida que muestra a todos el mismo estado al mismo tiempo. Siempre que al menos dos tercios de los participantes sean honestos, todo funcionará sin problemas. Pero así son prácticamente todas las blockchains, ¿verdad? ¿Qué lo hace tan especial?

En primer lugar, el mecanismo de consenso utilizado es Proof of Stake (PoS). Para cada período, se selecciona un nodo aleatorio de un conjunto de validadores. Ese nodo debe proponer el siguiente bloque (en algo llamado sistema de turnos). Si los otros validadores están contentos con él, se agrega el nuevo bloque y se actualiza la cadena. La finalidad es instantánea: a diferencia de Bitcoin o Ethereum, no es necesario esperar a las confirmaciones para asegurarte de que tu transacción es válida.

¡Pero espera hay mas! La arquitectura de Tendermint Core es modular, con la capa de aplicación divorciada de las capas de consenso y redes. En términos sencillos, eso significa que puedes conectar tu propia capa de aplicación en al stack. No hay necesidad de preocuparse por los molestos incentivos o algoritmos de consenso.

Quizás esto no sea demasiado emocionante para el usuario final. Pero para los desarrolladores, la capacidad de aprovechar un marco existente significa que pueden sumergirse directamente en la creación de aplicaciones sin tener que iniciar una red completa. Los datos de las blockchains se pueden canalizar a la capa integrada, lo que permite a los desarrolladores escribir software en cualquier idioma.

La magia ocurre con algo llamado Application Blockchain Interface, o simplemente, ABCI. Piensa en esto como los pines GPIO que obtienes en una computadora Raspberry Pi. Puedes conectar todo tipo de componentes de terceros a esos, desde LED hasta elaborados sistemas de rociadores para tus plantas. De manera similar, la ABCI es lo que define el límite entre la blockchain y las aplicaciones que se ejecutan sobre ella.


¿Qué tiene de bueno Tendermint Core?

La separación de la interfaz de la aplicación y el mecanismo de consenso permite una mayor flexibilidad para que una variedad de aplicaciones descentralizadas incorporen cualquier lenguaje de programación en su lógica empresarial.

Para obtener un ejemplo tangible de lo que se puede hacer, solo necesitas mirar Ethermint: un proyecto que tomó la base de código Ethereum, eliminó el mecanismo de Proof of Work y atornilló la Máquina virtual de Ethereum encima de Tendermint.
Esto hizo posibles algunas cosas interesantes. La primera es que los desarrolladores de Ethereum podrían transferir sus contratos inteligentes al nuevo motor con facilidad o escribir nuevos contratos en el lenguaje de Solidity. Además de proporcionar la funcionalidad Ethereum, Ethermint actúa como proof of stake Ethereum, lo que nos da una idea de cómo se vería una implementación de Casper en Ethereum 2.0.


Interoperabilidad blockchain

La promesa de un "Internet de blockchains" es lo que atrae a muchos a los protocolos basados en Tendermint. La interoperabilidad es una adición muy esperada al espacio de las criptomonedas, ya que significa que cientos de blockchains individuales se volverían compatibles entre sí.

En la actualidad, se ha trabajado mucho en Cosmos SDK, un marco de código abierto que permite a cualquier persona crear una blockchain pública o privada específica de la aplicación. Estas blockchains se pueden conectar a la red Cosmos más amplia, a través de algo llamado Cosmos Hub, donde pueden comunicarse con otras.

Se han creado numerosos proyectos populares con Cosmos SDK, como Binance SSe han creado numerosos proyectos populares con Cosmos SDK, como Binance Smart Chain (BSC), KAVA, Band Protocol, Terra e IRISnet.


En conclusión

Como motor blockchain, Tendermint ha llamado la atención de numerosas partes interesadas en el ámbito de las criptomonedas, desde desarrolladores hasta usuarios finales.

Si el software continúa ganando terreno, muy bien podría servir como la columna vertebral de una Internet de blockchains. Como hemos visto, ya se han lanzado varios proyectos con Cosmos SDK para hacer realidad esta visión.

¿Tiene más preguntas sobre Tendermint, algoritmos de consenso o tecnología blockchain en general? Dirígete a Ask Academy, donde la comunidad las responderá.