NIP-77: Negentropy-Abgleich
NIP-77 definiert, wie Nostr-Relays und Clients das Negentropy-Set-Abgleichprotokoll nutzen, um Event-Mengen effizient zu synchronisieren – sie finden heraus, welche Events auf jeder Seite fehlen, ohne den gesamten Datensatz erneut zu übertragen.
Funktionsweise
Der Negentropy-Abgleich läuft über eine WebSocket-Verbindung mit einem dedizierten Nachrichtentyp. Client und Relay tauschen kompakte Bereichs-Fingerabdrücke über ihre sortierten Event-Mengen aus und grenzen dabei nur die unterschiedlichen Bereiche ein. Sobald die Unterschiede identifiziert sind, werden nur die fehlenden Event-IDs (und dann die fehlenden Events selbst) übertragen.
NIP-77 standardisiert das Nachrichten-Framing, damit jeder Client und jedes Relay, das die Spezifikation implementiert, eine effiziente Synchronisationssitzung aushandeln kann. Das Protokoll verwendet die Nachrichtentypen NEG-OPEN, NEG-MSG und NEG-CLOSE über die bestehende Nostr-WebSocket-Verbindung.
Warum das wichtig ist
Herkömmliche Nostr-Synchronisation verwendet zeitstempelbasierte since-Filter, die Events aufgrund von Uhrabweichungen, Events mit identischen Zeitstempeln oder außer der Reihe eintreffenden Events verpassen können. Negentropy vergleicht tatsächliche Event-Mengen statt sich auf Zeitstempel zu verlassen und liefert eine nachweislich vollständige Synchronisation in deutlich weniger Roundtrips als einfaches Polling.
Dies ist besonders nützlich für:
- Mobile Clients, die nach dem Offline-Gang aufholen
- Relay-zu-Relay-Replikation
- Lokale Relay-Synchronisation (wie im Relay-Aggregator von Citrine)
Implementierungen
- Citrine — PR #139 fügte NIP-77-Unterstützung für effizienten Set-Abgleich im Android-Relay-Knoten hinzu
- strfry — relay-seitige Negentropy-Unterstützung
- nostr-tools — clientseitige Negentropy-Implementierung
Primäre Quellen:
Erwähnt in:
Siehe auch: