Pular para o conteúdo principal

Prova de participação (PoS)

Última edição: , Invalid DateTime

A prova de participação (PoS) é a base do mecanismo de consenso do Ethereum. O Ethereum ativou seu mecanismo de prova de participação em 2022 porque é mais seguro, consome menos energia e é melhor para implementar novas soluções de escalabilidade em comparação com a arquitetura de prova de trabalho anterior.

Pré-requisitos

Para entender melhor esta página, recomendamos que você primeiro leia mecanismos de consenso.

O que é prova de participação (PoS)?

A prova de participação está subjacente a certos mecanismos de consenso usados por cadeias de blocos para obter consenso distribuído. Na prova de trabalho, os mineradores provam que têm capital em risco gastando energia. O Ethereum usa prova de participação, em que os validadores participam explicitamente do capital na forma de ETH em um contrato inteligente no Ethereum. Esse ETH colocado atua como garantia, que pode ser destruída se o validador se comportar de forma desonesta ou preguiçosa. O validador é então responsável por verificar se os novos blocos propagados pela rede são válidos e se, ocasionalmente, criam e propagam novos blocos por conta própria.

A prova de participação vem com uma série de melhorias no sistema de prova de trabalho agora obsoleto:

  • melhor eficiência energética – não há necessidade de usar muita energia em cálculos de prova de trabalho
  • barreiras de entrada mais baixas, requisitos de hardware reduzidos — não há necessidade de hardware de elite para ter a possibilidade de criar novos blocos
  • risco de centralização reduzido — a prova de participação deve levar a mais nós protegendo a rede
  • devido à baixa necessidade de energia, é necessário emitir menos ETH para incentivar a participação
  • penalidades econômicas por mau comportamento tornam os ataques de estilo 51% exponencialmente mais caros para um invasor comparado à prova de trabalho
  • a comunidade pode recorrer à recuperação social de uma cadeia honesta se um ataque de 51% tiver que superar as defesas criptoeconômicas.

Validadores

Para participar como validador, um usuário deve depositar 32 ETH no contrato de depósito e executar três softwares separados: um cliente de execução, um cliente de consenso e um validador. Ao depositar seu ETH, o usuário entra em uma fila de ativação que limita a taxa de novos validadores que entram na rede. Uma vez ativados, os validadores recebem novos blocos de pares na rede Ethereum. As transações entregues no bloco são reexecutadas e a assinatura do bloco é verificada para garantir que o bloco seja válido. O validador então envia um voto (chamado de atestação) a favor desse bloco para toda a rede.

Enquanto na prova de trabalho, o tempo dos blocos é determinado pela dificuldade de mineração, na prova de participação o tempo é fixo. O tempo na prova de participação do Ethereum é dividido em espaços (12 segundos) e épocas (32 espaços). Um validador é selecionado aleatoriamente para ser um proponente de bloco em cada espaço. Esse validador é responsável por criar um novo bloco e enviá-lo para outros nós da rede. Também em cada slot, um comitê de validadores é escolhido aleatoriamente, cujos votos são utilizados para determinar a validade do bloco proposto.

Como uma transação é executada na Ethereum PoS

