Introdução

Um algoritmo de consenso é um mecanismo que permite que usuários ou máquinas coordenem relacionamentos em um ambiente distribuído. Requer garantir que todos os agentes do sistema possam, em última instância, concordar sobre uma única fonte de verdade (mesmo que alguns agentes discordem). Em outras palavras, o sistema deve ter boa tolerância a falhas (veja também "Explicação da tolerância a falhas bizantinas").

Num ambiente centralizado, uma única entidade tem controle sobre todo o sistema. Na maioria dos casos, estas entidades são muitas vezes capazes de alterar o sistema à vontade porque não conseguem criar um sistema de governação bem definido que permita que muitos administradores cheguem a um consenso.​

Mas se for num ambiente descentralizado, a história é completamente diferente. Supondo que estamos usando um banco de dados distribuído, como concordamos sobre quais entradas adicionar?

Este ambiente está cheio de estranhos que não confiam uns nos outros. Como superar este desafio pode ser a chave para resolver problemas de desenvolvimento e abrir caminho para o blockchain. Neste artigo, veremos a importância dos algoritmos de consenso para a execução de criptomoedas e livros-razão distribuídos.


Algoritmos de consenso e criptomoedas

Em um ambiente de criptomoeda, os saldos dos usuários são registrados no banco de dados blockchain. É fundamental que cada usuário (mais precisamente, cada nó) mantenha a mesma cópia do banco de dados. Não fazer isso acabará por levar a problemas de conflito de informações que prejudicam todo o propósito da rede de criptomoedas.

A criptografia de chave pública garante que os usuários não possam gastar os tokens de outros usuários. Mas deve haver uma única fonte de verdade em que os participantes da rede possam confiar para saber se os fundos foram gastos.

O criador do Bitcoin, Satoshi Nakamoto, propôs um sistema de prova de trabalho como forma de coordenar os participantes. Entraremos em mais detalhes sobre como funciona a Prova de Trabalho posteriormente. Agora, vamos primeiro entender as características comuns dos vários algoritmos de consenso existentes.

Primeiro, precisamos do staking de usuários que desejam adicionar blocos (também conhecidos como validadores). Os validadores devem apostar capital de algum valor para evitar que cometam fraudes. Depois de trapacearem, eles perderão os direitos apostados. Por exemplo, perder poder computacional e criptomoeda, ou até mesmo perder reputação.​

Então, por que arriscariam seus próprios recursos? Porque também existe um mecanismo de recompensa nesse processo. As recompensas são normalmente a criptomoeda nativa do protocolo. As recompensas também podem ser taxas pagas por outros usuários, unidades de criptomoeda recém-geradas ou ambas.

Por último, precisamos também de garantir a transparência. Precisamos ter a capacidade de detectar trapaças em tempo hábil. Em teoria, produzir blocos custa muito caro, mas verificar sua autenticidade é bastante barato. Através deste mecanismo, os usuários comuns podem facilmente restringir os validadores.


Tipo de algoritmo de consenso

Prova de Trabalho (PoW)

Prova de Trabalho (PoW) é considerada o padrinho dos algoritmos de consenso blockchain. Este mecanismo foi usado pela primeira vez no espaço Bitcoin, mas o conceito real já existe há muito tempo. Na prova de trabalho, os validadores (chamados mineradores) fazem hash dos dados que desejam adicionar até que uma solução específica seja produzida.

Um hash é uma sequência aparentemente aleatória de letras e números criada pela execução de dados por meio de uma função hash. Executar os mesmos dados repetidamente sempre produzirá o mesmo resultado. No entanto, se você alterar mesmo um pequeno detalhe, o valor do hash resultante será completamente diferente.

Não há como inferir quais informações foram colocadas na função apenas a partir da saída. Portanto, esse método é eficaz para provar que você conhecia um determinado dado antes de um momento específico. Você pode informar o hash a alguém com antecedência e, quando revelar os dados posteriormente, essa pessoa pode simplesmente executar a função e ver se a saída é a mesma.

Na prova de trabalho, o protocolo especifica as condições que tornam um bloco válido. Por exemplo, pode estipular que apenas hashes que começam com 00 são blocos válidos. A única maneira de um minerador criar um bloco que corresponda a essa combinação é forçando a entrada com força bruta. Eles ajustam os parâmetros dos dados e testam cada estimativa com resultados diferentes até obterem o valor de hash correto.​

Para os principais blockchains, o padrão tende a ser bastante alto. Para competir com outros mineradores, é necessário preparar uma grande quantidade de hardware de hashing especial (circuitos integrados específicos de aplicação) para criar as condições para a produção de blocos válidos.

