NIP-77: Riconciliazione Negentropy
NIP-77 definisce come i relay e i client Nostr utilizzano il protocollo di riconciliazione degli insiemi Negentropy per sincronizzare efficientemente gli insiemi di eventi, trovando quali eventi mancano da ciascun lato senza ritrasmettere l’intero dataset.
Come funziona
La riconciliazione Negentropy viene eseguita su una connessione WebSocket utilizzando un tipo di messaggio dedicato. Il client e il relay si scambiano impronte digitali di intervallo compatte sui loro insiemi di eventi ordinati, convergendo solo sugli intervalli che differiscono. Una volta identificate le differenze, vengono trasferiti solo gli ID degli eventi mancanti (e poi gli eventi mancanti stessi).
NIP-77 standardizza il framing dei messaggi affinché qualsiasi client e relay che implementa la specifica possa negoziare una sessione di sincronizzazione efficiente. Il protocollo utilizza i tipi di messaggio NEG-OPEN, NEG-MSG e NEG-CLOSE sulla connessione WebSocket Nostr esistente.
Perché è importante
La sincronizzazione Nostr tradizionale utilizza filtri since basati sui timestamp, che possono perdere eventi a causa della deriva dell’orologio, eventi con timestamp identici o eventi che arrivano fuori ordine. Negentropy confronta insiemi di eventi reali invece di affidarsi ai timestamp, fornendo una sincronizzazione completa e dimostrabile in molti meno round trip rispetto al polling ingenuo.
Questo è particolarmente utile per:
- Client mobili che si aggiornano dopo essere stati offline
- Replicazione da relay a relay
- Sincronizzazione relay locale (come nell’aggregatore relay di Citrine)
Implementazioni
- Citrine — PR #139 ha aggiunto il supporto NIP-77 per la sincronizzazione efficiente tramite riconciliazione degli insiemi nel nodo relay Android
- strfry — supporto Negentropy lato relay
- nostr-tools — implementazione Negentropy lato client
Fonti primarie:
Menzionato in:
Vedi anche: