Introdução

Um algoritmo de consenso é um mecanismo pelo qual usuários e programas podem coordenar suas ações em uma rede distribuída. Garante que todos os participantes da rede cheguem a um acordo sobre o estado atual dos dados, mesmo se alguns nós falharem. Em outras palavras, o consenso ajuda a manter a resiliência do sistema (para saber mais, confira Explicação das Missões dos Generais Bizantinos).

Numa estrutura centralizada, uma entidade tem poder sobre todo o sistema. Na maioria dos casos, estes órgãos têm o direito de fazer as alterações que considerem adequadas: não existe um sistema de governação complexo para chegar a um consenso entre vários administradores.

Num ambiente descentralizado, o mecanismo de funcionamento é completamente diferente. Por exemplo, se estamos falando de um banco de dados distribuído, como podemos obter o consentimento de todos os participantes da rede sobre quais dados podem ser adicionados à rede?

Alcançar o consenso num ambiente onde as partes não podem confiar umas nas outras foi um dos desenvolvimentos mais importantes da indústria, que abriu caminho para o surgimento das blockchains. Neste artigo, veremos a importância dos algoritmos de consenso para o bom funcionamento das criptomoedas e dos livros-razão distribuídos.


Algoritmos de consenso e criptomoeda

Nas redes de criptomoedas, os saldos dos usuários são registrados em um banco de dados – o blockchain. Cada usuário (nó) deve possuir uma cópia idêntica do banco de dados. Caso contrário, as informações irão variar, o que violará os princípios de confiabilidade e abertura de toda a rede de criptomoedas.

A criptografia de chave pública garante que partes não autorizadas não possam acessar suas moedas. No entanto, os usuários também precisam de uma forma confiável de verificar se os fundos foram gastos ou não.

Satoshi Nakamoto, o criador do Bitcoin, propôs o sistema Proof of Work para coordenar os usuários da rede. A seguir, veremos como o PoW funciona, mas primeiro identificaremos os recursos comuns da maioria dos algoritmos de consenso existentes.

O primeiro é o requisito para que os usuários que desejam adicionar blocos (vamos chamá-los de validadores) forneçam algum tipo de aposta em troca. Uma ação ou participação é um determinado valor que um validador deve apresentar como garantia de um trabalho honesto: se os validadores tentarem enganar o sistema, perderão a sua parte. A parcela pode ser poder computacional, criptomoeda ou reputação.

Você pode fazer uma pergunta lógica: por que eles arriscariam seus próprios recursos? O fato é que aqui existe um sistema especial de recompensas pelo trabalho. Normalmente, as recompensas são emitidas na forma de tokens de protocolo nativos, e os fundos para elas são retirados de taxas de usuário e de criptomoedas recém-criadas, ou às vezes de ambos.

Outra característica importante é a transparência para identificar atividades fraudulentas. A produção de blocos deve ser cara e a verificação do trabalho realizado deve ser barata e acessível aos usuários comuns. Assim, qualquer pessoa pode verificar e monitorar o trabalho dos validadores.


Tipos de algoritmos de consenso

Prova de Trabalho (PoW)

Prova de Trabalho (PoW) tornou-se o progenitor de todos os outros algoritmos de consenso no blockchain. Foi implementado pela primeira vez no Bitcoin, mas o conceito em si apareceu muito antes disso. Na Prova de Trabalho, os validadores (chamados mineradores) fazem hash dos dados que desejam adicionar até obterem uma solução adequada para um quebra-cabeça criptográfico.

Um hash é um conjunto aleatório de letras e números criado quando os dados são processados ​​por meio de uma função hash. Se você fizer hash dos mesmos dados novamente, obterá o mesmo resultado, mas se alterar pelo menos um valor, o hash se tornará completamente diferente.

Observando a saída, você não conseguirá saber quais informações foram passadas pela função. Por esse motivo, os hashes são ótimos para provar algo que você já sabia antes de um determinado momento. Você pode fornecer esse hash a alguém e, em seguida, fornecer as informações iniciais para que a pessoa possa executá-lo na função e ver se a saída corresponde.

Na Prova de Trabalho, o protocolo estabelece as condições para confirmação (validação) de um bloco. Por exemplo, você pode definir que apenas o bloco cujo hash começa com 00 será válido. A única maneira de um minerador criar um bloco válido é simplesmente iterar sobre os dados de entrada. Os validadores configuram o programa para produzir resultados diferentes cada vez que é feito o hash até que o hash correto seja gerado.

Em grandes blockchains, é extremamente difícil encontrar um hash adequado: você precisará de todo um armazém de equipamentos especiais para fazer hash de uma grande quantidade de dados (com unidades do tipo ASIC) para ser competitivo e poder criar um bloco válido.

