NOVO: Helius adquire a Light Protocol
o que é Prova de História
Blog/Fundamentos

Prova de História, Prova de Participação e Prova de Trabalho — Explicadas

Developer Experience Engineer0xIchigo no X0xIchigo no LinkedIn0xIchigo no GitHub
18 min de leitura

Sobre o que é este artigo?

Blockchains são livros-razão distribuídos que registram transações em uma rede de computadores. Os algoritmos de consenso são essenciais para as blockchains, pois são usados para chegar a um acordo sobre o estado do livro-razão. Eles facilitam a colaboração entre participantes que não confiam uns nos outros, eliminando a necessidade de uma entidade centralizada para validar os dados antes que sejam adicionados à blockchain. Sem algoritmos de consenso, não haveria como garantir que todos os nós concordassem com o estado da blockchain — ficaríamos vulneráveis a vários vetores de ataque, enfrentaríamos problemas de gasto duplo, comprometeríamos a imutabilidade e não teríamos uma boa forma de resolver divergências ou forks.

Neste artigo, vamos nos aprofundar nos algoritmos de consenso, analisando sua importância e os diferentes tipos usados em blockchains populares. O objetivo é oferecer a você uma compreensão abrangente do que são algoritmos de consenso, por que é importante entender como eles funcionam e como funcionam alguns dos algoritmos de consenso mais conhecidos.

Por que você deve aprender sobre algoritmos de consenso

Entender os algoritmos de consenso é importante para desenvolver com eficiência sobre a blockchain escolhida por você pelos seguintes motivos:

  • Saber como sua blockchain chega a um consenso afeta as decisões de arquitetura durante o desenvolvimento do seu aplicativo descentralizado (dApp). Você fará perguntas como: quais são os custos de implantação? Quantas transações um usuário deve enviar para usar este dApp de maneira eficiente? Quanto custa enviar uma transação? A pergunta mais importante será: quanto tempo leva para atingir a finalidade? Ou seja, quanto tempo uma transação leva para ser confirmada e adicionada à blockchain?
  • Conhecer as características de throughput e latência de um algoritmo de consenso ajuda você a escolher a blockchain certa para implantar seu dApp. Fazer perguntas sobre a arquitetura do seu dApp ajudará você a identificar áreas que podem ser otimizadas para melhorar o desempenho
  • Conhecer as questões de segurança de cada algoritmo ajudará você a criar aplicativos mais seguros. Quais são os vetores de ataque da sua blockchain? Quais são as implicações de design para o desenvolvimento de contratos inteligentes?
  • Conhecer o funcionamento interno do algoritmo de consenso da sua blockchain permite que você compreenda as particularidades dos mecanismos de votação e participe ativamente da governança
  • Conhecer os incentivos econômicos específicos de cada algoritmo de consenso ajuda a estimular a participação na rede. Como posso participar da rede e receber recompensas? Que comportamentos devo evitar para não ser penalizado?
  • Conhecer os fundamentos dos algoritmos de consenso ajudará você a entender melhor algoritmos novos ou atualizados. Como entender a Prova de Participação Delegada ou a Prova de Participação Arrendada sem entender a Prova de Participação?

O que é um algoritmo de consenso?

Um dos principais desafios da computação distribuída é alcançar um desempenho confiável do sistema mesmo quando alguns de seus componentes falham. Essa questão é descrita no Problema dos Generais Bizantinos. O problema apresenta um experimento mental no qual todos os participantes do sistema precisam concordar com uma estratégia para evitar falhas. Ele destaca as dificuldades de chegar a um acordo em uma rede na qual alguns participantes podem agir de forma imprevisível ou maliciosa. Para mitigar isso, são necessários processos de coordenação resilientes que estabeleçam uma única fonte da verdade. Isso garante que todos os participantes atuem de maneira confiável em toda a rede. Chamamos os processos que ajudam o sistema a concordar com uma fonte da verdade de algoritmos de consenso.

