图片

O Internet Computer Blockchain depende do protocolo peer-to-peer (P2P), que distribui mensagens (artefatos) entre nós em cada sub-rede. O protocolo é um conjunto de protocolos que executam o Internet Computer Blockchain, incluindo o Internet Computer Consensus Protocol, Protocolo DKG (geração de chave distribuída) ou protocolo de sincronização de estado.

Cada um desses protocolos gera artefatos e requer que a camada P2P distribua esses artefatos aos pares na sub-rede. Representamos cada um desses protocolos como clientes P2P, que servem como atualizações acima da camada P2P.

图片
Figura 1: Arquitetura geral dos computadores da Internet

Após a introdução de uma camada P2P separada para sincronização de estado, uma nova camada P2P está sendo introduzida para todos os outros clientes P2P na pilha de protocolos do computador da Internet. Esta nova camada P2P fornece desempenho de rede aprimorado, garantindo o nó necessário garantido e mais fácil de detectar. mau comportamento.

A camada P2P recentemente proposta utiliza a nova camada de transporte baseada em QUIC. Portanto, com a migração para esta nova camada, a camada P2P dos computadores da Internet deixará completamente de usar o TCP. Camada P2P.

Cada solicitação é enviada como um novo fluxo QUIC e processada independentemente de outras solicitações, o que evita possíveis problemas de bloqueio inicial que, pelo menos em teoria, poderiam causar problemas de atividade.

A nova camada P2P introduz o uso de uma nova estrutura de dados abstrata chamada tabela de slots, que facilita o controle da distribuição de artefatos aos pares, mantendo a entrega suficiente para cada par com base na qualidade da conexão, sem afetar outros pares. também torna mais fácil detectar má conduta entre pares.

À medida que a nova camada P2P proposta for aceita, cada cliente usará uma instância separada do protocolo P2P, onde a sincronização de estado usará uma instância projetada especificamente para ele, e o restante dos clientes usará uma instância separada da nova camada P2P que será discutido neste artigo descrito em detalhes.

A implementação da camada P2P recentemente proposta começa com a adoção de uma série de propostas NNS que fazem a transição da distribuição de artefatos de chamadas externas HTTPS para usar a nova camada P2P, após a qual todos os clientes restantes serão movidos, incluindo o protocolo de consenso, eventualmente usando o antigo A camada P2P está obsoleta.

Antecedentes: A camada P2P dos computadores da Internet

Em um nível muito alto, o protocolo P2P é responsável por distribuir quaisquer artefatos presentes no conjunto de artefatos verificados de cada cliente para pares na mesma sub-rede, contra os quais o cliente transmite esses artefatos para seus pares que precisam ser preenchidos.

图片
Figura 2: Interface entre a camada P2P e seus clientes

A Figura 2 mostra a interface entre o P2P e os clientes acima dele, que podem alterar arbitrariamente o conjunto de artefatos cada vez que on_state_change() é chamado.

Cada chamada retorna, em última análise, um conjunto de ChangeActions que corresponde à adição e remoção de artefatos do pool de artefatos validados daquele cliente, e a camada P2P deve usar essas informações para propagar o conteúdo do pool validado para os pares.

Os protocolos P2P existentes para computadores da Internet são baseados no fluxo de artefatos de cada nó para seus pares. Sempre que um artefato é adicionado a um pool verificado, um anúncio é transmitido para todos os pares. .

Enviando-o em vez do artefato em si como uma medida de economia de largura de banda para que o receptor possa decidir se deseja baixar o artefato (potencialmente grande), o nó remetente mantém um fluxo TCP para cada ponto no qual os anúncios são enviados (e posteriormente com base no solicitado). artefato).

A camada P2P deve garantir a entrega de artefatos entre nós honestos e nós operacionais e ser resiliente a comportamentos maliciosos de nós potencialmente maliciosos.

Todos os clientes relacionados ao consenso na camada P2P possuem duas propriedades importantes:

  • P1 - Número limitado de artefatos ativos: O conjunto de artefatos validados tem tamanho finito em qualquer momento, e o protocolo de consenso usa pontos de verificação para limpar artefatos periodicamente, de modo que o tamanho máximo C do conjunto pode ser usado como intervalo de ponto de verificação ( medido em blocos)) e tamanho da sub-rede.

  • P2 - Expiração explícita de artefatos: Se um artefato for removido do pool (é expurgado), ele não precisa mais ser propagado para os peers, ou, do ponto de vista do receptor, se nenhum peer possuir um artefato, é garantido que o O artefato não é exigido pelo receptor, mesmo que ele tenha falhado em recebê-lo quando foi excluído por todos os outros pares.

Estas duas propriedades são enfatizadas aqui porque apoiam importantes decisões de projeto, que serão explicadas em breve.

Contrapressão de rede

