Guia Sobre Tendermint
Página Inicial
Artigos
Guia Sobre Tendermint

Guia Sobre Tendermint

Intermediário
Publicado em Jan 8, 2021Atualizado em Sep 1, 2022
7m

TL;DR

As blockchains que você já conhece e ama têm uma estrutura bem sólida. Como desenvolvedor, isso oferece duas opções: construir aplicativos dentro de um ambiente restritivo ou fazer um fork do código (bifurcação) e criar sua própria cadeia. Criar sua própria cadeia não é fácil – para isso, você precisa iniciar uma rede e descobrir qual mecanismo de consenso usar.

O Tendermint é um software de código aberto para o lançamento de blockchains que permite que você desenvolva aplicativos em qualquer idioma. E o que é ainda melhor, eles poderão se comunicar com outras blockchains.


Introdução

Criar uma rede de criptomoedas ou blockchain exige muito mais esforço do que apenas inicializar um banco de dados. É necessário um delicado equilíbrio de incentivos e trade-offs entre segurança, descentralização e escalabilidade.
Não é novidade que uma variedade de abordagens diferentes foi explorada por equipes que buscam construir os mais sólidos ecossistemas de blockchain. Neste artigo, veremos uma dessas abordagens: o Tendermint.


O que você precisa saber sobre Tendermint

Muito sobre o Tendermint lhe parecerá familiar, caso você saiba um pouco sobre blockchains. Vamos recapitular alguns conceitos-chave antes de nos aprofundarmos mais no assunto.


Entendendo a arquitetura blockchain

O Tendermint é um tipo de blockchain stack. Lembrando que BitcoinEthereum também são. Lembre-se de que não se trata apenas do banco de dados blockchain, mas da rede peer-to-peer de nodes (nós), como eles interagem e também de alguns recursos de transações e contratos inteligentes. O objetivo é fazer com que todos concordem com um determinado estado (como um snapshot do banco de dados), mesmo que não exista confiança entre os participantes da rede.
Na maioria das vezes, as principais blockchains descobriram o ingrediente secreto que torna isso possível. No entanto, elas geralmente contam com arquitetura monolítica: um conceito de engenharia de software que significa que os componentes são interconectados e interdependentes. Você não pode simplesmente pegar um pedaço dele e conectá-lo a outra coisa.
A arquitetura monolítica não é ideal em termos de flexibilidade. No tipo oposto de modelo (com arquitetura modular), você pode ajustar componentes individuais sem se preocupar em prejudicar o sistema. Com a estrutura monolítica, ao atualizar apenas um componente, você deve garantir que todos eles sejam compatíveis. 

Agora que entendemos essa distinção, podemos falar um pouco mais sobre o protocolo Tendermint.


Tolerância a Falhas Bizantinas (BFT)

Você deve saber que a grande inovação do Bitcoin foi que ele resolveu o chamado Problema dos Generais Bizantinos. Não entraremos em detalhes sobre o problema (consulte nosso artigo sobre Tolerância a Falhas Bizantinas se estiver interessado). O que você deve saber é que ele descreve um cenário em que os participantes devem se comunicar em um ambiente distribuído. 
Os 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 (BFT) quando os participantes concordam sobre um conjunto de fatos, mesmo quando os problemas descritos anteriormente estão presentes.
É claro que, em um ambiente descentralizado, é fundamental fazer isso da maneira certa. As criptomoedas que não são tolerantes a falhas bizantinas não funcionam – você precisaria de algum tipo de coordenação centralizada, o que anularia completamente o propósito das criptomoedas. Como muitas moedas digitais, o Bitcoin contorna isso usando um algoritmo de consenso Proof of Work (PoW).


As três camadas de uma blockchain

Portanto, sabemos a diferença entre a arquitetura monolítica e modular e sabemos que as redes de criptomoedas descentralizadas precisam ser tolerantes a falhas bizantinas. Vamos agora mencionar os layers (camadas) que normalmente estão presentes em uma blockchain: layer de aplicação, layer de consenso e layer de networking.
Os layers de consenso e de networking são onde temos nodes (nós) de rede se comunicando uns com os outros e tentando concordar sobre um determinado conjunto de fatos. O layer de aplicação é onde você pode fazer as coisas por conta própria – como os aplicativos descentralizados e contratos inteligentes na Ethereum ou as transações personalizadas do Bitcoin.



Tendermint Core

Primeiro, um rápido esclarecimento sobre a terminologia. Neste artigo, usaremos os termos “Tendermint” e “Tendermint Core” indistintamente, já que nosso foco está apenas na tecnologia. 