Imagine um cruzamento movimentado sem semáforos. Seria um caos absoluto, com carros, caminhões, bicicletas e pedestres tentando seguir seus próprios caminhos e disputando a vez de atravessar. Haveria acidentes, mal-entendidos e desconfiança entre os participantes. Felizmente, temos semáforos. Os semáforos colocam ordem no trânsito: indicam quem deve seguir e quem deve parar, adaptando-se às condições em tempo real. Mais importante ainda, todos concordam com os semáforos. Todos aceitamos as regras e concordamos que elas sejam aplicadas de maneira uniforme.

Os algoritmos de consenso são os semáforos das blockchains. Eles definem as regras para adicionar transações a uma blockchain. Criam um fluxo seguro e eficiente de dados na rede, dando “sinal verde” ou “sinal vermelho” para transações e blocos válidos ou inválidos. Essas regras são aplicadas uniformemente, de maneira segura e transparente. Os algoritmos de consenso se adaptam às mudanças nas condições da rede para manter o desempenho ideal, sempre dentro dos limites dessas regras.

Os algoritmos de consenso são essenciais para as blockchains. Sem eles, não teríamos uma forma uniforme de validar dados em um ambiente adversarial. Em vez disso, teríamos o caos. A situação seria tão complicada que provavelmente voltaríamos a depender de uma autoridade central para a validação, cansados de ataques Sybil e gastos duplos. Precisamos de algoritmos de consenso para que nossas blockchains permaneçam seguras, imutáveis e descentralizadas.

O que é Prova de Trabalho?

A Prova de Trabalho (PoW) é uma forma de prova criptográfica na qual uma parte (o provador) demonstra a outra parte (o verificador) que gastou uma quantidade específica de poder computacional. O verificador pode confirmar esse gasto facilmente. Ela foi inventada por Moni Naor e Cynthia Dwork em 1993 para impedir ataques DoS e spam em uma rede e posteriormente formalizada em um artigo de 1999 de Markus Jakobsson e Ari Juels.

A Prova de Trabalho foi popularizada pelo Bitcoin como base para o consenso em uma rede descentralizada e sem permissão. Satoshi Nakamoto explica no whitepaper do Bitcoin como a Prova de Trabalho pode ser usada para criar uma versão de dinheiro eletrônico puramente peer-to-peer, sem a necessidade de intermediários. Outras blockchains populares que usam um algoritmo de consenso baseado em PoW incluem Litecoin, Kadena, Monero e Ethereum Classic. Então, como ela funciona?

Como funciona

As blockchains de Prova de Trabalho exigem que os participantes da rede resolvam um problema matemático complexo usando uma quantidade significativa de poder computacional. O objetivo é adivinhar um número hexadecimal de 64 dígitos, conhecido como hash. Descobrir esse hash parece fácil, mas não é quando consideramos que ele resulta da aplicação de hash a todas as informações das transações contidas em um bloco, junto a um nonce aleatório (”número usado uma única vez), por meio do algoritmo SHA256. O primeiro participante a resolver o problema pode adicionar o próximo bloco de transações à blockchain e recebe como recompensa uma quantidade predeterminada de criptomoeda. Esse processo de validar transações e adicioná-las à blockchain é conhecido como mineração, e os participantes da rede são chamados de mineradores.

Benefícios e desvantagens

Uma vantagem das blockchains de Prova de Trabalho é que qualquer pessoa pode participar da mineração, promovendo uma rede distribuída e descentralizada. O poder computacional necessário para atacar uma rede PoW é enorme. Isso torna proibitivamente difícil, embora ainda seja teoricamente possível, que uma única entidade execute um ataque de 51%. Um ataque de 51% ocorre quando uma entidade maliciosa controla a maior parte do poder de hashing da rede e consegue manipular o histórico de transações. A Prova de Trabalho é um algoritmo de consenso relativamente simples de entender, implementado e testado em grande escala pelo Bitcoin.

