Gleam.br Wiki

GBR: ADR-0004 Framework P2P Universal e Analisador Léxico O(N) (Aprimoramento gbr_p2p) | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-0004 Framework P2P Universal e Analisador Léxico O(N) (Aprimoramento gbr_p2p)

  • *Status:* Aceito
  • *Data:* 2026-05-01

*Contexto:*

A malha P2P original possuía protocolos fixos e dependia de conversões ineficientes para endereçamento. Para que o gbr_p2p operasse como o backbone de telemetria e túneis do Horus Falcon 2.0 (suportando a carga do GKE), era necessário erradicar o acoplamento de rotas e o uso de Expressões Regulares (Regex) na decodificação de Multiaddr, que causavam picos no Garbage Collector da BEAM.

*Decisão:*

  1. *Roteamento Dinâmico O(1):* Implementação de Multistream-Select. O roteamento de protocolos (/horus/telemetry/1.0.0) não ocorre via gen_server central, mas através de registro de Handlers (Atores) em uma tabela ETS concorrente (gbr_p2p_protocols). Isso garante Inversão de Controle (IoC).
  2. *Lexer de Descida Recursiva:* Substituição de Regex por um parser léxico criado com Tipos de Dados Algébricos (ADT). O parsing consome tokens de lista recursivamente utilizando Tail-Call Optimization (TCO), sendo convertido em saltos de memória (GOTO) no Assembly da BEAM, prevenindo Stack Overflow.
  3. *Padrão Builder:* Isolamento das configurações do Nó (K-Buckets, Janelas Yamux) em um tipo opaco P2PConfig, instanciado via pipeline funcional.

*Consequências:*

  • *Positivas:* Redução drástica do custo de CPU na aceitação de conexões; imunidade contra vulnerabilidades ReDOS; capacidade de rodar múltiplos Hosts P2P independentes na mesma máquina virtual.
  • *Negativas/Riscos:* A delegação do roteamento para o Multistream-Select exige que a camada de borda mantenha buffers restritos contra ataques de exaustão (Slowloris), fechando conexões que abrem socket mas não enviam a string de negociação em tempo hábil.