Em aplicações cliente-servidor tradicionais, o conceito de contrapressão é amplamente utilizado: se o receptor desacelerar no consumo de mensagens, o buffer do remetente fica cheio e então a camada de rede do remetente deve adotar os três seguintes caminhos:

  • Propague a contrapressão para a camada de aplicação, fazendo com que a aplicação diminua a produção de dados

  • Mensagens de buffer (possivelmente indefinidamente)

  • descartar mensagens de saída

Em uma blockchain isso se torna mais complicado, imagine que o remetente sofra pressão contrária de um colega que pode ou não ser honesto, adotar qualquer uma das abordagens acima pode levar a problemas graves:

  • Desacelerar a produção de dados significa desacelerar o blockchain, permitindo que esse comportamento seja um vetor de ataque de negação de serviço (DoS);

  • Buffers (possivelmente indefinidos) também se tornarão um vetor de ataque;

  • A eliminação de mensagens de saída pode significar que a entrega de mensagens a nós honestos, mas lentos, não é garantida.

Devido aos riscos de segurança das opções 1 e 2, a maioria dos blockchains escolhe a opção 3, no entanto, a opção 3 apresenta o risco de atividade do blockchain (ou seja, se mensagens suficientes forem descartadas, ele pode ficar preso), fornecendo à Internet a nova camada P2P proposto pela Computer supera o risco sem perder mensagens.

Nova camada P2P

A nova camada P2P funciona de forma muito diferente da existente, em primeiro lugar, nem sempre utiliza publicidade, se os artefactos forem suficientemente pequenos, serão enviados imediatamente sem qualquer publicidade, em segundo lugar, não utiliza um único fluxo, mas sim através do; as mesmas conexões QUIC usam vários fluxos; terceiro, porque não usa um único fluxo, gerencia o envio de artefatos de maneira muito diferente; quarto, introduz um protocolo ligeiramente diferente para comunicação entre pares;

Vamos dar um passo atrás e examinar o propósito da camada P2P ao atender protocolos de consenso e outros clientes com necessidades semelhantes (ou seja, sincronização não estatal). O objetivo é, para cada nó honesto, garantir que os pares possam receber qualquer coisa que o. O node tem em seu conjunto de artefatos validados, é claro, enquanto mantém tudo seguro, escalonável e com bom desempenho.

A nova camada P2P consegue isso introduzindo uma nova estrutura de dados abstrata chamada tabela de slots, que é usada para rastrear o conteúdo de um conjunto de artefatos validados e o processo de atualização dos pares sobre esse conteúdo. A estrutura de dados da tabela de slots é muito simples, mas. ele fornece exatamente o que é necessário para atender aos requisitos.

Estrutura de dados da tabela de slots

A tabela de slots é uma estrutura de dados abstrata mantida por cada nó no lado de envio e inferida por cada nó no lado de recebimento. O tamanho da tabela de slots no lado de envio corresponde exatamente ao número de artefatos ativos no pool de validação. , se você se lembrar da propriedade P1 acima, isso significa que a tabela de slots está limitada a alguma constante C.

Sempre que um artefato é adicionado ao pool de validação, ele é adicionado a um slot vazio na tabela de slots no lado de envio. Uma mensagem de atualização de slot está sendo enviada a todos os pares informando que o conteúdo do slot foi alterado. lado, cada par rastreia o status de cada uma de suas tabelas de slots com base na chegada de novas mensagens de atualização de slots.

Observe, entretanto, que o congestionamento e a contrapressão da rede podem causar atrasos nessas atualizações, de modo que a visão do receptor só eventualmente concorda com a tabela de slots do remetente.

Além das informações do artefato, cada slot também possui um número de versão que é incrementado globalmente a cada atualização do pool de validação, para que os destinatários possam receber mensagens de atualização aceitando apenas números de versão superiores aos deles para saber se é. uma nova atualização ou uma atualização antiga.

图片
Figura 3: Exemplo de estrutura de dados abstrata de tabela de slots

A Figura 3 mostra um exemplo desse processo: o remetente gera os artefatos de A a F, ele também exclui alguns deles no processo, e como as exclusões não são necessariamente propagadas para os pares, elas são colocadas na tabela de slots de seus pares. Você ainda pode ter excluído artefatos na visualização, e isso está correto porque o conteúdo do slot será eventualmente atualizado e propagado.

Para cada slot no lado do remetente, um novo conjunto de tarefas assíncronas (ou seja, threads verdes) é gerado - uma tarefa por slot por par e, como as tarefas são muito leves, elas também podem ser escalonadas para sub-redes maiores. Cada tarefa é responsável para enviar atualizações de slot e mensagens de maneira confiável para o slot correspondente e o peer correspondente.

Isso significa que a tarefa tentará enviar novamente a atualização até receber uma confirmação e sempre que o conteúdo do slot mudar, a tarefa irá parar de tentar enviar o conteúdo antigo e começar a tentar enviar o novo conteúdo, que pares lentos podem buscar lentamente Atualiza, mas não interfere em peers mais rápidos.

