Criptomoeda: Proof-of-Authority (PoA)
Proof-of-Authority (PoA) é um mecanismo de consenso alternativo, que conta com validadores conhecidos e confiáveis para produzir blocos e, assim, fornecer poder computacional a uma rede. Ele permite transações relativamente mais rápidas usando um algoritmo de tolerância a falhas bizantinas (BFT) com identidade como aposta.
O Proof-of-Authority é um tipo de mecanismo de consenso voltado para empresas ou organizações privadas que desejam construir as suas próprias redes, que são essencialmente fechadas por natureza e não requerem a participação de utilizadores em geral.
Como uma rede que executa PoA é permitida, ela não requer nenhuma atividade de “ mineração ”. No entanto, os participantes da rede ainda podem implantar redundância executando vários nós ( node ) sob a mesma identidade.
Este tipo de mecanismo de consenso não consome muitos recursos, mas requer validadores para preservar a integridade dos seus nodes . Pode ser entendido como um mecanismo que incentiva uma atuação honesta e de acordo com o bom funcionamento de uma rede, em função da identidade e da reputação do utilizador em jogo.
O Proof-of-Authority requer que três condições estejam reunidas:
Identificação formal na cadeia para validadores; Elegibilidade com base em determinados critérios, incluindo, mas não se limitando a, associação com a organização ou boa reputação, etc .; Completa conformidade com os procedimentos definidos necessários para a produção de blocos e validação na rede.
Além disso, esses tipos de redes podem emprestar design e modos de operação de cadeias de bloqueio públicas existentes, como Ethereum ou Cardano, com mudanças notáveis.
Vantagens do Proof-of-Authority.
Comparado a outros tipos de consenso que requerem uma prova de recursos computacionais gastos (Prova de Trabalho) ou um “compartilhamento” existente (Prova de Participação), o consenso de PoA tem várias vantagens notáveis:
Hardware de alto desempenho não é necessário. Comparado ao consenso PoW, o consenso PoA não exige que os nós gastem recursos computacionais para resolver tarefas matemáticas complexas. O intervalo de tempo em que novos blocos são gerados é previsível. Para consensos PoW e PoS, esse tempo varia. Alta taxa de transação. Os blocos são gerados em uma sequência em um intervalo de tempo designado por nós de rede autorizados. Isso aumenta a velocidade com que as transações são validadas. Tolerância a nós comprometidos e maliciosos, desde que 51% dos nós não estejam comprometidos. Apla implementa um mecanismo de proibição para nós e meios de revogar direitos de geração de bloco.
Consenso Proof-of-Authority e vetores de ataque comuns.
Ataques de negação de serviço.
Um invasor envia um grande número de transações e bloqueios para um nó de rede alvo na tentativa de interromper a sua operação e torná-lo indisponível.
O mecanismo PoA torna possível a defesa contra este ataque:
Como os nós de rede são pré-autenticados, os direitos de geração de bloco podem ser concedidos apenas a nós que podem resistir a ataques DoS. Se um nó estiver indisponível por um determinado período, ele pode ser excluído da lista de nós de validação.
51% de ataque.
No consenso do PoA, o ataque de 51% exige que um invasor obtenha o controle de 51% dos nós da rede. Isso é diferente do ataque de 51% para os tipos de consenso de Prova de Trabalho, em que um invasor precisa obter 51% da potência computacional da rede. Obter o controle dos nós em uma rede de blockchain com permissão é muito mais difícil do que obter poder computacional.
Por exemplo, em uma rede do tipo consenso PoW, um invasor pode aumentar o poder de computação (desempenho) do segmento de rede controlado, aumentando assim a percentagem controlada. Isso não faz sentido para o consenso de PoA, porque o poder computacional do nó não tem efeito nas decisões de rede do blockchain.
Como funciona o consenso do Proof-of-Authority no Apla.
Validating nodes.
No Apla, apenas nós selecionados, chamados de nós de validação, podem gerar novos blocos. Esses nós mantêm a rede blockchain e o razão distribuído.
A lista de nós de validação é mantida no registro do blockchain. A ordem dos nós nesta lista determina a sequência em que os nós geram novos blocos.
The leader node.
A fórmula a seguir determina o nó líder atual , um nó que deve gerar um novo bloco no momento atual.
leader Current leader node. time Current time (UNIX). first First block generation time (UNIX). step Number of seconds in the block generation interval. nodes Number of nodes at the current block generation interval.
Geração de novos blocos.
O novo bloco é gerado por um leader node do intervalo de tempo atual. A cada intervalo de tempo, a função de líder é passada para o próximo node de validação da lista de nodes de validação.
Um novo bloco é criado.
O nó líder gera o novo bloco da seguinte forma:
Coleta todas as novas transações da sua fila de transações. Executa transações uma por uma. As transações que são inválidas ou não podem ser executadas são rejeitadas. Verifica a conformidade para bloquear os limites de geração . Cria um bloco com transações válidas e o assina com a chave privada do nó (algoritmo ECDSA). Envia este bloco para outros nós de validação.
O novo bloco é validado.
Outros nós de validação:
Receba o novo bloco e valide que:
O novo bloco foi gerado pelo nó líder de um intervalo atual. Não há outros blocos gerados pelo nó líder de um intervalo atual. O bloco é gerado e assinado corretamente.
Execute as transações do bloco uma a uma. Verifique se as transações são executadas com sucesso e dentro dos limites de geração de bloco.
Adicione ou rejeite o bloqueio, dependendo da etapa anterior:
Se a validação do bloco for bem-sucedida, adicione o novo bloco ao blockchain do nó. Se a validação do bloco falhou, rejeite o bloco e envie uma transação de bloco inválida. Se o nó de validação que criou este bloco inválido continuar gerando tais blocos, ele pode ser banido ou excluído da lista de nós de validação.
Forks.
Um fork é uma versão alternativa do blockchain. Uma bifurcação contém um ou mais blocos que foram gerados independentemente do resto do blockchain.
Os garfos geralmente ocorrem quando uma parte da rede fica dessincronizada. Os fatores que influenciam a probabilidade de bifurcações são a alta latência da rede, violação intencional ou não intencional de limites de tempo e dessincronização de tempo nos nós. Se os nós da rede tiverem uma distribuição geográfica significativa, o intervalo de geração do bloco deve ser aumentado.
Forks são resolvidos seguindo a regra de blockchain mais longa . Quando duas versões do blockchain são detetadas, os nós de validação revertem a versão mais curta e aceitam a mais longa.