Consenso Avalanche, o maior avanço desde Nakamoto
Nota do Editor: Esse texto foi traduzido do texto publicado pelo SEQ.
Consenso é o meio pelo qual uma série de votantes independentes (muitas vezes chamados de “validadores” ou “mineradores” como no Bitcoin) chegam a um acordo sobre uma decisão, garantindo que a rede tenha uma visão sincronizada dos dados, denominada “estado”. Sem consenso, não há como garantir que o estado que um validador acredita ser verdadeiro será compartilhado pelos outros nós da rede. Prova de Trabalho (sigla em inglês POW) e Prova de Participação (sigla em inglês POS) são comumente confundidos como protocolos de consenso. Eles não são protocolos de consenso, mas sim mecanismos de controle de ataques sybil. Um ataque do tipo Sybil é um tipo de ameaça a um sistema online onde uma pessoa tenta assumir o controle da rede criando múltiplas contas, nós ou poder de computação. PoS não alcança consenso por si só. Ele deve estar associado a um protocolo, como PBFT, Tendermint / Cosmos ou Avalanche, para tomar decisões. PoW, por si só, não é um mecanismo de consenso. No BTC / BCH, ele funciona com a regra de seleção da cadeia mais pesada / ”mais longa” para obter consenso. Ao longo da história de 45 anos de sistemas distribuídos, houve apenas três abordagens para o problema de consenso: Clássico, Nakamoto e Avalanche.
Protocolos de Consenso Clássicos
Os protocolos clássicos de consenso, como Practical Byzantine Fault Tolerance (PBFT), HotStuff e Tendermint / Cosmos, baseiam-se na votação geral e esse mecanismo tem sido usado desde os anos 1980. Eles geralmente têm um líder designado que inicia o processo de decisão e uma série de rodadas de comunicação geral entre todos para garantir que todos os nós corretos cheguem às mesmas decisões com certeza absoluta. As transações são finalizadas imediatamente após um nó receber respostas da fração necessária dos nós que compõem o sistema.
Eles normalmente requerem sobrecarga de comunicação quadrática com comunicação total de O (n²) (com 10 nós cada rodada requer 100 mensagens, com 100 nós cada rodada requer 10.000 mensagens e com 2.000 validadores cada rodada requer 4.000.000 de mensagens). No caso de o líder falhar, o overhead de comunicação aumenta ainda mais para O (n³), uma vez que é necessária uma mudança de visão. Além disso, eles precisam de um conhecimento preciso da associação de todos os nós participantes do consenso, quaisquer erros na manutenção da associação no sistema ou qualquer diferença nas visões da rede podem levar a violações de segurança. Se um invasor obtiver o controle de 1/3 +1 da rede, ele pode lançar um ataque de gasto duplo com sucesso garantido.
O protocolo clássico mais escalável, o HotStuff usado pelo Libra/Diem do Facebook (que foi desenvolvido por Ted Yin, que agora está trabalhando no protocolo Avalanche), suporta apenas cerca de 100 validadores antes que o desempenho comece a sofrer. Enquanto outros projetos usando protocolos de consenso clássicos afirmam escalar para milhares de nós, eles estão selecionando apenas uma pequena seleção aleatória de nós para realizar o consenso para cada bloco, enquanto os outros nós não estão participando do consenso. O custo de violar a segurança em tal sistema é tão baixo quanto o custo de corromper qualquer subcomitê, que pode ser muito baixo.
Devido às limitações na escalabilidade do número de participantes e sendo mais frágeis onde uma associação precisa precisa ser mantida, eles não são adequados para redes grandes, abertas e sem permissão onde os nós podem entrar e sair à vontade.
Devido às limitações na escalabilidade do número de participantes e sendo mais frágeis onde uma associação precisa precisa ser mantida, eles não são adequados para redes grandes, abertas e sem permissão onde os nós podem entrar e sair à vontade.
Protocolo de Consenso Nakamoto
O primeiro avanço nos protocolos de consenso foi com os protocolos de consenso Nakamoto e se tornaram populares com o surgimento do Bitcoin. Isso elimina a necessidade de comunicação geral entre todos os validadores como nos protocolos clássicos e, como tal, é um ajuste natural para configurações abertas e sem permissão, onde qualquer nó pode ingressar no sistema a qualquer momento. Ao contrário dos protocolos de consenso clássicos, eles fornecem uma garantia de segurança probabilística em vez de determinística. Um parâmetro de protocolo permite que essa probabilidade de um gasto duplo seja considerada arbitrariamente pequena, permitindo que sistemas financeiros de alto valor sejam construídos sobre essa base.
No entanto, esses protocolos são caros, perdulários e têm desempenho limitado. Requer cálculos inúteis que usam grandes quantidades de energia; uma análise da Agência Internacional de Energia estima que a mineração de criptomoedas usa pelo menos tanta energia quanto toda a nação da Irlanda. Como resultado, os sistemas baseados em Nakamoto constantemente vazam valor de seus ecossistemas para as empresas de energia. Para manter a segurança dos sistemas de prova de trabalho, os mineiros nunca podem ser desligados, garantindo assim que esse consumo de energia impressionante nunca acabe. Minar um bloco é difícil por design, então os protocolos Nakamoto finalizam as transações muito lentamente – leva uma hora para uma transação Bitcoin se tornar final, e essa baixa latência não vai melhorar nem mesmo com a tecnologia.
Protocolos de Consenso Avalanche
“Apenas três vezes na história de 45 anos de sistemas distribuídos, uma nova família surgiu. Avalanche é uma família totalmente nova, um grande avanço como o protocolo de Satoshi foi; combina o melhor do Satoshi com o melhor do clássico em escalas como nenhuma outra que permite que qualquer pessoa se integre na camada de consenso. ” – Emin Gün Sirer
Os protocolos de consenso de Avalanche são o próximo grande avanço nos protocolos de consenso, combinando os benefícios do consenso de Nakamoto (robustez, escala, descentralização) e todos os benefícios do consenso clássico (velocidade, finalidade rápida e eficiência energética). Em 2018, um artigo foi distribuído por um grupo de pseudônimos chamado Equipe Rocket que provou que os protocolos clássicos podem ser generalizados para se comportar de forma probabilística e obter grandes melhorias de desempenho como resultado.
Assim como Nakamoto trocou uma pequena chance de probabilidade de desempenho, o Avalanche também é probabilístico e pode tornar o erro tão pequeno que é ainda menos provável que uma violação de segurança ocorra em um nó Avalanche do que as chances de encontrar um hash SHA-256 colisão. Para colocar isso em uma perspectiva mais ampla, é dezenas de ordens de magnitude mais provável que um asteróide com potência para dar fim à vida humana colida com a Terra nos próximos cem anos do que uma colisão SHA-256 seja detectada nos próximos mil anos por uma rede computando 1 quintilhão hashes um segundo.
Os protocolos de avalanche também são leves e sustentáveis. Ao contrário dos protocolos Nakamoto, eles usam muito pouca energia e, quando não há trabalho a fazer, o sistema desativa (espera em um estado de baixo consumo de energia). É realmente uma virada de jogo, permitindo tps rápidos, embora tenha baixa latência. O número de mensagens que cada nó precisa lidar por decisão é O (k) e não aumenta conforme a rede aumenta, portanto, pode ser dimensionado para milhões de validadores, todos participando de um consenso para alcançar a descentralização em escala verdadeiramente global para blockchain sem permissão para adoção em massa de blockchain .
Os protocolos da família Avalanche são muito rápidos. Eles podem atingir finalidade irreversível, ou seja, confirmar a transação em menos de 3 segundos (com a maioria acontecendo em menos de 1 segundo), mais rápido do que uma transação típica de cartão de crédito. Eles suportam milhares de transações por segundo, mais do que a a taxa de transferência típica da Visa de 4500 TPS. E esses não são dados de marketing inventados que se vê em muitos projetos que são testados em alguns poucos nós em um único datacenter. Eles são retirados diretamente de uma rede Avalanche real e totalmente implementada em execução com 2.000 validadores na AWS, geo-distribuídos em todo o mundo em máquinas de baixo custo.
Resultados de desempenho mais alto (10.000+) podem ser obtidos assumindo um provisionamento de largura de banda maior para cada nó e hardware dedicado para verificação de assinatura.
Além disso, essas também são métricas na camada de base. As soluções de escalonamento da camada 2 aumentam imediatamente esses resultados consideravelmente.
Como funciona?
Em uma dada rodada, cada validador seleciona aleatoriamente K nós de toda a lista de validadores (a probabilidade de seleção é ponderada pelo valor da aposta) para consultar sua decisão preferida. Cada validador consultado responde com suas decisões preferidas, e se a maioria das respostas retornadas em uma rodada diferem para o nó que executa a consulta, então ele atualizará sua própria decisão preferida para refletir isso e responder a outros nós com essa resposta.
Para facilitar a demonstração, o diagrama abaixo mostra um conjunto validador de 64 nós, onde os nós devem decidir entre a cor Azul ou Amarelo. O número de nós selecionados aleatoriamente para consulta, representado como K, é 5. Inicialmente, focaremos apenas no nó no canto superior esquerdo que está mostrando amarelo como sua decisão preferida. Em seguida, selecionará 5 nós aleatórios de todo o conjunto de validadores (a probabilidade de seleção é ponderada pelo valor da aposta) para consultar sua decisão preferida (os nós selecionados foram destacados em vermelho).
Aqui você pode ver que 3 nós retornaram a resposta Azul, enquanto 2 nós retornaram a resposta amarela, portanto, Azul é a maioria e o nó superior esquerdo que executa a consulta atualiza sua decisão preferida para Azul.
Ainda focando apenas no nó superior esquerdo, na próxima rodada ele irá consultar outros 5 nós selecionados aleatoriamente para sua decisão preferida, neste caso são 4 Azuis e 1 Amarelo, assim ele mantém sua própria decisão preferida como Azul.
É importante perceber que embora estivéssemos focando apenas no nó superior esquerdo, cada nó está executando o mesmo processo, selecionando aleatoriamente seus próprios 5 nós para consultar cada rodada. Não há espera em turnos entre os nós para consultar, todos eles executam a tarefa de forma independente. Como pode ser visto abaixo, apenas olhando para 4 nós, cada um com seus próprios nós selecionados destacados em Vermelho, Preto, Verde, Roxo, você pode ver rapidamente quando isso aumenta para milhares que todos os participantes podem participar em consenso, mas a mesma carga é colocados em qualquer nó, independentemente do número total de participantes.
Ao fazer com que cada validador selecione aleatoriamente outros validadores a fim de perguntar a eles quais são suas preferências, os participantes do Avalanche criam confiança na decisão correta compartilhada por todos os nós da rede. Assim, embora um nó não consulte todos os outros nós como no consenso clássico, cada nó executa sua própria amostra de nós selecionados aleatoriamente, podendo ser escalonados para centenas de milhares ou milhões de nós sem adicionar muita sobrecarga em cada nó , pois estão consultando o mesmo número de nós. Com confiança suficiente, uma decisão é finalizada imediatamente. Esse processo acontece tão rapidamente que o Avalanche rivaliza com os principais sistemas de pagamento em sua capacidade de processar e liberar transações em uma rede. A seguir, segue exemplo do consenso sendo alcançado quando todos os nós estão executando a consulta usando a mesma quantidade de votos iniciais de Azul para Amarelo, você pode ver a rapidez com que eles chegam a uma decisão.
Avalanche oferece resistência a ataques de um conjunto de adversários arbitrariamente grande e parametrizável. Se a rede for parametrizada para um ataque de 33%, e um atacante tem 34% de participação, ao contrário dos protocolos de consenso clássicos, em que eles podem lançar um ataque de gasto duplo com sucesso garantido, com o Avalanche isso significa apenas que eles têm uma chance ligeiramente maior de ter sucesso, mas não é garantido. Como os protocolos Avalanche operam sem um líder, eles são imunes a uma grande classe de ataques que outras famílias de protocolo de consenso enfrentam. O grande número de validadores garante imutabilidade e resistência à censura que os protocolos de prova de trabalho, apoiados por um pequeno número de pools de mineração, não podem alcançar.
Existem atualmente 2 protocolos de consenso diferentes disponíveis chamados Snowman and Avalanche, enquanto a implementação de um terceiro chamado Frosty está no roadmap. Snowman estabelece um cronograma totalmente ordenado, que normalmente é necessário para contratos inteligentes. Já o Avalanche estabelece um cronograma parcialmente ordenado, onde não é necessário relacionar tudo a todo o resto, permitindo uma taxa de transferência muito maior e obter confirmações de transações muito mais rápidas, que são melhores para serem usados usadas para pagamentos e outras aplicações.
Para mais informações sobre como o Consenso Avalanche funciona acesse
https://medium.com/avalabs/avalanche-consensus-101-99c68a3e3159 , e também o White Paper sobre o Consenso https://files.avalabs.org/papers/consensus.pdf .
Marcelo Pravatta é engenheiro eletrônico formado pela USP, coproprietário do site www.criptos.com.br , entusiasta de criptomoedas e escola austríaca de economia.