Introdução
Um algoritmo de consenso é um mecanismo que permite que usuários ou máquinas se coordenem em um ambiente distribuído. Garante que todos os agentes do sistema concordem com uma única fonte de verdade, mesmo que alguns agentes falhem. Ou seja, o sistema deve ser tolerante a falhas (veja também: Explicação da tolerância a falhas bizantinas).
Num sistema centralizado, uma única entidade alimenta e controla a rede. Na maioria dos casos, a entidade pode fazer as alterações que considerar adequadas – não existe um sistema de governação complexo para que vários diretores cheguem a um consenso.
Num sistema descentralizado, a história é completamente diferente. Digamos que estamos trabalhando com um banco de dados distribuído – como concordamos sobre quais dados adicionar?
Superar este desafio num ambiente onde os participantes não confiam uns nos outros foi talvez o desenvolvimento mais crucial que abriu o caminho para as blockchains. Neste artigo, veremos porque os algoritmos de consenso são essenciais para o funcionamento das criptomoedas e dos livros-razão distribuídos.
Algoritmos de consenso e criptomoedas
Nas criptomoedas, os saldos dos usuários são registrados em um banco de dados – o blockchain. É essencial que todos (cada nó, para ser mais preciso) mantenham uma cópia idêntica do banco de dados. Caso contrário, poderão surgir informações conflitantes, prejudicando toda a rede.
A criptografia de chave pública garante que os usuários não possam gastar as moedas uns dos outros. No entanto, ainda deve existir uma única fonte de verdade em que os participantes da rede se baseiem para determinar se os fundos já foram gastos.
Satoshi Nakamoto, o criador do Bitcoin, propôs o sistema Proof of Work para coordenar os participantes. Veremos em breve como o PoW funciona – por enquanto vamos identificar algumas características comuns entre muitos algoritmos de consenso existentes.
Primeiro, pedimos aos usuários que desejam adicionar blocos (vamos chamá-los de validadores) que forneçam uma aposta. O staking é um valor que um validador deve prometer para impedi-lo de agir de forma maliciosa. Se trapacearem, perderão a aposta. Por exemplo, poder computacional, criptomoedas ou sua reputação.
Por que eles arriscariam seus próprios recursos? Simplesmente porque há uma recompensa em jogo. Geralmente é uma criptomoeda nativa do protocolo que se baseia em taxas pagas pelos usuários, em criptomoedas recém-criadas ou em ambas.
A última coisa de que precisamos é de transparência. Precisamos ser capazes de saber quando alguém está trapaceando. Idealmente, deveria ser caro para eles produzir blocos, mas barato para qualquer um validá-los. Isto garante que os validadores também sejam controlados por usuários comuns.
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 com Bitcoin, embora o conceito já exista há muito tempo. Na Prova de Trabalho, os validadores (chamados mineradores) fazem hash dos dados que desejam adicionar até produzirem uma solução específica.
Um hash é uma sequência aleatória de letras e números criada ao executar uma função hash. Mas se os dados de entrada forem iguais, os resultados de saída serão os mesmos. No entanto, a menor alteração irá gerar um hash completamente diferente.
Os dados de saída não nos permitem determinar os dados de entrada. Esta é, portanto, uma função muito eficaz para provar que você conhece um dado há um determinado período de tempo. Você pode fornecer o hash a alguém e, ao revelar os dados, essa pessoa pode executá-los na função para garantir que a saída seja a mesma.
Na Prova de Trabalho, o protocolo define as condições que tornam um bloco válido. Isto poderia, por exemplo, dizer que apenas um bloco cujo hash começa com 00 é válido. A única maneira de um mineiro criar um bloco válido é através da força bruta. Para produzir um resultado diferente até que o resultado correto seja encontrado, os mineradores podem modificar um parâmetro em seus dados.
Para os maiores blockchains, o nível é muito, muito alto. Para competir com outros mineradores, você precisa ter um armazém cheio de ASICs, hardware projetado especificamente para aumentar suas chances de produzir um bloco válido.
A sua participação, na mineração, corresponde aos custos dessas máquinas e à energia elétrica necessária para o seu funcionamento. Os ASICs são projetados com o único propósito de mineração, portanto, não têm uso fora da mineração de criptomoedas. A única maneira de recuperar seu investimento inicial é minerar e ganhar recompensas adicionando com sucesso um novo bloco ao blockchain.
É muito fácil para a rede verificar se você criou o bloco correto. Uma única execução com a função permite verificar os resultados de seus inúmeros testes. Se seus dados produzirem um hash válido, ele será aceito e você receberá uma recompensa. Caso contrário, a rede irá invalidá-la e você terá perdido 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. No PoS não existem os conceitos de mineradores, hardware especializado e consumo massivo de energia. Tudo que você precisa é de um computador.
E uma coisinha... Você tem que colocar uma moeda na máquina. No PoS, em vez de utilizar um recurso externo (máquinas e eletricidade), você utilizará um recurso interno (uma criptomoeda). As regras variam dependendo do protocolo, mas geralmente você precisará ter um valor mínimo para participar do staking.
Você precisará então bloquear seus fundos em uma carteira (eles não podem ser movidos quando você aposta). Geralmente você concordará com os outros validadores sobre quais transações passarão para o próximo bloco. De certa forma, você aposta em qual bloco será selecionado e o protocolo decide o resto.
Se o seu bloco for selecionado, você receberá uma parte das taxas de transação, proporcional à sua aposta. Quanto mais fundos você bloquear, mais chances terá de ganhar. Mas se você tentar trapacear oferecendo negociações inválidas, perderá parte (ou toda) sua aposta. Portanto, temos um mecanismo semelhante ao PoW – agir honestamente é mais lucrativo do que agir desonestamente.
Em geral, as moedas recém-criadas não fazem parte das recompensas do validador. A moeda blockchain nativa deve, portanto, ser emitida de uma forma diferente. Isto pode ser feito através de uma distribuição inicial (por exemplo: um ICO ou um IEO) ou através do uso de PoW no início do protocolo antes de sua transição para PoS.
Até o momento, o Proof of Stake puro é usado apenas por pequenas criptomoedas. Portanto, não está claro se pode servir como uma alternativa viável ao PoW. Embora isto pareça teoricamente válido, será bem diferente na prática.
Uma vez que o PoS é implantado em uma rede com uma grande quantidade de informações, o sistema se torna um terreno fértil perfeito para incentivos financeiros e teoria dos jogos. Quem tem know-how para “hackear” um sistema PoS só o fará se for possível aproveitá-lo – por isso a única forma de saber se é possível é experimentando diretamente na rede.
Em breve veremos testes em larga escala de PoS – Casper será implementado como parte de uma série de atualizações na rede Ethereum (também conhecida como Ethereum 2.0).
Tipos de algoritmos de consenso
Prova de Trabalho e Prova de Participação são os algoritmos de consenso mais comuns. Mas obviamente existem muitos outros, com todas as suas vantagens e desvantagens. Confira os seguintes artigos:
Explicação da prova de trabalho atrasada
Leased Proof of Stake explicada
A Prova de Autoridade explicada
Prova de queimadura
A Prova de Participação Delegada explicada
O consenso híbrido PoW/PoS explicado
Concluir
Mecanismos para alcançar consenso são vitais para a operação de sistemas distribuídos. Muitos acreditam que a maior inovação do Bitcoin é o uso da Prova de Trabalho para permitir que os usuários concordem sobre um conjunto compartilhado de fatos.
Os algoritmos de consenso hoje sustentam não apenas os sistemas de moeda digital, mas também os blockchains, que permitem aos desenvolvedores executar código em uma rede distribuída. Constituem uma pedra angular da tecnologia blockchain e são essenciais para a viabilidade a longo prazo das diversas redes existentes.
De todos os algoritmos de consenso, o Proof of Work ainda é o mais utilizado. Na verdade, ainda não foi proposta uma alternativa mais fiável e segura. Dito isto, há uma enorme quantidade de investigação e desenvolvimento em curso para substituir o PoW e é altamente provável que vejamos surgir mais consenso nos próximos anos.



