Negentropy: Set-Reconciliation-Protokoll
Negentropy ist ein Set-Reconciliation-Protokoll, das eine effiziente Synchronisierung zwischen Nostr-Clients und Relays ermöglicht, indem fehlende Events identifiziert werden, ohne den gesamten Datensatz zu übertragen.
Funktionsweise
Anstatt alle Events anzufordern, die einem Filter entsprechen, ermöglicht negentropy Clients, ihr lokales Event-Set mit dem Set eines Relays zu vergleichen und nur die Unterschiede zu identifizieren. Dies wird durch ein mehrrundiges Protokoll erreicht:
- Fingerprinting: Client und Relay berechnen jeweils einen Fingerprint ihrer Event-Sets
- Vergleich: Fingerprints werden ausgetauscht und verglichen
- Reconciliation: Nur fehlende Event-IDs werden identifiziert und übertragen
Bedeutung
Traditionelle Nostr-Synchronisierung verwendet zeitstempelbasierte since-Filter, die Events verpassen können aufgrund von:
- Uhrendrift zwischen Client und Relay
- Mehreren Events mit identischen Zeitstempeln
- Events, die außer der Reihe ankommen
Negentropy löst diese Probleme, indem tatsächliche Event-Sets verglichen werden, anstatt sich auf Zeitstempel zu verlassen.
Anwendungsfälle
- DM-Wiederherstellung: Clients können fehlende Direktnachrichten erkennen und abrufen, auch mit alten Zeitstempeln
- Feed-Synchronisierung: Gewährleistet vollständige Timeline-Synchronisierung über Relays hinweg
- Offline-Synchronisierung: Effizientes Aufholen nach Zeiten der Trennung
Implementierung
Negentropy erfordert Relay-Unterstützung. Clients implementieren es typischerweise als Fallback-Wiederherstellungsmechanismus anstatt Standard-REQ-Subscriptions zu ersetzen und degradieren elegant, wenn Relays das Protokoll nicht unterstützen.
Verwandt
- NIP-01 - Grundprotokoll