Blossomは、blobを通常のHTTPサーバーに保存し、サーバー側で割り当てたIDではなくSHA-256ハッシュで参照する、Nostr向けのメディアホスティングプロトコルです。

仕組み

Blossomサーバーは、blobの取得、アップロード、管理のために小さなHTTPインターフェースを公開します。正規の識別子はファイルハッシュなので、同じblobは準拠したどのサーバーでも同じアドレスを持ちます。

  • GET /<sha256> はハッシュでblobを取得します
  • PUT /upload はblobをアップロードします
  • kind 24242 のNostrイベントがアップロードと管理操作を認可します
  • BUD-03 で定義されるkind 10063 のイベントで、ユーザーは優先サーバーを公開できます

ハッシュ自体が識別子なので、クライアントはダウンロード後にローカルで整合性を検証でき、基礎となる参照を変えずに別のサーバーを試せます。

重要性

Blossomは、blobの保存をソーシャルイベントから切り離します。ノートやプロフィールは、1つのホストのURL設計に縛られずにメディアを参照できます。

この設計は障害時の扱いも変えます。サーバーが消えても、クライアントはミラー、キャッシュ、または作者のBUD-03リストから見つけたサーバーから同じハッシュを取得できます。元のホストURLしか手掛かりがないメディアシステムより、こちらの方が実用的です。

相互運用メモ

Blossomはモジュール型です。取得とアップロードの中核動作はBUD-01とBUD-02にあり、ミラーリング、メディア最適化、認可、URI共有は別のBUDに分かれています。

この分割により、クライアントは基本的な相互運用に必要な最小実装から始めて、BUD-10のURIヒントやローカルキャッシュのような追加要素を、サポートの成熟に合わせて段階的に実装できます。


主要ソース:

言及箇所:

関連項目: