Tolerância a Falhas Bizantinas Explicada

Desde o início do Bitcoin em 2008, como um sistema de caixa eletrônico peer-to-peer, muitas outras moedas criptográficas foram criadas, cada uma com um mecanismo particular. Mas uma coisa que quase todas as moedas criptográficas têm em comum é a cadeia de bloqueio, como elemento central de sua arquitetura.

Com poucas exceções, as cadeias de bloqueio são intencionalmente projetadas para serem descentralizadas, funcionando como um livro razão digital que é mantido por uma rede distribuída de nós de computador. Por este motivo, a tecnologia das cadeias de bloqueio permitiu a criação de sistemas econômicos sem confiança, onde transações financeiras transparentes e confiáveis poderiam ser executadas sem a necessidade de intermediários. As moedas criptográficas estão sendo adotadas como uma alternativa viável aos sistemas bancários e de pagamentos tradicionais, que dependem muito da confiança.

Apenas como a maioria dos sistemas computacionais distribuídos, os participantes de uma rede de moedas criptográficas precisam concordar regularmente sobre o estado atual da cadeia de bloqueio, e isso é o que chamamos de conquista de consenso. Entretanto, chegar a um consenso sobre redes distribuídas, de forma segura e eficiente, está longe de ser uma tarefa fácil.

Então, como uma rede distribuída de nós de computador pode chegar a um acordo sobre uma decisão, se alguns dos nós podem falhar ou agir de forma desonesta? Esta é a questão fundamental do problema dos chamados generais bizantinos, que deu origem ao conceito de tolerância a falhas bizantinas.

Qual é o problema dos generais bizantinos?

Em poucas palavras, o Problema dos Generais Bizantinos foi concebido em 1982 como um dilema lógico que ilustra como um grupo de generais bizantinos pode ter problemas de comunicação ao tentar chegar a um acordo sobre o seu próximo passo.

O dilema assume que cada general tem o seu próprio exército e que cada grupo está situado em locais diferentes em torno da cidade que pretende atacar. Os generais precisam concordar em atacar ou recuar. Não importa se eles atacam ou recuam, desde que todos os generais cheguem a um consenso, ou seja acordar uma decisão comum para executá-la em coordenação.

Por isso, podemos considerar os seguintes requisitos:

  • Cada general tem de decidir: ataque ou retirada (sim ou não);
  • Após a decisão ser tomada, não pode ser alterada;
  • Todos os generais têm de concordar com a mesma decisão e executá-la de forma sincronizada.

Os problemas de comunicação acima mencionados estão relacionados com o facto de um general só conseguir comunicar com outro através de mensagens, que são encaminhadas por um estafeta. Consequentemente, o desafio central do problema dos generais bizantinos é que as mensagens podem ser de alguma forma atrasadas, destruídas ou perdidas.

Além disso, mesmo que uma mensagem seja entregue com sucesso, um ou mais generais podem escolher (por qualquer razão) agir maliciosamente e enviar uma mensagem fraudulenta para confundir os outros generais, levando a uma falha total.

Se aplicarmos o dilema ao contexto de cadeias de bloqueio, cada general representa um nó de rede, e os nós precisam chegar a um consenso sobre o estado atual do sistema. Colocando de outra forma, a maioria dos participantes dentro de uma rede distribuída tem que concordar e executar a mesma ação para evitar falha total.

Por isso, a única maneira de se chegar a um consenso nestes tipos de sistema distribuído é ter pelo menos ⅔ ou nós de rede mais confiáveis e honestos. Isto significa que se a maioria da rede decidir agir maliciosamente, o sistema é susceptível a falhas e ataques (como o ataque de 51%).

Tolerância a Falhas Bizantinas (BFT)

Em poucas palavras, a tolerância a falhas Bizantinas (BFT) é propriedade de um sistema que é capaz de resistir à classe de falhas derivada do Problema dos Generais Bizantinos. Isto significa que um sistema BFT é capaz de continuar a operar mesmo que alguns dos nós falhem ou ajam maliciosamente.

Existe mais de uma solução possível para o Problema dos Generais Bizantinos e, portanto, múltiplas formas de construir um sistema BFT. Da mesma forma, existem diferentes abordagens para que uma cadeia de bloqueios alcance a tolerância a falhas Bizantinas e isto leva-nos aos chamados algoritmos de consenso.

Bockchain consensus algorithms

Podemos definir um algoritmo de consenso como o mecanismo através do qual uma rede de cadeias de bloqueios alcança o consenso. As implementações mais comuns são Proof of Work (PoW) e Proof of Stake (PoS). Mas tomemos o caso Bitcoin como exemplo.

Embora o protocolo Bitcoin prescreva as regras primárias do sistema, o algoritmo de consenso PoW é o que define como essas regras serão seguidas para se chegar a um consenso (por exemplo, durante a verificação e validação das transações).

Embora o conceito de Prova de Trabalho seja mais antigo que as moedas criptográficas, Satoshi Nakamoto desenvolveu uma versão modificada dele como um algoritmo que permitiu a criação do Bitcoin como um sistema BFT.

Notem que o algoritmo PoW não é 100% tolerante às falhas bizantinas, mas devido ao processo de mineração de custo intensivo e às técnicas criptográficas subjacentes, PoW provou ser uma das implementações mais seguras e confiáveis para redes em cadeia de bloqueios. Nesse sentido, o algoritmo de consenso Proof of Work, desenhado por Satoshi Nakamoto, é considerado por muitos como uma das soluções mais geniais para as falhas bizantinas.

Pensamentos finais

O problema dos generais bizantinos é um dilema intrigante que acabou por dar origem aos sistemas BFT, que estão a ser extensivamente aplicados em vários cenários. Além da indústria da cadeia de bloqueio, alguns casos de uso de sistemas BFT incluem as indústrias aeronáutica, espacial e nuclear.

No contexto da moeda criptográfica, ter uma comunicação em rede eficiente juntamente com um bom mecanismo de consenso é vital para qualquer ecossistema da cadeia de bloqueio. Assegurar esses sistemas é um esforço contínuo, e os algoritmos de consenso existentes ainda estão por superar algumas limitações (como a escalabilidade). No entanto, PoW e PoS são abordagens muito interessantes como sistemas BFT, e as aplicações potenciais estão certamente inspirando uma ampla inovação.

Deixe um comentário