Na mineração, a aposta é o custo desses equipamentos e a energia elétrica gasta na obra. O hardware do tipo ASIC (Circuito Integrado Específico de Aplicativo) é projetado para uma única tarefa, portanto, não pode ser usado para outra coisa senão a mineração de criptomoedas. A única maneira de recuperar o investimento inicial é através da mineração e recompensas pela adição bem-sucedida de um bloco.

Para a rede, basta ter certeza de que você realmente criou o bloco correto. Mesmo que seus ASICs tenham realizado trilhões de combinações para obter o hash correto, para verificar sua exatidão basta passar os dados pela função uma vez. Se seus dados produzirem um hash válido, o bloco será aceito como válido pela rede e você receberá uma recompensa. Caso contrário, a rede rejeitará sua solicitação para adicionar um bloco e você poderá dizer que perdeu tempo e eletricidade.


Prova de participação (PoS)

A Prova de Participação (PoS) apareceu nos primeiros dias do Bitcoin como uma alternativa à Prova de Trabalho. O sistema PoS não requer a participação de mineradores, o uso de equipamentos especiais ou o consumo massivo de energia elétrica - bastará um computador pessoal comum.

Além disso, você terá que dar sua própria contribuição. O PoS não utiliza um recurso externo (eletricidade ou equipamento), mas sim um recurso interno - criptomoeda. Os requisitos podem variar entre os protocolos, mas geralmente existe um montante mínimo de fundos que concede ao proprietário o direito de apostar.

Durante o período de staking, os fundos ficam bloqueados na carteira (não podem ser movimentados durante o staking). Na maioria dos casos, você concorda com outros validadores sobre quais transações irão para o próximo bloco. De certa forma, os validadores apostam no bloco que desejam adicionar ao blockchain, mas o direito de escolher o bloco permanece com o protocolo.

Os validadores cujo bloco for selecionado receberão uma parte das taxas de transação dependendo do tamanho da sua aposta. Quanto mais fundos na carteira forem bloqueados, maior será a recompensa. No entanto, nas tentativas de enganar o sistema e adicionar transações inválidas, os invasores correm o risco de perder parte (ou a totalidade) de sua parte. Assim, o PoS funciona de forma semelhante ao PoW: agir honestamente é mais lucrativo do que tentar enganar o sistema.

Este mecanismo não oferece recompensas aos validadores na forma de moedas recém-criadas. Com esse algoritmo, a moeda nativa do blockchain deve ser emitida de outra forma, como por meio de uma oferta inicial (ICO ou IEO), ou lançando o protocolo em PoW e depois mudando para PoS.

Até à data, o Proof of Stake na sua forma pura só foi implementado em algumas criptomoedas com uma rede relativamente pequena, por esta razão ainda é difícil dizer com certeza se pode tornar-se uma alternativa viável ao PoW. Embora esse algoritmo pareça teoricamente correto, na prática tudo acontece de maneira um pouco diferente.

Uma vez que o PoS é implantado em uma rede com uma grande quantidade de fundos, teorias de jogos e vários incentivos financeiros entram em ação no sistema. Se alguém quiser “hackear” um sistema PoS, será apenas com garantia de lucro, portanto só poderemos descobrir qual a probabilidade disso na rede.

Testes de PoS em larga escala ocorrerão muito em breve: como parte da atualização da rede Ethereum (também conhecida como Ethereum 2.0), o protocolo Casper será implementado.


Outros algoritmos de consenso

Prova de Trabalho e Prova de Participação são os algoritmos de consenso mais comentados, mas existem muitos outros que têm suas próprias vantagens e desvantagens. Recomendamos que você se familiarize com eles com mais detalhes nos seguintes artigos:

  • Prova de trabalho diferida explicada

  • Como funciona a Prova de Participação Alugada

  • Explicação da prova de autoridade

  • Explicação das evidências de combustão

  • Esclarecimento sobre prova de participação delegada

  • Algoritmo de consenso híbrido


Resumo

Os mecanismos de consenso são vitais para o funcionamento dos sistemas distribuídos. Muitos acreditam que a maior inovação do Bitcoin foi o uso da Prova de Trabalho, que permite aos usuários concordar sobre um conjunto comum de fatos.

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

De todos os algoritmos de consenso, a Prova de Trabalho ainda permanece dominante, pela simples razão de que ainda não foi proposta uma alternativa mais confiável e mais segura. No entanto, há uma enorme quantidade de pesquisa e desenvolvimento para substituir o PoW, e provavelmente veremos apenas mais disso.