Negentropy: 集合調整プロトコル
Negentropyは、完全なデータセットを転送することなく欠落イベントを特定することで、NostrクライアントとリレーNの効率的な同期を可能にする集合調整プロトコルです。
仕組み
フィルターに一致するすべてのイベントをリクエストする代わりに、negentropyはクライアントがローカルのイベント集合をリレーの集合と比較し、差分のみを特定することを可能にします。これは複数ラウンドのプロトコルで達成されます:
- フィンガープリンティング:クライアントとリレーはそれぞれイベント集合のフィンガープリントを計算します
- 比較:フィンガープリントが交換され比較されます
- 調整:欠落しているイベントIDのみが特定され転送されます
重要な理由
従来のNostr同期はタイムスタンプベースのsinceフィルターを使用しますが、以下の理由でイベントを見逃す可能性があります:
- クライアントとリレー間のクロックドリフト
- 同一タイムスタンプを持つ複数のイベント
- 順序が入れ替わって到着するイベント
Negentropyはタイムスタンプに依存するのではなく、実際のイベント集合を比較することでこれらの問題を解決します。
ユースケース
- DMリカバリー:古いタイムスタンプを持つ欠落したダイレクトメッセージを検出して取得できます
- フィード同期:リレー間で完全なタイムライン同期を保証します
- オフライン同期:切断期間後に効率的にキャッチアップします
実装
Negentropyにはリレーサポートが必要です。クライアントは通常、標準的なREQサブスクリプションを置き換えるのではなく、フォールバックリカバリーメカニズムとして実装し、リレーがプロトコルをサポートしていない場合は適切に処理します。
関連
- NIP-01 - 基本プロトコル