Introdução
Desde que o Bitcoin foi introduzido pela primeira vez como um sistema de dinheiro eletrônico em 2008; muitas outras moedas foram criadas posteriormente, cada uma com seus próprios mecanismos únicos. No entanto, uma coisa que quase todas as moedas digitais têm em comum é o seu elemento arquitetónico básico, nomeadamente a tecnologia Blockchain.
Com algumas exceções, o blockchain foi projetado para ser descentralizado, funcionando como um livro-razão digital mantido por uma rede descentralizada de nós de computador. Devido a isto, a tecnologia blockchain permite a criação de um sistema económico sem confiança, onde a transparência e a fiabilidade das transacções financeiras podem ocorrer sem a necessidade de um intermediário. As moedas digitais serão adotadas como uma alternativa de pagamento que substituirá os bancos e os sistemas de pagamento tradicionais, que dependem fortemente da confiança.
Como acontece com a maioria dos sistemas de computação distribuídos, os participantes de uma rede de criptomoedas devem concordar periodicamente sobre o estado atual do blockchain, o que é o que chamamos de consenso. Entretanto, alcançar consenso em uma rede distribuída de forma honesta e segura é muito difícil.
Então, como uma rede distribuída de nós de computadores concorda com uma decisão? E se alguns nós falharem ou se comportarem de forma desonesta? Esta é uma questão fundamental chamada problema dos generais bizantinos, que deu origem a um conceito chamado Tolerância a Falhas Bizantinas.
É um problema bizantino comum?
Resumindo, o problema dos generais bizantinos nasceu em 1982 como um dilema lógico que ilustra como um grupo de generais bizantinos pode ter dificuldade de comunicação para concordar sobre seu próximo movimento.
Esse dilema pressupõe que cada general tenha seu próprio exército e cada grupo seja colocado em um local diferente dentro da cidade que deseja atacar. Os generais precisam concordar se atacam ou recuam. Não importa se eles atacam ou recuam, desde que os generais cheguem a um consenso, ou seja, concordem com uma decisão que será executada de acordo com as ordens.
Portanto, há várias coisas que devem ser determinadas:
Cada general deve decidir; se deve atacar ou recuar (sim ou não);
Uma vez tomada uma decisão, ela não pode ser alterada;
Cada general deve concordar com a mesma decisão e executá-la dentro das regras estabelecidas simultaneamente.
O problema de comunicação descrito acima está relacionado ao fato de que um general só pode se comunicar com outro por meio de mensagens, que são enviadas por mensageiros. O mesmo desafia o Problema dos Generais Bizantinos, de modo que a entrega da mensagem sofre um ligeiro atraso, podendo ser destruída ou perdida.
além disso, mesmo que a mensagem seja entregue com sucesso, um ou mais generais podem escolher (por qualquer motivo) agir maliciosamente e enviar uma resposta com a intenção de confundir os outros generais, o que pode resultar no fracasso do ataque.
Se aplicarmos esse dilema ao contexto do blockchain, cada general representa um nó de rede e esses nós precisam chegar a um consenso sobre o estado atual do sistema. Em outras palavras, a maioria dos participantes em uma rede distribuída deve concordar e executar a mesma ação para evitar falha total.
Portanto, a única maneira de alcançar consenso para esse tipo de sistema distribuído é ter ⅔ ou mais nós de rede honestos e confiáveis. Isso também pode significar que, se a maioria dos participantes da rede decidir agir de forma maliciosa, o sistema ficará altamente vulnerável a falhas e ataques (como um ataque de 51%).
Tolerância a falhas bizantinas (BFT)
Em outras palavras, a Tolerância a Falhas Bizantinas é a propriedade de um sistema que pode suportar falhas causadas pelo dilema do Problema dos Generais Bizantinos. Isso também pode significar que um sistema BFT pode continuar operando mesmo se alguns nós falharem ou apresentarem mau comportamento.
Existem várias soluções para o Problema dos Generais Bizantinos e também várias maneiras de construir um sistema BFT. além disso, existem diversas abordagens para que o blockchain alcance o BFT e isso nos levará ao algoritmo de consenso.
Algoritma Consenso Blockchain
Podemos definir um algoritmo de consenso como um mecanismo pelo qual uma rede blockchain atinge consenso. As implementações mais comuns são Prova de Trabalho (PoW) e Prova de Participação (PoS). mas vamos tomar o Bitcoin como exemplo.
O protocolo Bitcoin define as principais regras para o sistema Bitcoin, e o algoritmo de consenso PoW determina como essas regras são seguidas para alcançar o consenso (por exemplo, ao verificar e validar transações).
Embora o conceito de Prova de Trabalho seja mais antigo que o de outras criptomoedas, Satoshi Nakamoto desenvolveu uma versão modificada como um algoritmo que permite que o processo de criação do Bitcoin seja usado como um sistema BFT.
Vale ressaltar que o algoritmo PoW não é 100% tolerante à falha bizantina, mas devido ao processo de mineração muito custoso e às técnicas de criptografia subjacentes, o PoW provou ser a implementação de rede blockchain mais segura e confiável. Nesse sentido, o algoritmo de consenso de Prova de Trabalho, projetado por Satoshi Nakamoto, é considerado por muitos uma solução genial para a Falha Bizantina.
Conclusão
O Problema dos Generais Bizantinos é um dilema interessante que eventualmente deu origem aos sistemas BFT, que são amplamente aplicados em muitos cenários. Além da indústria de blockchain, os sistemas BFT também são usados em muitos outros setores, como aviação, espaço e energia nuclear.
No contexto de moedas digitais, ter uma comunicação de rede eficiente, juntamente com bons mecanismos de consenso, é essencial para qualquer ecossistema de blockchain. Proteger esses sistemas é um esforço contínuo, e os algoritmos de consenso atuais ainda precisam superar algumas das limitações que ainda enfrentam (como dimensionamento). No entanto, PoW e PoS não são abordagens menos interessantes que os sistemas BFT, e suas aplicações potenciais inspiram ampla inovação.
