Introdução

Um algoritmo de consenso é um mecanismo que permite que usuários ou máquinas se coordenem em um ambiente distribuído. É necessário garantir que todos os agentes do sistema possam chegar a acordo sobre uma única fonte de verdade, mesmo que alguns agentes falhem. Em outras palavras, o sistema deve ser tolerante a falhas (veja também: Explicação da tolerância a falhas bizantinas).

Numa configuração centralizada, uma única entidade tem poder sobre o sistema. Na maioria dos casos, eles podem fazer as alterações que desejarem – não existe um sistema de governança complexo para chegar a um consenso entre muitos administradores. 

Mas em uma configuração descentralizada, é uma outra história. Digamos que estejamos trabalhando com um banco de dados distribuído - como chegamos a um acordo sobre quais entradas serão adicionadas?

Superar esse desafio em um ambiente onde estranhos não confiam uns nos outros foi talvez o desenvolvimento mais crucial que abriu caminho para blockchains. Neste artigo, veremos como os algoritmos de consenso são vitais para o funcionamento das criptomoedas e dos livros-razão distribuídos.

Algoritmos de consenso e criptomoeda

Nas criptomoedas, os saldos dos usuários são registrados em um banco de dados – o blockchain. É essencial que todos (ou mais precisamente, todos os nós) mantenham uma cópia idêntica do banco de dados. Caso contrário, você logo acabaria com informações conflitantes, minando todo o propósito da rede de criptomoedas.

A criptografia de chave pública garante que os usuários não possam gastar as moedas uns dos outros. Mas ainda é necessário que exista uma única fonte de verdade em que os participantes da rede confiem, para poder determinar se os fundos já foram gastos.

Satoshi Nakamoto, o criador do Bitcoin, propôs um sistema de Prova de Trabalho para coordenar os participantes. Veremos como o PoW funciona em breve – por enquanto, identificaremos algumas das características comuns dos muitos algoritmos de consenso existentes.

Em primeiro lugar, exigimos que os usuários que desejam adicionar blocos (vamos chamá-los de validadores) forneçam uma aposta. A aposta é algum tipo de valor que um validador deve apresentar, o que o desencoraja de agir desonestamente. Se trapacearem, perderão a aposta. Os exemplos incluem poder de computação, criptomoeda ou até reputação. 

Por que eles se preocupariam em arriscar seus próprios recursos? Bem, também há uma recompensa disponível. Geralmente consiste na criptomoeda nativa do protocolo e é composta por taxas pagas por outros usuários, unidades de criptomoeda recém-geradas ou ambos.

A última coisa de que precisamos é de transparência. Precisamos ser capazes de detectar quando alguém está trapaceando. Idealmente, deveria ser caro para eles produzir blocos, mas barato para qualquer um validá-los. Isso garante que os validadores sejam controlados pelos usuários regulares.

Tipos de algoritmos de consenso

Prova de Trabalho (PoW)

Prova de Trabalho (PoW) é o padrinho dos algoritmos de consenso blockchain. Foi implementado pela primeira vez no Bitcoin, mas o conceito real já existe há algum tempo. Na Prova de Trabalho, os validadores (chamados de mineradores) fazem hash dos dados que desejam adicionar até produzirem uma solução específica.

Um hash é uma sequência aparentemente aleatória de letras e números criada quando você executa dados por meio de uma função hash. Mas, se você executar os mesmos dados novamente, sempre terá a mesma saída. Mude até mesmo um detalhe e seu hash será completamente diferente.

Olhando para a saída, você não pode dizer quais informações foram inseridas na função. Eles são, portanto, úteis para provar que você conhecia um dado antes de um determinado momento. Você pode fornecer seu hash a alguém e, quando mais tarde revelar os dados, essa pessoa poderá executá-los na função para garantir que a saída seja a mesma.

Na Prova de Trabalho, o protocolo estabelece condições que tornam um bloco válido. Pode-se dizer, por exemplo, que apenas um bloco cujo hash comece com 00 será válido. A única maneira de o minerador criar um que corresponda a essa combinação é por meio de entradas de força bruta. Eles podem ajustar um parâmetro em seus dados para produzir um resultado diferente para cada estimativa até obter o hash correto. 

Com os principais blockchains, o padrão é incrivelmente alto. Para competir com outros mineradores, você precisaria de um armazém cheio de hardware de hashing especial (ASICs) para ter a chance de produzir um bloco válido.

