Negentropyは、完全なデータセットを転送することなく欠落イベントを特定することで、NostrクライアントとリレーNの効率的な同期を可能にする集合調整プロトコルです。

仕組み

フィルターに一致するすべてのイベントをリクエストする代わりに、negentropyはクライアントがローカルのイベント集合をリレーの集合と比較し、差分のみを特定することを可能にします。これは複数ラウンドのプロトコルで達成されます:

  1. フィンガープリンティング:クライアントとリレーはそれぞれイベント集合のフィンガープリントを計算します
  2. 比較:フィンガープリントが交換され比較されます
  3. 調整:欠落しているイベントIDのみが特定され転送されます

重要な理由

従来のNostr同期はタイムスタンプベースのsinceフィルターを使用しますが、以下の理由でイベントを見逃す可能性があります:

  • クライアントとリレー間のクロックドリフト
  • 同一タイムスタンプを持つ複数のイベント
  • 順序が入れ替わって到着するイベント

Negentropyはタイムスタンプに依存するのではなく、実際のイベント集合を比較することでこれらの問題を解決します。

ユースケース

  • DMリカバリー:古いタイムスタンプを持つ欠落したダイレクトメッセージを検出して取得できます
  • フィード同期:リレー間で完全なタイムライン同期を保証します
  • オフライン同期:切断期間後に効率的にキャッチアップします

実装

Negentropyにはリレーサポートが必要です。クライアントは通常、標準的なREQサブスクリプションを置き換えるのではなく、フォールバックリカバリーメカニズムとして実装し、リレーがプロトコルをサポートしていない場合は適切に処理します。

関連

  • NIP-01 - 基本プロトコル