Pular para o conteúdo

Rede Peer-to-Peer (P2P)

Por volta de 5 min

Os nós do Cardano e as interações entre eles são combinados em uma camada de rede, que distribui informações sobre transações e criação de blocos entre todos os nós ativos. Dessa forma, o sistema valida e adiciona blocos à cadeia e também verifica transações. Uma rede distribuída de nós deve manter os atrasos de comunicação ao mínimo e ser resiliente o suficiente para lidar com falhas ou limitações de capacidade.

No sistema federado de Byron, os nós eram conectados por uma configuração estática definida em um arquivo de topologia. Desde a introdução de Shelley, o sistema tem funcionado em modo híbrido. Passando do estado federado de conectividade de rede para o híbrido, as equipes entregaram uma rede P2P manualmente construída de nós de retransmissão SPO. Isso significa que os nós de produção de blocos SPO podem se conectar tanto a nós de retransmissão confiáveis quanto a outros nós de retransmissão operados por SPO. A conectividade híbrida não é automatizada, no entanto, ela permite a troca de informações de blocos e transações sem depender apenas de retransmissões confiáveis.

*Uma retransmissão confiável é aquela que o SPO, carteira ou exchange acessando a rede 'confia'. Embora esse papel tenha sido desempenhado principalmente pela IOG, outras entidades, como a Fundação Cardano, uma carteira ou exchanges, também podem executar retransmissões confiáveis. Nós produtores de blocos podem se conectar a quaisquer retransmissões que considerem confiáveis.

  1. Federado: introduzido na fase de desenvolvimento de Byron em 2017, nós centrais e de retransmissão confiáveis mantiveram a rede e conectaram usuários, carteiras e exchanges.

federado

  1. Híbrido: desde a fase de desenvolvimento de Shelley em 2020, nós produtores de blocos enviam e recebem comunicações por meio de retransmissões confiáveis e/ou uma ferramenta de atualização de topologia desenvolvida e gerenciada pela comunidade manualmente chamada atualizador de topologiaopen in new window.

híbrido

  1. P2P Dinâmico: fornece automação e resiliência para otimizar o desempenho da rede. As retransmissões SPO podem se conectar automaticamente umas às outras por meio de auto-descoberta e otimização.

p2p-dinâmico

Para garantir uma comunicação eficiente entre os nós, é desejável permitir conexões automatizadas de retransmissões SPO entre si, para que menos configuração estática seja necessária. O P2P dinâmico é gradualmente habilitado com o lançamento do nó v.1.35.6open in new window. Para mais detalhes, consulte este post no blogopen in new window.

Depois que o P2P Dinâmico for implantado, a rede continuará evoluindo com futuras adições, como o Ouroboros Genesis e o compartilhamento de pares:

  1. Ouroboros Genesis: em desenvolvimento. Qualquer pessoa que execute seu próprio nó ou carteira Daedalus se conectará a uma rede totalmente descentralizada e auto-organizada. Genesis permite inicialização segura do nó e remoção de retransmissões confiáveis.

gênesis

  1. Compartilhamento de pares: em desenvolvimento. O compartilhamento de pares facilitará a descoberta de pares potenciais que não estão registrados na cadeia dentro da rede global de nós do Cardano. Essa fase também permitirá que qualquer pessoa contribua para executar a rede, em vez de apenas usar recursos de SPOs.

compartilhamento-de-pares

Capacidades de P2P Dinâmico

A pilha de rede passa por uma série de melhorias para alcançar a resiliência de rede desejada. Essas melhorias não requerem uma mudança de protocolo, mas sim permitem a seleção automática de pares e a comunicação entre pares e nós.

A rede P2P é habilitada pelo uso dos seguintes componentes:

  • Governador de saída (anteriormente conhecido como governador P2P) ‒ gerencia a inicialização automática de conexões de saída entre pares e os classifica como frios, mornos ou quentes (conhecidos, prontos ou em uso). O governador estabelece um mapa de conectividade da rede local. Uma parte do governador é o governador de rotatividade, que otimiza o grafo de rede eliminando os 20% dos pares com desempenho mais baixo.
  • Servidor ‒ aceita conexões. Há um limite suave e um limite rígido no número de conexões que influenciam a velocidade da aceitação de conexão.
  • Governador de protocolo de entrada ‒ executa e governa 'mini-protocolos' de rede de entrada em uma conexão aceita.
  • Gerenciador de conexões ‒ rastreia o estado de cada conexão de rede: cada uma pode ser usada como uma conexão de saída morna ou quente ou usada pelo lado de entrada. Conexões mornas apenas mantêm conectividade enquanto as quentes participam ativamente do protocolo de consenso.

