Gleam.br Wiki

🗣️ Gleam-BR GossipSub: O Escudo Financeiro | Governança

Especificação técnica e manual do componente gbr_p2p_gossipsub.

🗣️ Gleam-BR GossipSub: O Escudo Financeiro

O gbr_p2p_gossipsub é a nossa implementação nativa do protocolo de roteamento não-estruturado *GossipSub v1.1, concebido pela Protocol Labs. Este motor é vital para a nossa malha de Agentes IA, atuando como o "Escudo Financeiro" que previne o esgotamento de banda (Egress Costs) comum em topologias *FloodSub.

🛡️ A Matemática da Malha (Mesh) Ao invés de retransmitir mensagens para todos os nós conectados, o nosso router mantêm uma matemática estrita para economia de rede: * D_low (4) e D_high (12): O nó mantém um mínimo de 4 e um máximo de 12 vizinhos de malha. * *IHAVE / IWANT:* Mensagens de grande porte (como transferências de conhecimento semântico) nunca sofrem broadcast completo. Enviamos metadados ultraleves (IHAVE) para a rede, e a transferência total ocorre apenas mediante pedido explícito (IWANT).

🦀 Alta Performance e Segurança (Rust NIFs) A decodificação de mensagens da rede (Protobuf) é delegada para C-Level usando Rust (prost) via *Erlang NIFs. * *Zero-Copy & Panic-Proof:** Implementamos tratamento estrito de erros na fronteira FFI (Fase 19.1). Pacotes TCP malformados são capturados no Rust e devolvidos como tuplas de erro limpas para o Gleam, garantindo que a Erlang VM *jamais* sofra crashes devido a ataques cibernéticos ou lixo de rede.

🛠️ Utilização Este protocolo é instanciado automaticamente ao configurar a subscrição de tópicos no Host do gbr_p2p.

Prerequisitos - Gleam - Rust & Cargo - Erlang/OTP 26+

Manual Para compilar o componente nativo (Rust) e realizar o deploy em priv:

cd shared/gbr_p2p_gossipsub/native/gossipsub_proto
cargo build --release
# Copy the binary to the priv directory (example for Windows)
copy target
elease\gossipsub_proto.dll ..\..\priv\gossipsub_proto.dll
# Or for Linux/macOS
cp target/release/libgossipsub_proto.so ../../priv/gossipsub_proto.so

Uso

import gbr/p2p/config
import gbr/p2p/gossipsub
import gbr/p2p/gossipsub/router
import gbr_p2p
import gleam/erlang/process

pub fn main() {
  let conf = config.default()
  // 1. Start the main P2P Host
  let assert Ok(host) = gbr_p2p.start(conf, 4001)

  // 2. Initialize the GossipSub Router
  let assert Ok(router_sub) = gossipsub.init(host)

  // 3. Subscribe to a topic
  process.send(router_sub, router.Subscribe("neural_network_br"))

  // 4. Publish data (automatically propagates through the mesh)
  let payload = <<"Hello Mesh":utf8>>
  process.send(router_sub, router.Publish("neural_network_br", payload))
}