Embora isso pareça vantajoso, a Prova de Trabalho apresenta várias desvantagens. Os altos custos associados ao hardware de mineração e à eletricidade podem levar — e já levaram — à centralização da mineração em regiões onde a energia é mais barata. Essas altas barreiras de entrada para uma mineração lucrativa fazem com que as recompensas sejam distribuídas de forma desigual, favorecendo quem pode comprar equipamentos potentes. Isso levou à criação de enormes fazendas de mineração de Bitcoin. Devido ao consumo extremamente alto de energia, diversas preocupações ambientais foram levantadas. Esse é um dos principais motivos pelos quais a Ethereum migrou para a Prova de Participação com a atualização chamada The Merge. Então, o que é Prova de Participação?

O que é Prova de Participação?

A Prova de Participação (PoS) busca solucionar os problemas de uso intensivo de recursos computacionais e energia associados à Prova de Trabalho. Em vez de depender de poder computacional para proteger a rede, a Prova de Participação seleciona validadores com base na quantidade de tokens que mantêm em stake na rede. A Peercoin foi a primeira criptomoeda a usar Prova de Participação, em 2012, embora ela tenha sido usada em conjunto com um sistema de Prova de Trabalho.

Como funciona

Na Prova de Participação, os mineradores são substituídos por validadores que propõem blocos e votam neles. Esses validadores precisam bloquear uma determinada quantidade de tokens como stake na rede. A rede seleciona um validador para validar o próximo bloco de transações com base em vários fatores, como o tamanho do seu stake ou há quanto tempo ele mantém esse stake. O bloco proposto é então verificado e atestado pelos outros validadores. Se o bloco for atestado como válido, ele será adicionado à blockchain. Por isso, os validadores recebem taxas de transação e, às vezes, tokens recém-criados como recompensa pelo trabalho de validação. Se o bloco for atestado como inválido, ele não será adicionado à blockchain e o validador será penalizado. Esses validadores sofrem “slashing”, o que significa que perdem uma parte do seu stake. Essas penalidades de slashing existem para desencorajar agentes mal-intencionados de propor blocos fraudulentos ou criar discrepâncias no livro-razão.

Benefícios e desvantagens

Os problemas de alto consumo de energia são abordados diretamente pela Prova de Participação. A migração da Ethereum da Prova de Trabalho para a Prova de Participação resultou em uma redução de 99,84% no consumo de energia da rede. Os algoritmos de Prova de Participação são mais rápidos e adequados à escalabilidade, pois são projetados para oferecer maior throughput. Esses algoritmos são desenvolvidos para atingir a finalidade mais rapidamente, o que significa que as transações são confirmadas e adicionadas à blockchain em menos tempo. Os validadores também têm incentivos financeiros para manter uma infraestrutura de validação de alta qualidade, o que reduz os tempos de validação. Os algoritmos de Prova de Participação também são mais adequados ao processamento paralelo de transações e ao sharding. No sharding, a rede é dividida em partes menores, ou “shards”, que processam transações de maneira independente e paralela.

No entanto, a Prova de Participação tem suas próprias desvantagens. Embora seja mais eficiente em termos energéticos, as recompensas dos validadores podem ser menores do que as recebidas por seus equivalentes na Prova de Trabalho. Isso pode atrair menos participantes e reduzir a segurança da rede. A distribuição inicial do token também pode afetar a equidade e a descentralização da rede se não for administrada corretamente. Nesse caso, quem possui stakes maiores exerce uma influência desproporcional sobre a rede. Outro possível problema é que os validadores podem não ter nada a perder ao votar em vários forks da blockchain, ao contrário da Prova de Trabalho, na qual isso exigiria dividir o poder computacional. É preciso implementar condições específicas de slashing para evitar esse tipo de comportamento.

Variantes da Prova de Participação