Sua aposta, ao minerar, é o custo dessas máquinas e a eletricidade necessária para operá-las. Os ASICs são construídos para um propósito, portanto, não têm utilidade em aplicações fora da mineração de criptomoedas. Sua única maneira de recuperar seu investimento inicial é minerar, o que rende uma recompensa significativa se você adicionar com sucesso um novo bloco ao blockchain.

É trivial para a rede verificar se você realmente criou o bloco correto. Mesmo que você tenha tentado trilhões de combinações para obter o hash certo, eles só precisam executar seus dados por meio de uma função uma vez. Se seus dados produzirem um hash válido, ele será aceito e você receberá uma recompensa. Caso contrário, a rede irá rejeitá-lo e você perderá tempo e eletricidade à toa.

Prova de participação (PoS)

A Prova de Participação (PoS) foi proposta nos primeiros dias do Bitcoin como uma alternativa à Prova de Trabalho. Em um sistema PoS, não existe conceito de mineradores, hardware especializado ou consumo massivo de energia. Tudo que você precisa é de um PC normal.

Bem, nem todos. Você ainda precisa colocar um pouco de pele no jogo. No PoS, você não apresenta um recurso externo (como eletricidade ou hardware), mas um recurso interno – criptomoeda. As regras variam de acordo com cada protocolo, mas geralmente há uma quantia mínima de fundos que você deve manter para ser elegível para apostar.

A partir daí, você bloqueia seus fundos em uma carteira (eles não podem ser movidos enquanto você está apostando). Normalmente, você concordará com outros validadores sobre quais transações irão para o próximo bloco. De certa forma, você está apostando no bloco que será selecionado e o protocolo escolherá um.

Se o seu bloco for selecionado, você receberá uma proporção das taxas de transação, dependendo da sua aposta. Quanto mais fundos você tiver bloqueado, mais poderá ganhar. Mas se você tentar trapacear propondo transações inválidas, perderá uma parte (ou a totalidade) de sua aposta. Portanto, temos um mecanismo semelhante ao PoW – agir honestamente é mais lucrativo do que agir desonestamente.

Geralmente, não há moedas recém-criadas como parte da recompensa para validadores. A moeda nativa da blockchain deve, portanto, ser emitida de alguma outra forma. Isso pode ser feito por meio de uma distribuição inicial (ou seja, um ICO ou IEO) ou iniciando o protocolo com PoW antes de fazer a transição posterior para PoS.

Até o momento, a Prova de Participação pura só foi realmente implantada em criptomoedas menores. Portanto, não está claro se pode servir como uma alternativa viável ao PoW. Embora pareça teoricamente correto, será muito diferente na prática. 

Depois que o PoS é implementado em uma rede com grande valor, o sistema se torna um campo de jogo para a teoria dos jogos e incentivos financeiros. Qualquer pessoa com conhecimento para “hackear” um sistema PoS provavelmente só o faria se pudesse lucrar com isso – portanto, a única maneira de descobrir se isso é viável é em uma rede ativa.

Em breve veremos o PoS testado em larga escala – Casper será implementado como parte de uma série de atualizações na rede Ethereum (conhecida coletivamente como Ethereum 2.0).

Outros algoritmos de consenso

Prova de Trabalho e Prova de Participação são os algoritmos de consenso mais discutidos. Mas há uma grande variedade de outros, todos com suas vantagens e desvantagens. Confira os seguintes artigos:

  • Prova de trabalho atrasada explicada

  • Explicação do consenso da prova de participação alugada

  • Prova de autoridade explicada

  • Prova de queimadura explicada

  • Prova de participação delegada explicada

  • Consenso híbrido PoW/PoS explicado

Considerações finais

Os mecanismos para alcançar consenso são vitais para o funcionamento dos sistemas distribuídos. Muitos acreditam que a maior inovação no Bitcoin foi o uso da Prova de Trabalho para permitir que os usuários concordassem sobre um conjunto compartilhado de fatos.

Os algoritmos de consenso hoje sustentam não apenas os sistemas monetários digitais, mas também os blockchains que permitem aos desenvolvedores executar código em uma rede distribuída. Eles são agora a base da tecnologia blockchain e são essenciais para a viabilidade a longo prazo das várias redes existentes.

De todos os algoritmos de consenso, o Proof of Work continua sendo a oferta dominante. Uma alternativa mais confiável e segura ainda não foi proposta. Dito isto, há uma enorme quantidade de pesquisa e desenvolvimento em substitutos para PoW, e é provável que vejamos mais deles surgindo nos próximos anos.