Tendermint Explained – Trazendo o PoS baseado em BFT para o domínio público Blockchain

Iniciantes

Introdução

Eu posso me sentir como uma sobrecarga de informação para os recém-iniciados para obter um curso intensivo sobre o Tendermint, a Rede Cosmos, e onde os dois se cruzam. Nós escrevemos sobre a pilha Cosmos / Tendermint em um nível alto, mas neste post, vamos nos aprofundar um pouco mais nas camadas de consenso e de rede da Tendermint Core. O design da referida pilha de software é composto por uma camada de aplicação (Cosmos-SDK), uma camada de consenso e uma camada de rede (Tendermint Core). Tendermint combina consenso com um protocolo de fofocas p2p de uma maneira completamente nova. Usar uma arquitetura monolítica normalmente é uma prática ruim na ciência da computação, pois isso dificulta a reutilização de componentes do código, e tentativas de fazer isso resultam em procedimentos de manutenção complexos para garfos da base de código .

De cima para baixo: Camada de Aplicação (Cosmos-SDK), Interface de Blockchain de Aplicação (ABCI), Pilha de Núcleo de Tendermint (algoritmo de consenso + protocolo de rede p2p).

Primeiras coisas primeiro: semântica. O Tendermint Core, o software, é usado como sinônimo de Tendermint, a organização que está implementando o Tendermint Core e a pilha de software Cosmos Network. Tecnicamente, o Tendermint Core é um protocolo de baixo nível que na verdade é composto de dois protocolos em um: um algoritmo de consenso e um protocolo de rede peer-to-peer. Jae Kwon e Ethan Buchman, inspirados pelo objetivo do design atrás de Raft e PBFT, especificaram o Tendermint como um algoritmo fácil de entender, amigável ao desenvolvedor, enquanto fazia engenharia de sistemas complexos e algorítmicos.

A nova geração de algoritmos de consenso de teste de estacas (PoS) da BFT extrai elementos da adaptação de BFT da Tendermint para o domínio público de blockchain. Esta adaptação é o que nos referimos como Bender Tendermint, e é mais geralmente classificada como Prova de Estaca baseada em BFT (em oposição a Prova de Estaca baseada em cadeia). Para um curso intensivo de PoS baseado em cadeia versus baseado em BFT, consulte: Casper vs. Tendermint .

Agora que isso está fora do caminho, vamos morder a carne da introdução: O que é o Tendermint e como funciona em alto nível?

Pilha de BFT de Mutilizante

B itcoin é o ancestral intelectual de todos os sistemas criptográficos baseados em blockchain que conhecemos e amamos hoje. O protocolo Tendermint compartilha comunalidade com o Bitcoin na medida em que os dois protocolos registram tudo em um blockchain, mas cada um deles fornece suas soluções exclusivas para o Problema do General Bizantino, também chamado de consenso, ou problema de “concordância”. A linhagem de Tendermint está estreitamente ligada ao mundo da computação distribuída e literatura de Tolerância a Falhas Bizantinas (BFT) na academia (por exemplo, ver a tese de Ethan Buchman). Enquanto na história do Gênesis do Bitcoin, após as muitas tentativas fracassadas de sistemas de dinheiro eletrônico anteriores – com a exceção do PayPal – o Bitcoin subiu acima das cinzas como um sistema monetário descentralizado resistente à censura.

O protocolo Bitcoin otimiza criticamente a resistência à censura, devido à sua função principal como sistema de pagamento. O Tendermint, por outro lado, otimiza para aplicações distribuídas e processamento de dados tolerantes a falhas bizantinas gerais em meio a uma rede de longa distância (WAN), por exemplo, centenas de nós (alta contagem de nós). Essa distinção é matizada e merece uma investigação mais profunda.

Por contexto, no mundo acadêmico, havia muito pouca pesquisa em sistemas BFT para WAN e apenas para um pequeno número de nós – 4 a 7 no máximo – e sempre para um único domínio administrativo. Quanto aos sistemas BFT para WAN com um grande número de nós e para múltiplos domínios administrativos, nenhum corpo significativo de trabalho foi amplamente adotado na prática.

Antes de 2009, quando o Bitcoin introduziu uma tecnologia de mudança de paradigma – o conceito de blockchain – para o mundo, o problema de consenso em uma configuração de WAN para altas contagens de nós ficou em grande parte sem resposta. Apesar de resolver o problema dos Dois Generais, no entanto, o Bitcoin não era realmente um algoritmo para resolver o consenso, no sentido puramente teórico na área de pesquisa de sistemas distribuídos. O avanço do trabalho no domínio da BFT estava longe de ser feito.

Em 2014, Jae Kwon, oriundo de uma área de ciência da computação e engenharia de sistemas, imaginou um protocolo puramente baseado no BFT que seria dimensionado para centenas de nós no cenário sem permissão com o PoS (Proof-of-Stake) como segurança subjacente. mecanismo. E assim, Tendermint foi criado. Consequentemente, esse modelo de sistema projetado com o PoS como o principal mecanismo de segurança para um grande número de nós de validação em uma WAN acabou se tornando um esforço de engenharia significativamente complexo, levando quase quatro anos para ser implementado na configuração de blockchain público. Esse cenário é Cosmos, previsto para lançar este verão em 2018.