Entre as blockchains de destaque que usam Prova de Participação estão:

Ethereum

A Ethereum usa um algoritmo LMD-GHOST com Casper-FFG, chamado de Gasper. O LMD-GHOST é usado para acumular votos e garantir que os nós selecionem facilmente o fork correto quando um deles surge. O Casper-FFG (Casper the Friendly Finality Gadget) eleva determinados blocos ao estado de “finalizados”, para que os novos participantes da rede sempre sejam sincronizados com a cadeia canônica.

Cardano

A Cardano usa uma variante da Prova de Participação chamada Ourobros, o primeiro protocolo de Prova de Participação com segurança comprovável. Ele se baseia em pesquisas revisadas por pares e foi projetado com foco em escalabilidade e segurança. Saiba mais aqui

Near

A Near usa a Prova de Participação com Limite, uma abordagem determinística que permite a um grande número de participantes manter a rede tomando decisões durante intervalos específicos. Saiba mais aqui

Algorand

A Algorand usa a Prova de Participação Pura, uma abordagem mais igualitária à Prova de Participação baseada no consenso bizantino. Saiba mais aqui

Como você pode ver, existem muitas variantes da Prova de Participação. A maioria das blockchains de Prova de Participação usa alguma variante do projeto original, mas o modifica para atender às próprias necessidades e otimizar determinados casos de uso. Uma das variantes mais conhecidas e amplamente usadas é a Prova de Participação Delegada.

O que é Prova de Participação Delegada?

A Prova de Participação Delegada é uma evolução da Prova de Participação, criada para melhorar a eficiência e a natureza democrática dos processos de validação de blockchains. Ela foi desenvolvida por Daniel Larimer em 2014 e, desde então, foi implementada em várias blockchains de destaque, incluindo BitShares, EOS, TRON e SUI.

Como funciona

Na Prova de Participação Delegada, os detentores de tokens votam em um grupo de delegados para validar e criar novos blocos em seu nome. Os delegados são eleitos pelos detentores de tokens, e o poder de voto está relacionado à quantidade de tokens que cada um possui. Nesse caso, os usuários votam reunindo seus tokens em um pool de staking e vinculando-os a um delegado específico. Os delegados têm incentivos para agir de forma honesta, pois podem perder o cargo por atividades maliciosas ou por não manter um uptime suficiente. Quando validam um bloco, os delegados recebem as taxas de transação correspondentes como recompensa. Em seguida, distribuem essas recompensas entre os usuários que os apoiaram, com base no stake de cada usuário. É importante observar que esses delegados validam blocos de maneira determinística, seguindo uma programação pública. Há um limite para o número de delegados de cada bloco, o que significa que eles são reorganizados periodicamente.

Benefícios e desvantagens

A Prova de Participação Delegada oferece muitos dos benefícios da Prova de Participação: qualquer pessoa pode se tornar um delegado; a baixa barreira de entrada a torna mais acessível e descentralizada; o desempenho é melhor porque ela exige apenas um número limitado de delegados; e a operação da rede não requer muita energia.

No entanto, a Prova de Participação Delegada não é perfeita. Ela exige apenas um número limitado de delegados para cada novo bloco. Isso gera preocupações porque um pequeno grupo pode exercer influência desproporcional sobre a verificação de transações e as decisões de governança. Esse limite abre a possibilidade de os delegados conspirarem para agir de forma maliciosa, reduzindo consideravelmente o limiar para um ataque de 51%. Os detentores de tokens também podem subornar delegados para que atuem maliciosamente em seu nome. Mais importante: os usuários não são obrigados a participar das eleições de delegados, e a apatia dos eleitores pode agravar os riscos de centralização mencionados anteriormente.

O que é Prova de História?

A Prova de História não é um algoritmo de consenso.

