Nostr è un protocollo di messaggistica decentralizzato che, pur non essendo un sistema peer-to-peer puro, garantisce la sovranità dei dati attraverso una rete composta da due attori principali: i Client (le applicazioni) e i Relay (i server che ospitano i dati).
Inizialmente, il network soffriva di un problema critico: la frammentazione. Se un autore scriveva su un relay e il suo follower era connesso a un altro, i due non si leggevano mai. Per risolvere questo limite, tra il 2023 e il 2024 è stato introdotto l'Outbox Model (o Gossip Model), basato sullo standard NIP-65.
Cos'è l'Outbox Model?
In termini semplici, l'Outbox Model ribalta la logica di ricerca dei contenuti: invece di cercare i post sui relay a cui noi siamo connessi, il nostro client va a prenderli dove l'autore ha scelto di pubblicarli.
Il cuore del sistema: NIP-65
Il meccanismo si basa su un evento speciale (denominato kind: 10002) che ogni utente pubblica per dichiarare la propria "mappa" dei relay:
- Outbox (Write): I relay dove l'utente pubblica i propri post.
- Inbox (Read): I relay dove l'utente desidera ricevere menzioni, messaggi diretti e interazioni.
Esempio di configurazione JSON (kind: 10002):
{
"kind": 10002,
"tags": [
["r", "wss://relay.damus.io", "write"],
["r", "wss://nostr.wine", "write"],
["r", "wss://purplepag.es", "read"]
]
}
Come funziona tecnicamente
Quando utilizzi un client moderno (come Amethyst, Damus o Primal), il processo avviene in tre fasi automatiche:
- Discovery: Il client incontra una nuova chiave pubblica (pubkey) e recupera immediatamente il suo evento kind: 10002.
- Routing Dinamico: Il client crea una mappa interna (pubkey → relay_di_scrittura) e si connette temporaneamente a quei server solo per scaricare i contenuti di quell'utente.
- Gossip & Threading: Se Tizio risponde a Caio, il client interroga gli outbox di entrambi per ricostruire l'intera conversazione, garantendo la coerenza dei dati (eventual consistency).
L'Evoluzione: Prima e Dopo l'Outbox Model
L'adozione di questo modello ha segnato il passaggio da una rete sperimentale a una scalabile.
Vantaggi Strategici
- Resilienza e Portabilità: Non sei legato a un singolo server. Se il tuo relay principale chiude, i tuoi follower scopriranno automaticamente il tuo nuovo indirizzo tramite la tua relay list aggiornata.
- Resistenza alla Censura: È quasi impossibile oscurare un utente. Finché esiste almeno un relay "write" attivo nella sua lista, i suoi contenuti rimarranno rintracciabili globalmente.
- Ottimizzazione delle Risorse: I client non devono più "sparare nel mucchio", ma agiscono come sistemi di routing intelligente, interrogando solo i nodi necessari.
Limiti e Best Practice
Nonostante i vantaggi, l'Outbox Model presenta alcune sfide tecniche:
- Complessità del Client: L'applicazione deve gestire decine di connessioni WebSocket simultanee in modo dinamico.
- Dipendenza dal Metadata: Se un utente non pubblica la propria lista relay (kind: 10002), diventa difficile da trovare. In questi casi, i client usano dei fallback (cercano su relay globali o dove l'utente è stato visto l'ultima volta).
Conclusione
L'Outbox Model è probabilmente l'innovazione architetturale più importante dopo la nascita di Nostr. Ha trasformato il protocollo da un semplice sistema di messaggi a una rete di routing sociale distribuito, rendendolo simile nel concetto al funzionamento dei protocolli fondamentali di Internet (come BGP).