Um algoritmo de consenso é um mecanismo que permite que utilizadores ou máquinas se coordenem numa configuração distribuída e que garante que todos os membros de um sistema possam concordar com uma única “fonte de verdade”, mesmo que alguns dos membros falhem. Por outras palavras, o sistema deve ser tolerante a falhas.
Numa 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.
Já numa configuração descentralizada, é bem diferente: digamos que estamos a trabalhar com uma base de dados distribuída – como chegar a um acordo sobre quais entradas serão adicionadas? Superar esse desafio num ambiente em que desconhecidos não confiam um no outro, foi talvez o desenvolvimento mais importante que abriu caminho para as blockchains. Neste artigo, adaptado da Binance Academy, veremos como os algoritmos de consenso são vitais para o funcionamento das criptomoedas e de ledgers distribuídos.
Algoritmo de consenso e criptomoedas
Em criptomoedas, os saldos dos utilizadores são registados numa base de dados – a blockchain. É essencial que todos os utilizadores (ou mais precisamente, todos os nodes/nós da rede) mantenham uma cópia idêntica dessa base de dados. Caso contrário, haveria informações conflituantes, prejudicando todo o propósito de uma rede de criptomoedas.
A criptografia de chave pública garante que utilizadores 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 mais adiante como funciona o PoW – por enquanto, vamos identificar algumas das características comuns dos diversos algoritmos de consenso existentes.
Primeiramente, exigimos que os utilizadores 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 fizerem batota, perderão o seu valor de stake. Exemplos de stake incluem poder computacional, criptomoedas ou até mesmo reputação.
E porque arriscariam eles os seus próprios recursos? É que, além disso, existe uma recompensa disponível. Geralmente, a recompensa é a criptomoeda nativa do protocolo e é composta pelas taxas pagas por outros utilizadores, novas unidades de criptomoeda geradas ou ambas.
O último item necessário é a transparência. Precisamos ser capazes de detetar quando alguém está a fazer batota. O ideal é que a produção de blocos seja cara, mas que a validação por qualquer utilizador seja barata. Isso garante que os validadores sejam constantemente verificados pelos utilizadores regulares.
Tipos de algoritmos de consenso
Proof of Work (PoW)
O Proof of Work (PoW) é a mãe dos algoritmos de consenso da tecnologia blockchain. Foi implementado pela primeira vez no Bitcoin, mas o conceito já existia 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 submetemos dados através de uma função de hash. Entretanto, se submetermos os mesmos dados novamente, teremos sempre o mesmo output (saída). Porém, caso alteremos apenas um detalhe, o hash resultante será completamente diferente.
Observando o output, não é possível dizer quais as informações que foram inseridas na função. Portanto, é possível provar que tínhamos conhecimento de um dado ou informação, antes de certo momento. Nós podemos fornecer um hash a alguém e, quando revelarmos 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 nos 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, precisaríamos de um armazém cheio de hardware especializado para hashing (equipado com ASICs), para então termos a possibilidade de produzir um bloco válido.
Quando estamos a minerar, o nosso stake é o custo das máquinas e da eletricidade necessária para operá-las. Os ASICs são construídos para uma finalidade, portanto, não têm outra utilidade além da mineração de criptomoedas. A única maneira de recuperarmos o investimento inicial é minerar, o que proporciona uma recompensa significativa caso adicionemos com êxito um novo bloco à blockchain.
Verificar se realmente criámos um bloco válido é um processo muito simples para a rede. Mesmo que tenhamos tentado biliões de combinações para obter o hash correto, eles só precisam submeter os nossos dados através da função uma vez. Se esses dados produzirem um hash válido, eles serão aceites e nós receberemos uma recompensa. Caso contrário, a rede rejeitará o hash e nós teremos 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. Num sistema PoS, não existem os conceitos de mineradores, hardware especializado e não há necessidade de grande consumo de energia. Tudo o que precisamos é de um computador comum.
Bem, na verdade não é só isso. Ainda é necessário um certo esforço. No PoS, não fornecemos um recurso externo (como eletricidade ou hardware), mas sim um interno – criptomoeda. As regras variam de acordo com o protocolo, mas geralmente o utilizador precisa manter uma quantidade mínima de fundos para se qualificar para o staking.
A partir daí, bloqueamos os nossos fundos numa carteira (que não podem ser movidos enquanto fazemos staking). Normalmente, existe um consenso entre os validadores sobre quais as transações que serão inseridas no próximo bloco. De certa forma, fazemos uma aposta em qual o bloco que será selecionado, e o protocolo escolherá um dos blocos candidatos.
Caso o nosso bloco seja selecionado, receberemos uma proporção das taxas de transação, dependendo do valor de stake. Quanto mais fundos tivermos bloqueados, mais recompensas receberemos. Mas se tentarmos enganar o sistema propondo transações inválidas, perderemos uma parte (ou tudo) do 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 fazendo o lançamento do protocolo como PoW, para depois efetuar uma transição para o sistema PoS.
Depois de o PoS ser implementado numa rede com grandes quantias em valor, o sistema torna-se num 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 – como está acontecer agora, aparentemente sem problemas, com a Ethereum 2.0.
Considerações finais
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 utilizadores concordem com um conjunto de factos partilhados.
Atualmente, os algoritmos de consenso sustentam não apenas os sistemas de dinheiro digital, mas também as blockchains, permitindo que os programadores executem código numa 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.
Siga-nos no Google News e não perca nenhuma notícia. Clique aqui e carregue em seguir.
Outros artigos interessantes: