A tolerância de falhas bizantina é um dos grandes pilares das criptomoedas. Ela esteve presente desde a criação do Bitcoin e figura em virtualmente todas as outras plataformas de Blockchain ou criptomoedas. A regra é: um bloco é considerado váido se mais de 51% dos componentes confia nele como verdadeiro. Isso é válido independente da forma de verificação: nas Blockchains que usam Proof-of-Work (Bitcoin, Monero), isso é decidido pelos mineradores; já naquelas que atingem consenso por Proof-of-Stake (Ripple, Cardano), isso é feito pelos validadores.
Quando Satoshi idealizou o Bitcoin, para garantir a segurança de um sistema decentralizado, cada bloco adicionado percorria cada nó (para verificar se o bloco não era uma cópia de um anterior e assim resolver o problema do gasto duplo) e era passado para o da frente fazer o mesmo. Dessa forma, todos os participantes do sistema (nós) podem ter uma cópia atualizada e verificar por si mesmo quando cada bloco novo era adicionado. Na prática, no entanto, o bloco enviado para verificação e posterior adição na Blockchain nem sempre é válido: um nó pode ter problemas técnicos em seu computador no ato ou simplesmente estar tentando incluir um bloco malicioso propositalmente. Para tanto, caso haja divergência em qual bloco será adicionado definitivamente à corrente, Satoshi implementou o consenso por Proof-of-Work, inventado por Cynthia Dwork em 1993 – esse consenso é atingido quando mais da metade (51%) dos mineradores concordam que ele é o bloco que será adicionado à corrente principal. Blocos alheios que atingirem menos que isso de consenso formam “forks”, correntes paralelas, e não fazem parte da Blockchain considerado oficial pelo Bitcoin. Para demonstrar que concordam com a validade de um bloco, os mineradores dedicam poder computacional para resolver problemas matemáticos (hash) ligados ao bloco. Com isso, gastam energia. Em troco, recebem um custo de transação associado à Blockchain do bloco que acabaram de adicionar. Isso garante a segurança porque, caso os mineradores decidam dedicar poder computacional a um bloco falso, simplesmente terão gasto energia e recursos físicos (e, atualmente, esse gasto é consideravelmente alto) em troca de nada (ou, em troca do custo de transação associado a um Blockchain paralelo e órfão, sem validade alguma). Normalmente, para decidir qual é o bloco “verdadeiro”, mineradores procuram o bloco que é a cabeça da corrente mais longa (e que mais teve poder computacional acumulado ao longo de sua história, e portanto, é mais provável de ser verídico) e então partem para dedicar sua CPU a esse. Ao completar a adição desse bloco, recebem um custo de transação em troca.
O Proof-of-Work também aceita novos blocos baseando-se na tolerância bizantina. A diferença, aqui, é que validadores “apostam” as moedas que já possuem em um bloco que consideram ser verdadeiro. A figura do minerador some: ao invés de dar, como garantia de boa-fé, seu poder computacional (gastando energia elétrica e recursos), os validadores “apostam” suas próprias moedas diretamente nos blocos que consideram válidos. Novamente, o bloco a ser adicionado é aquele com consenso de 51%, e os validadores que tiverem apostado nesse bloco receberão, além da moeda que colocaram como aposta de volta, uma taxa de transação.
Sendo assim, a única forma de “atacar” a Blockchain do Bitcoin seria atingir mais de 50% do poder computacional para um bloco malicioso, mais do que todo poder computacional dedicado por todos os mineradores ao bloco genuíno. Não é difícil perceber que, no estado de maturide da Blockchain, é virtualmente impossível competir com todo poder computacional acumulado de todos os mineradores que ativamente querem lucrar fazendo isso.
O nome do protocolo vem do problema dos generais bizantinos, que descreve um grupo de generais, cada um comandando uma parte do exército, cercando uma cidade. Nesse post, ele é explicado com mais detalhes.
Desde o advento das criptomoedas, incontáveis novas formas de atingir consenso foram surgindo. Nenhuma delas, no entanto, abandonou a tolerância bizantina como requisito. Até Vitalik Buterin, o controverso nome por trás do Ethereum, lançar mais um artigo dizendo que seria possível atingir consenso com apenas… 1% de concordância. Na realidade, antes disso, Buterin já havia anunciado que substituiria o clássico protocolo Proof-of-Work do Ethereum por um novo, chamado Casper, baseado em Proof-of-Stake e que conseguiria segurança com apenas 33% de consenso.
A prova matemática está no artigo publlicado por Buterin e é complexa, mas, nessa nova forma de verificação, a cada número pré-configurado de segundos, uma quantidade de nós age como “observadora independentes” (no caso, serão 512 nós, e estima-se que eles podem verificar e propagar a informação para frente em 8 segundos – uma velocidade que é especialmente alta devido à implementação da tecnologia do sharding). Isso significa que uma vez a cada 4.096 segundos, a Blockchain do Ethereum pode verificar se ele está sendo executado honestamente com praticamente 100% de certeza. Isso é útil para detectar automaticamente um ataque na rede e reagir de acordo, caso contrário.
Carlos Eduardo é um engenheiro frustrado que, ao decidir investir em criptomoedas e estudar o mercado, decidiu que gostava mais disso que do investimento em si. Já trabalhou como consultor para criptomoedas atualmente no top 100, dApps e publica periodicamente em revistas americanas e, aqui no Brasil, na BTCSoul. Acredita que a adoção geral de uma Smart Economy resolveria boa parte dos problemas do mundo.