Tendermint explicado
Resumen
La cadena de bloques que conoces y amas tiene una estructura bastante rígida. En este caso, como desarrollador, tienes dos opciones: construir tu aplicación en un entorno restringido o bifurcar tu código y crear tu propia cadena. Sin embargo, crear su propia cadena no es fácil: también debe iniciar la red y decidir utilizar el mecanismo compatible con ****.
Tendermint es un software de código abierto para lanzar blockchains, que permite escribir aplicaciones en cualquier idioma. Aún mejor, puede comunicarse con otras cadenas de bloques.
Crear una red de criptomonedas o blockchain requiere mucho trabajo y va mucho más allá de inicializar una base de datos. Requiere un delicado equilibrio entre incentivos y compensaciones por seguridad, descentralización y escalabilidad.
Como resultado, algunos equipos han explorado una variedad de enfoques diferentes para construir el ecosistema blockchain más sólido posible. En esta publicación de blog, analizaremos más de cerca uno de esos métodos: Tendermint.
Si sabes algo sobre blockchain, gran parte de Tendermint te resultará familiar. Antes de profundizar, repasemos algunos conceptos clave.
Tendermint es una pila blockchain. Bitcoin y Ethereum, etc. también son pilas de blockchain. Recuerde, no se trata solo de la base de datos blockchain en sí, sino de la red de nodos peer-to-peer, cómo interactúan entre sí y qué se puede hacer con las transacciones y los contratos inteligentes. El objetivo es unificar el estado de todos (como una instantánea de una base de datos) incluso si no confían en los demás.
En gran medida, las principales blockchains actuales han encontrado el “secreto” para lograrlo. Sin embargo, a menudo dependen de una arquitectura integrada: un concepto de ingeniería de software que significa que los componentes individuales están interconectados y son interdependientes. No se puede insertar una parte en otra.
Si quieres flexibilidad, una arquitectura integrada no es lo ideal. Por el contrario, en la arquitectura modular, puedes modificar componentes individuales sin preocuparte por romper ninguna arquitectura. Con una arquitectura integrada, debe asegurarse de que cuando actualice componentes individuales, cada componente siga siendo compatible.
Ahora que entendemos la diferencia entre ambos, podemos pasar al protocolo Tendermint.
Como ya sabrás, la mayor innovación de Bitcoin es que resuelve el llamado problema de los generales bizantinos. No discutiremos esto en detalle aquí (consulte nuestro artículo sobre Tolerancia a fallas bizantinas si está interesado). Todo lo que necesita saber es que esta pregunta detalla un escenario en el que los participantes deben comunicarse en un entorno distribuido.
Los participantes no sabían si los demás mentían o si los mensajes enviados entre ellos habían sido manipulados. Incluso con estos problemas, si los participantes pueden ponerse de acuerdo sobre un conjunto de hechos, el sistema aún puede considerarse tolerante a fallas bizantinas.
Obviamente, en un entorno descentralizado, es crucial manejar estos problemas correctamente. Las criptomonedas que no son tolerantes a fallos bizantinos realmente no funcionan: se necesita algún tipo de organización centralizada para coordinarse, lo que pierde el sentido. Si esto es cierto para muchas monedas digitales, Bitcoin resuelve este problema utilizando el algoritmo de conocimiento Prueba de Trabajo (PoW)***.
Ya conocemos la diferencia entre una arquitectura integrada/modular y que las redes de criptomonedas descentralizadas deben ser tolerantes a fallas bizantinas. Echemos un vistazo a la arquitectura común de tres capas en blockchain: capa de aplicación, capa de conocimiento y capa de red.
***La capa de conocimiento y la capa de red son donde los nodos de la red se comunican entre sí e intentan ponerse de acuerdo sobre un conjunto de hechos. La capa de aplicación le permite hacer cosas por su cuenta, como aplicaciones descentralizadas y contratos inteligentes en Ethereum, o transacciones personalizadas en Bitcoin.
Pero si bien Tendermint es el nombre de la empresa (fundada por Jae Kwon, el desarrollador que escribió originalmente el documento técnico), Tendermint Core es el software real que la empresa está desarrollando. Más específicamente, el software tiene dos componentes principales: el motor de conocimiento central (Tendermint core) y la interfaz de programación de aplicaciones (ABCI).
Tendermint Core es un sistema tolerante a fallos. Básicamente, es una gran computadora distribuida que muestra el mismo estado a todos al mismo tiempo. Siempre que al menos dos tercios de los participantes sean honestos, todo irá bien. ¿Pero no es esto cierto para casi todas las cadenas de bloques? ¿Qué tiene de especial?
En primer lugar, el único mecanismo de conocimiento utilizado por Tendermint Core es la Prueba de participación (PoS). En cada época, un nodo se selecciona aleatoriamente de un conjunto de validadores. Luego, el nodo debe proponer el siguiente bloque (realizado en el llamado sistema de turnos). Si otros validadores están contentos con él, se agrega un nuevo bloque y se actualiza la cadena. Los resultados se determinan instantáneamente; a diferencia de Bitcoin o Ethereum, no es necesario esperar la confirmación para garantizar que su transacción sea válida.
¡No te preocupes, también tiene otras características! Tendermint Core adopta una arquitectura modular y la capa de aplicación está separada de la capa de conocimiento y la capa de red. En pocas palabras, esto significa que puede conectar su propia capa de aplicación a la pila sin tener que preocuparse por engorrosos mecanismos de incentivos o algoritmos de conocimiento.
Para los usuarios finales, esto no supone una gran sorpresa. Pero para los desarrolladores, poder aprovechar los marcos existentes significa que sólo necesitan crear aplicaciones, en lugar de toda la red. Los datos de blockchain se pueden canalizar a la capa de integración, lo que permite a los desarrolladores escribir software en cualquier idioma.
La magia reside en lo que se llama la Interfaz Blockchain de Aplicaciones (ABCI para abreviar). Puedes pensar en ello como los pines GPIO de una computadora Raspberry Pi. Puede conectar una variedad de componentes de terceros a estos pines, desde LED hasta elaborados sistemas de pulverización de plantas. De manera similar, ABCI define los límites entre una cadena de bloques y las aplicaciones que se ejecutan en ella.
La separación de los mecanismos de conocimiento API y *** proporciona a las aplicaciones distribuidas una mayor flexibilidad, permitiéndoles incorporar cualquier lenguaje de programación a la lógica empresarial.
Solo tienes que mirar a Ethermint para ver un ejemplo concreto para ver lo útil que puede ser: Ethermint toma el código base de Ethermint, elimina el mecanismo de prueba de trabajo y construye la máquina virtual de Ethermint sobre Tendermint. .
Esto permite algunas operaciones interesantes. En primer lugar, los desarrolladores de Ethereum pueden migrar fácilmente sus contratos inteligentes al nuevo motor o escribir nuevos contratos utilizando el lenguaje Solidity. Además de proporcionar la funcionalidad de Ethereum, Ethermint también sirve como prueba de participación de Ethereum, lo que nos da una idea de cómo se implementará Casper en Ethereum 2.0.
La promesa de una "Internet blockchain" ha atraído a muchas personas al protocolo Tendermint. La interoperabilidad es una nueva característica muy esperada en el espacio de las criptomonedas, ya que significa que cientos de cadenas de bloques independientes serán compatibles entre sí.
El SDK de Cosmos es un marco de código abierto que permite a cualquiera crear cadenas de bloques públicas o privadas para aplicaciones específicas. Luego, estas cadenas de bloques pueden conectarse a la red Cosmos más amplia a través del llamado Cosmos Hub, donde pueden comunicarse con otras cadenas de bloques.
Muchos proyectos populares se crean utilizando Cosmos SDK, como BSC, KAVA, Band Protocol, Terra e IRISnet.
Como motor blockchain, Tendermint ha atraído la atención de muchas partes interesadas en el espacio de las criptomonedas, incluidos desarrolladores y usuarios finales.