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¬†Bitcoin e¬†Ethereum 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), KAVA, Band Protocol, Terra e IRISnet.


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.
Compartilhar publica√ß√Ķes
Registre uma conta
Coloque seus conhecimentos em pr√°tica. Abra uma conta na Binance hoje mesmo.