🗣️ 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))
}