Mais precisamente, ela é um componente que ajuda a alcançar o consenso. A confusão provavelmente surge por causa da terminologia: o termo “Prova de X” pode sugerir um algoritmo de consenso para quem conhece a Prova de Trabalho e a Prova de Participação. A Prova de História é fundamental para a arquitetura da Solana e está profundamente integrada à ordenação de transações e à execução de programas. Devido à sua importância na rede, é fácil confundi-la com o algoritmo de consenso da Solana.

Então, por que estamos falando sobre ela se não é um algoritmo de consenso? A Prova de História trata de um problema fundamental dos sistemas distribuídos: o acordo sobre o tempo, ou a sequência dos eventos. A Solana usa a Prova de História como uma espécie de algoritmo de “pré-consenso” para simplificar o consenso e processar transações com eficiência. Com isso, os validadores podem processar transações em paralelo, aumentando o throughput e reduzindo a latência. Portanto, a Prova de História é um componente que ajuda a alcançar o consenso. É melhor pensar nela como um relógio descentralizado para a rede: ela oferece uma forma de comprovar o tempo e a ordem em que os eventos ocorreram sem depender de terceiros.

Limitações das abordagens tradicionais

Tradicionalmente, as blockchains são sincronizadas com base em blocos, que são grandes conjuntos de transações. Isso significa que uma transação não pode ser processada até que um período específico tenha passado. Esse período é chamado de tempo de bloco. Na Prova de Trabalho, os tempos de bloco precisam ser longos — o Bitcoin produz um bloco aproximadamente a cada 10 minutos — para reduzir a probabilidade de vários validadores produzirem um novo bloco ao mesmo tempo. Na Prova de Participação, essa restrição não existe, mas os validadores precisam de timestamps para determinar a ordem dos blocos recebidos. A solução alternativa mais conhecida é incluir um timestamp de relógio em cada bloco. No entanto, esse timestamp só é válido se for maior que o timestamp mediano dos 11 blocos anteriores e menor que o “tempo ajustado pela rede” acrescido de duas horas. O tempo ajustado pela rede é a mediana dos timestamps retornados por todos os nós conectados a você. Essa não é a melhor solução devido à deriva dos relógios e à latência da rede. E agora?

Prova de História

A Solana adota uma abordagem radical para esse problema, conhecida como Prova de História. Em termos simples, a Prova de História é uma forma de comprovar o tempo em uma rede adversarial. Ela funciona como uma função criptográfica de timestamp, permitindo que os nós concordem com uma ordem de eventos sem precisar se comunicar entre si. Isso é obtido com uma função hash sequencial resistente à pré-imagem — ou seja, uma função difícil de inverter — para criar uma cadeia de hashes em que cada hash depende do anterior. Os nós líderes aplicam timestamps aos blocos usando essas provas criptográficas para comprovar que determinado período passou desde a última prova. Como todos os hashes estão encadeados, cria-se um registro histórico que comprova que certos dados existiam em um momento específico.

Essa abordagem única depende de Funções de Atraso Verificável (VDFs), funções que levam muito tempo para serem calculadas, mas cujos resultados podem ser verificados rapidamente. As Funções de Atraso Verificável são usadas na criação de hashes que dependem não apenas do hash anterior, mas também do tempo transcorrido. Isso permite criar uma linha do tempo verificável dos eventos. O uso de Funções de Atraso Verificável garante essa propriedade, pois adulterar um hash exigiria recalcular todos os hashes anteriores. Isso adiciona uma camada extra de segurança e integridade à Solana, já que existe apenas uma linha do tempo verificável dos eventos.

Uma analogia simples

Imagine uma cidade medieval movimentada, repleta de negociações, anúncios, debates e disputas. Essa cidade depende de um arauto como fonte central de informações, que anuncia notícias importantes em voz alta e garante que todos estejam em sintonia. Um dia, o arauto adoece e não consegue mais cumprir suas funções. A cidade mergulha no caos: ninguém consegue concordar sobre o que aconteceu, quando aconteceu, quem disse o quê ou em que sequência os eventos ocorreram.