O seguinte fornece uma explicação de ponta a ponta de como uma transação é executada na proof-of-stake da Ethereum.

  1. Um usuário cria e assina uma href="/developers/docs/transactions/">transação/a> com sua chave privada. Isso geralmente é feito por uma carteira ou uma biblioteca como a ether.js(opens in a new tab), web3js(opens in a new tab), web3py(opens in a new tab) etc, mas sem o conhecimento do usuário está fazendo uma solicitação para um nó usando o Ethereum JSON-RPC API. O usuário define a quantidade de gás que está disposto a pagar como gorjeta a um validador para incentivá-lo a incluir a transação em um bloco. As dicas são pagas ao validador enquanto a taxa básica é paga queimado.
  2. A transação é enviada para um cliente de execução Ethereum que verifica a sua validade. Isto significa garantir que o remetente tem ETH suficiente para realizar a transação e eles o assinaram com a chave correta.
  3. Se a transação for válida, o cliente de execução adiciona-o à sua mempool local (lista de transações pendentes) e também a transmite para outros nós por meio da rede gossip da camada de execução. Quando outros nós ouvem sobre a transação, eles a adicionam à sua mempool local também. Usuários avançados podem abster-se de transmitir suas transações e, ao invés disso, encaminhá-la para construtores de blocos especializados como o Flashbots Auction(opens in a new tab). Isso permite que eles organizem as transações nos próximos blocos para obter o máximo lucro (MEV).
  4. Um dos nós na rede é o proponente de blocos para o slot atual, tendo sido previamente selecionado pseudoaleatoriamente usando RANDAO. Este nó é responsável pela construção e transmissão do próximo bloco a ser adicionado à blockchain Ethereum e pela atualização do estado global. O nó é composto por três partes: um cliente de execução, um cliente de consenso e um cliente validador. O cliente de execução empacota transações da mempool local em um "payload de execução" e executa-os localmente para gerar uma mudança de estado. Essa informação é passada para o cliente de consenso onde o payload de execução é encapsulado como parte de um "beacon block" que também contém informações sobre as recompensas, penalidades, apertos, atestações etc. que permitem que a rede concorde sobre a sequência de blocos na cabeça da cadeia. A comunicação entre os clientes de execução e consenso é descrita em mais detalhes em Conectando os clientes de consenso e de execução.
  5. Outros nós recebem o novo bloco beacon na rede gossip na camada de consenso. Eles o passam para seu cliente de execução onde as transações são novamente executadas localmente para garantir que a proposta alteração de estado é válida. O cliente validador então atesta que o bloco é válido e é o bloco seguinte lógico em sua visão da cadeia (ou seja, ele constrói na cadeia com o maior peso de atestações, conforme definido nas regras de escolha de fork (bifurcação)). O bloco é adicionado ao banco de dados local em cada nó que o atestar.
  6. A transação pode ser considerada "finalizada", ou seja, que não pode ser revertida, se se tornou parte de uma cadeia com um "link super maioritário" entre dois pontos de verificação. Os pontos de verificação ocorrem no início de cada período e para ter um link super majoritário devem ambos ser atestados a 66% do total de ETH em stake na rede.

Mais detalhes sobre finalidade podem ser encontrados abaixo.

Finalidade

Uma transação tem "finalidade" em redes distribuídas quando é parte de um bloco que não pode mudar sem que uma quantidade significativa de ETH seja queimada. Na prova de participação da Ethereum, isto é gerenciado usando blocos de pontos de verificação. O primeiro bloco em cada época é um ponto de verificação. Os validadores votam nos pares de pontos de verificação que eles consideram válidos. Se um par de pontos de verificação atrair votos que representem pelo menos dois terços do total de ETH envolvido, os checkpoints serão atualizados. O mais recente dos dois (alvo) torna-se "justificado". O primeiro dos dois já é justificado porque era o "alvo" na época anterior. Agora ele é atualizado para "finalizado". Para reverter um bloco finalizado, um invasor se comprometeria a perder pelo menos um terço do fornecimento total de ETH envolvido. A razão exata para isso é explicada nesta postagem do blog da Ethereum Foundation(opens in a new tab). Uma vez que a finalidade exige a maioria de dois terços, um invasor poderia impedir que a rede chegue à finalidade votando com um terço da participação total. Existe um mecanismo de defesa contra isso: o vazamento de inatividade(opens in a new tab). Isso é ativado sempre que a cadeia falha em finalizar por mais de quatro épocas. O vazamento de inatividade afasta o ETH envolvido dos validadores que votam contra a maioria, permitindo que a maioria recupere uma maioria de dois terços e finalize a cadeia.

Segurança criptoeconômica

