En Tendermint Core, se ha combinado el algoritmo de consenso de Tendermint, junto con un Protocolo Gossip P2P. De esta manera, cuando juntas este algoritmo y este protocolo en un solo software, obtienes a Tendermint Core, con una capa de aplicación de Cosmos-SDK. Así pues, Tendermint Core va a revolucionar la criptotecnología hasta convertirse en una necesidad. Y en este artículo veremos el por qué.
Primero lo primero: Bitcoin y Blockchain
Cuando se creó el Bitcoin, obra de Satoshi Nakamoto, había nacido el primer sistema criptográfico descentralizado. Lo más resaltante de este descubrimiento, ha sido que se pudo resolver el “Problema del General Bizantino”. El cual ayudó a que una red de área amplia (WAN) llegara a un consenso en un entorno de confianza.
Por lo tanto, Bitcoin utilizó un algoritmo de prueba de trabajo para cuidar su consenso. Ahora bien, la contribución más importante de Bitcoin, puede ser el hecho de que introdujo a todo el mundo en la tecnología Blockchain (cadena de bloques).
Así pues, una cadena de bloques, son una serie de registros de datos inmutables, que llevan una marca de tiempo. La cual, es administrada por un grupo o redes de computadoras; las cuales no son propiedad de ninguna entidad o administrador centralizado. Del mismo modo, cada uno de estos bloques de datos es asegurado y se vincula entre se sí, bajo principios criptográficos.
De la misma manera, cada conjunto de datos guardados constituye un bloque o serie de bloques, que van vinculados entre sí a modo de cadena. Dicho de otro modo, un cadena de bloques es una máquina de estado determinista, la cual se replica en nodos que no necesariamente confían entre sí.
Por “determinista”, se refiere a que, si se toman los mismos pasos específicos, entonces siempre se van a obtener los mismos resultados
Podemos acercarnos a un estado viendo Bitcoin y Ethereum
Ahora bien, en Bitcoin, el “estado” es una lista de saldos para cuenta en específico, lo que es igual a una lista de salida de transacciones sin gastar (UTXO, por sus siglas en inglés). Del mismo modo, dicho estado se modifica a través de las transacciones que cambian el saldo de la cuenta.
Por su parte, Ethereum, cuya aplicación es una máquina virtual la cual ejecuta contratos inteligentes. Cada una de las transacciones Pasa a través de la Máquina Virtual Ethereum y modifica el acuerdo. Cada acuerdo viene con un contrato inteligente específico que se llama dentro del mismo.
Por último, podemos identificar la arquitectura de la tecnología blockchain en tres capas; las cuales son:
Las redes; que propagan las transacciones y la información subyacente en ellas a través de los nodos de cada una de las mismas.
El consenso; es el que permite que los nodos tomen una decisión que ha sido prevista. Cabe destacar que más de dos tercios de los nodos no son considerados maliciosos.
La aplicación; es la responsable de actualizar el estado de un conjunto de transacciones hechas. Es decir, es la encargada de procesar transacciones. Si se tiene una nueva aplicación y un estado, entonces la capa de aplicación devolverá un nuevo estado.
Arquitectura monolítica versus arquitectura modular
Cuando hablamos de arquitectura monolítica, nos referimos a que todo está hecho de una sola pieza. A su vez, cuando un software se considera “monolítico”, los componentes están interconectados y son independientes entre sí. Además, el diseño del software puede considerarse como autónomo.
Del mismo modo, la arquitectura está acoplada de manera más estrecha, y los componentes asociados deben estar todos presentes para que el código pueda ejecutarse o para que pueda compilar.
No obstante, si bien hace que el sistema para lo cual fue creado el software sea más robusto, realmente no se pueden crear códigos personalizados. En otras palabras, no es el más flexible de los sistemas. Por lo tanto, presentará algunos problemas. El más común es el que, si es necesario actualizar algún componente, se debe trabajar en toda la aplicación.
Por el contrario, tenemos también la arquitectura modular. A diferencia de la arquitectura monolítica, las capas no están vinculadas entre sí. Por ello, aunque no puede ser un sistema tan robusto, puedes actualizar fácilmente toda la aplicación mediante la acción de varios módulos totalmente separados.
Ahora bien, dado que los módulos son independientes, la arquitectura modular te va a permitir actualizar una sección del sistema en particular. Además, lo vas a poder hacer sin causar cambios inesperados en el resto de tu sistema. Por último, los procesos creativos son más sencillos en los programas modulares.
Arquitectura y objetivos de Tendermint
Para efectos prácticos, Tendermint utiliza la llamada arquitectura modular, como se ha visto anteriormente, tiene sus ventajas en cuanto al tipo de software que se quiere emplear. También, tiene una serie de objetivos.
Uno de ellos, es el de proporcionar capas de red y consensos de una cadena de bloques. Esto como una plataforma en donde se pueden desarrollar diferentes aplicaciones descentralizadas.
Del mismo modo, los desarrolladores solo tienen que preocuparse por la capa de aplicaciones de la cadena de bloques. Esto va a ahorrar muchísimo tiempo. Tiempo que se hubiese perdido trabajando en el consenso y también en la capa de red.
Por último, Tendermint incluye también el “Protocolo de Consenso de Tendermint”. Esto no es más que el algoritmo de consenso que tolera las fallas bizantinas, todo ello en el motor de Tendermint Core.
Podremos ver cómo será la arquitectura de Tendermint Core
En primer lugar, la aplicación estará conectada a Tendermint Core a través de un protocolo de socket llamado APCI. Que es lo mismo que cadena de bloques de aplicaciones. Por ello, dado que Tendermint Core y dicha aplicación se ejecutan en procesos UNIX totalmente separados. Estos deben tener un método para comunicarse entre ellos.
Además de ello, uno de los objetivos principales de Tendermint, es el de proporcionar una herramienta práctica. Y no solo eso, sino también, proporcionar una herramienta de alto rendimiento.
Blockchain puede ser público o privado, de manera compatible
Generalmente, distintos proyectos, tienen diferentes necesidades. Por lo tanto, algunos proyectos requieren tener sistemas abiertos en donde cualquier usuario pueda participar y contribuir. Como por ejemplo, Ethereum. Por otra parte, tenemos organizaciones importantes como la industria médica, los cuales no pueden exponer sus datos críticos a todos.
Para cada uno de estos casos, se requiere algo así como un Blockchain permitido, así pues, Tendermint podría satisfacer ambas necesidades con objetivos claros. Lo primero que hace, es propagar la transacción entre distintos nodos a través del Protocolo Gossip. A su vez, ayuda a los validadores a acordar el conjunto de transacciones que se van a anexar a blockchain.
Por lo general, esto significa que es la capa de aplicación la que tiene libertad de definirse. Esto permite a los desarrolladores elegir su propia definición en esta capa. Lo que se traduce en que está en las manos de los desarrolladores definir el comportamiento del validador dentro del ecosistema.
Tendermint tendrá un alto rendimiento
Ahora bien, cada vez que desarrolles aplicaciones a través de Tendermint Core, puedes esperar un excelente rendimiento. Es decir, un rendimiento superior. Para tu información, Tendermint Core tiene un tiempo de bloqueo de apenas un segundo. También, puede manejar más de diez mil transacciones por segundo. O lo que es lo mismo, transacciones de 250 bytes, siempre que la aplicación lo permita.
Proporcionará seguridad
Tendermint Core puede considerarse seguro. También, obligará a sus usuarios a responsabilizarse por sus acciones. Como se ha mencionado antes, las aplicaciones no funcionarán y no se separarán siempre y cuando los dos tercios de los validadores sean considerados como maliciosos.
Por último, el algoritmo de consenso de Tendermint no solo es tolerante a las fallas; sino también es tolerante a las fallas bizantinas, lo que optimizará más su funcionamiento y su aplicación en el ecosistema.
Es fácil de usar
Una de las grandes ventajas de Tendermint es la facilidad con la que se usa. Del mismo modo, la arquitectura modular permite que se pueda personalizar adecuadamente la capa de aplicación del mismo. Por lo tanto, esto hace posible que las bases de código de blockchain puedan vincularse fácilmente a Tendermint a través del ACBI.
Igualmente, el ejemplo básico de esto es “Ethermint”, el cual es básicamente el conector de la base del código de la máquina virtual Ethereum en la capa de aplicación de Tendermint. De esta manera, Ethermint funciona igual que Ethereum, de la misma manera que también se beneficia de todas las ventajas y características de Tendermint.
Por último, estamos tratando de una aplicación bastante eficaz, de fácil desarrollo e implementación, muy segura y que es muy adaptable. Por lo tanto, Tendermint Core será la solución a muchos problemas y situaciones futuras en el desarrollo de software basado en tecnología blockchain. Lo cual ayudará a optimizar miles de millones de transacciones.