Entra em cena um escriba muito meticuloso. Ele se senta no centro da praça com uma tinta e uma pena especiais, usadas para registrar cada evento em seu diário. Essa tinta é diferente: sua cor muda de acordo com o último registro feito no diário. Todos podem simplesmente consultar o diário do escriba e confirmar tanto a ordem quanto o momento dos eventos, sem precisar sair perguntando a cada pessoa. O diário se torna a fonte incontestável da verdade para a cidade, eliminando a necessidade de um arauto, já que as pessoas podem fazer anúncios importantes sem ele. A tinta que muda de cor garante uma fonte da verdade permanente e imutável, capaz de validar todos os registros anteriores. Se você substituir a cidade por uma rede, o diário por um livro-razão e a tinta por uma função de hashing criptográfico, terá um dos métodos de sincronização mais confiáveis. Esse é o poder da Prova de História.

Vantagens e desvantagens

A Prova de História permite tempos de bloco mais curtos, o processamento de um grande número de transações por segundo e uma fonte única e verificável de tempo antes do consenso. Isso também permite otimizar recursos: os nós podem processar transações sem esperar pelo consenso, melhorando o paralelismo e o uso eficiente do poder computacional. O uso de Funções de Atraso Verificável adiciona uma camada extra de segurança, pois alterar transações exigiria recalcular o hash sequencial. Isso seria muito caro e fácil de detectar. Além disso, qualquer pessoa pode verificar a ordem e o momento das transações graças aos timestamps criptográficos. Sabemos com certeza quando uma transação ocorreu, sem precisar nos preocupar com a validade dos timestamps de relógio. Isso promove a transparência e a responsabilização, princípios centrais da filosofia das criptomoedas.

Vale lembrar que a Prova de História não é perfeita. Esse modelo acrescenta muita complexidade à arquitetura da rede da Solana, tornando-a mais difícil de entender e podendo aumentar o risco de bugs ou vulnerabilidades. Devido à computação intensiva exigida pelas Funções de Atraso Verificável, os nós da Solana precisam de hardware mais potente. No curto prazo, isso aumenta o custo de participação na rede. Graças à Lei de Moore, essa barreira de hardware deve diminuir com o tempo, à medida que equipamentos potentes antes caros se tornam mais acessíveis. A Lei de Moore é a observação de que o número de transistores em um microchip dobra aproximadamente a cada dois anos, aumentando o poder computacional.

Conclusão

Parabéns! Neste tutorial, exploramos as particularidades dos algoritmos de consenso, o que eles são, por que você deve conhecê-los e algumas implementações populares. A esta altura, você já deve ter uma compreensão abrangente dos algoritmos de consenso. Entender esses algoritmos não é apenas um exercício acadêmico: é uma necessidade prática. Esse conhecimento oferece uma compreensão fundamental das redes sobre as quais você desenvolve e influencia diretamente sua capacidade de criar aplicativos robustos e eficientes. Assim, você pode contribuir de forma significativa para as comunidades blockchain das quais participa. No cenário em rápida evolução da tecnologia blockchain, esse conhecimento é indispensável.

Olhando para o futuro, podemos esperar o surgimento de algoritmos de consenso ainda mais inovadores. Também podemos esperar que os modelos atuais sejam atualizados e ajustados para enfrentar os desafios mais recentes de escalabilidade, segurança e eficiência. Seja você investidor, desenvolvedor ou entusiasta de blockchain, este é um momento empolgante para se envolver com esse tipo de tecnologia proprietária. Seu conhecimento sobre algoritmos de consenso coloca você na vanguarda da inovação e permite navegar por esse espaço enquanto ele mantém sua trajetória ascendente.

Se você leu até aqui, anon, valeu!

Recursos adicionais / Leituras complementares

Assine a Helius

Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos

Imagem ampliada