A execução de um validador é um compromisso. Espera-se que o validador mantenha hardware e conectividade suficientes para participar da validação e proposta de bloco. Em troca, o validador é pago em ETH (seu saldo colocado aumenta). Por outro lado, participar como validador também abre novos caminhos para os usuários atacarem a rede para ganho pessoal ou sabotagem. Para evitar isso, os validadores perdem as recompensas de ETH se não participarem quando chamados, e sua participação existente pode ser destruída ao se comportarem de forma desonesta. Existem dois comportamentos primários que podem ser considerados desonestos: propor vários blocos em um único espaço (equívoco) e enviar atestações contraditórias. A quantidade de ETH reduzida depende de quantos validadores também estão sendo removidos ao mesmo tempo. Isso é conhecido como "penalidade de correlação"(opens in a new tab) e pode ser menor (em torno de ~1% de participação para um único validador reduzido por si só) ou pode resultar na destruição de 100% da participação do validador (evento de remoção em massa). Ela é imposta na metade de um período de saída forçada que começa com uma penalidade imediata (até 0,5 ETH) no dia 1, a penalidade de correlação no dia 18, e finalmente, a expulsão da rede no dia 36. Os validadores recebem todos os dias pequenas penalidades de atestações porque estão presentes na rede, mas não enviam votos. Tudo isso significa que um ataque coordenado seria muito caro para o invasor.

Escolha da bifurcação

Quando a rede funciona de maneira otimizada e honesta, há apenas um novo bloco no início da cadeia, e todos os validadores o atestam. No entanto, é possível que os validadores tenham visões diferentes do cabeçalho da cadeia devido à latência de rede ou porque um proponente de bloco se equivocou. Portanto, os clientes de consenso exigem um algoritmo para decidir qual deles favorecer. O algoritmo usado na prova de participação do Ethereum se chama LMD-GHOST(opens in a new tab) e funciona identificando a bifurcação que tem o maior peso de atestações em seu histórico.

Prova de participação e segurança

A ameaça de um ataque de 51%(opens in a new tab) ainda existe na prova de participação, como na prova de trabalho, mas ainda é mais arriscada para os invasores. Um invasor precisaria de 51% do ETH colocado em participação. Eles poderiam então usar suas próprias atestações para garantir que sua bifurcação preferida fosse aquela com o maior número de atestações acumuladas. O “peso” das atestações acumuladas é o que os clientes de consenso usam para determinar a cadeia correta, de modo que esse invasor conseguiria tornar sua bifurcação a opção padrão. No entanto, um ponto forte da prova de participação sobre a prova de trabalho é que a comunidade tem flexibilidade para montar um contra-ataque. Por exemplo, os validadores honestos podem decidir continuar construindo a cadeia minoritária e ignorar a bifurcação do invasor enquanto encorajam aplicativos, agências de câmbio e pools a fazerem o mesmo. Eles também podem decidir remover forçadamente o invasor da rede e destruir o ETH colocado em participação. Estas são defesas econômicas fortes contra um ataque de 51%.

51% dos ataques são apenas um tipo de atividade maliciosa. Os maus atores podem tentar ataques de longo alcance (embora a finalidade do dispositivo neutralize esse vetor de ataque), “reorganizações” de curto alcance (embora os prazos de reforço e atestações do proponente atenuem isso), ataques de devolução e de saldo (também atenuados pelo reforço do proponente e, mesmo assim, esses ataques só foram demonstrados sob condições de rede idealizadas) ou ataques de avalanche (neutralizados pela regra dos algoritmos de escolha de bifurcação, considerando apenas a mensagem mais recente).

No geral, a prova de participação, conforme implementada no Ethereum, demonstrou ser economicamente mais segura do que a prova de trabalho.

Prós e contras

PrósContras
O staking facilita a participação dos indivíduos na segurança da rede, promovendo a descentralização. o nó validador pode ser executado em um laptop normal. Os pools de participação permitem que os usuários participem sem ter 32 ETH.A prova de participação é mais recente e menos testada na prática em comparação com a prova de trabalho
A participação é mais descentralizada, As economias de escala não se aplicam da mesma forma que para a mineração de PoW.A prova de participação é mais complexa de implementar do que a prova de trabalho
A prova de participação oferece maior segurança criptoeconômica do que a prova de trabalhoOs usuários precisam executar três softwares para participar da prova de participação do Ethereum.
É necessário emitir uma quantidade menor de novos ETH para incentivar os participantes da rede

Mais de um aprendiz visual?

Leitura adicional

Este artigo foi útil?