No entanto, Tendermint é o nome da empresa (fundada pelo desenvolvedor que escreveu o white paper original, Jae Kwon), enquanto Tendermint Core é o software no qual a empresa trabalha. Mais especificamente, o software tem dois componentes principais: seu mecanismo de consenso central (Tendermint Core) e sua interface de aplicativo (ABCI).

O Tendermint Core é um sistema que atinge tolerância a falhas. Essencialmente, é 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 bem. Mas isso é praticamente igual em todas as blockchain, certo? Então o que o torna tão especial?

Em primeiro lugar, o mecanismo de consenso usado é o Proof of Stake (PoS). Para cada período, é selecionado um node (nó) aleatório de um conjunto de validadores. Esse node deve então propor o próximo bloco (em algo chamado de sistema de turnos - ou round-robin system). Se os outros validadores estiverem satisfeitos, o novo bloco será adicionado e a cadeia será atualizada. O processo é instantâneo – ao contrário do Bitcoin ou Ethereum, não há necessidade de esperar por confirmações para ter certeza de que a transação é válida.

E tem mais! A arquitetura do Tendermint Core é modular. O layer (camada) de aplicação é separado dos layers de consenso e de networking. Basicamente, significa que você pode conectar seu próprio layer de aplicação no stack. Não há necessidade de se preocupar com incentivos ou algoritmos de consenso. 

Talvez isso não seja algo muito empolgante para o usuário final. Mas para os desenvolvedores, a capacidade de aproveitar uma estrutura já existente significa que eles podem mergulhar direto na construção de aplicativos sem precisar inicializar uma rede inteira. Os dados da blockchain podem ser canalizados para o layer integrado, permitindo que os desenvolvedores escrevam softwares em qualquer idioma.

A mágica acontece através da chamada Application Blockchain Interface, ou simplesmente, ABCI. Podemos imaginar isso como as portas programáveis GPIO (general-purpose input/output) de em um computador Raspberry Pi. Você pode conectar todos os tipos de componentes de terceiros a eles, desde LEDs até sistemas elaborados de sprinklers. De maneira semelhante, o ABCI é o que define o limite entre a blockchain e os aplicativos executados sobre ela.


O que é tão interessante sobre o Tendermint Core?

A separação entre a interface de aplicação e o mecanismo de consenso permite maior flexibilidade para uma variedade de aplicativos descentralizados, sendo possível incorporar quaisquer linguagens de programação na lógica do negócio.

Um exemplo do que pode ser feito é o Ethermint: um projeto que pegou a base de código da Ethereum, removeu o mecanismo de Proof of Work e inseriu a Ethereum Virtual Machine (Máquina Virtual Ethereum) em cima do Tendermint.
Isso proporcionou algumas possibilidades interessantes. A primeira é que os desenvolvedores da Ethereum podiam mover seus contratos inteligentes para o novo mecanismo ou escrever novos contratos na linguagem Solidity. Além de fornecer a funcionalidade da Ethereum, o Ethermint atua como um Proof of Stake da Ethereum, nos dando uma ideia de como seria uma implementação do Casper na Ethereum 2.0.


Interoperabilidade blockchain

A promessa de uma “internet de blockchains” é o que atrai muitos para os protocolos baseados no Tendermint.  Interoperabilidade é uma adição muito requisitada no setor das criptomoedas, pois significa que centenas de blockchains teriam compatibilidade entre si.
Atualmente, muito trabalho foi feito no Cosmos SDK, uma estrutura de código aberto que permite que qualquer pessoa crie uma blockchain pública ou privada para um aplicativo específico. Essas blockchains podem ser conectadas à rede Cosmos mais ampla, por meio do chamado Cosmos Hub, onde blockchains podem se comunicar umas com as outras.
Vários projetos populares foram desenvolvidos com o Cosmos SDK, como Binance Smart Chain (BSC)KAVABand ProtocolTerraIRISnet.


Considerações finais

Como mecanismo de blockchain, o Tendermint chamou a atenção de vários stakeholders do setor cripto, desde desenvolvedores a usuários finais. 

Se o software continuar ganhando força, ele pode muito bem servir de base para uma internet de blockchains. Como vimos, o lançamento de vários projetos com o Cosmos SDK já começaram a concretizar essa visão.

Tem dúvidas sobre o Tendermint, algoritmos de consenso ou tecnologia blockchain em geral? Acesse nossa plataforma de perguntas e respostas, Ask Academy, onde a comunidade Binance responde as suas perguntas.