O desenvolvimento de uma rede de criptomoedas ou blockchain exige muito mais do que apenas inicializar um banco de dados. É necessário encontrar um equilíbrio delicado entre incentivos e compensações para garantir a segurança, descentralização e escalabilidade adequadas.
Existem várias abordagens diferentes para construir ecossistemas de blockchain robustos, e uma delas é o Tendermint. Neste artigo, vamos explorar o que é o Tendermint, como funciona e por que ele é tão interessante para desenvolvedores e usuários finais.
O que você precisa saber sobre o Tendermint
Antes de nos aprofundarmos no Tendermint, vamos recapitular alguns conceitos-chave sobre blockchain.
Compreendendo a arquitetura de blockchain
O Tendermint é uma espécie de “pilha de blockchain”. Assim como o Bitcoin e o Ethereum, ele não se trata apenas do banco de dados em si, mas também da rede peer-to-peer de nós, da forma como eles interagem e das transações e contratos inteligentes que podem ser executados. O objetivo é fazer com que todos concordem com um “estado” (como uma captura de tela do banco de dados) mesmo que não confiem uns nos outros.
As principais blockchains encontraram a fórmula secreta para tornar isso possível, mas muitas delas dependem de uma “arquitetura monolítica” que interconecta e torna interdependentes os componentes do sistema. Não é possível pegar um único componente e conectá-lo a outro sistema.
Essa arquitetura monolítica não é ideal para quem busca flexibilidade. Em um modelo oposto, com “arquitetura modular”, é possível ajustar componentes individuais sem se preocupar em quebrar o sistema como um todo. Com uma estrutura monolítica, é preciso garantir que todos os componentes continuem compatíveis quando um único componente é atualizado.
Agora que entendemos essa distinção, podemos falar um pouco mais sobre o protocolo Tendermint.
Tolerância a falhas bizantinas (BFT)
Você provavelmente sabe que a grande inovação do Bitcoin foi resolver algo chamado “Problema dos Generais Bizantinos“. Não vamos entrar nos detalhes desse problema aqui, mas basicamente descreve um cenário em que os participantes precisam se comunicar em um ambiente distribuído.
Esses participantes não sabem se os outros estão mentindo ou se as mensagens enviadas entre eles estão sendo modificadas. Dizemos que um sistema tem “tolerância a falhas bizantinas” se os participantes conseguirem concordar com um conjunto de fatos, mesmo com esses problemas presentes.
Obviamente, em um ambiente descentralizado, acertar isso é crucial. Criptomoedas que não são tolerantes a falhas bizantinas simplesmente não funcionam – seria necessário algum tipo de coordenação por uma entidade centralizada, o que anularia o propósito da tecnologia. Como muitas moedas digitais, o Bitcoin contorna esse problema usando um algoritmo de consenso chamado “Proof of Work” (Prova de Trabalho).
As três camadas de uma blockchain
Agora que entendemos a diferença entre arquitetura monolítica/modular e sabemos que as redes de criptomoedas descentralizadas precisam ser tolerantes a falhas bizantinas, vamos falar sobre as três camadas que normalmente vemos em uma blockchain: a camada de aplicação, a camada de consenso e a camada de rede.
As camadas de consenso e de rede são onde os nós da rede se comunicam entre si, tentando concordar com um conjunto de fatos. A camada de aplicação é onde você pode fazer coisas por conta própria – pense em aplicativos descentralizados e contratos inteligentes no Ethereum, ou transações personalizadas no Bitcoin.
Tendermint Core
Agora que temos uma compreensão básica dos conceitos-chave, vamos nos aprofundar mais no Tendermint Core.
Primeiro, uma breve explicação sobre a terminologia. Vamos usar os termos “Tendermint” e “Tendermint Core” de forma intercambiável aqui, pois estamos focando apenas na tecnologia.
O Tendermint é o nome da empresa (fundada pelo desenvolvedor que escreveu o whitepaper original, Jae Kwon), enquanto o Tendermint Core é o software real desenvolvido pela empresa. O software possui dois componentes principais: o mecanismo de consenso central (Tendermint Core) e a interface de aplicação (ABCI).
O Tendermint Core é um sistema que alcança tolerância a falhas. Em essência, ele é um grande computador distribuído que mostra a todos o mesmo estado ao mesmo tempo. Desde que pelo menos dois terços dos participantes sejam honestos, tudo funciona perfeitamente. Mas isso é verdade para qualquer blockchain, certo? O que torna o Tendermint tão especial?
Em primeiro lugar, o mecanismo de consenso usado é chamado “Proof of Stake” (Prova de Participação). Para cada período, um nó aleatório de um conjunto de validadores é selecionado. Esse nó deve propor o próximo bloco (em um sistema chamado “round-robin”).
Se os outros validadores estiverem satisfeitos com o bloco proposto, ele é adicionado à cadeia e a cadeia é atualizada. A finalidade é instantânea – ao contrário do Bitcoin ou Ethereum, não é necessário esperar por confirmações para ter certeza de que uma transação é válida.
Mas espere, há mais! A arquitetura do Tendermint Core é modular, com a camada de aplicação separada das camadas de consenso e de rede. Em termos simples, isso significa que você pode conectar sua própria camada de aplicação à pilha. Não é preciso se preocupar com incentivos ou algoritmos de consenso complicados.
Talvez isso não seja tão empolgante para o usuário final, mas para os desenvolvedores, a capacidade de aproveitar um framework existente significa que eles podem começar a construir aplicativos sem precisar criar uma rede inteira do zero. Os dados da blockchain podem ser enviados para a camada de aplicação integrada, permitindo que os desenvolvedores escrevam software em qualquer linguagem.
A mágica acontece com algo chamado “Application Blockchain Interface” (ABCI). Imagine isso como os pinos GPIO que você encontra em um computador Raspberry Pi. Você pode conectar todos os tipos de componentes de terceiros a eles, desde LEDs até sistemas de irrigação elaborados para suas plantas. De maneira semelhante, a ABCI define a fronteira entre a blockchain e os aplicativos que a utilizam.
O que há de tão incrível no Tendermint Core?
A separação da interface de aplicação e do mecanismo de consenso permite uma maior flexibilidade para uma variedade de aplicativos descentralizados incorporarem qualquer linguagem de programação em sua lógica de negócios.
Um exemplo tangível do que pode ser feito pode ser encontrado no Ethermint: um projeto que pegou o código do Ethereum, removeu o mecanismo de Proof of Work e conectou a Máquina Virtual Ethereum ao Tendermint.
Isso tornou algumas coisas interessantes possíveis. Em primeiro lugar, os desenvolvedores do Ethereum puderam migrar seus contratos inteligentes para a nova plataforma com facilidade, ou escrever novos contratos na linguagem Solidity. Além de fornecer funcionalidades do Ethereum, o Ethermint atua como uma versão Proof of Stake do Ethereum, nos dando uma ideia de como uma implementação do Casper pode ser no Ethereum 2.0.
Interoperabilidade de blockchain
A promessa de uma “internet de blockchains” é o que atrai muitos para os protocolos baseados no Tendermint. A interoperabilidade é uma adição há muito esperada para o espaço das criptomoedas, pois significa que centenas de blockchains individuais podem se tornar compatíveis entre si.
Atualmente, muito trabalho tem sido feito no Cosmos SDK, um framework de código aberto que permite a qualquer pessoa criar uma blockchain pública ou privada específica para uma aplicação. Essas blockchains podem então ser conectadas à rede Cosmos por meio de algo chamado Cosmos Hub, onde podem se comunicar com outras blockchains.
Vários projetos populares foram construídos com o Cosmos SDK, como a Binance Smart Chain (BSC), KAVA, Band Protocol, Terra e IRISnet.
Conclusão
Como um mecanismo de blockchain, o Tendermint chamou a atenção de várias partes interessadas no mundo das criptomoedas, desde desenvolvedores até usuários finais.
Se o software continuar ganhando popularidade, ele poderá se tornar a espinha dorsal de uma “internet de blockchains”. Como vimos, alguns projetos já foram lançados com o Cosmos SDK para tornar essa visão realidade.
Através da sua arquitetura modular e do mecanismo de consenso Proof of Stake, o Tendermint oferece flexibilidade e interoperabilidade para desenvolvedores e usuários finais. É uma abordagem promissora para a construção de aplicativos descentralizados e o futuro da tecnologia blockchain.