Essa abordagem é um pouco como uma combinação das abordagens 2 e 3 na discussão de contrapressão acima (armazenando mensagens em buffer na camada de rede e descartando mensagens) e resolve o problema de contrapressão sem abrir mão da resiliência e da vivacidade.

A correção desta abordagem decorre da propriedade P1 do cliente mencionada anteriormente, ou seja, o número limitado de artefatos ativos, o que garante que os slots C sejam suficientes em qualquer caso e, portanto, os slots possam ser reutilizados.

O protocolo acima não apenas permite que os pares sincronizem o conteúdo de seus conjuntos de artefatos verificados, mas também permite que os nós garantam que seus pares não anunciem mais do que artefatos C por vez. Se o número do slot da mensagem de atualização for maior que C, o receptor pode inferir imediatamente um comportamento inadequado por parte do remetente.

Quando um nó percebe na extremidade receptora que um artefato não existe mais nas tabelas de slots de qualquer um de seus pares, o nó pode remover com segurança o artefato do conjunto de artefatos não validados (se ainda existir) ou interromper qualquer tentativa de recuperá-lo. artefato se ainda não tiver sido recuperado.

Propriedade P2: A expiração explícita dos artefatos mencionados anteriormente garante que tais artefatos não sejam mais necessários para nenhum peer, portanto a tabela de slots também impõe um limite implícito no tamanho do pool de artefatos não validados: o pool não validado pode conter no máximo artefatos C de origem honesta. peers (já que eles devem ter aproximadamente o mesmo conteúdo no pool autenticado) e, no máximo, artefatos C de cada peer malicioso, já que ele pode usar C Um artefato completamente diferente envia spam para o IC.

Menos de 1/3 dos nós são potencialmente maliciosos, portanto, o tamanho total do pool não validado não pode exceder artefatos C*4*n/3.

Você deve ter notado que a descrição do design acima se refere apenas a artefatos e não menciona publicidade. A razão é que a publicidade é apenas uma otimização para melhorar a utilização da largura de banda e a nova camada P2P usa publicidade apenas para artefatos grandes (o limite atual está definido como). 1 KB).

Artefatos menores que o limite são enviados em uma mensagem de atualização de slot e, portanto, não precisam ser solicitados explicitamente pelo receptor posteriormente. Para artefatos maiores que o limite, um anúncio é gerado e enviado em uma mensagem de atualização, o cliente receptor pode então decidir se deseja solicitá-lo e de qual peer ele é solicitado.

Melhorar o desempenho

A implementação assíncrona usando QUIC e o envio direto de artefatos menores melhoram o desempenho da rede e, portanto, o desempenho do consenso.

图片图片
Figura 4: (Superior, camada P2P existente/inferior, nova camada P2P) Taxa de bloqueio ao longo do tempo em uma sub-rede de 60 nós com e sem carga pesada de sub-rede e latência de link aumentada artificialmente, a linha vertical indica o fim da carga alta.


A Figura 4 mostra os resultados de um experimento que conduzimos para comparar o desempenho da camada P2P existente e da nova camada P2P. Neste experimento, executamos uma carga de solicitações de 200 x 100 KB por segundo em uma sub-rede de data center de 60 nós. , e a taxa de bloqueio de consenso foi medida.

O gráfico mostra a taxa de bloqueio ao longo do tempo com uma linha para cada nó. Adicionamos manualmente um atraso de link de 80 ms para todos os links da rede em ambos os experimentos para simular sub-redes distribuídas geograficamente.

O gráfico acima mostra a taxa de bloqueio da camada P2P existente. Embora a sub-rede tenha progredido com sucesso, a taxa de bloqueio ficou muito instável quando a carga acabou, ela voltou ao normal, mas durante carga alta, isso significa. a taxa de bloqueio em toda a sub-rede é menor e, portanto, a latência percebida pelo usuário é maior.

A figura abaixo mostra a robustez da taxa de bloqueio da camada P2P recentemente proposta, com a sub-rede operando a uma taxa de bloqueio muito estável, mesmo sob carga pesada.

para concluir

A nova camada P2P para clientes de consenso e similares aumenta o desempenho dos computadores da Internet, permite melhor escalabilidade, reduz a complexidade do código e melhora o comportamento sob condições de rede imperfeitas.

Ele já está habilitado em algumas sub-redes apenas para artefatos relacionados a chamadas HTTPS, e a Fundação DFINITY apresentará em breve uma proposta para habilitá-lo para outros clientes.

Se aceita e implementada, toda a camada P2P dos computadores da Internet passaria a usar QUIC em vez de TCP, tornando a camada de rede dos computadores da Internet mais robusta, escalável e de alto desempenho.

Saiba mais sobre computadores com Internet:

图片图片

#内容挖矿 #P2P #ICP

Conteúdo IC que lhe interessa

Progresso Tecnológico | Informações do Projeto |

Colete e siga o canal IC Binance

Mantenha-se atualizado com as informações mais recentes