Atualização do design do Ouroboros Genesis
Um mergulho profundo no design e implementação do Ouroboros Genesis, a mais recente encarnação do protocolo de consenso responsável pela confiabilidade e segurança da Cardano
7 de maio de 2024 Nicholas Frisby 11 minutos de leitura
Ouroboros Genesis é uma série de melhorias no já robusto protocolo Ouroboros, com contramedidas para proteger um nó de rede quando ele é novo ou retorna após uma ausência.
Ouroboros é o protocolo de consenso no coração da blockchain Cardano. Dado o desenvolvimento contínuo e a crescente aceitação do Cardano, a Ouroboros progrediu no caminho de atualização planejado . Ouroboros Classic foi o primeiro protocolo de prova de participação comprovadamente seguro. Ouroboros BFT foi uma solução provisória que possibilitou a atualização do Byron . Ouroboros Praos continuou o desenvolvimento do Ouroboros Classic. A evolução da Ouroboros irá um passo além com a Ouroboros Genesis , que está atualmente planejada para ser entregue no terceiro trimestre de 2024.
Este artigo descreve atualizações recentes no desenvolvimento e implementação do protocolo Ouroboros Genesis.
A história de Ouroboros até agora
Um blockchain é um livro-razão distribuído replicado em máquinas chamadas nós. Como não existe uma autoridade central única, deve existir um mecanismo para garantir a consistência e a imutabilidade de todas as cópias do livro-razão. Esse mecanismo é o protocolo de consenso. O protocolo também estabelece incentivos para que os nós validem novos blocos e os adicionem à cadeia.
Ouroboros divide o tempo de Cardano em épocas, que são subdivididas em slots. Os slots representam curtos períodos de tempo em que os blocos podem ser criados.
O Ouroboros Classic é comprovadamente seguro quando a maioria dos nós está online e possui cópias consistentes do razão. Os adversários não conseguiam prever qual nó seria o próximo líder de slot (o nó que adiciona um bloco à cadeia), tornando os ataques muito caros.
Ouroboros Praos aumentou a aleatoriedade na seleção do próximo líder do slot e adicionou contramedidas para outros possíveis ataques.
Ouroboros Genesis abordará a situação em que um nó se junta à rede pela primeira vez (começando no bloco genesis ) ou volta após uma ausência prolongada. Esses nós estão em uma situação vulnerável até que se recuperem. Por exemplo, um ataque de longo alcance ocorre quando um adversário tenta reescrever a história da cadeia. O adversário acumula uma grande aposta, para permitir-lhe criar blocos secretamente mais rápido do que a cadeia principal. Então, quando a cadeia histórica alternativa estiver pronta, o adversário tenta mudar a cadeia principal para a cadeia do adversário. A implementação do Genesis irá mitigar ataques de longo alcance, a menos que o nó de sincronização seja eclipsado . Um ataque eclipse ocorre quando o adversário tenta cercar o nó da vítima com pares maliciosos, obscurecendo a rede real.
Últimos desenvolvimentos
Gênesis introduz os seguintes novos conceitos:
- pares do razão
- checkpoint leve (como um substituto/substituição temporário)
- limite de ansiedade (LoE)
- desconexões de densidade de gênese (GDD)
- limite de paciência (LoP)
- a máquina de estado Gênesis.
Pares contábeis
O afastamento mais profundo do artigo do Genesis foi uma decisão arquitetônica inicial para preservar a limitação de reversão do nó Praos. No Praos, um nó Cardano não reverterá mais de 2.160 blocos sem intervenção manual. Conforme descrito no artigo do Genesis, um nó sob ataque de eclipse só poderia selecionar extensões de uma cadeia adversária durante anos e então, quando finalmente se conectasse a um nó que atendesse à cadeia honesta, reverteria abruptamente qualquer número de blocos.
Como na prática não é necessário que um nó tenha capacidade de reversão ilimitada, os arquitetos priorizaram o limite de reversão, que é fundamental para muitos limites de uso de recursos. Descartá-lo para o Genesis removeria um invariante básico invocado por uma parte significativa do trabalho de engenharia anterior. Além disso, desde que o nó Cardano Genesis sincronizado tenha acesso a um par honesto e saudável, ele não deverá, como o nó Praos, exigir uma reversão de mais de 2.160 blocos.
Os eclipses são potencialmente uma ameaça mais significativa ao nó Gênesis do que o expresso no artigo, que não os aborda diretamente. Esses ataques colocam em risco a propriedade de segurança do Genesis, uma vez que um eclipse que dura mais do que alguns segundos é suficiente para que um nó Genesis sincronizado selecione potencialmente 2.161 blocos de uma cadeia adversária, apesar de implementar fielmente as comparações de densidade do Genesis. Sem o conhecimento da cadeia honesta, a regra do Gênesis simplesmente selecionará a cadeia mais densa atualmente acessível. Numa situação de eclipse, essa pode não ser necessariamente a cadeia honesta. Isto contrasta com o artigo do Genesis, no qual um nó eclipsado e seus usuários são meramente atrasados, confusos, mal informados, etc. Isso acarreta riscos relacionados, mas não compromete as propriedades de segurança ou de vivacidade, uma vez que o nó poderia eventualmente conectar um par honesto e portanto, recuperar.
Considerando apenas uma rede Praos, na qual os nós teoricamente nunca ficam para trás, os eclipses ainda podem ser prejudiciais. A principal diferença com o Genesis é que um nó Praos (inerentemente capturado) pode resistir a um eclipse muito mais longo antes que haja uma probabilidade significativa de que ele possa se comprometer com uma cadeia adversária. No entanto, mesmo sem considerar a vulnerabilidade extra durante a sincronização, um nó Praos precisa de alguma defesa contra eclipses.
Uma defesa é introduzir o conceito de pares contábeis na lógica de seleção de pares para limitar suficientemente a probabilidade e a duração dos eclipses. Durante a sincronização, um nó Genesis ajusta sua configuração de peer do razão para reduzir drasticamente a probabilidade de ser eclipsado. E sem eclipses, o nó Genesis nunca selecionará 2.161 blocos de uma cadeia adversária.
A seleção de pares alterada funciona assim. Ao examinar uma distribuição de participação recente, um nó Genesis seleciona pares de amostra que participaram da manutenção da rede, reduzindo bastante a probabilidade de seleção de nós maliciosos.
Uma alternativa: checkpoint leve
O artigo do Genesis estabelece que a melhor cadeia dentro de uma rede Praos saudável terá mais blocos do que qualquer outra cadeia em uma janela fixa de slots imediatamente após a interseção das duas cadeias. A única exceção é se a rede Praos não estiver íntegra.
Uma interrupção grave da rede justificaria a execução de um plano de recuperação de desastres, que requeria cooperação fora da cadeia entre as partes interessadas para reescrever a cadeia dentro do intervalo da interrupção para reparar a cadeia honesta. Depois que isso acontecer, a regra de Gênesis favoreceria novamente a cadeia honesta.
No entanto, um plano de recuperação de desastres é inerentemente difícil e caro de executar. Pelo menos enquanto isso, um mecanismo simples de checkpoint permitiria que um subconjunto cooperante suficientemente grande de operadores vigilantes de pool de participação mantivesse rápida e facilmente o controle da rede durante ou imediatamente após a interrupção da produção do bloco.
A lógica é simples e consistente com o resto do protocolo: um arquivo de configuração especificando uma lista de números de bloco e pares de hash, cada um dos quais faz com que qualquer outro bloco com o mesmo número de bloco seja tratado como inválido. Os dados de configuração desse ponto de verificação devem ser usados com cuidado e adquiridos somente de fontes confiáveis. Idealmente, a eventual execução do plano de recuperação permitirá (e até exigirá) que as adições reativas à lista de pontos de verificação sejam temporárias. Os únicos pontos de verificação permanentes serão o conjunto que garante que as chaves de gênese da era Byron não sejam mais relevantes para a cadeia Cardano.
Limite de ansiedade
Como os pares do razão evitam efetivamente eclipses, um nó de sincronização pode assumir que possui pelo menos um par íntegro atendendo a toda uma cadeia honesta. A propriedade de segurança é, portanto, diretamente garantida simplesmente proibindo o nó Genesis de sincronização de selecionar mais de 2.160 blocos de uma cadeia após a interseção das cadeias de seus pares do razão. Ele selecionará apenas blocos com os quais todos os pares do razão concordam, o que quase certamente inclui um par honesto. Essa restrição é chamada de limite de ansiedade (LoE) , porque o nó de sincronização não deve se comprometer avidamente com o melhor bloco que viu até agora. Um par adversário pode servir seus blocos alternativos com muito mais rapidez do que qualquer par honesto pode servir os blocos históricos.
É trivial para um adversário abusar da LoE para fazer com que a vítima pare de sincronizar os blocos, violando a propriedade de atividade do nó de sincronização.
Existem três maneiras de fazer isso:
• o par atacante afirma que não tem mais blocos;
• o par atacante serve uma cadeia alternativa;
• o par atacante afirma que tem blocos alternativos, mas também não os serve.
A regra fundamental do artigo do Gênesis atenua diretamente as duas primeiras. Se dois pares estiverem atendendo cadeias diferentes e pelo menos uma das cadeias tiver pelo menos 2.161 blocos após a interseção, o Genesis favorece a cadeia que possui mais blocos na janela fixa de slots após a interseção das duas cadeias. (Uma cadeia honesta sempre vencerá essa comparação. Lembre-se de que um prefixo compartilhado reflete uma interseção de cadeia, mesmo que uma das cadeias seja simplesmente a extensão de outra.) O nó Gênesis favorecerá a cadeia honesta ao se desconectar do outro ponto. Esta ação é conhecida como desconexão de densidade Genesis (GDD) . Depois de GDDs suficientes, a intersecção dos pares restantes estará mais adiante na cadeia histórica honesta.
Limite de paciência
O terceiro vetor de ataque é o mais difícil de analisar. O GDD está desabilitado porque o par afirma ter mais blocos. Ou seja, afirma que a contagem de blocos nessa janela fixa aumentará se for permitido mais tempo para servir mais blocos. Um par honesto sempre faz essa afirmação genuinamente, até que o nó de sincronização realmente tenha todos os blocos honestos. Mas um colega atacante poderia fazer essa afirmação de má-fé. O limite de paciência (LoP) garante que um par que afirma ter mais blocos deva realmente enviá-los, e fazê-lo prontamente. A principal complicação é que mesmo pares honestos não conseguem manter a capacidade de resposta perfeita por horas a fio, ocasionalmente terão picos de latência, etc. Por esse motivo, o LoP é implementado como um balde furado para cada par, onde o vazamento é a taxa de processamento. blocos enquanto o peer reivindicou blocos e os está servindo mais lentamente do que alguma taxa mínima generosa, mas a capacidade de bucket de cada peer honesto será alta o suficiente para absorver explosões de latência normalmente esperadas de peers de contabilidade saudáveis.
A máquina de estado Gênesis
O nó Genesis desabilitará LoE, GDD e LoP assim que concluir que foi capturado, por dois motivos importantes. Primeiro, um nó capturado em uma rede Praos deve fundamentalmente cunhar o melhor bloco possível no slot em que foi eleito. Por exemplo, se tal nó ainda estivesse usando as regras do Genesis, um adversário forte poderia potencialmente abusar da LoE para proibir temporariamente a vítima de selecionar o bloco que acabou de cunhar, evitando assim que ele se propagasse para a rede. É difícil limitar as consequências de tal vetor em todo o sistema e, portanto, o nó Genesis deve se comportar exatamente como um nó Praos sempre que não estiver sincronizando.
Em segundo lugar, um nó capturado não precisa de tantos pares quanto um nó sincronizado, uma vez que não é tão vulnerável a eclipses. Portanto, a carga extra significativa na rede devido ao fato de todos os nós manterem contagens de peers inflacionadas é desnecessária e indesejável. A máquina de estado Genesis gerencia as transições do nó entre se considerar capturado ou não:
• Quando capturado, o nó desativa LoE, GDD e LoP. • Um nó conclui que foi capturado se estas condições forem atendidas:
- tem pares de razão suficientes
- todos os pares afirmam não ter blocos adicionais (o que um LoP bem ajustado garante que acontecerá em breve)
- o nó já selecionou a melhor cadeia de pares.
Isto é mais robusto do que confiar na idade da seleção local, etc., uma vez que um par atacante pode ser capaz de acionar tais limites, fazendo com que a vítima baixe prematuramente as suas defesas.
• Um nó volta à sincronização se a ponta de sua cadeia for muito antiga (por exemplo, 20 minutos ou mais). Notavelmente, isso acontecerá durante a vida útil do processo do sistema operacional do nó se a máquina dormir por tempo suficiente (por exemplo, um usuário fecha a tampa do laptop por um tempo).
Próximos passos
O design acima se estabilizou ao longo do último ano. Embora ainda esteja evoluindo um pouco, não houve grandes mudanças. A IOG tem colaborado com a Tweag durante os últimos meses para implementá-la e testá-la.
A primeira implementação compatível com Genesis está programada para lançamento no terceiro trimestre de 2024. Nesta fase, a maior incógnita restante é o grau de otimização necessário para compensar o aumento da contagem de pares necessário para evitar eclipses.
Até então, o iminente design de pares de bootstrap serve como um incremento em direção ao Genesis. A máquina de estado bootstrap é uma variante mais simples da máquina de estado Genesis. Durante a sincronização, um nó se comunica apenas com pares de bootstrap, cada um dos quais é confiável e, portanto, LoE, GDD e LoP são desnecessários. Em contraste, o Genesis permitirá que um nó de sincronização inclua com segurança pares não confiáveis, desde que não seja eclipsado (ou seja, desde que um par seja honesto), o que permitirá aposentar os pares de bootstrap, descentralizando assim a infraestrutura para sincronizar nós e cumprindo a promessa do Ouroboros Genesis.
Neil Burgess contribuiu para esta peça.
1 post - 1 participant