A seguir, vamos dar uma olhada mais de perto em como o governador de saída funciona para garantir a conectividade automatizada entre nós de pares na rede.

Funcionalidade do governador de saída

A rede Cardano consiste em vários nós de pares. Alguns nós de pares são mais ativos do que outros, alguns estabeleceram conexões e alguns devem ser promovidos para garantir o melhor desempenho do sistema. Cada nó produtor de blocos mantém um conjunto de pares mapeados em três categorias:

  • pares frios ‒ pares existentes sem uma conexão de rede estabelecida
  • pares mornos ‒ pares com uma conexão de suporte estabelecida, que é usada apenas para medições de rede sem implementar nenhum dos mini-protocolos de nó para nó
  • pares quentes ‒ pares que têm uma conexão, que está sendo usada por todos os três mini-protocolos de nó para nó

Pares recém-descobertos são inicialmente adicionados ao conjunto de pares frios. O governador de saída é então responsável pela gestão da conexão de pares: ele define quais pares são benéficos para fins de conexão e quais devem ser promovidos ou rebaixados entre conjuntos frios, mornos ou quentes.

O objetivo principal do governador de saída é manter o número alvo de pares frios, mornos e quentes. Isso cria e mantém um mapa de conectividade da parte local da rede e simplifica o processo de definição de conexões, tratando-os automaticamente.

Para estabelecer a conectividade entre nós, o governador de saída se envolve nas seguintes atividades:

  • promoção de pares frios a pares mornos
  • rebaixamento de pares mornos a pares frios
  • promoção de pares mornos a pares quentes
  • rebaixamento de pares quentes a pares mornos

O governador de saída precisa estabelecer e manter:

  • um número alvo de pares frios (por exemplo, 100)
  • um número alvo de pares quentes (por exemplo, entre 2-20)
  • um número alvo de pares mornos (por exemplo, entre 10-50)
  • um conjunto de pares mornos que são suficientemente diversos em termos de distância de salto e localizações geográficas
  • uma frequência alvo de rotação para mudanças quentes ou mornas
  • uma frequência alvo de rotação para mudanças mornas ou frias
  • uma frequência alvo de rotação para mudanças frias ou desconhecidas

descoberta-de-pares

Usar de 2 a 20 pares quentes é eficiente em termos de custos, pois os pares trocam apenas seus cabeçalhos de blocos. O corpo do bloco, por sua vez, é geralmente solicitado apenas uma vez e tende a seguir o caminho mais curto pelo gráfico de conectividade.

O objetivo dos pares mornos é fornecer acesso a pares que podem ser rapidamente promovidos a quentes (caso algum dos pares quentes falhe) e também fornecer candidatos para a rotação de pares quentes.

A política para selecionar quais pares mornos promover a quentes depende das medições ascendentes. O objetivo de um grau de rotação entre pares frios e mornos é, em parte, descobrir a distância de rede entre mais pares e permitir que pares mornos potencialmente melhores substituam os pares quentes existentes. Isso permite mais otimização e ajustes. Manter a diversidade nas distâncias de salto contribui para melhores tempos de distribuição de blocos em toda a rede distribuída globalmente.

No geral, esta abordagem segue um padrão comum para pesquisa ou otimização probabilística que usa um equilíbrio de otimização local com alguns elementos de disrupção de ordem superior para evitar ficar preso em um ótimo local ruim.

Os pares mantêm um conjunto limitado de informações, que é baseado em suas interações diretas anteriores. Pares frios, por exemplo, podem não manter nenhum dado, pois ainda não estabeleceram interações. Esses dados podem ser comparados a uma propriedade de 'reputação', no entanto, esses detalhes são puramente locais e não são compartilhados entre outros nós. As informações de reputação local dos pares também são atualizadas quando as conexões dos pares falham. A rede não mantém informações negativas dos pares por períodos prolongados de tempo: para limitar recursos e devido à simplicidade dos ataques Sybilopen in new window.

A implementação classifica as exceções que causam falhas de conexão em três classes:

  • exceções do nó interno (por exemplo, corrupção do disco local)
  • falhas de rede (por exemplo, conexões TCP descartadas)
  • comportamento adversário (por exemplo, uma violação de protocolo detectada pela camada de protocolos digitados ou pela camada de consenso).

No caso de comportamento adversário, o par pode ser imediatamente rebaixado dos conjuntos quentes, mornos ou frios.

Última atualização:
Contribuidores: cauechianca