NIP-78:アプリ固有データ
NIP-78は、アプリケーションがNostrイベントを使ってユーザーの代わりに任意のデータを保存するための標準イベントkindを定義し、中央サーバーなしでデバイス間の状態同期を可能にします。
仕組み
中心となるイベントkindは30078で、パラメータ化された置換可能イベントです。dタグはアプリケーション定義の識別子文字列で、ストレージスロットを特定のアプリケーションと目的に限定します。
{
"id": "<64-char hex>",
"pubkey": "<64-char hex>",
"created_at": 1747180800,
"kind": 30078,
"tags": [
["d", "myapp-settings"]
],
"content": "{\"theme\":\"dark\",\"fontSize\":14}",
"sig": "<128-char hex>"
}
アプリケーションは、一意のdタグ(例:tamagostrich-pet-stateやamethyst-settings)と永続化が必要なJSONまたはテキストコンテンツを持つ30078イベントを公開します。30078は置換可能でdタグによってスコープされているため、保存された状態の更新は同じdタグを持つ新しいイベントを公開することを意味し、リレーは最新バージョンのみを保持します。
デバイス間同期
ユーザーの公開鍵とアプリケーションのdタグを知っているクライアントは、ユーザーのリレーセットから現在の状態を取得し、任意のデバイスで再構築できます。データはユーザーの鍵ペアで署名されたイベントに存在し、NIP-65リレーリストのリレーに保存されているため、ユーザーがデータを所有します。
プライベートデータ vs. パブリックデータ
プライベートなアプリケーションデータには、公開前にNIP-44を使用してコンテンツフィールドを暗号化できるため、リレーは鍵の所有者だけが復号できる暗号文のみを保存します。パブリックなアプリケーションデータは、他のクライアントが読み取りと表示ができるよう、暗号化せずに保存できます。
コンテンツ形式
NIP-78はコンテンツ形式を意図的にオープンにしており、アプリケーションが独自のスキーマを選択します。一般的な慣例は、同じリレーを使用するアプリ間の衝突を防ぐため、dタグにアプリケーション名をプレフィックスとして付けることです。
実装
- Tamagostrich —
tamagostrich-pet-statekind:30078イベントによるデバイス間ペット状態同期 - Wisp — kind:30078ウォレットバックアップおよびデバイス間セキュリティ設定同期;NIP-78著者フィルターを使用して単一REQにマージされたアウトボックス購読
- NosPress — NIP-78イベントに保存されたCMSオーケストレーション状態
- 複数のNostrクライアント設定同期実装(Amethyst、その他)
主要ソース:
- NIP-78仕様
- Tamagostrich — 本番実装
掲載:
関連項目: