Conteúdo
Um algoritmo de consenso é um mecanismo que permite que usuários ou máquinas se coordenem em uma configuração distribuída. Ele deve garantir que todos os membros de um sistema possam concordar com uma única fonte de verdade, mesmo que alguns dos membros falhem. Em outras palavras, o sistema deve ser
tolerante a falhas (consulte também:
O que é Byzantine Fault Tolerance?).
Em uma configuração centralizada, uma única entidade tem poder sobre o sistema. Na maioria dos casos, ela pode fazer alterações como quiser – não há um sistema de governança complexo para alcançar consenso entre vários administradores.
Em uma configuração descentralizada, é bem diferente. Digamos que estamos trabalhando com um banco de dados distribuído – como chegar a um acordo sobre quais entradas serão adicionadas?
Superar esse desafio em um ambiente em que desconhecidos não confiam um no outro, foi talvez o desenvolvimento mais importante que abriu caminho para as
blockchains. Neste artigo, veremos como os algoritmos de consenso são vitais para o funcionamento das criptomoedas e de ledgers distribuídos.
Em
criptomoedas, os saldos dos usuários são registrados em um banco de dados – a
blockchain. É essencial que todos os usuários (ou mais precisamente, todos os
nodes/nós) mantenham uma cópia idêntica do banco de dados. Caso contrário, haveriam informações conflitantes, prejudicando todo o propósito de uma rede de criptomoedas.
A
criptografia de chave pública garante que usuários não possam gastar as
moedas de outros. Mas ainda assim, é necessária uma única fonte da verdade na qual os participantes da rede confiam, para que seja possível determinar se os fundos já foram gastos ou não.
Satoshi Nakamoto, o criador do
Bitcoin, propôs um sistema
Proof of Work para coordenar os participantes. Explicaremos em breve como funciona o PoW – por enquanto, identificaremos algumas das características comuns dos diversos algoritmos de consenso existentes.
Primeiramente, exigimos que os usuários que desejam adicionar
blocos (os chamaremos de
validadores) forneçam um
stake (participação). O stake é um tipo de valor que o validador deve apresentar, o que os desencoraja a agir de forma desonesta. Se trapacearem, perderão seu valor de stake. Exemplos de stake incluem poder computacional, criptomoedas ou, até mesmo, reputação.
Por que eles arriscariam seus próprios recursos? Além disso, existe uma recompensa disponível. Geralmente, a recompensa é a criptomoeda nativa do protocolo e é composta pelas taxas pagas por outros usuários, novas unidades de criptomoeda geradas ou ambas.
O último item necessário é a
transparência. Precisamos ser capazes de detectar quando alguém está trapaceando. O ideal é que a produção de
blocos seja cara, mas a validação por qualquer usuário seja barata. Isso garante que os validadores sejam constantemente verificados pelos usuários regulares.
Proof of Work (PoW)
O
Proof of Work (PoW) é o padrinho dos algoritmos de consenso da tecnologia blockchain. Foi implementado pela primeira vez no Bitcoin, mas o conceito já existe há algum tempo. No Proof of Work, os validadores (conhecidos como
mineradores) fazem
hash dos dados que eles desejam adicionar, até produzir uma solução específica válida.
Um
hash é uma sequência de letras e números aparentemente aleatória, criada quando você submete dados através de uma
função de hash. Entretanto, se você submeter os mesmos dados novamente, terá sempre o mesmo output (saída). Porém, caso você altere apenas um detalhe, seu hash resultante será completamente diferente.
Observando o output, não é possível dizer quais informações foram inseridas na função. Portanto, é possível provar que você tinha conhecimento de um dado ou informação, antes de certo momento. Você pode fornecer um hash a alguém e, quando revelar os dados posteriormente, essa pessoa poderá submetê-los através da função para confirmar que o output será o mesmo.
No Proof of Work, o protocolo estabelece condições em relação ao que torna um bloco válido. Pode existir por exemplo uma condição que diz somente um bloco cujo hash começa com 00 será válido. A única maneira de o minerador criar um bloco que corresponda a essa condição, é tentando diversos inputs (entradas). Eles podem ajustar parâmetros em seus dados para produzir um resultado diferente a cada tentativa, até obterem o hash correto.
Nas principais blockchains, o nível de dificuldade é incrivelmente alto. Para competir com outros mineradores, você precisaria de um galpão cheio de hardware especializado para hashing (
ASICs), para então ter a chance de produzir um bloco válido.
Quando está fazendo
mineração, seu stake é o custo das máquinas e da eletricidade necessária para operá-las. Os ASICs (circuitos integrados de aplicação especifica) são construídos para uma finalidade, portanto, não têm outra utilidade além da mineração de
criptomoedas. Sua única maneira de recuperar seu investimento inicial é minerar, o que proporciona uma recompensa significativa caso você adicione com êxito um novo bloco à blockchain.
Verificar se você realmente criou um bloco válido é um processo muito simples para a rede. Mesmo que você tenha tentado trilhões de combinações para obter o hash correto, eles só precisam submeter seus dados através da função uma vez. Se seus dados produzirem um hash válido, eles serão aceitos e você receberá uma recompensa. Caso contrário, a rede rejeitará o hash e você terá desperdiçado tempo e eletricidade.
Proof of Stake (PoS)
O
Proof of Stake (PoS) foi proposto nos primeiros dias do Bitcoin como uma alternativa ao Proof of Work. Em um sistema PoS, não existem os conceitos de mineradores, hardware especializado e não há necessidade de grande consumo de energia. Tudo o que você precisa é de um computador comum.
Bem, na verdade não é só isso. Ainda é necessário um certo esforço. No PoS, você não fornece um recurso externo (como eletricidade ou hardware), mas sim um interno – criptomoeda. As regras variam de acordo com o protocolo, mas geralmente o usuário precisa manter uma quantidade mínima de fundos para se qualificar para o
staking.
A partir daí, você bloqueia seus fundos em uma
carteira (eles não podem ser movidos enquanto você está fazendo staking). Normalmente, existe um consenso entre os validadores sobre quais transações serão inseridas no próximo bloco. De certa forma, você faz uma aposta em qual bloco que será selecionado. O protocolo escolherá um dos blocos candidatos.
Caso seu bloco seja selecionado, você receberá uma proporção das taxas de transação, dependendo do seu valor de stake. Quanto mais fundos você tiver bloqueados, mais recompensas receberá. Mas se você tentar trapacear propondo transações inválidas, perderá uma parte (ou tudo) do seu valor de stake. Portanto, temos um mecanismo semelhante ao PoW – agir honestamente é mais rentável do que agir de forma desonesta.
Geralmente, não são criadas novas moedas como recompensa para validadores. A moeda nativa da blockchain deve, portanto, ser emitida de outra maneira. Isso pode ser feito através de uma distribuição inicial (ou seja, uma
ICO ou
IEO) ou fazendo o lançamento do protocolo como PoW, para depois efetuar uma transição para o sistema PoS.
Até o momento, o Proof of Stake puro só foi de fato implantado em criptomoedas menores. Portanto, ainda não está claro se ele pode servir como uma alternativa viável ao PoW. Embora pareça teoricamente correto, na prática é muito diferente.
Depois que o PoS é implementado em uma rede com grandes quantias em valor, o sistema se torna um campo de jogo de
teoria dos jogos e incentivos financeiros. Qualquer pessoa com o know-how para “hackear” um sistema PoS, provavelmente não o faria se não pudesse lucrar com isso – portanto, a única maneira de descobrir se é um sistema viável é avaliando uma rede funcionando na prática.
Em breve, veremos o PoS sendo testado em larga escala – o
Casper será implementado como parte de uma série de atualizações da rede Ethereum (coletivamente conhecidas como
Ethereum 2.0).
O Proof of Work e o Proof of Stake são os algoritmos de consenso mais discutidos. Mas existe uma grande variedade de outros, todos com suas próprias vantagens e desvantagens. Confira os seguintes artigos:
Mecanismos para alcançar consenso são vitais para o funcionamento 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 concordem com um conjunto de fatos compartilhados.
Atualmente, os algoritmos de consenso sustentam não apenas os sistemas de dinheiro digital, mas as blockchains, permitindo que os desenvolvedores executem códigos em uma rede distribuída. Eles representam agora, o pilar da tecnologia blockchain e são críticos para a viabilidade a longo prazo das várias redes já existentes.
De todos os algoritmos de consenso, o Proof of Work continua sendo dominante. Uma alternativa mais confiável e segura ainda precisa ser proposta. Existem muitas pesquisas relacionadas ao desenvolvimento de substitutos para o PoW e provavelmente teremos mais propostas surgindo nos próximos anos.