Durante o processo de mineração, a aposta que você aposta inclui o custo de aquisição da máquina e a eletricidade necessária para operar a máquina. Os circuitos integrados de aplicação específica (ASICs) são construídos especificamente para mineração de criptomoedas e são inúteis para outras aplicações. A única maneira de recuperar seu investimento inicial é por meio da mineração e, se você adicionar novos blocos ao blockchain com sucesso, poderá colher recompensas consideráveis.

A rede pode verificar facilmente a autenticidade dos blocos que você cria. Talvez seja necessário tentar trilhões de combinações para acertar o valor do hash, mas a validação dos dados requer apenas um único cálculo da função hash. Se seus dados produzirem um hash válido, a rede irá aceitá-lo e você será recompensado por isso. Caso contrário, a rede rejeitará o valor e todo o seu tempo e energia serão desperdiçados.


Prova de participação (PoS)

Nos primeiros dias do Bitcoin, a Prova de Participação (PoS) era vista como uma alternativa à Prova de Trabalho. Em um sistema de prova de participação, não existe o conceito de mineradores, hardware especializado ou consumo massivo de energia. Tudo que você precisa é de um computador comum.

No entanto, nem sempre é esse o caso. Você também precisa de algum capital. Num mecanismo de prova de participação, embora não seja necessário consumir recursos externos (como eletricidade ou hardware), devem ser fornecidos recursos internos, nomeadamente criptomoedas. As regras de cada protocolo são diferentes, mas geralmente existe um valor mínimo de investimento que você deve cumprir para ser elegível para apostar.

Feito isso, os fundos da sua carteira serão bloqueados (os fundos não podem ser movimentados durante o staking). De modo geral, você precisa concordar com outros validadores sobre quais transações irão para o próximo bloco. De certa forma, isso equivale a apostar em qual bloco será selecionado, e o protocolo escolherá apenas um dos blocos.

Se o seu bloco for selecionado pelo protocolo, você receberá taxas de transação proporcionais ao valor da aposta apostada. Quanto mais fundos você bloquear, maiores serão seus retornos. Se você tentar trapacear e propor uma transação inválida, perderá parte (ou toda) sua aposta. Portanto, operamos um mecanismo semelhante à prova de aposta, em que a honestidade e a confiabilidade podem trazer mais benefícios do que a trapaça.

De modo geral, as recompensas do validador não serão emitidas na forma de tokens recém-criados. Portanto, a moeda nativa do blockchain deve ser emitida de alguma outra forma. Isto poderia ser através de uma oferta inicial (ou seja, ICO ou IEO), ou lançando o protocolo com Prova de Trabalho e depois fazendo a transição para Prova de Participação.

Até agora, a pura prova de participação só foi implementada em criptomoedas menores. Portanto, não está claro se pode servir como uma alternativa viável à prova de trabalho. Embora funcione na teoria, na prática não é nada disso.​

Uma vez implementada a prova de aposta em uma rede com grande valor, todo o sistema se torna uma arena repleta de teoria dos jogos e incentivos econômicos. Enquanto houver lucro, esses hackers qualificados irão “hackear” o sistema de prova de participação. Portanto, a única maneira de determinar se é viável é aplicá-lo a uma rede online.

Em breve, o Proof of Stake será testado em escala, e a rede Ethereum está prestes a implementar uma série de atualizações (conhecidas coletivamente como Ethereum 2.0), incluindo a implementação do Casper.


Outros algoritmos de consenso

Prova de trabalho e prova de aposta são atualmente os algoritmos de consenso mais discutidos. Mas existem muitos outros algoritmos além deste, e cada um tem seus prós e contras. Por favor, leia o seguinte artigo para obter detalhes:

  • "Explicação detalhada da prova de carga de trabalho atrasada"

  • “Explicação detalhada do consenso sobre comprovação de juros de arrendamento”

  • "Explicação detalhada da prova oficial"

  • "Explicação detalhada do certificado de destruição"

  • "Explicação detalhada da prova de patrimônio delegado"

  • "Explicação detalhada da prova híbrida de trabalho/prova de consenso de participação"


Resumir

Os mecanismos para chegar a um consenso são críticos para o funcionamento dos sistemas distribuídos. Muitas pessoas acreditam que a maior inovação do Bitcoin é o uso de prova de trabalho, um mecanismo através do qual os usuários podem muitas vezes concordar sobre um conjunto de fatos compartilhados.

Hoje, os algoritmos de consenso tornaram-se a base dos sistemas de moeda digital e blockchains, permitindo aos desenvolvedores executar código em redes distribuídas. Os algoritmos de consenso ocupam uma posição fundamental na tecnologia blockchain e desempenham um papel vital na viabilidade a longo prazo de várias redes existentes.

Entre todos os algoritmos de consenso, a prova de trabalho domina. Ninguém ainda propôs uma solução alternativa mais confiável e segura. Dito isto, os profissionais ainda estão desenvolvendo uma série de produtos para substituir a prova de trabalho, e podemos esperar o surgimento de mais soluções alternativas nos próximos anos.