O modelo

O Tendermint é modelado como um protocolo determinístico, vive sob sincronia parcial, que atinge o rendimento dentro dos limites da latência da rede e dos próprios processos individuais. Veja onde o roxo está delineado no triângulo de Vlad Zamfir ? Tendermint cai em algum lugar ao longo do canto inferior esquerdo.

Triângulo de Tradeoff de Vlad Zamfir para protocolos de consenso tolerantes a falhas

Impossibilidade do FLP

Teorema : “… mostramos o resultado surpreendente de que nenhum protocolo de consenso assíncrono pode tolerar até mesmo um único processo de morte não anunciado. Como em, o consenso não pode ser resolvido em redes puramente assíncronas com um protocolo determinístico se pelo menos um único processo puder falhar.

Definido por Dwork, Lynch e Stockmeyer em seu artigo Consenso na presença de sincronia parcial : “ A sincronia parcial está entre os casos de um sistema síncrono e um sistema assíncrono. Em um sistema síncrono, existe um limite superior fixo conhecido… no tempo necessário para que uma mensagem seja enviada de um processador para outro e um limite superior fixo conhecido… nas velocidades relativas de diferentes processadores. Em um sistema assíncrono não existem limites superiores fixos … existem … O problema é projetar protocolos que funcionem corretamente no sistema parcialmente síncrono, independentemente dos valores reais dos limites … Foi tentando resolver esse problema que o Tendermint nasceu. Tendermint é, portanto, uma versão modificada do protocolo DLS acima mencionado.

Algoritmo de consenso

Comunicação Parcialmente Síncrona, Síncrona e Assíncrona

Vamos explorar o caso síncrono, usando um protocolo bem conhecido para referência: o protocolo Bitcoin. Em Bitcoin, existe um “limite superior fixo conhecido”. Isso está se referindo ao tempo de bloqueio de 10 minutos. Para que a rede Bitcoin avance com a criação de blocos, o protocolo impõe artificialmente uma suposição de tempo, dando a toda a rede de nós 10 minutos inteiros para escutar, coletar, validar e fofocar transações que se propagam através de sua rede de pares.

Ethereum é outro exemplo de um protocolo que faz suposições de sincronia com tempos de bloqueio de 15 segundos em média. Enquanto 15 segundos é muito mais rápido do que 10 minutos – dando à rede Ethereum o benefício de maior rendimento – isso acontece às custas de seus mineradores, pois isso resulta em mais blocos órfãos; há menos tempo para as transações se propagarem pela rede.

Tendermint pertence a uma classe de protocolos que resolvem o consenso sob comunicação parcialmente síncrona, em que um modelo de sistema parcialmente síncrono alterna entre períodos de sincronia e assincronia; às vezes nos referimos a esse modelo como "fracamente síncrono". O que isto significa é que o Tendermint se baseia em suposições de tempo para progredir. No entanto, ao contrário dos sistemas síncronos, a velocidade do progresso não depende dos parâmetros do sistema, mas depende da velocidade real da rede.

Vida e Rescisão

Definido: “ A propriedade de terminação é apenas que cada processador correto deve eventualmente tomar uma decisão. "

Os algoritmos do consenso de Nakamoto, Peercoin, NXT, Branca de Neve, Ouroboros, etc., no modelo do sistema síncrono, baseiam-se em pressupostos de sincronia não apenas para a finalização do processo, mas também para a segurança. Esses algoritmos projetados para sistemas síncronos sempre têm limites fixos conhecidos e mantidos sempre. E no caso de os limites de sincronia não se sustentarem, o consenso é quebrado e a cadeia irá se separar. Portanto, o tempo de bloqueio de 10 minutos do Bitcoin, por exemplo, é devidamente conservador, a fim de preservar a segurança.

Em contrapartida, o Tendermint nunca se bifurca na presença de assincronia se menos de 1/3 dos processos estiverem defeituosos. Esta propriedade é o que faz do Tendermint um protocolo PoS baseado no BFT, no qual ele prefere estritamente a vitalidade da segurança (veja: Teorema do CAP ). Como resultado, uma blockchain de Tendermint será interrompida momentaneamente até que uma supermaioria, ou seja, mais de 2/3 do conjunto de validadores chegue ao consenso.

Agora, existem protocolos de consenso que funcionam em redes puramente assíncronas, mas, aderindo ao FLP Impossibilidade Teorema, eles não podem ser simultaneamente determinista.

Protocolo determinista versus não determinista

Protocolos não determinísticos que resolvem o consenso sob o caso puramente assíncrono dependem potencialmente de oráculos aleatórios e geralmente incorrem em alta sobrecarga de complexidade de mensagem, pois dependem de transmissão confiável para toda a comunicação. No ambiente assíncrono, o custo indireto de uma única transmissão confiável é equivalente a uma round de Tendermint . Protocolos como o HoneyBadger BFT se enquadram nessa classe de protocolos não determinísticos sob assincronia. Normalmente, eles exigem três instâncias de transmissão confiável para uma única rodada de comunicação.

