Algoritmos de consenso são mecanismos que permitem que usuários ou máquinas coordenem em um ambiente distribuído. Ele deve assegurar que todos os membros de um sistema possam concordar em uma única fonte de verdade, mesmo que alguns dos membros falhem. Aliás, o sistema deve ser tolerante a falhas.
Em uma configuração centralizada, uma entidade única, tem poder sobre o sistema. Na maioria dos casos, ela pode fazer as mudanças que quiser — não há um sistema de governança complexo para obter consenso entre vários administradores.
Em uma configuração descentralizada, é bastante diferente. Digamos que estamos trabalhando com um banco de dados distribuído — como concordamos em quais entradas são adicionadas?
Superar este desafio em um ambiente onde estranhos não confiam uns nos outros foi talvez o desenvolvimento mais importante que preparou o caminho para as cadeias de blocos. Neste artigo, veremos como os algoritmos de consenso são vitais para o funcionamento das Criptomoedas e dos ledgers distribuídos.
Algoritmos de Consenso e Criptomoedas
Nas Criptomoedas, os saldos dos usuários são registrados em um banco de dados — a cadeia de blocos (Blockchain). É essencial que todos os usuários (nodes/nós) mantenham uma cópia idêntica do banco de dados. Caso contrário, haveria informações conflitantes, prejudicando todo o propósito de uma rede de Criptomoedas.
A criptografia de chave pública garante que os usuários não possam gastar as moedas dos outros. Mas ainda requer uma única fonte de verdade em que os participantes da rede confiem, a fim de poder determinar se os fundos já foram gastos ou não.
Satoshi Nakamoto, o criador do Bitcoin, propôs um sistema de Prova de Trabalho (Proof of Work) para coordenar os participantes. Identificaremos algumas das características comuns dos vários algoritmos de consenso que existem.
Primeiro, exigimos que os usuários que desejam adicionar blocos (vamos chamá-los de validadores) forneçam uma participação.
O stake é um tipo de valor que o validador deve fornecer, o que os desencoraja de agir de forma desonesta. Se eles fizerem uma trapassa, perderão seu valor de participação. Exemplos stake incluem poder de computação, Criptomoedas, ou mesmo reputação.
Por que eles arriscariam seus próprios recursos? Além disso, há uma recompensa disponível. Normalmente, a recompensa é a moeda digital nativa do protocolo e é composta de taxas pagas por outros usuários, novas unidades de moeda digital geradas, ou ambas. O último item necessário é a transparência.
Precisamos conseguir detectar quando um usuário está enganando. Idealmente, a produção em bloco deveria ser cara, mas a validação por qualquer usuário deveria ser barata. Isto assegura que os validadores sejam constantemente verificados por usuários regulares.
Tipos de Algoritmos de Consenso
Prova de Trabalho (PoW)
Prova de Trabalho (Proof of Work – PoW) é o padrinho dos algoritmos de consenso na tecnologia de cadeias de blocos. Foi executado pela primeira vez no Bitcoin (BTC), mas o conceito já existe há algum tempo. Em Prova de Trabalho, os validadores (conhecidos como mineiros) têm os dados que desejam adicionar, até produzir uma solução válida específica.
Um hash é uma sequência aparentemente aleatória de letras e números criados quando você submete dados através de uma função de hash. Entretanto, se você submeter os mesmos dados novamente, você sempre terá a mesma saída. Mas se você alterar apenas um detalhe, seu hash resultante será completamente diferente.
Ao olhar para a saída, você não pode dizer quais informações foram inseridas na função. Portanto, é possível provar que você teve conhecimento de um dado ou informação antes de um determinado momento. Você pode fornecer a alguém um hash, e quando você revelar os dados mais tarde, essa pessoa pode submetê-los através da função para confirmar que a saída será a mesma.
Em Prova de Trabalho, o protocolo estabelece condições sobre o que torna um bloco válido. Por exemplo, pode haver uma condição que diga que somente um bloco cujo hash começa com 00 será válido. A única maneira de o mineiro criar um bloco que corresponda a esta condição, é tentar várias entradas. Eles podem ajustar parâmetros em seus dados para produzir um resultado diferente a cada vez, até obterem o hash certo.
Nas principais cadeias de blocos, o nível de dificuldade é incrivelmente alto. Para competir com outros mineiros, seria necessário um galpão cheio de hardware de hashing especializado (ASICs) para ter uma chance de produzir um bloco válido.
Quando você está minerando, seu interesse é o custo das máquinas e a eletricidade necessária para operá-las. Os ASICs (circuitos integrados de aplicação específica) são construídos para um propósito, portanto não têm outro uso que não seja a mineração de Criptomoedas. Sua única maneira de recuperar seu investimento inicial é a mineração, que proporciona uma recompensa significativa se você acrescentar com sucesso um novo bloco à cadeia de blocos.
Averiguar se você realmente criou um bloco válido é um processo simples para a rede. Mesmo que você tenha tentado trilhões de combinações para obter o hash correto, elas só precisam enviar seus dados através da função uma única vez. Se seus dados produzir um hash válido, ele será aceite e você receberá uma recompensa. Do contrário, a rede rejeitará o hash e você terá desperdiçado eletricidade e tempo.
Proof of Stake (PoS)
Proof of Stake (PoS) foi proposto nos primeiros dias do Bitcoin como uma alternativa ao Proof of Work. Em um sistema de PoS, não há conceitos de mineiros, não há hardware especializado e não há necessidade de grande consumo de energia. Um computador comum será suficiente. Bem, na verdade, isso não é tudo. Ainda é necessário um certo esforço.
No PoS, você não fornece um recurso externo (como eletricidade ou hardware), mas um recurso interno — moeda cripto. As regras variam dependendo do protocolo, mas geralmente você precisa manter uma quantidade mínima de fundos para se qualificar para o staking.
A partir daí, você tranca seus fundos em uma carteira (eles não podem ser movimentados enquanto você estiver fazendo staking). Normalmente, há um consenso entre os validadores sobre quais transações serão inseridas no próximo bloco. Em certo sentido, você faz uma aposta em qual bloco será selecionado. O protocolo irá escolher um dos blocos candidatos.
Se seu bloco for selecionado, você receberá uma proporção das taxas da transação, dependendo do valor de sua participação. Quanto mais fundos você tiver bloqueados, mais recompensas receberá. Mas se você tentar trapacear propondo transações inválidas, perderá parte (ou a totalidade) de seu valor de participação. Portanto, temos um mecanismo semelhante ao PoW — agir honestamente é mais lucrativo do que agir desonestamente.
Geralmente, nenhuma moeda digital nova é criada como recompensa para os validadores. Portanto, a moeda nativa da cadeia de blocos deve ser emitida de outra forma. Isto pode ser feito através de uma distribuição inicial (isto é, uma ICO ou IEO) ou através do lançamento do protocolo como PoW e depois da transição para o sistema PoS.
Até agora, a prova pura de participação só foi realmente implantada em Criptomoedas menores. Ainda, não está claro se ela pode servir como uma alternativa viável à PoW. Embora pareça em teoria pareça correto, na prática, é muito diferente.
Uma vez que a PoS é implantada em uma rede com grandes quantidades de valor, o sistema se torna um campo de jogo de teoria de jogos e incentivos financeiros. Qualquer pessoa com o know-how para “invadir” um sistema de PoS provavelmente não o faria se não pudesse lucrar com ele — portanto, a única maneira de descobrir se é um sistema viável é avaliar uma rede funcional, na prática.
Logo veremos o PoS sendo testado em grande escala — Casper será implementado como parte de uma série de atualizações da rede Ethereum (coletivamente conhecida como Ethereum 2.0).
Outros Algoritmos de Consenso
Prova de Trabalho (Proof of Work) e Proof of Stake são os algoritmos de consenso mais amplamente discutidos. Mas há uma grande variedade de outros, todos com suas próprias vantagens e desvantagens.
Conclusão
Os mecanismos para se chegar a um consenso são vitais para a operação de sistemas distribuídos. Muitos acreditam que a maior inovação do Bitcoin foi o uso do Proof of Work para permitir que os usuários concordassem em um conjunto de fatos compartilhados.
Hoje, os algoritmos de consenso sustentam não apenas os sistemas de dinheiro digital, mas as cadeias de blocos, permitindo aos desenvolvedores executar código em uma rede distribuída. Eles representam agora, a pedra angular da tecnologia de cadeias de blocos e são críticos para a viabilidade a longo prazo das várias redes já existentes.
De todos os algoritmos de consenso, a Prova de Trabalho permanece dominante. Uma alternativa mais confiável e segura ainda tem que ser proposta. Há muita pesquisa relacionada ao desenvolvimento de substitutos para a PoW e provavelmente veremos mais propostas nos próximos anos.