Menta é um protocolo totalmente determinista; não há aleatoriedade no protocolo. Os líderes são eleitos deterministicamente, através de uma função matemática definida na implementação. Como tal, somos capazes de provar matematicamente que o sistema está ativo e que o protocolo tem a garantia de tomar decisões.

Eleição Líder Rotativa

A erva-de-lima gira através do conjunto do validador, ou seja, proponentes de bloco, em uma forma ponderada de round-robin. Quanto mais estaca, ou seja, o poder de voto, que um validador delegou a eles, maior o seu peso e proporcionalmente mais vezes eles serão eleitos como líderes. Para ilustrar, se um validador tiver a mesma quantidade de poder de voto que outro validador, ambos serão eleitos pelo protocolo uma quantidade igual de vezes.

A explicação simplificada de como o algoritmo funciona é assim:

  1. O peso do validador está estabelecido
  2. Validador é eleito, sua vez de propor um bloco
  3. O peso é recalculado, diminui um pouco após a conclusão da rodada
  4. À medida que cada rodada avança, o peso aumenta de forma incremental em proporção ao poder de voto
  5. O validador é selecionado novamente

Como o protocolo seleciona os proponentes de bloco deterministicamente , dado que você conhece o conjunto de validadores e o poder de voto de cada validador, você poderia calcular exatamente quem seriam os próximos proponentes de bloco nas rodadas x , x + 1 , …, x + n . Por causa disso, os críticos argumentam que o Tendermint não é suficientemente descentralizado. Quando você puder saber de maneira previsível quem serão os líderes, um invasor poderá segmentar esses líderes e lançar um ataque DDoS contra eles e impedir potencialmente que a cadeia avance. Nós atenuamos esse vetor de ataque implementando algo chamado Sentry Architecture em Tendermint.

Protocolo de rede P2P

Arquitetura do Nó Sentinela

Um validador configurado corretamente nunca exporá o endereço IP ou aceitará conexões de entrada para seu nó validador. Um validador bem configurado e bem defendido gerará ativamente nós de sentinela , que atuam como proxies de nó completos para a rede, para ofuscar a localização real de seu nó validador. Endereços IP na camada p2p nunca são expostos.

Dito isso, aproveitar a Sentry Node Architecture é opt-in; o ônus está no validador para manter um nó completo tolerante a falhas. É aí que fazemos suposições extra-protocolares baseadas em incentivos criptoponômicos. A suposição é que um validador desejará adotar todas as medidas de precaução para manter a tolerância a falhas, permanecer disponível e, em última análise, desempenhar seu papel para manter a rede ativa. Porque, se não o fizerem, serão expulsos do validador por ficarem offline por um determinado período de tempo.

Reator Peer Exchange (PEX)

Tendermint toma emprestado do protocolo de descoberta de pares do Bitcoin. Mais especificamente, o Tendermint adota o AddressBook p2p do btcd , a implementação alternativa do Bitcoin no Go. O PEX permite a descoberta dinâmica de pares por padrão.

Manteiga na prática

Depois de tudo dito e feito, além do sofisticado design algorítmico e do jargão acadêmico, para que é realmente útil o Tendermint?

A má notícia é que as pessoas comuns não acham o Tendermint útil. A boa notícia é que os desenvolvedores de aplicativos podem preencher a lacuna entre o protocolo e o usuário final. O Tendermint foi projetado para ser personalizável e flexível o suficiente para se adequar a qualquer configuração, seja pública ou corporativa, onde um protocolo de consenso é desejado.

O Tendermint é ideal para um desenvolvedor que deseja implementar um aplicativo em seu próprio blockchain. Ele vem pré-montado, portanto, se o desenvolvedor optar por um mecanismo de consenso puro baseado em BFT, para poder usar seu dAppzone , ele poderá facilmente fazê-lo.

A parte divertida é quando os usuários implementam sua lógica de negócios de alto nível com o Cosmos-SDK. Para fazer interface com as camadas de consenso / rede de Tendermint é então feito através de um protocolo de soquete Tendermint que chamamos de Application Blockchain Interface, ou o ABCI .

Pesquisa em andamento

Atualmente, estamos investigando a assinatura do BLS, o que poderia levar a uma redução no tamanho dos cabeçalhos dos blocos do Tendermint de 3.2 KB (com ~ 100 validadores) para 64 bytes.

Também temos um design para randomizar a função de seleção do proponente round-robin de uma maneira segura para tornar o DDoS mais próximo do proponente ainda mais difícil, mas a etapa inicial é a Arquitetura do Nó Sentinela.

Cosmos Academy Inaugural Meetup!

Estamos realizando um próximo encontro em Berkeley, Califórnia, com Zarko Milosevic, pesquisador sênior de sistemas distribuídos da BFT, que dará uma sessão de perguntas e respostas sobre tudo que é da Tendermint. Transmitiremos esse encontro e publicaremos a transmissão no canal do YouTube da Cosmos Network .

  • Registre-se para o primeiro Meetup de Cosmos Academy no dia 26 de maio: aqui .