<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ニュースレター on Nostr Compass</title><link>https://nostrcompass.org/ja/newsletters/</link><description>Recent content in ニュースレター on Nostr Compass</description><generator>Hugo</generator><language>ja</language><atom:link href="https://nostrcompass.org/ja/newsletters/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nostr Compass #26</title><link>https://nostrcompass.org/ja/newsletters/2026-06-10-newsletter/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-06-10-newsletter/</guid><description>&lt;p>Marmot Protocol組織は、v2プロトコルドラフトとネイティブクライアントの系統のために3つの新しいリポジトリを公開しました: &lt;code>darkmatter&lt;/code>という名前のRustワークスペース、SwiftUI iOSアプリ&lt;code>darkmatter-ios&lt;/code>、Kotlin/Compose Androidアプリ&lt;code>darkmatter-android&lt;/code>。オリジナルのFlutter Whitenoiseはアーカイブされました。Chamaは17のリリースを1週間に圧縮し、v3.0.0でスタンドアロンアプリのラインを越えてから、v3.1.0で完全な取引ルームUIの再描画と、ホルダー専用Shamir共有、アービター置換、全世界コミュニティルーティング、およびエンドツーエンドの取引通知の上に構築された販売者ごとのストアフロントを実現しました。Coracleは、オープンソースのCaravelとzooidスタックに支えられた有料のホスト型リレーサービスをローンチし、深いFlotilla統合が計画されています。Angorはv0.2.30でデフォルトをmainnetに反転させ、v0.2.29で3ユーザーUAT資金調達テストを実現しました。Amethystは、先週のNIP-32 / NIP-F4 / Torの作業を継続する41の未リリースPRを実現しました。NIP-67 (EOSE完全性ヒント) とNIP-50オートコンプリートがマージされ、コアリレープロトコルの2つの長年の正確性ギャップを閉じました。NIP-GARTは緊急アラートのためのプライバシー保護ワイヤーフォーマットを提案し、NIP-46はlogoutメソッドを獲得します。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter-プロトコル再ドラフトネイティブクライアントアーカイブされたflutterアプリ">Marmot v2 (Dark Matter): プロトコル再ドラフト、ネイティブクライアント、アーカイブされたFlutterアプリ&lt;/h3>
&lt;p>今週、&lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a> GitHub組織の下に3つの新しいリポジトリが登場し、合わせてMarmot v2プロトコルドラフトの初期進捗の形と、Flutterアプリのラインを置き換えるネイティブクライアント系統を形成しています。&lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust、5月13日作成、過去7日間で34コミット) は&lt;code>spec/&lt;/code>にv2プロトコルドラフト、&lt;code>crates/cgka-engine&lt;/code>にOpenMLSベースのCGKAエンジン、プロパティテスト付きの適合性シミュレーター、および収束証明のためのTamarin形式モデルを保持しています。&lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift、5月25日作成) は、Rustワークスペースから生成されたベンダー化された&lt;code>MarmotKit&lt;/code> UniFFI xcframeworkに支えられたSwiftUIクライアントです。&lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose、5月25日作成) は同じRustバインディング上に位置しています。オリジナルのFlutter Whitenoiseは&lt;a href="https://github.com/marmot-protocol/whitenoise-archive">&lt;code>whitenoise-archive&lt;/code>&lt;/a>としてマークされています (「ARCHIVED: これはオリジナルのWhite Noise Flutterアプリでした」)。新しい&lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> Dartリポジトリが並行してアクティブなFlutterラインを運びます。&lt;/p>
&lt;p>これは完成したピボットではなく、より信頼性の高いMarmotへの初期の進捗として読んでください。darkmatterのREADMEは自身を「Marmot v2プロトコルドラフト候補、CGKAエンジン、および適合性ワークスペース」とラベル付けし、直接述べています: 「このドラフトとエンジンが採用されるまで、MDKは展開されたRustプロトコル実装のままです」。ワークスペース内で、cgka-engineクレートは&lt;code>0.1.0&lt;/code>、「単一の内部消費者、semver安定ではない」とタグ付けされています。すべての仕様ページには「ステータス: 内部レビュー用ドラフト」と記載されています。ワークスペースリポジトリでの3つのスターとiOSおよびAndroidアプリでのゼロは、作業がアナウンス前であることを確認します。方向性、スコープ、規律がここでの信号です。本番の準備が完了していることは主張されていません。&lt;/p>
&lt;p>プロトコルドラフトはv1からv2へのデルタを具体化します。Marmotの開始以来、グループ名、説明、管理者pubkey、Nostrグループルーティングid、リレーリスト、グループ画像データ、および消えるメッセージ設定を1つの傘の下に運んでいたMIP-01のモノリシックな&lt;code>marmot_group_data&lt;/code> MLS拡張は、&lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">バージョン付きアプリコンポーネントに分割&lt;/a>されます: 名前と説明のための&lt;code>marmot.group.profile.v1&lt;/code>、管理者pubkeyのための&lt;code>marmot.group.admin-policy.v1&lt;/code>、ランダムな&lt;code>nostr_group_id&lt;/code>と正規のリレーリストのための&lt;code>marmot.transport.nostr.routing.v1&lt;/code>、画像ハッシュ、暗号化キー、nonce、およびアップロードキーのための&lt;code>marmot.group.blossom.image.v1&lt;/code>、消えるメッセージの秒数のための&lt;code>marmot.group.message-retention.v1&lt;/code>。各コンポーネントは正確なバイトと独自のバージョン管理パスを所有するので、将来の機能は、残りのグループ状態がMLS拡張のコンセンサスを再度踏襲することを強制することなく、1つのコンポーネントを改訂できます。MIP-00クレデンシャルも新しい基礎文書&lt;code>account-identity-proof-v1.md&lt;/code>を獲得し、「v2の新規で破壊的」と呼び出されます。アイデンティティ証明は今や、KeyPackage構築とは別に独自のサーフェスに存在します。&lt;/p>
&lt;p>ライブラリのデルタは仕様の再設計を支えます。&lt;code>cgka-engine&lt;/code>は新しいローカルグループ状態マシンです: OpenMLSをラップし、&lt;code>Stable&lt;/code>、&lt;code>PendingPublish&lt;/code>、&lt;code>Merging&lt;/code>、&lt;code>Recovering&lt;/code>エポック状態を所有し、意図をMLSコミットに変換し、あらゆる受信トランスポートエンベロープに対して型付き&lt;code>IngestOutcome&lt;/code>と&lt;code>GroupEvent&lt;/code>値を返し、明示的にトランスポートも永続性も出荷しません。&lt;code>TransportPeeler&lt;/code> traitはNostrをエンジンから分離し、&lt;code>StorageProvider&lt;/code> traitはSQLite ( SQLCipherベースの&lt;code>storage-sqlite&lt;/code>経由) をエンジンから分離します。今日のMDKはこのすべてを一緒にパックしています。層を分割することで、1つのエンジンが今Nostrリレートランスポートの下に位置し、後で収束モデルを書き直すことなく、また出荷される&lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">QUICストリームとブローカートランスポート&lt;/a>の下にも位置できます。収束自体は&lt;code>distributed-convergence.md&lt;/code>として文書化されており、決定論的ブランチ選択、ポリシーゲート適格性、保持アンカーリプレイ、古いブランチ拒否、配信の並べ替え、重複、アプリ出力の無効化、welcome/commitハンドオフ、提案消費、および同期中のアウトバウンドゲーティングをカバーするTamarinモデルで証明されています。次にRustプロパティテストが、エンジンが実際のOpenMLSオブジェクトとシミュレーターハーネスで同じルールに従うことを確認します。このスコープの形式手法の信頼性の作業は、現在のMarmotスタックにはありません。&lt;/p>
&lt;p>両方のネイティブクライアントは、プラットフォームネイティブUIツールキットのためにFlutterをドロップします。&lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a>は、MIP-05プッシュウェイクをデバイス上で復号するNotification Service Extensionを備えた純粋なSwiftUIで、Rustワークスペースから構築された生成された&lt;code>MarmotKit&lt;/code> Swiftパッケージをベンダーし、&lt;code>dev.ipf.darkmatter&lt;/code>バンドルIDとアプリグループの下に登録します。&lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a>はKotlinとJetpack Composeで、&lt;code>just&lt;/code>駆動のビルドが署名された&lt;code>arm64-v8a&lt;/code> APKを生成し、&lt;code>local.properties&lt;/code>からテレメトリエンドポイントを読み取ります。Android READMEはアーキテクチャの原則を直接述べています: 「Dark Matterはプロトコルデータを所有し、SQLiteに保存します。Androidアプリはそのデータをレンダリングし、Androidプラットフォームの動作を管理し、UIライフサイクル状態を保つべきです。AndroidアプリはDark Matterデータのための2番目のデータベースになるべきではありません」。それは、UIレイヤーに適用された、Rust層でcgka-engine READMEが強制する境界規律を反映します。&lt;/p>
&lt;p>Marmotにとってネイティブクライアントが重要な理由は、プロトコルの最も引用される弱点が、不均一な配信条件下でのモバイルの信頼性だったからです: 締め切りを逃した通知ウェイク、ネットワークフラップ中のMLSコミットレース、エポックの進行を座礁させるバックグラウンドフェッチ制限。SwiftUIとComposeは、Flutterがプラグインブリッジを通じて到達するプラットフォームバックグラウンド処理プリミティブへの直接アクセスをクライアントに与え、UniFFIバインディングパスは、両方のプラットフォームで静的ライブラリとして出荷される1つのRustワークスペースにプロトコルロジックを保ちます。Flutter Whitenoiseラインは、アーカイブされていない&lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a>リポジトリで継続するので、アナウンスは加算的です: v2仕様が収束する間、新しいネイティブクライアントの系統がFlutterアプリと並行して動作します。MDKまたは現在のWhitenoiseアプリからの本番切り替えは、ドラフト、エンジン、およびクライアントが本番対応リリースに到達するのを待ちます。&lt;/p>
&lt;h3 id="chama-v200からv310-1週間でスタンドアロンp2pエスクロー">Chama v2.0.0からv3.1.0: 1週間でスタンドアロンP2Pエスクロー&lt;/h3>
&lt;p>ニュースレター #25でv1.3.0で紹介されたNostrネイティブP2Pエスクロークライアントは、過去7日間で17のタグ付きリリースを出荷し、6月9日の&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a>で取引ルームUIの再描画と販売者ごとのストアフロントで終了しました。バージョントレイルはストーリーを語ります: &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a>は破壊的なベースで、続いて&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.1">v2.0.1&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.2">v2.0.2&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a>がFedi WebViewの資金調達レールギャップを閉じます。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.1.0">v2.1.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.2.0">v2.2.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.0">v2.3.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a>はアービターレイヤーを強化します。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.4.0">v2.4.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.5.0">v2.5.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a>はセルフカストディサーフェスと全世界コミュニティルーティングを追加します。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.7.0">v2.7.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.8.0">v2.8.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.9.0">v2.9.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a>は、平易な英語でのキーコピー、グループアプリケーション、紛争締切アービトレーション、および評判を重ねます。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a>はエンドツーエンドの取引通知でパッケージをまとめ、6月9日の&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a>は、Reserved → Locked → Settled進行スパイン、ロール色付けされたアクションカード、および販売者ごとのストアフロントリスティングクラス (キュレートされたスワップ、ローンブック、および請求書) の周りに取引画面を再描画します。&lt;/p></description><content:encoded>&lt;p>Marmot Protocol組織は、v2プロトコルドラフトとネイティブクライアントの系統のために3つの新しいリポジトリを公開しました: &lt;code>darkmatter&lt;/code>という名前のRustワークスペース、SwiftUI iOSアプリ&lt;code>darkmatter-ios&lt;/code>、Kotlin/Compose Androidアプリ&lt;code>darkmatter-android&lt;/code>。オリジナルのFlutter Whitenoiseはアーカイブされました。Chamaは17のリリースを1週間に圧縮し、v3.0.0でスタンドアロンアプリのラインを越えてから、v3.1.0で完全な取引ルームUIの再描画と、ホルダー専用Shamir共有、アービター置換、全世界コミュニティルーティング、およびエンドツーエンドの取引通知の上に構築された販売者ごとのストアフロントを実現しました。Coracleは、オープンソースのCaravelとzooidスタックに支えられた有料のホスト型リレーサービスをローンチし、深いFlotilla統合が計画されています。Angorはv0.2.30でデフォルトをmainnetに反転させ、v0.2.29で3ユーザーUAT資金調達テストを実現しました。Amethystは、先週のNIP-32 / NIP-F4 / Torの作業を継続する41の未リリースPRを実現しました。NIP-67 (EOSE完全性ヒント) とNIP-50オートコンプリートがマージされ、コアリレープロトコルの2つの長年の正確性ギャップを閉じました。NIP-GARTは緊急アラートのためのプライバシー保護ワイヤーフォーマットを提案し、NIP-46はlogoutメソッドを獲得します。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="marmot-v2-dark-matter-プロトコル再ドラフトネイティブクライアントアーカイブされたflutterアプリ">Marmot v2 (Dark Matter): プロトコル再ドラフト、ネイティブクライアント、アーカイブされたFlutterアプリ&lt;/h3>
&lt;p>今週、&lt;a href="https://github.com/marmot-protocol">marmot-protocol&lt;/a> GitHub組織の下に3つの新しいリポジトリが登場し、合わせてMarmot v2プロトコルドラフトの初期進捗の形と、Flutterアプリのラインを置き換えるネイティブクライアント系統を形成しています。&lt;a href="https://github.com/marmot-protocol/darkmatter">&lt;code>darkmatter&lt;/code>&lt;/a> (Rust、5月13日作成、過去7日間で34コミット) は&lt;code>spec/&lt;/code>にv2プロトコルドラフト、&lt;code>crates/cgka-engine&lt;/code>にOpenMLSベースのCGKAエンジン、プロパティテスト付きの適合性シミュレーター、および収束証明のためのTamarin形式モデルを保持しています。&lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a> (Swift、5月25日作成) は、Rustワークスペースから生成されたベンダー化された&lt;code>MarmotKit&lt;/code> UniFFI xcframeworkに支えられたSwiftUIクライアントです。&lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a> (Kotlin/Jetpack Compose、5月25日作成) は同じRustバインディング上に位置しています。オリジナルのFlutter Whitenoiseは&lt;a href="https://github.com/marmot-protocol/whitenoise-archive">&lt;code>whitenoise-archive&lt;/code>&lt;/a>としてマークされています (「ARCHIVED: これはオリジナルのWhite Noise Flutterアプリでした」)。新しい&lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a> Dartリポジトリが並行してアクティブなFlutterラインを運びます。&lt;/p>
&lt;p>これは完成したピボットではなく、より信頼性の高いMarmotへの初期の進捗として読んでください。darkmatterのREADMEは自身を「Marmot v2プロトコルドラフト候補、CGKAエンジン、および適合性ワークスペース」とラベル付けし、直接述べています: 「このドラフトとエンジンが採用されるまで、MDKは展開されたRustプロトコル実装のままです」。ワークスペース内で、cgka-engineクレートは&lt;code>0.1.0&lt;/code>、「単一の内部消費者、semver安定ではない」とタグ付けされています。すべての仕様ページには「ステータス: 内部レビュー用ドラフト」と記載されています。ワークスペースリポジトリでの3つのスターとiOSおよびAndroidアプリでのゼロは、作業がアナウンス前であることを確認します。方向性、スコープ、規律がここでの信号です。本番の準備が完了していることは主張されていません。&lt;/p>
&lt;p>プロトコルドラフトはv1からv2へのデルタを具体化します。Marmotの開始以来、グループ名、説明、管理者pubkey、Nostrグループルーティングid、リレーリスト、グループ画像データ、および消えるメッセージ設定を1つの傘の下に運んでいたMIP-01のモノリシックな&lt;code>marmot_group_data&lt;/code> MLS拡張は、&lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/spec/mip-coverage.md">バージョン付きアプリコンポーネントに分割&lt;/a>されます: 名前と説明のための&lt;code>marmot.group.profile.v1&lt;/code>、管理者pubkeyのための&lt;code>marmot.group.admin-policy.v1&lt;/code>、ランダムな&lt;code>nostr_group_id&lt;/code>と正規のリレーリストのための&lt;code>marmot.transport.nostr.routing.v1&lt;/code>、画像ハッシュ、暗号化キー、nonce、およびアップロードキーのための&lt;code>marmot.group.blossom.image.v1&lt;/code>、消えるメッセージの秒数のための&lt;code>marmot.group.message-retention.v1&lt;/code>。各コンポーネントは正確なバイトと独自のバージョン管理パスを所有するので、将来の機能は、残りのグループ状態がMLS拡張のコンセンサスを再度踏襲することを強制することなく、1つのコンポーネントを改訂できます。MIP-00クレデンシャルも新しい基礎文書&lt;code>account-identity-proof-v1.md&lt;/code>を獲得し、「v2の新規で破壊的」と呼び出されます。アイデンティティ証明は今や、KeyPackage構築とは別に独自のサーフェスに存在します。&lt;/p>
&lt;p>ライブラリのデルタは仕様の再設計を支えます。&lt;code>cgka-engine&lt;/code>は新しいローカルグループ状態マシンです: OpenMLSをラップし、&lt;code>Stable&lt;/code>、&lt;code>PendingPublish&lt;/code>、&lt;code>Merging&lt;/code>、&lt;code>Recovering&lt;/code>エポック状態を所有し、意図をMLSコミットに変換し、あらゆる受信トランスポートエンベロープに対して型付き&lt;code>IngestOutcome&lt;/code>と&lt;code>GroupEvent&lt;/code>値を返し、明示的にトランスポートも永続性も出荷しません。&lt;code>TransportPeeler&lt;/code> traitはNostrをエンジンから分離し、&lt;code>StorageProvider&lt;/code> traitはSQLite ( SQLCipherベースの&lt;code>storage-sqlite&lt;/code>経由) をエンジンから分離します。今日のMDKはこのすべてを一緒にパックしています。層を分割することで、1つのエンジンが今Nostrリレートランスポートの下に位置し、後で収束モデルを書き直すことなく、また出荷される&lt;a href="https://github.com/marmot-protocol/darkmatter/blob/master/docs/quic-broker-deployment.md">QUICストリームとブローカートランスポート&lt;/a>の下にも位置できます。収束自体は&lt;code>distributed-convergence.md&lt;/code>として文書化されており、決定論的ブランチ選択、ポリシーゲート適格性、保持アンカーリプレイ、古いブランチ拒否、配信の並べ替え、重複、アプリ出力の無効化、welcome/commitハンドオフ、提案消費、および同期中のアウトバウンドゲーティングをカバーするTamarinモデルで証明されています。次にRustプロパティテストが、エンジンが実際のOpenMLSオブジェクトとシミュレーターハーネスで同じルールに従うことを確認します。このスコープの形式手法の信頼性の作業は、現在のMarmotスタックにはありません。&lt;/p>
&lt;p>両方のネイティブクライアントは、プラットフォームネイティブUIツールキットのためにFlutterをドロップします。&lt;a href="https://github.com/marmot-protocol/darkmatter-ios">&lt;code>darkmatter-ios&lt;/code>&lt;/a>は、MIP-05プッシュウェイクをデバイス上で復号するNotification Service Extensionを備えた純粋なSwiftUIで、Rustワークスペースから構築された生成された&lt;code>MarmotKit&lt;/code> Swiftパッケージをベンダーし、&lt;code>dev.ipf.darkmatter&lt;/code>バンドルIDとアプリグループの下に登録します。&lt;a href="https://github.com/marmot-protocol/darkmatter-android">&lt;code>darkmatter-android&lt;/code>&lt;/a>はKotlinとJetpack Composeで、&lt;code>just&lt;/code>駆動のビルドが署名された&lt;code>arm64-v8a&lt;/code> APKを生成し、&lt;code>local.properties&lt;/code>からテレメトリエンドポイントを読み取ります。Android READMEはアーキテクチャの原則を直接述べています: 「Dark Matterはプロトコルデータを所有し、SQLiteに保存します。Androidアプリはそのデータをレンダリングし、Androidプラットフォームの動作を管理し、UIライフサイクル状態を保つべきです。AndroidアプリはDark Matterデータのための2番目のデータベースになるべきではありません」。それは、UIレイヤーに適用された、Rust層でcgka-engine READMEが強制する境界規律を反映します。&lt;/p>
&lt;p>Marmotにとってネイティブクライアントが重要な理由は、プロトコルの最も引用される弱点が、不均一な配信条件下でのモバイルの信頼性だったからです: 締め切りを逃した通知ウェイク、ネットワークフラップ中のMLSコミットレース、エポックの進行を座礁させるバックグラウンドフェッチ制限。SwiftUIとComposeは、Flutterがプラグインブリッジを通じて到達するプラットフォームバックグラウンド処理プリミティブへの直接アクセスをクライアントに与え、UniFFIバインディングパスは、両方のプラットフォームで静的ライブラリとして出荷される1つのRustワークスペースにプロトコルロジックを保ちます。Flutter Whitenoiseラインは、アーカイブされていない&lt;a href="https://github.com/marmot-protocol/whitenoise">&lt;code>whitenoise&lt;/code>&lt;/a>リポジトリで継続するので、アナウンスは加算的です: v2仕様が収束する間、新しいネイティブクライアントの系統がFlutterアプリと並行して動作します。MDKまたは現在のWhitenoiseアプリからの本番切り替えは、ドラフト、エンジン、およびクライアントが本番対応リリースに到達するのを待ちます。&lt;/p>
&lt;h3 id="chama-v200からv310-1週間でスタンドアロンp2pエスクロー">Chama v2.0.0からv3.1.0: 1週間でスタンドアロンP2Pエスクロー&lt;/h3>
&lt;p>ニュースレター #25でv1.3.0で紹介されたNostrネイティブP2Pエスクロークライアントは、過去7日間で17のタグ付きリリースを出荷し、6月9日の&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a>で取引ルームUIの再描画と販売者ごとのストアフロントで終了しました。バージョントレイルはストーリーを語ります: &lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.0">v2.0.0&lt;/a>は破壊的なベースで、続いて&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.1">v2.0.1&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.2">v2.0.2&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.0.3">v2.0.3&lt;/a>がFedi WebViewの資金調達レールギャップを閉じます。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.1.0">v2.1.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.2.0">v2.2.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.0">v2.3.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.3.1">v2.3.1&lt;/a>はアービターレイヤーを強化します。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.4.0">v2.4.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.5.0">v2.5.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.6.0">v2.6.0&lt;/a>はセルフカストディサーフェスと全世界コミュニティルーティングを追加します。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.7.0">v2.7.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.8.0">v2.8.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.9.0">v2.9.0&lt;/a>、&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v2.10.0">v2.10.0&lt;/a>は、平易な英語でのキーコピー、グループアプリケーション、紛争締切アービトレーション、および評判を重ねます。&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.0.0">v3.0.0&lt;/a>はエンドツーエンドの取引通知でパッケージをまとめ、6月9日の&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v3.1.0">v3.1.0&lt;/a>は、Reserved → Locked → Settled進行スパイン、ロール色付けされたアクションカード、および販売者ごとのストアフロントリスティングクラス (キュレートされたスワップ、ローンブック、および請求書) の周りに取引画面を再描画します。&lt;/p>
&lt;p>アーキテクチャピボットはv2.0.0に存在します。エスクローLOCKフォーマットは、2-of-3 Shamir分割の各共有がそのホルダーのみに暗号化されるように変更されました (sharePolicy &lt;code>holder-only-v1&lt;/code>)。フェデレーションのbearer ecashは、単一の参加者だけからは再構成されなくなり、自分の共有とフェデレーションが保持する共有の両方を持つ悪意のある当事者が同意なしに取引を完了できるパスが閉じられました。プレ2.0クライアントは「共有が見つかりません」で大声で失敗します。取引は古いクライアントでは完了できず、その過程で資金は失われません。v2.0ロックは、決済するためにv2.xのすべての当事者を必要とします。v2.0.0はまた、マルチユニットストアフロントとsatsのみのマーケットビューを追加しました。&lt;/p>
&lt;p>v2.1.0はアービター置換を導入しました: Shamirインデックス2のアービター共有は、コミュニティアービタープール上の決定論的優先順位に暗号化されるようになったので、不在のアービターは取引を座礁させることなく置き換えられます。v2.2.0は、₿121の取引で野生での置換が機能することを証明し、ヒーリング置換バックアップを追加しました。v2.3.0はロック時にリスティングアービターのコミュニティメンバーシップをチェックすることで最後のアービターフロントランニングギャップを閉じ、v2.3.1は自動割り当てされたアービタースロットがロックが彼らを座らせるまでプレビューだった兄弟レースを閉じました。&lt;/p>
&lt;p>セルフカストディサーフェスはv2.4.0で到着しました (Fedimint ecashウォレット用のBIP-39リカバリフレーズ、Nostrに暗号化されて保存される) およびv2.5.0 (Nostrアイデンティティとウォレットシードを所有するマスターnsecバックアップ)。v2.6.0は、ローカルChamaがない国のユーザーを最も近いフェデレーションにルーティングするグローバルコミュニティピッカーの周りにオンボーディングを再作業しました。以前のビルドはフォールバックなしでユーザーをバウンスさせていました。v2.7.0は、リカバリキー画面を平易な英語で書き直しました (「あなたのアカウントとその中のお金への唯一のキー。Chamaはそれを見ることはなくリセットもできません。失うと、誰もあなたのアカウントを取り戻せません」)。v2.8.0はグループアプリケーション、ダーク/ライトテーマ、および2つの新しいイベントkind (38120ロスター、38121アプリケーション) を追加しました。v2.9.0は締切時の紛争解決を変更しました: 期限に達した争われた取引は、アービターの裁定によって解決されるようになりました。以前の動作は自動返金でした。リリースは COORDINATED としてマークされているので、紛争のすべての当事者が更新しなければなりません。v2.10.0は、新しいイベントkind 38123として取引ごとのthumb-up/thumb-down評価を追加しました。&lt;/p>
&lt;p>v3.0.0は、アプリが動作するために調整コミュニティを必要としなくなるマイルストーンです。エンドツーエンドの取引通知は、アクション可能な状態遷移でのみユーザーにpingを送信します: 相手方がsatsをロックした、支払いが請求可能、紛争がアービターとしてのユーザーの裁定を必要とする、または取引が決済または期限切れになった。Me画面の1つのトグルが通知をオンまたはオフにし、許可プロンプトはトグルが有効化されているときにのみ発火します。fire-once dedupは、状態の再ロードがアラート嵐をトリガーするのを防ぎます。間違ったchamaガードレールバグも&lt;a href="https://github.com/jesuspirate/chama/pull/103">PR #103&lt;/a>で閉じられました。以前のバージョンは、1つのchamaのラベルで別のchamaのフェデレーションを持つリスティングをスタンプできました。WindowsとLinuxデスクトップバンドルはリリースとともに出荷されます。macOS dmgは、署名と公証が着地するまで保留されます。&lt;/p>
&lt;p>ChamaはMostroとShopstrにNostrネイティブマーケットプレイスとして加わり、そのサーバーレスアーキテクチャ、Fedimintに支えられた2-of-3 Shamirエスクロー、ホルダーのみの共有暗号化、および3つのうち調整コミュニティなしで自己完結型のデスクトップとモバイルクライアントを出荷する唯一のものとして区別されます。&lt;/p>
&lt;h3 id="coracle-hosting-有料リレーサービスとオープンソースcaravelスタック">Coracle Hosting: 有料リレーサービスとオープンソースCaravelスタック&lt;/h3>
&lt;p>6月3日、Hodlbodは&lt;a href="https://hosting.coracle.social">hosting.coracle.social&lt;/a>で&lt;a href="https://nos.lol/e/f8586160cd12df479c261397353c99e6f3e4d870b616382e1b4338bad3ab498a">Coracle Hostingを発表&lt;/a>しました。これはNWCまたはカード経由の定期的なlightning支払いを受け付けるホスト型コミュニティリレーサービスです。サービスは、Coracleの請求とプロビジョニングフロントエンドである&lt;a href="https://gitea.coracle.social/coracle/caravel">Caravel&lt;/a>と、単一のマシン上で多くの仮想リレーをホストするリレーランタイムである&lt;a href="https://gitea.coracle.social/coracle/zooid">zooid&lt;/a>によって支えられています。両方ともCoracleのセルフホスト型giteaでオープンソースです。Caravelは、オプションの&lt;a href="https://livekit.io">livekit&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>統合とともに出荷され、オペレーターはリレーごとに切り替えることができます。メンバー数の制限がある無料ティアにより、オペレーターは支払い詳細をコミットする前にサービスを評価できます。&lt;/p>
&lt;p>Hodlbodはビジネスモデルについて率直です: 他の誰もが実行できるスタックのホスト版を販売することによってオープンソースを収益化する。競争的な堀は&lt;a href="https://flotilla.social">Flotilla&lt;/a>統合であり、これは次に計画されているステップです。Flotillaはユーザーサーフェスを所有しているので、Flotilla内部から提供されるホストオプションは、管理されたインフラストラクチャを好む任意のユーザーのデフォルトパスになります。Hodlbodは、連絡があれば他のCaravelオペレーターをFlotillaの代替ホスティングピッカーに追加することを申し出て、連合ホスティング市場への扉を開いたままにしています。&lt;/p>
&lt;p>CaravelはPaid Memberティアを備えた公開Nostrリレープロビジョニングプラットフォームとして&lt;a href="https://relay.tools">relay.tools&lt;/a>に加わります。relay.toolsはCaravelよりも前からあり、今日主要なリレー作成サービスとして出荷され、コミュニティリレーの独自のディレクトリと、有料メンバーまたはモデレーター参加フローを備えています。Caravelの区別する特徴は、調整されたスタックです: リレーランタイム (zooid)、請求とプロビジョニングフロントエンド (Caravel自体)、およびクライアント側ピッカー (Flotilla統合、まだ進行中) が1つの設計として出荷されます。他の区別する特徴は、zooidのプロセスごとの多リレー密度であり、顧客リレーが単一のホストプロセスを共有するので、オペレーターは多くの小さなコミュニティ全体でホスティングコストを償却します。これは、2000年代初頭に共有Webホスティングを実現可能にしたのと同じ密度の議論であり、Nostrのリレーレイヤーに適用されています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="angor-v0229とv0230-mainnetデフォルトと3ユーザーuat資金調達テスト">Angor v0.2.29とv0.2.30: mainnetデフォルトと3ユーザーUAT資金調達テスト&lt;/h3>
&lt;p>6月4日の&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.29">Angor v0.2.29&lt;/a>と6月8日の&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.30">v0.2.30&lt;/a>は、分散型Bitcoin-and-Nostr資金調達プロトコルの今週の2つのリリースです。v0.2.30の目玉変更は&lt;a href="https://github.com/block-core/angor/pull/893">PR #893&lt;/a>で、デフォルトネットワークをmainnetに反転させます。Angorは不安定なアルファリリースとして出荷され続けますが、default-mainnet切り替えは、プロトコルがデスクトップおよびモバイルクライアントのtestnet-onlyフェーズを過ぎたことを信号送信します。v0.2.30はまた、画像アップロードとスクロールリセットを備えたシングルタップモバイル作成プロジェクトフロー (&lt;a href="https://github.com/block-core/angor/pull/889">PR #889&lt;/a>) を実現し、lightningインボイススピナーがハングする可能性があった競合条件を解決します (&lt;a href="https://github.com/block-core/angor/pull/890">PR #890&lt;/a>)。&lt;/p>
&lt;p>v0.2.29は、未確認の使用を伴う10ラウンドにわたる3ユーザー送金をカバーするエンドツーエンドのUATテストを&lt;a href="https://github.com/block-core/angor/pull/881">PR #881&lt;/a>で追加しました。これはAngorテストスイートで最初のマルチユーザー資金調達フローテストです。このリリースはまた、Angor CLIとMCPサーバーの実装計画 (&lt;a href="https://github.com/block-core/angor/pull/792">PR #792&lt;/a>) を追加し、&lt;a href="https://github.com/block-core/angor/pull/880">PR #880&lt;/a>でMCPテストワークフローのためのCLI改善を行いました。DavidGershonyによる&lt;a href="https://github.com/block-core/angor/pull/885">PR #885&lt;/a>は、ランタイムネットワーク切り替え後に間違ったネットワークを使用したBoltz lightningインボイスを修正しました。これはv0.2.30のmainnetデフォルトの後に本番に浮上したはずのバグです。設定は、データワイプ中のオプションのリカバリウォレットファイルパージを提供するようになりました (&lt;a href="https://github.com/block-core/angor/pull/883">PR #883&lt;/a>)。&lt;/p>
&lt;h3 id="sprout-v0315-エフェメラルチャネルttl更新とacpスラッシュコマンド">Sprout v0.3.15: エフェメラルチャネルTTL更新とACPスラッシュコマンド&lt;/h3>
&lt;p>6月10日にリリースされた&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.15">Sprout v0.3.15&lt;/a>は、6月2日のv0.3.7で始まったランの8番目のリリースです。ニュースレター #25はmesh-llm統合とチャネルセクションの作業とともにv0.3.1からv0.3.6のランをカバーしました。v0.3.7からv0.3.15はその下流であり、ポリッシュといくつかのユーザー向け追加に焦点を当てています。最もユーザーに見える変更は、&lt;a href="https://github.com/block/sprout/pull/902">PR #902&lt;/a>でのエフェメラルチャネルのTTL更新です: ユーザーがエフェメラルチャネルをアーカイブ解除すると、Sproutはチャネルのtime-to-liveを延長するので、アーカイブ解除は元の期限タイマーの下で即座に再アーカイブしません。モバイルカスタム絵文字は、設定の再設計とともに&lt;a href="https://github.com/block/sprout/pull/906">PR #906&lt;/a>に到着し、リアクションカウントは変更時にアニメーションするようになりました (&lt;a href="https://github.com/block/sprout/pull/904">PR #904&lt;/a>)。&lt;/p>
&lt;p>&lt;a href="https://github.com/block/sprout/pull/905">PR #905&lt;/a>は、複数語の表示名が壊れ、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a> &lt;code>nostr:npub&lt;/code>メンション抽出が静かにドロップされる長年のギャップを修正します。ディレクトリベースのデスクトップ用チームUIは、インストール、同期、および表示コマンドとともに&lt;a href="https://github.com/block/sprout/pull/912">PR #912&lt;/a>で出荷されます。スラッシュコマンドは、&lt;a href="https://agentclientprotocol.com">ACP&lt;/a>コネクタを通じて渡されるようになり (&lt;a href="https://github.com/block/sprout/pull/919">PR #919&lt;/a>)、Sprout UIをパスから外したまま、Sproutが&lt;code>/help&lt;/code>スタイルのコマンドを直接エージェントランタイムに転送できるようになります。&lt;/p>
&lt;h3 id="wisp-v111-sparkウォレット統合とnsecペーストガード">Wisp v1.1.1: Sparkウォレット統合とnsecペーストガード&lt;/h3>
&lt;p>6月5日にリリースされた&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.1">Wisp v1.1.1&lt;/a>は、&lt;a href="https://github.com/barrydeen/wisp/pull/548">PR #548&lt;/a>で&lt;a href="https://www.spark.money">Spark&lt;/a>サブスクリーンを備えた2ティアウォレット接続画面を実現し、&lt;a href="https://github.com/barrydeen/wisp/pull/549">PR #549&lt;/a>でiOSウォレットUIとのダッシュボードパリティを実現します。このリリースには、アプリのどこかで&lt;code>nsec1&lt;/code>プレフィックス付きペーストを検出し、フィールドがそれを受け入れるのをブロックする、システム全体の&lt;a href="https://github.com/barrydeen/wisp/pull/553">nsecペーストガード&lt;/a>が含まれており、Nostr UXで最も引用されるフットガンの1つを閉じます。QRスキャンログインと&lt;code>npub&lt;/code>および&lt;code>nprofile&lt;/code>用のウォッチオンリーモードは&lt;a href="https://github.com/barrydeen/wisp/pull/552">PR #552&lt;/a>で出荷され、ユーザーはプロフィールを読み取り専用でブラウズできます。Zapメッセージは、エンゲージメントドロワーでミニ投稿としてレンダリングされるようになったので (&lt;a href="https://github.com/barrydeen/wisp/pull/559">PR #559&lt;/a>)、zapノートはsat金額と並んでそのテキストを運びます。スレッド返信のweb-of-trustフィルターは&lt;a href="https://github.com/barrydeen/wisp/pull/583">PR #583&lt;/a>に着地し、ユーザーはフォローグラフの外のアカウントからの返信スパムを隠すことができます。&lt;/p>
&lt;h3 id="nostria-v3146とnospeak-113-通知の再作業とice再起動">Nostria v3.1.46とnospeak 1.1.3: 通知の再作業とICE再起動&lt;/h3>
&lt;p>6月7日の&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.46">Nostria v3.1.46&lt;/a>は、最後のビューから新しい通知のみをカウントするように通知カウンターを再作業する3リリースランを終了し、スクロールによって古い通知をロードするとバッジカウントが膨らむ長年のインフレーションを排除します。&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.45">Nostria v3.1.45&lt;/a>はlightningおよびQRコード支払いに影響する分割支払いバグを修正し、Androidのコンポジターでは実現不可能として以前に計画されていた半透明UIをドロップしました。&lt;/p>
&lt;p>6月4日の&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.1.3">nospeak v1.1.3&lt;/a>は、1対1音声通話用のFAILED状態でのICE再起動を追加します。標準のWebRTC動作は、ICE候補が代替パスなしにタイムアウトしたときに通話をドロップします。ICE再起動パスは候補を再交渉するので、通話は一時的なNATまたはネットワークの変更から回復します。Android通話は、ビデオ通話中に画面をオンに保つようになりました。&lt;/p>
&lt;h2 id="未リリースの変更">未リリースの変更&lt;/h2>
&lt;h3 id="amethyst-nip-32--nip-f4--torトラックを継続する41-pr">Amethyst: NIP-32 / NIP-F4 / Torトラックを継続する41 PR&lt;/h3>
&lt;p>Amethystは、リリースタグを切ることなく今週41のPRをマージしました。これは先週の52 PRと、ニュースレター #25でカバーされた&lt;a href="https://nostrcompass.org/ja/topics/nip-32/">NIP-32&lt;/a>ハッシュタグラベリングおよび&lt;a href="https://nostrcompass.org/ja/topics/nip-f4/">NIP-F4&lt;/a>ポッドキャストの作業の上にあります。アクティブなブランチは、次のタグ付きリリースのために機能を蓄積し続け、先週の目玉追加の上にポリッシュを重ねます: ハッシュタグラベラーの発見、ポッドキャスト画面、音楽トラックとプレイリスト、Tor自己ヒーリングウォッチドッグ、匿名アップロード用のエフェメラル署名者、およびNIP-05フィルタリングを備えたオンチェーンzap。AmethystのPRスループットは、任意のNostrクライアントの中で最も高いままで、未リリースキューは、他のAndroid Nostrクライアントがマッチする必要があるものの事実上のロードマップです。&lt;/p>
&lt;h3 id="damus-okメッセージからのリレー追跡とv117変更ログ">Damus: OKメッセージからのリレー追跡とv1.17変更ログ&lt;/h3>
&lt;p>6月3日にマージされた&lt;a href="https://github.com/damus-io/damus/pull/3786">Damus PR #3786&lt;/a>は、リレーからの成功した&lt;code>OK&lt;/code>メッセージをポストリレーリストに追加します。以前のDamusビルドは、リレーからの汎用メッセージを受信したときにのみseen-relaysリストを埋めていたので、ポストを確認したがイベントを何も返さなかったリレーはユーザーには見えませんでした。この変更は、投稿が好みのoutboxリレーに着地したことを確認したいユーザーにとって重要です。&lt;a href="https://github.com/damus-io/damus/pull/3796">PR #3796&lt;/a>はプロフィールビューでの&lt;code>AttributeGraph&lt;/code>サイクルを修正し、&lt;a href="https://github.com/damus-io/damus/pull/3725">PR #3725&lt;/a>は次のタグ付きリリースに先立ってv1.17変更ログを実現します。&lt;/p>
&lt;h3 id="shopstr-nip-34デュアル公開">Shopstr: NIP-34デュアル公開&lt;/h3>
&lt;p>Shopstrの&lt;a href="https://relay.ngit.dev/npub1u350hpq840naxzkkle4gmdtvzanfxmjd9m9tytn5355aua7jh2cqgfuw39/shopstr.git">ngit上のshopstrリポ&lt;/a>は、今週Nostr上で&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> gitリポとして発表され、ngitのトラックされたリポに加わりました。ショップクライアントのGitHubリポは主要な開発サーフェスのままです。NIP-34アナウンスは、並行するgit-over-Nostrコラボレーションパスを利用可能にします。これは&lt;a href="https://relay.ngit.dev/">Mostro&lt;/a>の後にNIP-34にデュアル公開する2番目の主要Nostrマーケットプレイスプロジェクトであり、プロジェクトメタデータのNostrのgitトランスポートへの段階的な移行を継続します。&lt;/p>
&lt;h3 id="hermes-marmot-mlsを介したaiエージェントゲートウェイ">Hermes-Marmot: MLSを介したAIエージェントゲートウェイ&lt;/h3>
&lt;p>&lt;a href="https://github.com/notmandatory/hermes-marmot">hermes-marmot&lt;/a>は、&lt;a href="https://github.com/NousResearch/hermes-agent">Hermes Agent&lt;/a>のプラグインで、Rust Marmot Development KitへのPythonバインディングである&lt;a href="https://github.com/marmot-protocol/mdk-python">mdk-python&lt;/a>を使用して、AIエージェントのメッセージングサーフェスを&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr) グループに接続します。プラグインにより、ユーザーは&lt;a href="https://whitenoise.chat">Whitenoise&lt;/a>を含む、kind 445 MLSメッセージを話す任意のNostrクライアントからAIエージェントにDMを送信できます。受信DMは&lt;a href="https://github.com/rust-nostr/nostr">nostr-sdk&lt;/a> Pythonバインディング経由で&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ギフトラップアンラッピングを使用し、受信welcomeは&lt;code>UnwrappedGift.from_gift_wrap&lt;/code>を通じて&lt;code>mdk.process_welcome&lt;/code>と&lt;code>mdk.accept_welcome&lt;/code>に流れます。アクセス制御は&lt;code>MARMOT_ALLOWED_USERS&lt;/code> (カンマ区切りのnpub許可リスト) または開発アクセス用の&lt;code>MARMOT_ALLOW_ALL_USERS=true&lt;/code>を通じて動作します。&lt;/p>
&lt;p>リポは新しく (最終更新は5月27日) 小さいものです。その意義はアーキテクチャ的です: それはLLMエージェントランタイムとMLS暗号化されたNostrメッセージングチャネルの間の最初の公的なブリッジであり、Whitenoise自体を超えたmdk-pythonの最初の本番使用です。このパターンは、両方のエンドポイントがMLSキーを保持し、リレーが暗号文のみを見るエージェント間通信を指し示します。&lt;/p>
&lt;h2 id="nip更新とプロトコル仕様作業">NIP更新とプロトコル仕様作業&lt;/h2>
&lt;h3 id="nip-67-eose完全性ヒント-pr-2317-マージ">NIP-67 EOSE完全性ヒント (PR #2317) マージ&lt;/h3>
&lt;p>mattnによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>は6月6日にマージされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-67/">NIP-67&lt;/a>をプロトコルに追加しました。NIPは&lt;code>EOSE&lt;/code>リレーメッセージをオプションの3番目の要素で拡張します: &lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;, &amp;quot;finish&amp;quot;]&lt;/code>はフィルターに一致するすべての保存されたイベントが配信されたことを信号送信し、裸の&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;subscription_id&amp;gt;]&lt;/code>は完全性の主張を運びません。ヒントを省略するリレーは、クライアントにさらにあるかもしれないと伝えています。NIP-11でNIP-67のアドバタイズを省略するリレーは、既存のレガシーヒューリスティックの下で今日の動作を保ちます。変更は両方向で下位互換性があります: レガシークライアントは末尾の配列要素を無視し、レガシーリレーはそれを省略します。&lt;/p>
&lt;p>マージされた仕様の動機は二重です。まず、静かなデータ損失: クライアントは300イベントの内部キャップを持つリレーに対して最後の500ノートを要求し、リレーは300イベントを返し、クライアント (標準の&lt;code>received &amp;lt; limit&lt;/code>ヒューリスティックを使用) は結果が完全であると結論付けます。201番目からN番目の最も古い一致するノートは、クライアントがその事実に盲目のまま、未読でリレーに残ります。第2に、必須の無駄なラウンドトリップ: リレーがレスポンスを300イベントでキャップするとき、キャップを使い果たすサブスクリプションは、フィルターが正確に300イベントに一致する場合でも、完了を確認するために純粋に&lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>で2番目の&lt;code>REQ&lt;/code>を必要とします。両方の失敗モードは、すべてのキャップを使い果たしたサブスクリプションで各クライアントによって支払われます。&lt;code>&amp;quot;finish&amp;quot;&lt;/code>ヒントは、1つの既存のメッセージ上の1つのオプション文字列で、両方のコストを排除します。&lt;/p>
&lt;h3 id="nip-50オートコンプリート拡張-pr-2357-マージ">NIP-50オートコンプリート拡張 (PR #2357) マージ&lt;/h3>
&lt;p>Alex Gleasonによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a>は6月6日にマージされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>検索に&lt;code>autocomplete:true/false&lt;/code>トークンを追加しました。拡張により、クライアントはクエリをtypeaheadルックアップとしてマークできるので、リレーはトークンなしのクエリのデフォルトとして全文検索を使用しながら、プレフィックスマッチングを使用します。Ditto&amp;rsquo;s のリレーは、フォローパック、リスト、および&lt;code>title&lt;/code>タグを持つ任意のイベントに対して実装し、タイトルプレフィックスに対するマッチを返します。デフォルトの検索パスは全文スコアリングを実行します。このトークンなしでは、オートコンプリートスタイルのUIはプレフィックス検索の意図を伝える方法がなく、リレーはクエリの形状から推測しなければなりませんでした。トークンは検索ごとのヒントであり、リレー全体の機能ではないので、リレーは一般的なオートコンプリートサポートを主張することなく、1つのイベントクラス (タイトル) に対して実装できます。&lt;/p>
&lt;h3 id="nip-gart緊急アラートと位置情報ブロードキャスト-pr-2374">NIP-GART緊急アラートと位置情報ブロードキャスト (PR #2374)&lt;/h3>
&lt;p>disinqaによる、6月9日に公開された&lt;a href="https://github.com/nostr-protocol/nips/pull/2374">PR #2374&lt;/a>は、信頼されたレシピエントのグループに宛てられた緊急アラートと位置情報ブロードキャストのためのNostr上のプライバシー保護ワイヤーフォーマットを定義します。表明された設計目標は、イベントをリプレイセーフで署名検証可能なエンドツーエンドに保ちながら、送信者アイデンティティ、グループメンバーシップ、およびペイロードをリレー運用者から隠すことです。NIP番号はまだTBDで、提案は初期ドラフトです。ユースケースは標準の緊急アラートパターンです: 脅威にさらされているユーザーは、事前共有された信頼された連絡先のグループだけが復号できる位置情報pingをブロードキャストし、リレーは送信者、受信者セット、およびペイロードに盲目です。ワイヤーフォーマットの詳細はPRに存在し、メンテナーがレビューするにつれて進化する可能性があります。&lt;/p>
&lt;h3 id="nip-46-logoutメソッド-pr-2373">NIP-46 logoutメソッド (PR #2373)&lt;/h3>
&lt;p>hzrd149による、6月8日に公開された&lt;a href="https://github.com/nostr-protocol/nips/pull/2373">PR #2373&lt;/a>は、クライアントがセッションが終了したことをbunkerに明示的に伝えることができるように、&lt;code>logout&lt;/code>メソッドを&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>に追加します。今まで、bunkerセッションを終了する唯一の方法は、セッションタイムアウトを待つか接続の使用を停止することでした。両方とも、なくなったクライアントのセッション状態をbunkerに保持させます。提案は短く (1つの新しいメソッド)、長寿命のbunker統合をよりクリーンにするタイプのハウスキーピング変更です。&lt;/p>
&lt;h3 id="nip-95ハイブリッドリレー-p2p提案はロングフォームとして回覧">NIP-95ハイブリッドリレー-P2P提案はロングフォームとして回覧&lt;/h3>
&lt;p>npub &lt;code>91bea5cd9361504c409aaf459516988f68a2fcd482762fd969a7cdc71df4451c&lt;/code>から6月4日に&lt;em>Protocolo Híbrido Relay-P2P via WebRTC&lt;/em>というタイトルで、&lt;code>kind:30023&lt;/code>投稿として&lt;a href="https://github.com/nostr-protocol/nips">NIP-95仕様&lt;/a>のロングフォームが回覧されました。ポルトガル語の文書は、Nostrクライアントが保存されたイベント取得とオフライン配信のためにリレーを引き続き使用しながら、ライブメッセージング用にWebRTC経由で相互に直接接続するハイブリッドピアツーピアリレープロトコルを定義します。作者は仕様を「LLM対応」として明示的にフレームし、AIモデルが動作するクライアントまたはサーバーコードを生成できるレベルの詳細でメッセージ定義、論理フロー、データスキーマ、および状態ルールを提供しました。提案はまだNIP PRとして着地していません。&lt;code>kind:30023&lt;/code>経由の回覧は、正式なnostr-protocol/nipsプルリクエストの慣習的な前駆体です。&lt;/p>
&lt;h3 id="nip-44-v3が2番目の署名者を獲得-claveが仕様を移植">NIP-44 v3が2番目の署名者を獲得: Claveが仕様を移植&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-06-03-newsletter/#nip-44-v3-amber-implementation-ahead-of-spec">先週のAmberのv6.2.0 NIP-44 v3ロールアウト&lt;/a>は、マージされたNIPs PRの前に出荷され、v3を、相互運用するために他のクライアントがミラーしなければならないAmber固有の拡張として残しました。その単一実装のフレーミングは今週変わりました。プッシュベースのiOS NIP-46リモート署名者&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>は、6月3日と4日に8つのコミットにわたって独立したNIP-44 v3ポートを実現しました。暗号プリミティブは3つのコミットで出荷されます: &lt;a href="https://github.com/DocNR/clave/commit/99ca5a5aacb501d1666c489fcdea30187c7853fa">HKDF + ECDHキーレイヤー&lt;/a>、&lt;a href="https://github.com/DocNR/clave/commit/8808cdca54d32b4ae57856bd4b07ed73a45e8e5c">v3パディングアルゴリズム&lt;/a>、および&lt;a href="https://github.com/DocNR/clave/commit/ae1f506a53cb2c8aa16523540dbe790876c1839e">トップレベルパブリックAPIと暗号化コンテキスト&lt;/a>。それらの上に、NIP-46サーフェスが&lt;a href="https://github.com/DocNR/clave/commit/f37aa1afc8368862fc3ebac533408442349bfc38">LightSigner内のRPCディスパッチ配線&lt;/a>と、&lt;a href="https://github.com/DocNR/clave/commit/e51bcb49fc61cfa89b6030d61b203e046aeddb0a">v3コンテキスト (kindとscope) を運ぶPendingRequestスキーマ&lt;/a>で続くので、署名者はv3ペイロードがどのイベントkindとユースケースに対して承認されたかを記録できます。&lt;/p>
&lt;p>Claveはユーザー向けサーフェスでAmberから分岐します。&lt;a href="https://github.com/DocNR/clave/commit/0a8b7de63c1f2994a80a66bf139ec519fab12877">感度階層を備えた許可付与スキーマ&lt;/a>により、ユーザーは選択された感度レベルで特定のイベントkindおよびスコープに対してv3暗号化を許可できます。最初の遭遇では、&lt;a href="https://github.com/DocNR/clave/commit/2cf563cb15b0406f5e8aaa0b4e34b887ff1896a1">一度きりの説明カードを備えたv3コンテキスト認識の承認プロンプト&lt;/a>がv3をユーザーに紹介します。作業はmainにあり&lt;a href="https://github.com/DocNR/clave/commit/4bd0c26d7cf308386ef15e5d96ee5673d6db2d4a">Xcodeプロジェクトに配線&lt;/a>されていますが、未リリースです。最新のタグ付きビルドは5月12日の&lt;a href="https://github.com/DocNR/clave/releases/tag/v0.2.0-build79">v0.2.0-build79&lt;/a>です。&lt;/p>
&lt;p>2つの独立した実装がNIPs PRのマージ前に本番パスでNIP-44 v3を実現することで、プロトコルPRが正式化する基礎となるワイヤーフォーマットのケースが強化されます。クロス実装相互運用性テストは、AmberのAndroid承認サーフェスとClaveのiOS感度層モデルを2つの参照ポイントとして、仕様収束へのパスになります。v3を配線する他のリモート署名者 (nsec.appのnoauthは2025年5月以来休止しており、他のbunkerはv3の作業を発表していません) は、コンセンサスをさらに強化するでしょう。&lt;/p>
&lt;h3 id="nip-34アクティビティ-irisが新しいhashtreeトランスポートでスタックを採用">NIP-34アクティビティ: Irisが新しいhashtreeトランスポートでスタックを採用&lt;/h3>
&lt;p>Irisは6月8日に&lt;a href="https://njump.me/nevent1qqs8kmy7a9dn5awurlp9q26lsaetl7dc4wauzdl8ww68dzmn09e074gpzfmhxue69uhhgetdwqhxjunfwvh8gmc850du0">&lt;code>hashtree&lt;/code>&lt;/a>のNIP-34リポアナウンスを、6月9日に&lt;a href="https://njump.me/nevent1qqsq4grx000f6p0r8hdv4lqhcgn7707vmktv2j528kn0ldps4y9g49qpzfmhxue69uhhgetdwqhxjunfwvh8gmcmq47as">&lt;code>iris-apps&lt;/code>&lt;/a>、&lt;a href="https://njump.me/nevent1qqsyj5r0tyqvpp9v7qnras90u6kzqtpqx6ktntwym66m8qyngvf59vqpzfmhxue69uhhgetdwqhxjunfwvh8gmcpts6pf">&lt;code>iris-drive&lt;/code>&lt;/a>、および&lt;a href="https://njump.me/nevent1qqs0x98hpsv8vmrxvwm2rs9exxttrue5qv5p2n2sqjeylz2kgdmd7tgpzfmhxue69uhhgetdwqhxjunfwvh8gmca8783s">&lt;code>iris-chat-rs&lt;/code>&lt;/a>を公開し、&lt;code>wss://temp.iris.to&lt;/code>から提供される新しい&lt;code>htree://&lt;/code>スキームの下にクローンURLをアドバタイズしました。hashtreeトランスポートは、GRASPルーティングクローンへのコンテンツアドレスドな代替であり、これら4つのアナウンスはその最初の公的な使用です。リポは空の説明を運び、アーキテクチャの詳細はまだ出現していますが、(カスタムのIris内部マニフェストではなく) NIP-34アナウンスを介して公開するという選択は、IrisがNIP-34 git-over-Nostrスタック全体にコミットしていることを信号送信します。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-67-eose完全性ヒント">NIPディープダイブ: NIP-67 (EOSE完全性ヒント)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-67/">NIP-67&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>で最も長い間続いていた正確性ギャップの1つを閉じます。元の仕様は&lt;code>EOSE&lt;/code>を&lt;code>REQ&lt;/code>の保存されたイベントとライブサブスクリプションイベントの間の境界として定義していますが、リレーがすべての保存された一致を配信し終えたのか、内部キャップのために途中で停止したのかを指定したことはありませんでした。すべてのリレーは、クライアントの&lt;code>limit&lt;/code>とは独立してサブスクリプションごとのキャップ (一般的に300から1000イベント) を強制し、クライアントはそのキャップを観察する方法を持ちませんでした。&lt;/p>
&lt;p>標準の回避策は、受信数を要求された&lt;code>limit&lt;/code>と比較することでした。&lt;code>received &amp;lt; limit&lt;/code>なら、結果を完全として扱い、そうでなければ&lt;code>until=&amp;lt;oldest_created_at&amp;gt;&lt;/code>でページネートします。両方のブランチが壊れています。&lt;code>received &amp;lt; limit&lt;/code>ブランチは静かに切り詰めます: 300でキャップされたリレーに対して500ノートを要求するクライアントは300イベントを見て、&lt;code>300 &amp;lt; 500&lt;/code>なので結果が完全であると結論付け、残りを決してフェッチしません。リレーで保持されたイベントは、既存のメッセージを通じて「さらに利用可能」を信号送信できません。2番目のブランチとしてのページネーションは無駄です: キャップに正確に一致するフィルターは、完全性を確認するために2番目の&lt;code>REQ&lt;/code>を必要とし、リレーで完全なフィルタースキャンを消費しながらゼロイベントを返します。&lt;/p>
&lt;p>NIP-67の修正は、&lt;code>EOSE&lt;/code>メッセージの1つのオプション文字列です:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;, &amp;#34;finish&amp;#34;] // 明示的: すべての保存されたイベントが配信された
[&amp;#34;EOSE&amp;#34;, &amp;#34;&amp;lt;sub_id&amp;gt;&amp;#34;] // 完全性の主張なし
&lt;/code>&lt;/pre>&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> &lt;code>supported_nips&lt;/code>でNIP-67をアドバタイズし、裸の&lt;code>EOSE&lt;/code>を発するリレーは、クライアントにさらにあると伝えています。アドバタイズを省略するリレーは今日の動作を保ち、クライアントは既存のヒューリスティックにフォールバックします。レガシークライアントは末尾の配列要素を無視します。下位互換性は両方向で保持され、新しい動詞またはイベントkindはありません。&lt;/p>
&lt;p>NIP-67を検討する価値があるのは、意図的に制限したスコープです。仕様はカーソルまたはページネーショントークンを定義しないので、&lt;code>until&lt;/code>ベースのページネーションはメカニズムのままです。リレーキャップは現在の位置に留まり、NIPはそれらの露出を必要としません。NIP-67は、&lt;code>EOSE&lt;/code>を保存からライブへの境界としての意味を保持し、境界でyes-or-no信号のみを追加します: 「あなたのためにさらにあります」対「それがすべてです」。この最小限のサーフェスが、PRがNIP-01拡張としては比較的短いレビュー期間の後にマージされた理由であり、mattnがPRで英語テキストにAI翻訳が使用されたことを明示的に述べる理由です。変更は、翻訳の不確実性が問題にならないほど十分に小さいです。&lt;/p>
&lt;p>キャップを強制するリレーとクライアント間のNIP-67対応の交換の例。リレーからのNIP-11アドバタイズメント:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">11&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;supported_nips\&amp;#34;:[1,11,50,67]}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>続くワイヤーレベルの交換:&lt;/p>
&lt;pre tabindex="0">&lt;code>→ [&amp;#34;REQ&amp;#34;, &amp;#34;abc&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:500}]
← [...300 EVENTメッセージ...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;abc&amp;#34;] // &amp;#34;finish&amp;#34;なし: キャップに達し、さらに利用可能
→ [&amp;#34;REQ&amp;#34;, &amp;#34;def&amp;#34;, {&amp;#34;kinds&amp;#34;:[1],&amp;#34;limit&amp;#34;:300,&amp;#34;until&amp;#34;:1780900000}]
← [...178 EVENTメッセージ...]
← [&amp;#34;EOSE&amp;#34;, &amp;#34;def&amp;#34;, &amp;#34;finish&amp;#34;] // 明示的に完了
&lt;/code>&lt;/pre>&lt;p>178イベントのレスポンスは、以前は完了を確認するために3番目の&lt;code>REQ&lt;/code>をトリガーしていました。NIP-67では、クライアントはそこで停止します。&lt;/p>
&lt;p>NIP-67は、稀なコンセンサスとともに着地するNIP-01修正としても注目に値します。プロトコルの小さなサーフェスがすべての実装で荷重をかけるので、ほとんどのNIP-01の変更は長い議論スレッドを引き付けます。NIP-67は延長されたレビュー期間 (公開からマージまでおおよそ7週間) の後にマージされました。これは、NIP-01の変更が十分に小さく、失敗モードが十分に具体的なとき (静かなデータ損失、必須の無駄なラウンドトリップ)、プロトコルのメンテナーはコアメッセージ語彙を拡張する意思があることを示唆しています。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-50-検索">NIPディープダイブ: NIP-50 (検索)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>は&lt;code>REQ&lt;/code>メッセージ内の&lt;code>search&lt;/code>フィルターフィールドを定義し、クライアントがクエリ文字列に対する全文一致でイベントをフィルターするようリレーに要求できるようにします。マージされたベース仕様は意図的に最小限です: &lt;code>search&lt;/code>フィールドは文字列で、各リレーは独自の検索セマンティクス (どのフィールドがインデックス化されるか、スコアリングがどう機能するか、ステミングが適用されるかどうか) を決定し、リレーはNIP-11文書でNIP-50サポートをアドバタイズします。クライアントは、クエリ文字列自体を通じてのみ検索アルゴリズムを制御します。&lt;/p>
&lt;p>このミニマリズムはNIP-50の強みと制約の両方です。強みは、任意のリレーが任意の品質レベルで検索を実装できることです: 基本的な部分文字列スキャンは仕様を満たし、ElasticsearchまたはMeilisearchを実行するリレーは等しく満たします。制約は、クライアントが検索意図を表現する方法を欠いていることです。プロフィールメンションtypeahead UIは表示名に対するプレフィックスマッチングを望みます。全文コンテンツ検索はノート本体全体でトークン化された全文スコアリングを望みます。同じ&lt;code>search&lt;/code>フィールドが両方を運び、リレーはクエリの形状から推測しなければなりません。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2357">PR #2357&lt;/a>は、最初のNIP-50拡張トークンを追加します: 検索クエリに埋め込まれた&lt;code>autocomplete:true&lt;/code>または&lt;code>autocomplete:false&lt;/code>は、クライアントがどのモードを望むかを信号送信します。Ditto&amp;rsquo;s リレーは、フォローパック、リスト、および&lt;code>title&lt;/code>タグを持つ任意のイベントに対してトークンを実装し、&lt;code>autocomplete:true&lt;/code>が存在するときにプレフィックスマッチングに切り替えます。トークンはクエリ内にインラインで存在するので (別のフィルターフィールドはそのままに)、検索文字列とともに移動し、ワイヤープロトコルのバンプは必要ありません:&lt;/p>
&lt;pre tabindex="0">&lt;code>search: &amp;#34;fiat autocomplete:true&amp;#34;
&lt;/code>&lt;/pre>&lt;p>このようなトークン形状のヒントは、NIP-50がリレー固有の方言を常に扱ってきた方法です。リレーは既に&lt;code>language:en&lt;/code>や&lt;code>domain:example.com&lt;/code>のようなトークンをサポートしていました。それぞれはリレー固有のままで、各リレーは独自の方言を文書化します。NIP-50のPR #2357は、&lt;code>autocomplete&lt;/code>をリレー限定のトークンから仕様に祝福されたものに昇格させ、リレー全体でtypeahead対応検索への道を開きます。&lt;/p>
&lt;p>kind 0プロフィールタイトルをインデックス化するリレーをターゲットにする、autocompleteトークンを備えたNIP-50 &lt;code>REQ&lt;/code>の例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1781136000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;client&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;example-mention-picker&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Sent search: kinds=[0], search=\&amp;#34;fiat autocomplete:true\&amp;#34;, limit=10&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;12d3e4f5061728394a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f7081a2b3c4d5e6f70819a2b3c4d5e6f7081a2b3c4d5e6f708192&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>実際のワイヤーレベルのREQ:&lt;/p>
&lt;pre tabindex="0">&lt;code>[&amp;#34;REQ&amp;#34;, &amp;#34;mention-picker&amp;#34;, {&amp;#34;kinds&amp;#34;:[0],&amp;#34;search&amp;#34;:&amp;#34;fiat autocomplete:true&amp;#34;,&amp;#34;limit&amp;#34;:10}]
&lt;/code>&lt;/pre>&lt;p>トークンを認識しないリレーは、&lt;code>autocomplete:true&lt;/code>をリテラル検索文字列の一部として扱い、全文マッチングにフォールバックし、正しい (異なるようにランク付けされた) 結果を返します。優雅な劣化により、利用可能なときにプレフィックスマッチングを好むクライアントは、無条件にトークンを含めることが安全です。&lt;/p>
&lt;p>次に可能性の高いNIP-50拡張は、kindごとのランキング制御です: デフォルトの関連性スコアの代わりに「&lt;code>created_at&lt;/code>降順でランク付け」を言うヒント。いくつかのリレーは既に&lt;code>sort:newest&lt;/code>をリレー限定トークンとして受け入れ、&lt;code>autocomplete&lt;/code>を仕様に持ち込んだのと同じ昇格パスが適用されます。検索は、リレーが結果の品質で競争する数少ないNostrプリミティブの1つのままです。配信の信頼性はすべての準拠するリレーで同じです。増分トークンにより、クライアントはリレーが重量級の新しい仕様を出荷することを強制することなく、その品質競争を活用できます。&lt;/p></content:encoded></item><item><title>Nostr Compass #25</title><link>https://nostrcompass.org/ja/newsletters/2026-06-03-newsletter/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-06-03-newsletter/</guid><description>&lt;p>Amber 6.2.0は仕様に先立ってNIP-44 v3暗号化を出荷しました。Mostroは8つのPRにわたってCashuで決済されるエスクローの基礎を実現し、既存のCashu Development KitをLightningと並ぶ2番目の決済バックエンドとしてラップしました。NIP-F4ポッドキャストは27か月の議論を経てマージされました。fiatjafはbunker対Marmotのアーキテクチャ論争を再開させる論争的なNIP-17キー分離提案を公開しました。Amethystは52の未リリースPRにわたってNIP-32ハッシュタグラベリング、専用ポッドキャスト画面、オンチェーンzapを実現しました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amber-620-nip-44-v3暗号化を出荷">Amber 6.2.0: NIP-44 v3暗号化を出荷&lt;/h3>
&lt;p>6月1日にリリースされた&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>は、専用の承認画面、intentプレビュー、bunkerプレビュー、履歴ロギング、および無効なリクエストの自動拒否を備えた&lt;a href="https://github.com/greenart7c3/Amber/pull/448">NIP-44 v3暗号化サポート&lt;/a>を追加します。このリリースは、他のAndroidアプリが既存のv2パスと並んでv3暗号化を要求できるように&lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">NIP-44 v3 ContentProviderオーソリティ&lt;/a>も登録します。NIP-44自体は、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDM、NIP-46 bunkerトラフィック、およびその他のNostrプリミティブによって使用されるバージョン付き暗号化ペイロード仕様です。Amberのv3はv2と並ぶオプトインで、別の署名者メソッドによって信号送信されるので、受信側クライアントはアルゴリズムを明示的に交渉できます。対応するNIPs PRはまだ着地していないので、Amberはプロトコルの合意に先立ってv3を展開しており、ワイヤーフォーマットとContentProviderオーソリティが下流のクライアント統合のために登録されています。&lt;/p>
&lt;p>NIP-46セッションは接続時にpingリクエストを自動承認するようになり、ペアリング後の最初のラウンドトリップでのプロンプトが削除されました。&lt;code>sign_message&lt;/code>署名者メソッドは非推奨で未使用になった後、完全に削除されました。&lt;/p>
&lt;p>Amberが優勢なAndroid署名者なので、v3を求める下流のクライアントはNIPs PRが着地するまでAmberのワイヤーフォーマットをターゲットにしなければなりません。それはプロトコルが追いつくまで、最終的なv3仕様に対してAmberに暗黙の発言権を与えます。トレードオフは現実的です: 本番のv3は、他のクライアントが今マッチしなければならない一時的な単一実装のリファレンスポイントを犠牲にして、最終的なNIPのための実装フィードバックをAmberに集めさせます。&lt;/p>
&lt;h3 id="mostro-cdk経由のcashuエスクロー統合">Mostro: CDK経由のCashuエスクロー統合&lt;/h3>
&lt;p>grunchは今週MostroP2P全体で8つのPRを実現し、CashuのP2PKマルチシグプリミティブ (NUT-10とNUT-11) をNostr協調型のP2P Bitcoin取引所でLightningと並ぶ2番目の決済バックエンドとして統合しました。暗号プリミティブはCashuのものであり、作業は統合の足場と新しいエスクローバックエンドtraitです。5月30日にリリースされた&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>は、&lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">2-of-3マルチシグエスクロー用のプロトコルタイプ&lt;/a>、プルーフごとのP_M署名、およびレスポンス検証を通じてエスクローイベントを許可します。アーキテクチャは&lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a>で文書化されており、&lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>で明確化された注文ごとの取引キーを使用します。&lt;/p>
&lt;p>実装は1日で6つのフォローアップPRにわたって展開されました。&lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a>は設定、エスクローモード、条件付きブートを追加しました。次のスライスである&lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>は、Lightning実装とCashuスタブを持つ&lt;code>EscrowBackend&lt;/code> traitを定義し、Mostroが注文状態マシンを変更せずに決済バックエンドを切り替えられるようにしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a>は、mintおよびウォレット操作のために&lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (Cashu Development Kit) をラップしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a>のデータベース作業は、compare-and-swapエスクローロックとアクティブロッククエリを追加しました。&lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a>は、エンドツーエンドのエスクローテストのために専用CIジョブでコンテナ化されたmintを構築しました。Mostroフローは既にNIP-59ギフトラップDMをリレー上での注文コーディネーションに使用しているので、Cashuエスクローはワイヤープロトコルに触れることなくLightningと並ぶ2番目の決済オプションとしてスロットインします。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="ngit-v250-graspフォールバックと遅延gitフェッチ">ngit v2.5.0: GRASPフォールバックと遅延gitフェッチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.5.0">ngit v2.5.0&lt;/a>は、リポジトリに少なくとも1つのGRASPサーバーが登録されているときに、新しい提案に対して&lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code>と&lt;code>ngit send&lt;/code>のデフォルト動作をPR kindを生成するように変更します。以前は、これは60 KBを超える大きすぎるコミット、またはサブモジュールを含むコミットに対してのみトリガーされていました。PRがリポジトリのGRASPサーバーにプッシュできない場合、ngitは宣言されたサーバーを通じてGRASP-06ルーティングにフォールバックするようになりました。&lt;code>ngit send --git-server&lt;/code>フラグまたは&lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code>により、コントリビューターはカスタムgit URLまたはGRASPサーバーを明示的にターゲットにできます。&lt;/p>
&lt;p>&lt;code>ngit init&lt;/code>の再公開は、既存のアナウンスから未知のタグを保持するようになったので、将来のngitバージョンやサードパーティツールによって追加されたタグは再公開を生き延びます。黄色の警告が引き継がれたタグをリストし、&lt;code>--clean&lt;/code>は要求に応じてそれらを削除します。&lt;code>ngit pr apply&lt;/code>、&lt;code>ngit pr checkout&lt;/code>、&lt;code>ngit pr list&lt;/code>はgitサーバーを遅延して参照し、単一のフェッチヘルパーを共有するので、コミットが既にローカルにあるときにcheckoutが無条件にフェッチしなくなりました。&lt;code>ngit pr checkout&lt;/code>はまた、リポジトリの宣言されたgitサーバーがPRチップを持たないときに、PRイベントから提出者が提供したクローンURLをフォールバックとして試み、&lt;code>ngit pr apply&lt;/code>の既存の動作と一致させます。ngitはNostr上のgitコラボレーションのための参照&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>実装であり、v2.5.0はGRASPを新しいコントリビューターの第一級のパスにします。&lt;/p></description><content:encoded>&lt;p>Amber 6.2.0は仕様に先立ってNIP-44 v3暗号化を出荷しました。Mostroは8つのPRにわたってCashuで決済されるエスクローの基礎を実現し、既存のCashu Development KitをLightningと並ぶ2番目の決済バックエンドとしてラップしました。NIP-F4ポッドキャストは27か月の議論を経てマージされました。fiatjafはbunker対Marmotのアーキテクチャ論争を再開させる論争的なNIP-17キー分離提案を公開しました。Amethystは52の未リリースPRにわたってNIP-32ハッシュタグラベリング、専用ポッドキャスト画面、オンチェーンzapを実現しました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amber-620-nip-44-v3暗号化を出荷">Amber 6.2.0: NIP-44 v3暗号化を出荷&lt;/h3>
&lt;p>6月1日にリリースされた&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.2.0">Amber v6.2.0&lt;/a>は、専用の承認画面、intentプレビュー、bunkerプレビュー、履歴ロギング、および無効なリクエストの自動拒否を備えた&lt;a href="https://github.com/greenart7c3/Amber/pull/448">NIP-44 v3暗号化サポート&lt;/a>を追加します。このリリースは、他のAndroidアプリが既存のv2パスと並んでv3暗号化を要求できるように&lt;a href="https://github.com/greenart7c3/Amber/commit/8b93340">NIP-44 v3 ContentProviderオーソリティ&lt;/a>も登録します。NIP-44自体は、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDM、NIP-46 bunkerトラフィック、およびその他のNostrプリミティブによって使用されるバージョン付き暗号化ペイロード仕様です。Amberのv3はv2と並ぶオプトインで、別の署名者メソッドによって信号送信されるので、受信側クライアントはアルゴリズムを明示的に交渉できます。対応するNIPs PRはまだ着地していないので、Amberはプロトコルの合意に先立ってv3を展開しており、ワイヤーフォーマットとContentProviderオーソリティが下流のクライアント統合のために登録されています。&lt;/p>
&lt;p>NIP-46セッションは接続時にpingリクエストを自動承認するようになり、ペアリング後の最初のラウンドトリップでのプロンプトが削除されました。&lt;code>sign_message&lt;/code>署名者メソッドは非推奨で未使用になった後、完全に削除されました。&lt;/p>
&lt;p>Amberが優勢なAndroid署名者なので、v3を求める下流のクライアントはNIPs PRが着地するまでAmberのワイヤーフォーマットをターゲットにしなければなりません。それはプロトコルが追いつくまで、最終的なv3仕様に対してAmberに暗黙の発言権を与えます。トレードオフは現実的です: 本番のv3は、他のクライアントが今マッチしなければならない一時的な単一実装のリファレンスポイントを犠牲にして、最終的なNIPのための実装フィードバックをAmberに集めさせます。&lt;/p>
&lt;h3 id="mostro-cdk経由のcashuエスクロー統合">Mostro: CDK経由のCashuエスクロー統合&lt;/h3>
&lt;p>grunchは今週MostroP2P全体で8つのPRを実現し、CashuのP2PKマルチシグプリミティブ (NUT-10とNUT-11) をNostr協調型のP2P Bitcoin取引所でLightningと並ぶ2番目の決済バックエンドとして統合しました。暗号プリミティブはCashuのものであり、作業は統合の足場と新しいエスクローバックエンドtraitです。5月30日にリリースされた&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.12.0">Mostro core v0.12.0&lt;/a>は、&lt;a href="https://github.com/MostroP2P/mostro-core/pull/150">2-of-3マルチシグエスクロー用のプロトコルタイプ&lt;/a>、プルーフごとのP_M署名、およびレスポンス検証を通じてエスクローイベントを許可します。アーキテクチャは&lt;a href="https://github.com/MostroP2P/mostro/pull/756">PR #756&lt;/a>で文書化されており、&lt;a href="https://github.com/MostroP2P/mostro/pull/757">PR #757&lt;/a>で明確化された注文ごとの取引キーを使用します。&lt;/p>
&lt;p>実装は1日で6つのフォローアップPRにわたって展開されました。&lt;a href="https://github.com/MostroP2P/mostro/pull/758">F2 (PR #758)&lt;/a>は設定、エスクローモード、条件付きブートを追加しました。次のスライスである&lt;a href="https://github.com/MostroP2P/mostro/pull/760">F3 (PR #760)&lt;/a>は、Lightning実装とCashuスタブを持つ&lt;code>EscrowBackend&lt;/code> traitを定義し、Mostroが注文状態マシンを変更せずに決済バックエンドを切り替えられるようにしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/759">F4 (PR #759)&lt;/a>は、mintおよびウォレット操作のために&lt;a href="https://github.com/cashubtc/cdk">CDK&lt;/a> (Cashu Development Kit) をラップしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/761">F5 (PR #761)&lt;/a>のデータベース作業は、compare-and-swapエスクローロックとアクティブロッククエリを追加しました。&lt;a href="https://github.com/MostroP2P/mostro/pull/762">F6 (PR #762)&lt;/a>は、エンドツーエンドのエスクローテストのために専用CIジョブでコンテナ化されたmintを構築しました。Mostroフローは既にNIP-59ギフトラップDMをリレー上での注文コーディネーションに使用しているので、Cashuエスクローはワイヤープロトコルに触れることなくLightningと並ぶ2番目の決済オプションとしてスロットインします。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="ngit-v250-graspフォールバックと遅延gitフェッチ">ngit v2.5.0: GRASPフォールバックと遅延gitフェッチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.5.0">ngit v2.5.0&lt;/a>は、リポジトリに少なくとも1つのGRASPサーバーが登録されているときに、新しい提案に対して&lt;code>git push pr/&amp;lt;branch&amp;gt;&lt;/code>と&lt;code>ngit send&lt;/code>のデフォルト動作をPR kindを生成するように変更します。以前は、これは60 KBを超える大きすぎるコミット、またはサブモジュールを含むコミットに対してのみトリガーされていました。PRがリポジトリのGRASPサーバーにプッシュできない場合、ngitは宣言されたサーバーを通じてGRASP-06ルーティングにフォールバックするようになりました。&lt;code>ngit send --git-server&lt;/code>フラグまたは&lt;code>git push -o git-server=&amp;lt;url&amp;gt;&lt;/code>により、コントリビューターはカスタムgit URLまたはGRASPサーバーを明示的にターゲットにできます。&lt;/p>
&lt;p>&lt;code>ngit init&lt;/code>の再公開は、既存のアナウンスから未知のタグを保持するようになったので、将来のngitバージョンやサードパーティツールによって追加されたタグは再公開を生き延びます。黄色の警告が引き継がれたタグをリストし、&lt;code>--clean&lt;/code>は要求に応じてそれらを削除します。&lt;code>ngit pr apply&lt;/code>、&lt;code>ngit pr checkout&lt;/code>、&lt;code>ngit pr list&lt;/code>はgitサーバーを遅延して参照し、単一のフェッチヘルパーを共有するので、コミットが既にローカルにあるときにcheckoutが無条件にフェッチしなくなりました。&lt;code>ngit pr checkout&lt;/code>はまた、リポジトリの宣言されたgitサーバーがPRチップを持たないときに、PRイベントから提出者が提供したクローンURLをフォールバックとして試み、&lt;code>ngit pr apply&lt;/code>の既存の動作と一致させます。ngitはNostr上のgitコラボレーションのための参照&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>実装であり、v2.5.0はGRASPを新しいコントリビューターの第一級のパスにします。&lt;/p>
&lt;h3 id="jumble-v2657-exif除去と検証されたzapカウント">Jumble v26.5.7: EXIF除去と検証されたzapカウント&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/releases/tag/v26.5.7">Jumble v26.5.7&lt;/a>は、ユーザーのプライバシーとデータの整合性に直接影響する2つの変更を追加します。EXIFの位置と カメラ識別子は、クライアントを離れる前に画像アップロードから除去されるようになり、Jumbleから投稿されるすべての画像に影響を及ぼしていた長年のメタデータリークサーフェスが閉じられました。zapカウントは、暗号的に検証された領収書からのみ計算されるようになり、攻撃者がノートのzap合計を誇張することを許していた不正な形式のzapイベントによる膨張したカウントを修正しました。このリリースはまた、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMの送信者アイデンティティ検証を追加し、送信者がシール内で&lt;code>pubkey&lt;/code>を偽造できる詐称サーフェスを閉じます。&lt;/p>
&lt;h3 id="nostr-calendar-v160-rsvpと重複参加者処理">nostr-calendar v1.6.0: RSVPと重複参加者処理&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.6.0">nostr-calendar v1.6.0&lt;/a>はFormstrのRSVPフロー (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/169">PR #169&lt;/a>) を実現し、イベント招待の重複参加者を防ぎます (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/168">PR #168&lt;/a>)。publish関数の&lt;code>waitForAll&lt;/code>オプションはfalseにデフォルトするようになったので、UIは遅いリレー上でブロックしなくなりました (&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/170">PR #170&lt;/a>)。&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/157">PR #157&lt;/a>は、アポイントメントスケジューリングと予約のためのFormstrの2つのNIP提案ドラフトを出荷しました。&lt;/p>
&lt;h3 id="sprout-036-sprout--mesh-llmとチャネルセクション">Sprout 0.3.6: Sprout × mesh-llmとチャネルセクション&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout/releases/tag/v0.3.6">Sprout v0.3.6&lt;/a>は、今週のv0.3.1からv0.3.6までの6リリースランのハイライトです。プロセス内Sprout × mesh-llm統合は&lt;a href="https://github.com/block/sprout/pull/798">PR #798&lt;/a>に着地し、Sproutがリレー承認を通じてmesh-llmノードをサーブおよび消費できるようにします。ユーザー定義のチャネルセクションはNostr経由でデバイス間で同期し (&lt;a href="https://github.com/block/sprout/pull/792">PR #792&lt;/a>)、チャネルセクションはリレー同期とともにモバイルに来ました (&lt;a href="https://github.com/block/sprout/pull/800">PR #800&lt;/a>)。可変フォローとミュートコントロールを備えたスレッド認識通知は&lt;a href="https://github.com/block/sprout/pull/761">PR #761&lt;/a>に到着します。&lt;/p>
&lt;p>ダウンロードカード付きの任意ファイルタイプ添付は&lt;a href="https://github.com/block/sprout/pull/810">PR #810&lt;/a>に到着し、Sproutを画像のみの添付を超えて拡張しました。モバイルはPulseソーシャルフィードタブ (&lt;a href="https://github.com/block/sprout/pull/772">PR #772&lt;/a>) と、フィード、作成、フィルタサーフェス全体のPulseポリッシュ (&lt;a href="https://github.com/block/sprout/pull/796">PR #796&lt;/a>) を獲得しました。&lt;/p>
&lt;h3 id="nostrbotkit-v050-rustボットフレームワークにおけるmarmotグループチャット">NostrBotKit v0.5.0: RustボットフレームワークにおけるMarmotグループチャット&lt;/h3>
&lt;p>5月24日にCodebergで公開された&lt;a href="https://codeberg.org/Tuxor/NostrBotKit/src/branch/main/CHANGELOG.md">NostrBotKit v0.5.0&lt;/a>は、セルフホストされたRustボットフレームワークに&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> (MLS-over-Nostr、&lt;a href="https://github.com/nostr-protocol/nips/pull/2014">NIP-104&lt;/a>) サポートを追加します。&lt;code>marmot: true&lt;/code>が設定されると、ボットは MLSキーパッケージ (kind 443、30443、10051) を公開し、グループ招待を自動的に受け入れ、参加したグループでメッセージをリッスンします。2つの新しいコマンドタイプ&lt;code>dm_marmot&lt;/code>と&lt;code>dm_marmot_npub&lt;/code>により、ボットはcronジョブまたはwebhook経由で名前付きMarmotグループまたは1:1 Marmotチャットにメッセージを送信できます。他のボットとのフィードバックループを防ぐために、NostrBotKitボットは&lt;code>/command&lt;/code>または&lt;code>@botname/command&lt;/code>経由で明示的に彼らに宛てられたメッセージにのみ応答します。MIP-04を使用した暗号化された添付はBlossomまたはNIP-96経由で自動的に復号され再アップロードされ、MLS状態データベースはボットの秘密鍵から導出されたキーで暗号化されます。NostrBotKitはNIP-104ボットサポートを出荷する最初のRustフレームワークであり、Marmot暗号化ボット展開を既存のTypeScriptパスとは異なる運用プロフィールに開きます。&lt;/p>
&lt;h3 id="noscrypt-v0114-署名付き暗号ライブラリリリース">noscrypt v0.1.14: 署名付き暗号ライブラリリリース&lt;/h3>
&lt;p>&lt;a href="https://github.com/vnuge/noscrypt/releases/tag/v0.1.14">noscrypt v0.1.14&lt;/a>は、secp256k1、NIP-04、NIP-44プリミティブのためにいくつかのNostrクライアントによって使用されるC暗号ライブラリのセキュリティリリースです。このリリースはメンテナーの公開鍵に対して検証可能な&lt;a href="https://www.vaughnnugent.com/resources/software/modules/noscrypt">PGP署名付きダウンロード&lt;/a>とともに出荷されます。noscryptをバンドルする下流のクライアントは、統合する前に署名を検証すべきです。&lt;/p>
&lt;h3 id="chama-v130-fedimintを使用した新しいnostrネイティブp2pエスクロー">Chama v1.3.0: Fedimintを使用した新しいNostrネイティブP2Pエスクロー&lt;/h3>
&lt;p>6月1日にリリースされた&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.3.0">Chama v1.3.0&lt;/a>は、決済のためにFedimint ecashと2-of-3 Shamir秘密分散を使用する新しいNostrネイティブP2Pエスクロークライアントのための4リリースランのハイライトです。プロジェクトは&lt;a href="https://getchama.app">getchama.app&lt;/a>で出荷され、サーバーなしで動作します。v1.3.0は「くっつくヒーリング」(セッション再起動を生き延びる成功した再ブロードキャストと取引ヒーリング) と、米国寄りのChamaが米国決済レールを最初に表示する決済レールマッチングを導入します。マルチユニットストアフロントの基礎工事は&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.11">v1.2.11&lt;/a> (マルチユニットスキーマ) と&lt;a href="https://github.com/jesuspirate/chama/releases/tag/v1.2.12">v1.2.12&lt;/a> (ストアフロント在庫会計士 + ネイティブFedimintブリッジ回復強化) にわたって着地しました。ChamaはNostrマーケットプレイスカテゴリでMostroとShopstrに加わり、そのサーバーレスアーキテクチャとFedimintベースのエスクロー決済によって区別されます。&lt;/p>
&lt;h2 id="未リリースの変更">未リリースの変更&lt;/h2>
&lt;h3 id="amethyst-nip-32ハッシュタグラベリングポッドキャスト画面音楽トラック">Amethyst: NIP-32ハッシュタグラベリング、ポッドキャスト画面、音楽トラック&lt;/h3>
&lt;p>Amethystはリリースタグを切ることなく今週52 PRと411コミットをマージしました。最大の機能追加は&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>であり、&lt;code>L&lt;/code>名前空間と&lt;code>l&lt;/code>ラベルタグを持つkind 1985イベントを使用した&lt;a href="https://nostrcompass.org/ja/topics/nip-32/">NIP-32&lt;/a>ハッシュタグラベリングとラベルベースのハッシュタグフィードを実装します。これは、脆弱なテキストマッチ&lt;code>#tag&lt;/code>メカニズムを、ユーザーがコンテンツクリエイターをフォローするのと同じ方法で特定のラベラーnpubをフォローできるラベラーベースの発見モデルに置き換えます。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-f4/">NIP-F4&lt;/a>ポッドキャスト仕様マージから数日以内に、エピソードリストとインラインプレーヤーを備えた専用ポッドキャスト画面を追加します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3071">PR #3071&lt;/a>はフォローリストフィルタリング付きのソフトウェアアプリフィードを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3067">PR #3067&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>セット経由で音楽トラックとプレイリストサポートを追加します。&lt;/p>
&lt;p>匿名投稿アップロード用のエフェメラル署名者は&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3123">PR #3123&lt;/a>に着地し、ユーザーはアイデンティティキーをアップロードサービスに公開せずに匿名で投稿できるようになります。Arti v2.3.0に対する統合テストを備えたTor自己修復ウォッチドッグは&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3053">PR #3053&lt;/a>に到着し、一時的なネットワーク停止時のAmethystのTorルーティングを強化します。オンチェーンzapとGemini からの復帰ユーザー用のNIP-05フィルタは&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3052">PR #3052&lt;/a>に着地し、zapサーフェスをLightningを超えてオンチェーンBitcoin支払いに広げます。&lt;/p>
&lt;h3 id="shopstr-opengraphプレビューurl検証">Shopstr: OpenGraphプレビューURL検証&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/504">PR #504&lt;/a>は、マーケットプレイスリスティングでOpenGraphプレビューURLをレンダリングする前に検証し、悪意のあるセラーが細工されたOGメタデータを介してスクリプト付きコンテンツを埋め込むことができる潜在的なXSSサーフェスを閉じます。ShopstrがホストするショップはExternalリンクのOGプレビューを表示し、未検証のURLは攻撃者がショップUIに任意のコンテンツを注入することを許します。&lt;/p>
&lt;h2 id="nip更新とプロトコル仕様作業">NIP更新とプロトコル仕様作業&lt;/h2>
&lt;h3 id="nip-f4-ポッドキャスト-が2年後にマージ">NIP-F4 (ポッドキャスト) が2年後にマージ&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1093">PR #1093&lt;/a>は、fiatjafが元のドラフトを公開してから2年3か月後の5月28日にマージされました。NIP-F4は、オーディオファイルメタデータ用の&lt;code>imeta&lt;/code>タグ (URL、mimeタイプ、言語ISOコード、フォールバックURL、NIP-96サービスフラグ、ビットレート、時間)、&lt;code>title&lt;/code>タグ、オプションの&lt;code>image&lt;/code>と&lt;code>description&lt;/code>タグ、およびトピックラベル用の&lt;code>t&lt;/code>タグを持つkind 54イベントとしてポッドキャストエピソードを定義します。仕様はRSSを意図的に真実のソースとして保ちます: エピソードはRSSポッドキャストGUIDを参照する&lt;code>i&lt;/code>タグを持つことができるので、Nostrクライアントはオーディオホスティングを重複させることなく既存のポッドキャストフィードにリンクできます。PRスレッドでの長い議論 (ポッドキャスト名前空間の共著者Dave Jones、Alex Gleason、Mike Terenzioと) は、NostrがRSSの上のソーシャルレイヤーを提供し、RSSが配信レイヤーを保つ共存モデルに落ち着きました。Amethystの&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a>ポッドキャスト画面は仕様マージから数日以内に着地し、JumbleのGIFピッカーの作業には初期のポッドキャスト添付の足場も含まれます。&lt;/p>
&lt;h3 id="nip-17キー分離-pr-2361">NIP-17キー分離 (PR #2361)&lt;/h3>
&lt;p>fiatjafは6月1日に&lt;a href="https://github.com/nostr-protocol/nips/pull/2361">PR #2361&lt;/a>を公開し、NIP-17がアイデンティティキーを暗号化キーから分離することを提案しました。受信者は新しいkind 10044イベントで暗号化キーを広告し、送信者は (存在するときには) その広告されたキーをギフトラップの内側のシールに使用し、広告が不在のときにのみ受信者のアイデンティティキーにフォールバックします。PRはまた、送信者の暗号化pubkeyを運ぶ&lt;code>n&lt;/code>タグをシールに追加するので、受信者はリタイアされたキーごとに試行復号することなく正しい会話キーを導出できます。表明された動機はbunker UXです: 現在の設計では、bunkerユーザーは暗号化キーが署名者が保持するアイデンティティキーであるため、受信したすべてのDMを復号するために署名者を通じてラウンドトリップさせなければなりません。分離により、クライアントは暗号化キーをローカルに保持しつつ、アイデンティティキーを署名のためにbunkerに保持できます。&lt;/p>
&lt;p>この提案は今週最も論争的なレビューを引き付けました。Cody Tseng (Jumble) は、これをクロスクライアントDM相互運用性への最も簡単なパスとしてサポートしています。Vitor Pamplona (Amethyst) は2つの理由で反対します: これはbunkerの外に新しい長期の復号シークレットを追加し、そしてそれを出荷しないクライアントは、静かに出荷するクライアントからのメッセージを復号できなくなり、断絶がシールレイヤーで起こるので劣化パスがありません。Pamplonaは、この問題は既に&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>のキーパッケージとエポック回転によって正しく解決されており、キー分離をベースNIP-17仕様に後付けすることは、Marmotが回避するのに2年かかった種類の相互運用性の失敗を作り出すと主張します。fiatjafの反論は3部構成です: 分離は受信者ごとにオプションであり、nタグ修正が試行復号の懸念に対処し、代替案はTelegramがメッセージングのユースケースを飲み込む間にbunker UXを壊れたままにしておくことです。スレッドはマージ決定なしでオープンのままであり、四半期で最も注目されているNIPの議論です。&lt;/p>
&lt;h3 id="nip-silent-payments決済フロー-pr-2362">NIP-Silent Payments決済フロー (PR #2362)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2362">silentius-satoshiは6月1日にPR #2362を公開&lt;/a>し、より広い&lt;a href="https://github.com/nostr-protocol/nips/pull/2355">Nostr Silent Payments NIPドラフト (PR #2355)&lt;/a>への同伴として位置付けました。決済フローNIPは、silent payment受領書通知用のkind 8352 (領収書リンクが公に観測可能にならないように&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ギフトラップ経由で配信) と、同じSilent Paymentsウォレット用にデバイス間で同期する暗号化UTXOキャッシュ用のkind 10353を定義します。ペアは一緒に、支払者がオープンなリレー層でオンチェーンリンクを公開することなく、Nostrネイティブプリミティブを使用してSilent PaymentsアドレスへのExpressで支払いを信号送信できるようにします。&lt;/p>
&lt;h3 id="nip-pip-perfect-ip-packets-pr-2364">NIP-PIP Perfect IP Packets (PR #2364)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2364">RandyMcMillanは6月1日にPR #2364を公開&lt;/a>し、ドラフトとしました。それは3つの新しいアドレス可能なkindを持つパケットツリートランスポートを導入します: 39078はマニフェストを運び、39079は個別のスライスを運び、39080は修復リクエストを運びます。仕様は、大きなファイルがアドレス可能なスライスに分解されるワイヤーフォーマットを定義し、マニフェストはスライスツリーを記述し、修復リクエストは受信者に不足しているスライスを要求させます。初期ドラフト状態が適用され、提案はまだメンテナーレビューを引き付けていません。&lt;/p>
&lt;h3 id="nip-29オーディオビデオライブスペース-pr-2238">NIP-29オーディオ/ビデオライブスペース (PR #2238)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">PR #2238&lt;/a>は5月28日にマージされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>リレーベースのグループをオーディオとビデオのライブスペースサポートで拡張しました。グループはアクティブなライブスペースセッションを参照できるようになったので、&lt;a href="https://nostrcompass.org/ja/topics/nip-53/">NIP-53&lt;/a>スタイルのライブアクティビティイベントはNIP-29グループコンテキストにアンカーできます。&lt;/p>
&lt;h3 id="nip-71ビデオ複数オーディオトラック-pr-2255">NIP-71ビデオ複数オーディオトラック (PR #2255)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>は5月28日にマージされ、NIP-71ビデオイベントにオーディオトラック&lt;code>imeta&lt;/code>タグを追加しました。新しいフォーマットはURL、ハッシュ、mimeタイプ、言語タグ (ISO-639-1と オリジナルバージョンフラグ)、フォールバックURL、NIP-96サービス信号、ビットレート、時間を運びます。これはオーディオのみのストリーミング (ビデオポッドキャスト)、安定したオーディオでの解像度切り替え、複数の言語トラック、およびサーバーがオーディオをビデオファイルに直接埋め込まないときのストレージ削減を可能にします。クライアントは単一トラックの動作を仮定する前にオーディオトラックの可用性をチェックすべきです。&lt;/p>
&lt;h3 id="nip-59エフェメラルギフトラップ-pr-2245">NIP-59エフェメラルギフトラップ (PR #2245)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>は5月28日にマージされ、既存のkind 1059ギフトラップのエフェメラルカウンターパートとしてkind 21059を追加しました。セマンティクスは標準のNIP-59ラップと一致しますが、NIP-01ごとのエフェメラルイベントルール (リレーはブロードキャスト後にそれらをドロップし、永続化しない) に従います。これは、アプリが要件に基づいて永続性を選択できるようにします: タイピングインジケーターと存在pingはエフェメラルから利益を得ますが、DM履歴には永続性が必要です。&lt;/p>
&lt;h3 id="nip-78アプリケーション固有のkind-pr-2292">NIP-78アプリケーション固有のkind (PR #2292)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2292">PR #2292&lt;/a>は5月28日にマージされ、NIP-78アプリケーション固有データを通常のアドレス可能kindとして再分類し、以前の別の範囲を削除しました。これはリプレイス可能性のセマンティクスを単純化し、NIP-78を他のアプリケーション状態NIPで使用されるアドレス可能イベントモデルに合わせます。&lt;/p>
&lt;h3 id="nip-85明確化-pr-2304">NIP-85明確化 (PR #2304)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>は5月28日にマージされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a> Trusted Assertionsにおけるサービスプロバイダーごとの複数のキーとリレーに関する言語の小さな改善を行い、リレーアサーションサービスの運用者キー回転パスを明確にしました。&lt;/p>
&lt;h3 id="nip-01リレー接続管理ワンライナー-pr-2307">NIP-01リレー接続管理ワンライナー (PR #2307)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2307">PR #2307&lt;/a>は5月28日にマージされ、クライアントがリレー接続の寿命をどう処理すべきかについての単一の文章をNIP-01に追加しました。この修正は、クライアントがフェッチ後にWebSocket接続を開いたままにするかどうかで違いがあり、アイドル接続をドロップするリレーで静かなメッセージ損失につながっていた長引くギャップに対処します。&lt;/p>
&lt;h3 id="nip-c7-kind-9チャット制約-pr-2310">NIP-C7 kind 9チャット制約 (PR #2310)&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>は5月28日にマージされ、NIP-C7チャットビューをkind 9メッセージのみに制限しました。これは、NIP-C7スタイルのチャットサーフェスを実装するクライアントにおいて、エフェメラルチャットをkind 1タイムラインポストから分離します。&lt;/p>
&lt;h3 id="nip-55簡素化-pr-2363">NIP-55簡素化 (PR #2363)&lt;/h3>
&lt;p>greenart7c3による、6月1日に公開された&lt;a href="https://github.com/nostr-protocol/nips/pull/2363">PR #2363&lt;/a>は、Android署名者アプリケーション仕様を簡素化します。Vitor Pamplonaは「良さそう」とサインオフし、fiatjafはマージの準備ができているかを尋ねました。この変更は、Amberが今週出荷したNIP-44 v3 ContentProviderオーソリティ登録への道を開きます。&lt;/p>
&lt;h3 id="nip-44-v3-仕様に先立ってのamber実装">NIP-44 v3 (仕様に先立ってのAmber実装)&lt;/h3>
&lt;p>Amberは、暗号化アップグレードとContentProviderオーソリティ登録を実装する8つのコミットとともにv6.2.0でNIP-44 v3を出荷しましたが、NIPsリポの仕様PRはまだ着地していません。NIP-44自体は、署名されたイベント内で使用されるバージョン付き暗号化ペイロード形式を定義します。既存のv2 (2024年から本番) はsecp256k1 ECDH、HKDF、パディング、ChaCha20、HMAC-SHA256、およびbase64を使用します。v3ワイヤーフォーマットはnonceの前に新しいバージョンバイト (0x03) を追加し、受信側クライアントがアルゴリズムを明示的に交渉できるようにします。Amberの実装には、無効なv3リクエストの自動拒否、v2承認とは別の専用承認画面、および履歴用の方向ごとの平文ロギングが含まれます。NIPs PRがマージされるまで、v3はAmber固有の拡張機能として立ちます。それを安定したプロトコル全体の信号送信ではなく、前を見た信号として扱ってください。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-32-ラベリング">NIPディープダイブ: NIP-32 (ラベリング)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-32/">NIP-32&lt;/a>は、名前空間付きラベル語彙とともにアドレス可能なkind 1985イベントを使用して、任意のNostrアクターがイベント、pubkey、リレー、URL、またはトピックにラベルを付ける構造化された方法を定義します。仕様は2つの新しいタグを導入します: &lt;code>L&lt;/code>はラベル名前空間を示し、&lt;code>l&lt;/code>はその名前空間内のラベルを示します。ラベルターゲットタグ (&lt;code>e&lt;/code>、&lt;code>p&lt;/code>、&lt;code>a&lt;/code>、&lt;code>r&lt;/code>、または&lt;code>t&lt;/code>) はラベル付けされているものを指定します。名前空間要件は、複数のラベルシステムが衝突するのを防ぎます: &lt;code>nip28.moderation&lt;/code>の&lt;code>spam&lt;/code>ラベルは、&lt;code>relay-report&lt;/code>の&lt;code>spam&lt;/code>ラベルとは異なるセマンティクスを運びます。&lt;/p>
&lt;p>NIP-32をモデレーションを超えて有用にする設計選択は、ラベルがアサーションであり、プロトコルレベルの真実ではないことです。kind 1985イベントは、特定のpubkeyが特定の名前空間で特定のターゲットにラベルを付けたことだけを述べます。信頼モデルはクライアントに委任されます: 各クライアントはどのラベラーを尊重するか、どの名前空間を読むか、および各ラベルにどのUIアフォーダンスを与えるかを選択します。同じプリミティブが、コンテンツ警告、ライセンス割り当て、kind 1ノートのISO-639-1言語タグ、ISO-3166-2地理タグ、コンテンツ分類、分散モデレーション提案、および評判スコアを運びます。&lt;/p>
&lt;p>今週のAmethystの&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3111">PR #3111&lt;/a>は、これまでで最大の展開です。それはNIP-32を通じてハッシュタグラベリングとラベルベースのハッシュタグフィードを追加し、ユーザーが信頼されたラベラーによって割り当てられたラベルでブラウズできるようにします。Nostr上でハッシュタグ発見を最初に駆動した以前の&lt;code>#tag&lt;/code>テキストマッチメカニズムは、ラベルのないノートのフォールバックとして残ります。ハッシュタグとしてのラベルモデルは、同じノートが異なるラベラーによって割り当てられた複数のラベルの下で発見可能であることを意味し、ユーザーは基礎となるノートに影響を与えることなく特定のラベラーをミュートまたはブーストできます。&lt;/p>
&lt;p>セルフラベリングもサポートされています。作者は&lt;code>L&lt;/code>と&lt;code>l&lt;/code>タグを自分のkind 1ノートに直接添付して、言語、場所、およびトピックを宣言できます。&lt;code>[&amp;quot;L&amp;quot;, &amp;quot;ISO-639-1&amp;quot;], [&amp;quot;l&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;ISO-639-1&amp;quot;]&lt;/code>とタグ付けされたノートは自身を英語として識別し、サードパーティラベリングインフラストラクチャなしに言語認識クライアントによってフィルタリングできます。&lt;/p>
&lt;p>kind 1ノートを英語としてラベル付けし、モデレーションタグを割り当てるNIP-32ラベルイベントの例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a5f87fe2d4c8b9a0e3f1c4d5e6a7b8c9d0e1f2a3b4c5d6e7f8091a2b3c4d5e6f&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748908800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1985&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;en&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ISO-639-1&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;L&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;l&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;approve&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip28.moderation&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8b39f4e5d6c7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Labeled as English-language content approved for NIP-28 chat moderation&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a6978869504132c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5d6e7f80192a3b4c5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Amethystの展開と最近のTrusted Relay Assertionsの作業を組み合わせると、NIP-32はNostr上の「ターゲットについてのユーザー駆動アサーション」パターンの標準基盤になりつつあることを示唆します。次のテストは、ラベラー自身が信頼階層を発展させるかどうかです: ユーザーはコンテンツクリエイターをフォローするのと同じように特定のラベラーnpubをフォローするかどうか。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-f4-ポッドキャスト">NIPディープダイブ: NIP-F4 (ポッドキャスト)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/F4.md">NIP-F4&lt;/a>は、fiatjafが元のドラフト (PR #1093) を公開してから2年3か月後の今週マージされました。プレフィックスFは単純な16進数番号付けです: NIP-F0からNIP-FFはNIP-0AからNIP-0Dと同じ1バイトの16進空間を使用し、上位の16進範囲は01-99の10進範囲が埋まる中でオーバーフローとして機能します。NIP-F4は、オーディオファイル自体のための補完層としてRSSを保ちながら、ポッドキャストがエピソードとメタデータをNostrイベントとして公開する方法を定義します。&lt;/p>
&lt;p>コアアーキテクチャの選択は、各ポッドキャストがそれ自体のNostrキーペアであることです。仕様はこれで直接開きます: 「各ポッドキャストはそれ自体のNostrキーペアです」。これにより、ポッドキャストはそのポッドキャスティングプレゼンスを通常のkind 0 / kind 1マイクロブログプレゼンスと組み合わせることができ、キーハンドオーバーまたはMuSig2スタイルの共有署名を通じて時間とともにオーナーシップを変更できます。4つのイベントkindが公開層を運びます:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>kind:10154&lt;/code>&lt;/strong>: リプレイス可能なポッドキャストメタデータ。&lt;code>title&lt;/code>、&lt;code>image&lt;/code>、&lt;code>description&lt;/code>、オプションの&lt;code>website&lt;/code>タグ、およびホスト、コホスト、またはエディターの&lt;code>role&lt;/code>を持つ作者をマークするオプションの&lt;code>p&lt;/code>タグを運びます。&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10164&lt;/code>&lt;/strong>: 作者の反対請求。仕様の例ではkind &lt;code>10064&lt;/code> (訂正のためにオープンなタイポ) を使用していますが、見出しと周囲のテキストはそれを&lt;code>kind:10164&lt;/code>として識別します。ユーザーは自分が著作するポッドキャストのpubkeyをリストするので、クライアントは&lt;code>kind:10154&lt;/code>の&lt;code>p&lt;/code>タグを推定された作者からの同等の主張に対して検証できます。これがなければ、ポッドキャストは誰でもホストとして誤ってタグ付けできます。&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:54&lt;/code>&lt;/strong>: ポッドキャストpubkeyによって直接著作されたエピソードイベント。タグには&lt;code>title&lt;/code>、オプションの&lt;code>image&lt;/code>、&lt;code>description&lt;/code>、および1つ以上の&lt;code>audio&lt;/code>タグが含まれます。各&lt;code>audio&lt;/code>タグは&lt;code>[&amp;quot;audio&amp;quot;, &amp;quot;&amp;lt;audio-url&amp;gt;&amp;quot;, &amp;quot;&amp;lt;optional_media_type&amp;gt;&amp;quot;]&lt;/code>です。仕様は「さらなる発見の後にここで指定される他の重要なフィールド」と述べており、マージされた形式は意図的に最小限です。&lt;/li>
&lt;li>&lt;strong>&lt;code>kind:10054&lt;/code>&lt;/strong>: &lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>スタイルのお気に入りポッドキャストリストで、ユーザーがフォローしているポッドキャストをマークできるようにします。&lt;/li>
&lt;/ul>
&lt;p>マージ周りのスレッド討論は、Podcasting 2.0共著者&lt;a href="https://github.com/daveajones">Dave Jones&lt;/a>、&lt;a href="https://github.com/alexgleason">Alex Gleason&lt;/a>、&lt;a href="https://github.com/mterenzio">Mike Terenzio&lt;/a>、&lt;a href="https://github.com/pablof7z">Pablo F7z&lt;/a>、および&lt;a href="https://github.com/staab">staab&lt;/a>を巻き込みました。JonesはRSSを置き換えるいかなる試みにも強く反対しました: 「それは何度も試みられ、常に失敗してきた」、JSONfeed、XMPP、AMP、TwitterのAPI、およびSpotifyの失敗した移行を引き合いに出しました。Terenzioは提案をRSSの上のソーシャルレイヤーとして再フレームし、RSS自体を配信レイヤーとして保ちました。fiatjafは一歩下がって提案を熟成させることに同意しました: 「あなたが言ったことすべてに同意しますが、それでも実現できると思います、しばらくここで止めましょう」。2年後、マージされた仕様は置換よりも共存に近く着地しました。&lt;/p>
&lt;p>3つの設計上の疑問がマージされた仕様に明示的に残っています:&lt;/p>
&lt;ul>
&lt;li>&lt;code>kind:10164&lt;/code>のタイポ (例が&lt;code>10064&lt;/code>を示す) は、クライアントが安全に相互運用できる前に和解する必要があります。&lt;/li>
&lt;li>RSS GUIDリンクなしのエピソードレベルの発見はオープンなままです。マージされた仕様には&lt;code>i&lt;/code>タグ、&lt;code>podcast:item:guid&lt;/code>形式、またはRSSブリッジメカニズムがありません。既存のRSSカタログをkind 54イベントにブリッジしたいクライアントは、ブリッジ規約自体を定義しなければなりません。&lt;/li>
&lt;li>&lt;code>kind:54&lt;/code>定義の「その他の重要なフィールド」スタブは、ビットレート、時間、言語、トランスクリプトポインター、チャプター、およびセグメントごとのメタデータをフォローアップ提案のためのオープンな領域として残します。&lt;/li>
&lt;/ul>
&lt;p>Amethystの&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3105">PR #3105&lt;/a>はマージから数日以内にエピソードリストとインラインプレーヤーを備えた専用ポッドキャスト画面を実現し、最初の主要クライアント実装となりました。JumbleはGIFピッカーと並んで初期のポッドキャスト添付の足場を出荷しました。Wavlakeは最大のNostrネイティブポッドキャストプラットフォームのままで、既存のkind 31337音楽トラックイベントをNIP-F4のkind 54エピソードモデルに合わせるかどうかを決定する必要があります。&lt;/p>
&lt;p>マージされた仕様の最小タグセットに一致するNIP-F4 kind 54エピソードイベントの例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;55807e7d5cd90d0303d7dce7397f996fdbaed8697903f326c7cf8ad999b9de3d&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1748995200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">54&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Episode 42: Why RSS Won&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/ep42-cover.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Dave Jones and fiatjaf on protocol coexistence and the social layer.&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;audio&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://podcast.example.com/audio/ep42.mp3&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/mpeg&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;In this episode we discuss the two-year journey of NIP-F4 from draft to merge, and why coexistence with RSS turned out to be the right architectural choice.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;abc123def456789012345678901234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>PR #1093は27か月間オープンで、マージされたNIPs PRの中央オープン期間を大きく上回っています。NIP-F4の次のテストは、kind 10164のタイポが和解されるかどうか、実装者からエピソード発見およびRSSブリッジ規約が出現するかどうか、および主要なポッドキャストホストが仕様が推奨するようにポッドキャストごとのキーペアの下で公開するかどうかです。&lt;/p></content:encoded></item><item><title>Nostr Compass #24</title><link>https://nostrcompass.org/ja/newsletters/2026-05-28-newsletter/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-05-28-newsletter/</guid><description>&lt;p>Amethyst v1.11.0はリマインダー付きの完全なNIP-52カレンダー実装、オンチェーンBitcoinのzapスプリット、Marmotグループの返信サポートを搭載してリリースされました。White Noise v2026.5.22はNotification Service Extension経由でのiOSプッシュ通知を、ブロックUXおよびメンバー追加ボタンとともに提供します。Vector v0.4.0はvector-coreの全面書き直し、ブリッジ対応のワンクリックTor、NIP-46リモート署名者、完全negentropyによるMLSグループ同期、AIエージェント向け21ツールのMCPサーバーを搭載しました。Applesauce v6.1.0はNIP-51ルックアップリレーリスト(kind 10086)と完全なNIP-34 gitキャストファクトリセットを導入しました。MDKは統一されたUniFFIサーフェスを通じてiOSとAndroidにNIP-40の消えるメッセージを追加し、Mostro v0.17.4はPhase 3のスラッシュされたボンドの勝者への支払いによりアンチ乱用ボンドループを閉じました。NotedeckはギフトラップとスレッドバックフィルのためのNIP-77 negentropy調停の完全実装をマージし、Cordnは単一障害点の可用性依存を厳密なエポック順序とよりシンプルな運用モデルと引き換えにするコーディネーター仲介型MLSメッセンジャーとして登場し、deepmarksと呼ばれるNIP-B0参照実装がキュレーター収益化型のブックマーククライアントを提供し、Formstrチームは参加者の自己削除、プライベートイベント、繰り返し、分散型アポイントメントスケジューリングをカバーする4つの調整されたカレンダーNIP提案を公開しました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amethyst-v1110-カレンダーオンチェーンzapスプリットmarmot返信">Amethyst v1.11.0: カレンダー、オンチェーンzapスプリット、Marmot返信&lt;/h3>
&lt;p>Vitor PamplonaによってメンテナンスされているAndroid向けNostrクライアントAmethystが&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">v1.11.0&lt;/a>をリリースしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2994">PR #2994&lt;/a>は専用UIとリマインダーシステムを備えた&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>カレンダーイベント実装を追加し、カレンダーイベントは汎用のkind-30023ロングフォームビューとは別に、独自のタイムラインカテゴリでレンダリングされるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a>はオンチェーンBitcoin zapをスプリットサポートで拡張し、既存のzap-splitタグに従って単一のBitcoinトランザクションを複数の受信者に分配するので、オンチェーン支払いはLightningスプリットと同じように動作します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>は各決済済みzapとブロック確認ステータスを表示するページネーション付きのオンチェーントランザクション履歴画面を追加します。&lt;/p>
&lt;p>グループメッセージングは1対1チャットと同等の機能を得ました: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>/MLSグループメッセージへの返信サポートを追加し、暗号化グループ内のスレッドがパブリックノートと同じ親参照UIでレンダリングされるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a>はLNURLプロバイダーが受信者の表明されたlud16と一致するかチェックすることで&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> zap受領書の検証を強化し、第三者のLNURLが実際には届かなかった支払いに対する受領書を発行できるという偽造クラスを封じました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a> &lt;code>imeta&lt;/code>タグの浮動小数点次元を受け付け、iPhone Retinaディスプレイなどのデバイスから小数のピクセル密度値を公開するクライアントとAmethystを整合させます。このリリースでは、下記のプロトコルセクションで扱う新しいリプレイス可能イベントベースのマルチレールチップジャーであるPayment Targetsも配線されました。&lt;/p>
&lt;h3 id="white-noise-v2026522-iosプッシュブロックuxメンバー追加">White Noise v2026.5.22: iOSプッシュ、ブロックUX、メンバー追加&lt;/h3>
&lt;p>MarmotプロトコルグループメッセンジャーのWhite Noiseが、iOSプッシュ通知を目玉機能として&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a>をリリースしました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a>はNotification Service Extension (NSE) を実装し、Extensionプロセス内でMLSメッセージを復号してシステム通知として表示するので、iPhoneユーザーはメッセージを受信するためにアプリをフォアグラウンドにする必要がなくなりました。Androidのプッシュトークン配管は同じバックエンドパイプラインを経由し、プラットフォームごとのNSEが暗号文をブローカーから遠ざけます。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a>は確認フローと連絡先リストフィルタリングを備えた完全なブロック・ブロック解除UXを追加します。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a>はグループ情報画面に長らく要望されていた「メンバー追加」ボタンを追加し、グループ管理者が共有リンクに頼らざるを得なかったUXギャップを閉じます。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a>は専用のiOS通知設定画面を導入し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a>はメディアとメッセージ向けに長押し共有を配線しました。&lt;/p>
&lt;h3 id="mdkがプラットフォーム横断でnip-40の消えるメッセージを追加">MDKがプラットフォーム横断でNIP-40の消えるメッセージを追加&lt;/h3>
&lt;p>White Noise iOS、White Noise Android、および将来のあらゆるMarmotクライアントによって使用される共有Rustコアである Marmot Development Kitが、消えるメッセージ検証と&lt;a href="https://nostrcompass.org/ja/topics/nip-40/">NIP-40&lt;/a>有効期限処理をUniFFIブリッジ経由で公開する&lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a>をマージしました。このPRは3部作の第2弾です。iOSとAndroidは有効期限ロジックの単一のRust実装を共有するようになりました。タイミングルールは、UniFFIを介して両プラットフォームで消費される単一の監査済みコードパスに存在します。&lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a>は保存されるwelcome失敗理由の長さを制限し、永続化前にサニタイズします。これは先週リリースされたwelcomeイベント処理を補完する別途の強化パスです。&lt;/p>
&lt;p>MLSにおける消えるメッセージは単なるUIアフォーダンスではありません。有効期限タグは暗号化されたメッセージエンベロープとともに公開されるので、メッセージを一度も開かなかった受信者でも、受信クライアントのキャッシュコピーとともに、基礎となる暗号文がリレーレイヤーで期限切れとなります。MDKが検証パスを所有することで、クライアント間で動作の一貫性が保たれます: 準拠したMarmot実装はいずれも同じ有効期限セマンティクスを強制するので、あるクライアントが有効期限を尊重する一方で別のクライアントが永久にキャッシュするというポータビリティの危険はなくなります。&lt;/p>
&lt;h3 id="mostro-v0174-phase-3がスラッシュされたボンドのループを閉じる">Mostro v0.17.4: Phase 3がスラッシュされたボンドのループを閉じる&lt;/h3>
&lt;p>Nostr上に構築されたピアツーピアBitcoin取引所プロトコル&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が、&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">v0.17.4&lt;/a>でアンチ乱用ボンドロールアウトのPhase 3をリリースしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>は、スラッシュされたボンドの支払いフローを実装し、敗者の没収された担保を紛争勝者に支払います。&lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a>はPhase 3.5を追加し、スラッシュされたsatsが決済されたことを勝者に知らせる明示的な支払い確認メッセージを、紛争解決と同じNostrセッションで到着する確認イベントとともに提供します。先週取り上げたPhase 2は管理者アクションとしてスラッシングを導入しました。Phase 3はペナルティを脅かすことと実際に強制することの差です。&lt;/p></description><content:encoded>&lt;p>Amethyst v1.11.0はリマインダー付きの完全なNIP-52カレンダー実装、オンチェーンBitcoinのzapスプリット、Marmotグループの返信サポートを搭載してリリースされました。White Noise v2026.5.22はNotification Service Extension経由でのiOSプッシュ通知を、ブロックUXおよびメンバー追加ボタンとともに提供します。Vector v0.4.0はvector-coreの全面書き直し、ブリッジ対応のワンクリックTor、NIP-46リモート署名者、完全negentropyによるMLSグループ同期、AIエージェント向け21ツールのMCPサーバーを搭載しました。Applesauce v6.1.0はNIP-51ルックアップリレーリスト(kind 10086)と完全なNIP-34 gitキャストファクトリセットを導入しました。MDKは統一されたUniFFIサーフェスを通じてiOSとAndroidにNIP-40の消えるメッセージを追加し、Mostro v0.17.4はPhase 3のスラッシュされたボンドの勝者への支払いによりアンチ乱用ボンドループを閉じました。NotedeckはギフトラップとスレッドバックフィルのためのNIP-77 negentropy調停の完全実装をマージし、Cordnは単一障害点の可用性依存を厳密なエポック順序とよりシンプルな運用モデルと引き換えにするコーディネーター仲介型MLSメッセンジャーとして登場し、deepmarksと呼ばれるNIP-B0参照実装がキュレーター収益化型のブックマーククライアントを提供し、Formstrチームは参加者の自己削除、プライベートイベント、繰り返し、分散型アポイントメントスケジューリングをカバーする4つの調整されたカレンダーNIP提案を公開しました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amethyst-v1110-カレンダーオンチェーンzapスプリットmarmot返信">Amethyst v1.11.0: カレンダー、オンチェーンzapスプリット、Marmot返信&lt;/h3>
&lt;p>Vitor PamplonaによってメンテナンスされているAndroid向けNostrクライアントAmethystが&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">v1.11.0&lt;/a>をリリースしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2994">PR #2994&lt;/a>は専用UIとリマインダーシステムを備えた&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>カレンダーイベント実装を追加し、カレンダーイベントは汎用のkind-30023ロングフォームビューとは別に、独自のタイムラインカテゴリでレンダリングされるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3018">PR #3018&lt;/a>はオンチェーンBitcoin zapをスプリットサポートで拡張し、既存のzap-splitタグに従って単一のBitcoinトランザクションを複数の受信者に分配するので、オンチェーン支払いはLightningスプリットと同じように動作します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>は各決済済みzapとブロック確認ステータスを表示するページネーション付きのオンチェーントランザクション履歴画面を追加します。&lt;/p>
&lt;p>グループメッセージングは1対1チャットと同等の機能を得ました: &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2995">PR #2995&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>/MLSグループメッセージへの返信サポートを追加し、暗号化グループ内のスレッドがパブリックノートと同じ親参照UIでレンダリングされるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2984">PR #2984&lt;/a>はLNURLプロバイダーが受信者の表明されたlud16と一致するかチェックすることで&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> zap受領書の検証を強化し、第三者のLNURLが実際には届かなかった支払いに対する受領書を発行できるという偽造クラスを封じました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2968">PR #2968&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a> &lt;code>imeta&lt;/code>タグの浮動小数点次元を受け付け、iPhone Retinaディスプレイなどのデバイスから小数のピクセル密度値を公開するクライアントとAmethystを整合させます。このリリースでは、下記のプロトコルセクションで扱う新しいリプレイス可能イベントベースのマルチレールチップジャーであるPayment Targetsも配線されました。&lt;/p>
&lt;h3 id="white-noise-v2026522-iosプッシュブロックuxメンバー追加">White Noise v2026.5.22: iOSプッシュ、ブロックUX、メンバー追加&lt;/h3>
&lt;p>MarmotプロトコルグループメッセンジャーのWhite Noiseが、iOSプッシュ通知を目玉機能として&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">v2026.5.22&lt;/a>をリリースしました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/673">PR #673&lt;/a>はNotification Service Extension (NSE) を実装し、Extensionプロセス内でMLSメッセージを復号してシステム通知として表示するので、iPhoneユーザーはメッセージを受信するためにアプリをフォアグラウンドにする必要がなくなりました。Androidのプッシュトークン配管は同じバックエンドパイプラインを経由し、プラットフォームごとのNSEが暗号文をブローカーから遠ざけます。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/676">PR #676&lt;/a>は確認フローと連絡先リストフィルタリングを備えた完全なブロック・ブロック解除UXを追加します。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/679">PR #679&lt;/a>はグループ情報画面に長らく要望されていた「メンバー追加」ボタンを追加し、グループ管理者が共有リンクに頼らざるを得なかったUXギャップを閉じます。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/688">PR #688&lt;/a>は専用のiOS通知設定画面を導入し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/687">PR #687&lt;/a>はメディアとメッセージ向けに長押し共有を配線しました。&lt;/p>
&lt;h3 id="mdkがプラットフォーム横断でnip-40の消えるメッセージを追加">MDKがプラットフォーム横断でNIP-40の消えるメッセージを追加&lt;/h3>
&lt;p>White Noise iOS、White Noise Android、および将来のあらゆるMarmotクライアントによって使用される共有Rustコアである Marmot Development Kitが、消えるメッセージ検証と&lt;a href="https://nostrcompass.org/ja/topics/nip-40/">NIP-40&lt;/a>有効期限処理をUniFFIブリッジ経由で公開する&lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a>をマージしました。このPRは3部作の第2弾です。iOSとAndroidは有効期限ロジックの単一のRust実装を共有するようになりました。タイミングルールは、UniFFIを介して両プラットフォームで消費される単一の監査済みコードパスに存在します。&lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a>は保存されるwelcome失敗理由の長さを制限し、永続化前にサニタイズします。これは先週リリースされたwelcomeイベント処理を補完する別途の強化パスです。&lt;/p>
&lt;p>MLSにおける消えるメッセージは単なるUIアフォーダンスではありません。有効期限タグは暗号化されたメッセージエンベロープとともに公開されるので、メッセージを一度も開かなかった受信者でも、受信クライアントのキャッシュコピーとともに、基礎となる暗号文がリレーレイヤーで期限切れとなります。MDKが検証パスを所有することで、クライアント間で動作の一貫性が保たれます: 準拠したMarmot実装はいずれも同じ有効期限セマンティクスを強制するので、あるクライアントが有効期限を尊重する一方で別のクライアントが永久にキャッシュするというポータビリティの危険はなくなります。&lt;/p>
&lt;h3 id="mostro-v0174-phase-3がスラッシュされたボンドのループを閉じる">Mostro v0.17.4: Phase 3がスラッシュされたボンドのループを閉じる&lt;/h3>
&lt;p>Nostr上に構築されたピアツーピアBitcoin取引所プロトコル&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が、&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">v0.17.4&lt;/a>でアンチ乱用ボンドロールアウトのPhase 3をリリースしました。&lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>は、スラッシュされたボンドの支払いフローを実装し、敗者の没収された担保を紛争勝者に支払います。&lt;a href="https://github.com/MostroP2P/mostro/pull/743">PR #743&lt;/a>はPhase 3.5を追加し、スラッシュされたsatsが決済されたことを勝者に知らせる明示的な支払い確認メッセージを、紛争解決と同じNostrセッションで到着する確認イベントとともに提供します。先週取り上げたPhase 2は管理者アクションとしてスラッシングを導入しました。Phase 3はペナルティを脅かすことと実際に強制することの差です。&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/746">PR #746&lt;/a>は、以前はレガシー紛争で解決を停止していたエッジケースであるsolver行のない紛争をデーモンが最終化できるようにします。&lt;a href="https://github.com/MostroP2P/mostro/pull/748">PR #748&lt;/a>はYadioの&lt;code>/exrates/BTC&lt;/code>レスポンスのnullレートを許容するので、Yadioの短期障害がMostroの法定通貨換算パスを壊すことがなくなります。&lt;a href="https://github.com/MostroP2P/mostro/pull/745">PR #745&lt;/a>はマルチソース価格プロバイダーの仕様を文書化し、Yadioを単一障害点として除去するための基礎工事です。Mostroモバイルクライアントは&lt;a href="https://github.com/MostroP2P/mobile/pull/596">PR #596&lt;/a>で対応するPhase 3の請求パスを配線しました。&lt;/p>
&lt;h3 id="applesauce-v610-ルックアップリレーとnip-34-gitキャスト">Applesauce v6.1.0: ルックアップリレーとNIP-34 gitキャスト&lt;/h3>
&lt;p>Coracle、noStrudel、Pablo F7zのスタックを支えるモジュラーNostrツールキット&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>が、パッケージ全体で&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.1.0">v6.1.0&lt;/a>をリリースしました。このリリースは第一級の&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>ルックアップリレーリストサポートを追加します: kind 10086イベントによりユーザーは「私を見つけたい場合はこれらのリレーに問い合わせてください」と信号を送ることができ、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> outboxリストと並ぶ発見プリミティブとなります。&lt;code>applesauce-core&lt;/code>上に構築されたアプリケーションは、リアクティブな&lt;code>User.lookupRelays$&lt;/code> observableと、&lt;code>applesauce-relay&lt;/code>内の対応するローダーを取得します。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> gitキャストファクトリが&lt;code>applesauce-factory&lt;/code>に到着し、あらゆるApplesauceで構築されたクライアントにリポジトリアナウンス (kind 30617)、パッチ (kind 1617)、issue (kind 1621) を公開するための1行パスを提供します。&lt;code>User.favoriteGitRepos$&lt;/code>、&lt;code>User.gitAuthors$&lt;/code>、&lt;code>User.graspServers$&lt;/code>のリアクティブプロパティにより、アプリケーションはユーザーがフォローしているリポジトリ、リポジトリメンテナー、設定されたGRASPサーバーを同じUserオブジェクトから直接リストできます。このリリースは、&lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>でオフラインのリレーを静かにドロップしていたプールの手動メソッドも修正しています。&lt;/p>
&lt;h3 id="notedeckがギフトラップとスレッドバックフィルのnip-77-negentropyをマージ">NotedeckがギフトラップとスレッドバックフィルのNIP-77 negentropyをマージ&lt;/h3>
&lt;p>Damusのネイティブマルチカラムデスクトップクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>は5月25日、共有outboxパスに完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-77/">NIP-77&lt;/a> negentropy調停を配線する&lt;a href="https://github.com/damus-io/notedeck/pull/1459">PR #1459&lt;/a>をマージしました。このPRはNIP-77のクライアントとリレーのフレーム、リレーローカルのnegentropyセッション、およびローカルセット調停と欠落イベントのフェッチを駆動するoutbox完全履歴トラッカーを追加します。メッセージのギフトラップはnegentropy調停を得るので、プライベートメッセージのエンベロープは選択されたアカウントの読み取りリレーから復元できます。スレッドビューはライブサブスクリプションの返信制限で頭打ちにならなくなりました。Dave PNSはDaveローカルのnegentropy実装を共有outboxパスに置き換えつつ、既存の境界付き履歴動作を保持します。&lt;/p>
&lt;p>ライブサブスクリプションとnegentropyは別々のフィルタを使用するようになりました。フローは、リレーが既に持っているものを調停するために、より広範なnegentropyフィルタを発行しながら、小さなライブリクエストを維持できます。このPRはホームまたはプロフィールタイムラインで広範なnegentropy同期を意図的に有効にせず、それはコールドスタートコストの特性を変更してしまうためです。テストカバレッジは、調停、ギフトラップ配信、スレッドバックフィル、Dave PNS復元、アカウント切り替え、リレー再ターゲット、フェッチ再試行、NIP-77リレー動作に対して追加されました。&lt;/p>
&lt;h3 id="vector-v040-vector-coreの書き直しtornip-46完全negentropy-mlsmcpエージェントサーフェス">Vector v0.4.0: vector-coreの書き直し、Tor、NIP-46、完全negentropy MLS、MCPエージェントサーフェス&lt;/h3>
&lt;p>NIP-17 DMとMarmotグループを基盤としたプライバシー重視のクロスプラットフォームメッセンジャー&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>が、これまでで最大のリリースとして&lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">v0.4.0&lt;/a>をリリースしました。目玉はエンジンの全面書き直しです: Vectorのロジックはすべて&lt;code>vector-core&lt;/code>という単一の分離されたクレートに存在するようになり、デスクトップ、Android、および将来のあらゆるクライアント間で共有され、コア自体に440以上のテストがあり、アプリケーションシェルからは数千行が削ぎ落とされました。この書き直しは、GUIと同じプロトコルコードを駆動するVector CLI、ボット、SDKへの基礎工事です。&lt;/p>
&lt;p>Tor統合は、ワンクリックのトラフィックルーティングと検閲回避のためのブリッジサポートを提供します。マルチアカウントサポートがアプリ内切り替えとともに実現しました。リモート署名者ログインはQRまたは貼り付けられたURIによるbunkerペアリングで&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>経由で到着し、ユーザーはnsecを一度も公開することなくログインできます。全員削除(delete-for-everyone) は&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMと&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>グループチャットの両方で動作し、Vectorはリリースノートが明示的に述べているように意図的な仕様の分岐として、エフェメラル署名キーを保持します: 「強化されたユーザープライバシー制御のための従来のNIP-17/Marmot仕様からの分岐」。保持されたエフェメラルキーは、削除が元の送信者によって承認されたことのローカル証明をVectorクライアントに提供しますが、他のVectorに接触するクライアントは、ベースラインのNIP-17/Marmotクライアントとは異なる削除検証可能性のサーフェスを見ることも意味します。&lt;/p>
&lt;p>MLSグループ同期は&lt;a href="https://nostrcompass.org/ja/topics/nip-77/">NIP-77&lt;/a> negentropyによって完全に調停されるようになりました。これは今週Notedeckがギフトラップとスレッドに対して取った方向と同じです。Blossomアップローダーは複数のサーバーにわたってフェイルオーバーし、各サーバーの機能を学習し、デバイス間でサーバーリストを同期します。カスタム絵文字パックはユーザーが作成可能、共有可能で、他のNostrクライアントとクロス互換です。SQLiteメモリは約308MBから5MBに減少しました。絵文字パネルはディスクキャッシュから開き、Discord風のショートコード (&lt;code>:smile:&lt;/code>) とUnicodeの使用頻度ランキングにより、正しいグリフを最初に表示します。&lt;/p>
&lt;p>最も新しい追加は&lt;code>vector-agent&lt;/code>、AIエージェントがVectorを駆動できるように21のツールを公開するMCP (Model Context Protocol) サーバーです: DM送信、グループ管理、ファイルアップロード、プロフィール編集。これは今週Shopstrに続いてMCPサーフェスを提供した2番目のNostrプロジェクトであり、そうした最初のメッセンジャークラスのアプリケーションです。先週取り上げたAgentNoiseと組み合わせて、エージェント制御のNostrクライアントというパターンは、単発の実験から意図的なプラットフォームの方向性へと移りつつあります。&lt;/p>
&lt;h3 id="cordnがコーディネーター仲介型mlsメッセンジャーとして登場">Cordnがコーディネーター仲介型MLSメッセンジャーとして登場&lt;/h3>
&lt;p>&lt;a href="https://cordn.net">Cordn&lt;/a> (&lt;a href="https://cordn.net">cordn.net&lt;/a>のWebクライアント、リポジトリは&lt;a href="https://github.com/Cordn-msg/cordn">Cordn-msg/cordn&lt;/a>と&lt;a href="https://github.com/Cordn-msg/cordn-web">Cordn-msg/cordn-web&lt;/a>) は、Marmotとは異なるアーキテクチャ的アプローチを取る新しいMLSメッセンジャーです。&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>は特権的なコーディネーターがない完全リレーベース(すべてのグループメンバーが直接リレーに書き込み、準拠したあらゆるリレーがそのトラフィックを運べる) であるのに対し、Cordnは&lt;a href="https://nostrcompass.org/ja/topics/contextvm/">ContextVM&lt;/a>サービスとして実装されたグループごとのコーディネーターロールを導入します。コーディネーターはMLSコミットを順序付け、welcomeの配布を処理します。&lt;/p>
&lt;p>Cordnの主張は、その&lt;a href="https://cordn.net/why">/why&lt;/a>ページで述べられているように、本番メッセンジャーで展開されているMLSは「調整不要ではない」ことと、「弱く順序付けられた公的配布」は強力な調整ポイントなしにグループ状態収束を「はるかに困難」にすることです。コーディネーター仲介型設計は、予測可能なエポックの進行と、より単純な同時コミット解決を提供します。参加者はエフェメラルキーを使用してコーディネーターに接続するので、コーディネーターはグループIDとコミットトラフィックのタイミングを学習しますが、どの長期公開鍵がメンバーであるかは知りません。Marmotグループを求めてリレーに問い合わせる任意の当事者は、既に同じサーフェス、すなわちグループIDによるグループアクティビティを、イベント到着から推測可能なタイミングとともに見ることができます。Cordnはまた、セルフホスティングでは「可用性の信頼が残る」ことを認めています: セルフホスト型コーディネーターは運用者層の中央集権化の懸念を回避しますが、グループの生存性に対する単一障害点を導入します。Marmotは順序付けをMLS自体に委ねる (エポックとCommitメッセージがプロトコル内で順序付けを処理する) ことでその単一ポイントを回避し、Welcomeイベントを&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ギフトラップ経由で配布しますが、管理者側の規律を代償とします: 管理者は対応するWelcomeを送信する前にCommitのリレー確認を待たなければならず、リレー配信が状態遷移とレースする場合、クライアントは同時コミットを調停しなければなりません。&lt;/p>
&lt;p>このコントラストは、プライベートメッセージングスタックを選ぶチームにとって引き延ばして考える価値があります。Marmotは、実装の複雑さの一部と、パス内に特権的なアクターのないリレー非依存のデプロイメントを交換します。Cordnは、単一ポイントの可用性依存と、より厳密な順序付けおよびよりシンプルな運用モデルを交換します。両プロジェクトとも&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>を基盤とし、Nostrをアイデンティティとトランスポート層として使用します。意見の相違は、調整コストがどこに存在するかについてです。cordn-msgリポジトリは、コーディネーターサービスがContextVM上に実装され、MLS層が&lt;code>ts-mls&lt;/code>上に構築された、着実なコミット頻度を示しています。&lt;/p>
&lt;h3 id="deepmarks-キュレーター収益化型公開を持つnip-b0ブックマーク">deepmarks: キュレーター収益化型公開を持つNIP-B0ブックマーク&lt;/h3>
&lt;p>&lt;a href="https://github.com/ostermayer/deepmarks-public">deepmarks-public&lt;/a>は、提案されている&lt;a href="https://nostrcompass.org/ja/topics/nip-b0/">NIP-B0&lt;/a>ブックマーク仕様 (kind 39701) の参照クライアントであり、3ボックスアーキテクチャ (キュレーター、インデクサー、ビューア) と、キュレーターへの直接&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> zapで資金を調達するティアシステムを備えています。クライアントはNIP-B0、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>、NIP-57、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-98/">NIP-98&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>、およびファイルストレージ用のBlossom BUD-01とBUD-04を実装しています。21,000-sat生涯ティアは、支払い読者をキュレーターの繰り返しzap受信者に変換します。キュレーターはブックマークイベントを公開し、インデクサーは機械可読メタデータでそれらを豊かにし、ビューアはフィードをレンダリングします。各ロールは別々のデプロイ可能なサービスです。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="amber-v610-ga-暗号化されたアカウントごとのバックアップ">Amber v6.1.0 GA: 暗号化されたアカウントごとのバックアップ&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong>は今週&lt;code>v6.1.0-pre3&lt;/code>からGAの&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0">v6.1.0&lt;/a>に移行しました。&lt;a href="https://github.com/greenart7c3/Amber/pull/444">PR #444&lt;/a>はアプリケーション権限データベース用の暗号化されたバックアップと復元を提供し、&lt;a href="https://github.com/greenart7c3/Amber/pull/446">PR #446&lt;/a>はバックアップをアカウントごとに分割するので、複数のNostrアイデンティティを持つユーザーはアプリ許可の各セットを独立してバックアップおよび復元できます。先週取り上げたPSBT署名作業もGAカットに含まれています。&lt;/p>
&lt;h3 id="citrine-リレーごとのサブスクリプションとオニオンurlリーク防止">Citrine: リレーごとのサブスクリプションとオニオンURLリーク防止&lt;/h3>
&lt;p>Amethystに付属するデバイス上のパーソナルリレー&lt;strong>Citrine&lt;/strong>は、このサイクルで2つの修正をリリースしました。&lt;a href="https://github.com/greenart7c3/Citrine/pull/157">PR #157&lt;/a>は単一のグローバルサブスクリプションからリレーごとにタグ付けされたサブスクリプションに切り替え、&lt;code>kinds: [1]&lt;/code>フィルタを共有する2つのソースリレーがアグリゲータ側で衝突しなくなりました。&lt;a href="https://github.com/greenart7c3/Citrine/pull/162">PR #162&lt;/a>はアウトバウンドTorプロキシが無効化されているときにオニオンリレーURLをフィルタし、オニオンアドレスがクリアネットルーティングパスにリークするのを防ぎます。&lt;/p>
&lt;h3 id="angor-v0227とv0228-リレーの信頼性とboltz再接続">Angor v0.2.27とv0.2.28: リレーの信頼性とBoltz再接続&lt;/h3>
&lt;p>&lt;strong>Angor&lt;/strong>は&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.27">v0.2.27&lt;/a>と&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.28">v0.2.28&lt;/a>をリリースしました。&lt;a href="https://github.com/block-core/angor/pull/874">PR #874&lt;/a>は、複数のリレーエンドポイントを持つプロジェクトの信頼性を静かに低下させていた回帰、すなわち一度に1つのリレーしか接続されないというリレーの重複排除バグを修正します。&lt;a href="https://github.com/block-core/angor/pull/876">PR #876&lt;/a>はBoltzサブマリンスワップ監視のためのWebSocket再接続ロジックを追加するので、短期の切断がスワップを未知の状態のまま残すことはありません。&lt;/p>
&lt;h3 id="nostrord-v110-nip-57-zapとnip-29ロール区別">Nostrord v1.1.0: NIP-57 zapとNIP-29ロール区別&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong>はメッセージとプロフィール向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> Lightning zapサポート (&lt;a href="https://github.com/nostrord/nostrord/pull/98">PR #98&lt;/a>) と、以前は同じようにレンダリングされて誰が昇格されたか対して誰が招待されたかを不明瞭にしていたアクティビティフィード内での&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>ロール変更とメンバー追加の適切な区別 (&lt;a href="https://github.com/nostrord/nostrord/pull/92">PR #92&lt;/a>) を備えた&lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.1.0">v1.1.0&lt;/a>をリリースしました。&lt;/p>
&lt;h3 id="ぬるぬる-v15x-sqlcipher-mlsキーストアとエポックキャッチアップ">ぬるぬる v1.5.x: SQLCipher MLSキーストアとエポックキャッチアップ&lt;/h3>
&lt;p>NIP-44、NIP-50高度検索、NIP-55、NIP-70とともにMLSグループメッセージング (kind 443) を実装する日本語Nostrクライアント&lt;strong>ぬるぬる&lt;/strong> (nurunuru、tami1A84作) は今週5つのリリースを提供しました。&lt;a href="https://github.com/tami1A84/null--nostr/pull/184">PR #184&lt;/a>はrust-engine層のMLSキーストア向けにSQLCipher暗号化を導入します。&lt;a href="https://github.com/tami1A84/null--nostr/pull/187">PR #187&lt;/a>と&lt;a href="https://github.com/tami1A84/null--nostr/pull/188">PR #188&lt;/a>はレガシー平文パージステップとCIガードとともに、SQLCipherをそれぞれAndroidとiOSに拡張します。&lt;a href="https://github.com/tami1A84/null--nostr/pull/189">PR #189&lt;/a>と&lt;a href="https://github.com/tami1A84/null--nostr/pull/191">PR #191&lt;/a>は、両プラットフォームでリプレイキャッシュとリカバリバナー付きのMLSピアエポックキャッチアップを追加するので、グループコミットで遅れているクライアントは会話を失うことなく回復できます。ぬるぬるは&lt;code>marmot-protocol/mdk&lt;/code>の&lt;code>mdk-core&lt;/code>、&lt;code>mdk-sqlite-storage&lt;/code>、&lt;code>mdk-storage-traits&lt;/code>上に構築されたMarmotクライアントなので、SQLCipherとエポックキャッチアップの作業は、White Noiseが使用するのと同じMDKランタイム内に到達します。&lt;/p>
&lt;h3 id="bitcredit-core-v0510-nostrルート型ブロック伝播修正">Bitcredit Core v0.5.10: Nostrルート型ブロック伝播修正&lt;/h3>
&lt;p>&lt;strong>Bitcredit Core&lt;/strong>は、アイデンティティアップロードを含む会社作成フローを壊していたブロック伝播中に欠落していたNostrノードIDフィールドの修正を含む&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.10">v0.5.10&lt;/a>をリリースしました。Bitcreditは、会社と請求書伝播イベントの信頼のルートとしてNostrアイデンティティを使用するe-billプロトコルです。&lt;/p>
&lt;h2 id="未リリースの変更">未リリースの変更&lt;/h2>
&lt;p>&lt;strong>Jumble&lt;/strong>は、ユーザーが単一の署名者が完全な秘密を保持しないように、Nostrキーを複数の当事者に分割できるようにするPomegranateしきい値署名者経由のGoogleログインのための&lt;a href="https://github.com/CodyTseng/jumble/pull/797">PR #797&lt;/a>を公開しました。これはbunkerまたはnsecインポートフローを超える意義のあるステップです: ユーザーは1つの署名者パーティが侵害されても、そのパーティが完全な秘密鍵を保持することなくアカウントを回復できます。&lt;/p>
&lt;p>&lt;strong>Shopstr&lt;/strong>はMCP (Model Context Protocol) サーバーを初期化する&lt;a href="https://github.com/shopstr-eng/shopstr/pull/492">PR #492&lt;/a>を公開し、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/494">PR #494&lt;/a>がサポートするインフラストラクチャ (リレーフェッチ、パーサー、検証、エラー、重複排除、監査ロギング) を構築し、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/472">PR #472&lt;/a>がMCPリレーマネージャーのリレー許可リストを追加します。これによりShopstrは、AIエージェントが構造化されたツールとしてNIP-99リスティングを閲覧し操作できるように、自身をMCPサーバーとして公開する最初のNostrマーケットプレイスとなりました。&lt;/p>
&lt;p>Shamir秘密分散ボルトの&lt;strong>Keydex&lt;/strong>は、カスタムkind 1337-1345を713-721範囲に移動する重要な移行を&lt;a href="https://github.com/mplorentz/keydex/pull/226">PR #226&lt;/a>で公開し、Shamir共有上のAEADを追加する&lt;a href="https://github.com/mplorentz/keydex/pull/239">PR #239&lt;/a>と、GF256算術に移行する&lt;a href="https://github.com/mplorentz/keydex/pull/234">PR #234&lt;/a>を並行して公開しました。kind範囲の移行は、KeydexをNIPsリポジトリがカスタムkindを割り当てる方法に合わせ、自己主張範囲から離れます。&lt;/p>
&lt;p>&lt;strong>Mill&lt;/strong> (&lt;a href="https://github.com/0ceanSlim/nostr-mill">nostr-mill&lt;/a>) は、&lt;a href="https://github.com/0ceanSlim">OceanSlim&lt;/a> (&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a> Goリレーのメンテナー) からの新しいドロップイン式Nostr署名者UIであり、&lt;a href="https://www.npmjs.com/package/nostr-mill">npm&lt;/a>と&lt;a href="https://cdn.jsdelivr.net/npm/nostr-mill/dist/mill.umd.js">jsDelivr&lt;/a>に単一スクリプトタグのWeb Componentとして提供されます。1つの&lt;code>&amp;lt;script&amp;gt;&lt;/code>タグでWebアプリに、統一されたUIの背後に6つの一般的な署名者エントリポイントすべてを提供します: &lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>ブラウザ拡張機能、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> bunker (URL貼り付けまたはユーザー指定可能なリレーによるQRペアリング、ページ内bunker統合の中では珍しい)、Android intent経由の&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a> Amber、PBKDF2付きAES-256-GCMで&lt;code>sessionStorage&lt;/code>に保存された暗号化nsec、読み取り専用&lt;code>npub&lt;/code>、およびブラウザ内キーペア生成。コンポーネントは、Shadow DOMにスコープされた29のCSSカスタムプロパティによってテーマ設定可能であり、小さなSemVerでトラックされたAPI (&lt;code>MILL.open&lt;/code>、&lt;code>mill:connected&lt;/code> / &lt;code>mill:disconnected&lt;/code>イベント、名前付きテーマエクスポート) を公開します。メンテナーの動機は、bunkerログインフローがNostr全体でWebアプリごとに1つずつ再実装されてきたことです。共有コンポーネントに集約することで、クライアントは署名者UXの動作方法に収束でき、オプションのフロー (上記で取り上げたWispのPomegranateベースのGoogleログインを反映するしきい値署名者経由の委任キーログインなど) を、任意のアプリがドロップインできる再利用可能なサーフェスに変えます。Millはnpm v1.5.0、単一メンテナー、アルファ段階で、grainが最初の統合予定です。&lt;/p>
&lt;p>&lt;strong>moStard&lt;/strong>、&lt;a href="https://github.com/roguehashrate">roguehashrate&lt;/a>による&lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a>のMoneroファーストフォークは、今週削ぎ落とされた機能セットとMoneroテーマのアイデンティティを同じApplesauce + ワーカーリレースタックの上に重ねて&lt;a href="https://github.com/roguehashrate/moStard/releases">v1.0.1&lt;/a>に到達しました。今週の作業では、Zapstoreのkind 32267ソフトウェアアプリケーションイベントのレンダリング (タイムラインにアプリ名、アイコン、スクリーンショット、プラットフォーム、ライセンス、および&lt;code>zapstore.dev/apps/&amp;lt;d-tag&amp;gt;&lt;/code>へのローンチリンクを表示する埋め込みカード)、kind 20とkind 21経由のポール、メソッドごとのQRコード付きNIP-A3 Payment Targetsベースのチップ、ノート内のmarkdownレンダリング、外部GIFキーボード用のGIFピッカーサポート、およびAmber署名者ペアリング修正が実装されました。Moneroのフレーミングはチップフローにも拡張されます: &lt;code>monero&lt;/code>アドレス用のNIP-A3 &lt;code>payto&lt;/code>エントリは、&lt;code>lightning&lt;/code>と&lt;code>bitcoin&lt;/code>とともに同じUIで第一級ボタンを取得します。クライアントは単一メンテナー、アルファ段階ですが、5月27日の作業は、今週のプロトコル仕様アナウンスからNIP-A3を数日以内に出荷フォークに直接引き込むビルダーを示しています。&lt;/p>
&lt;h2 id="nip更新とプロトコル仕様作業">NIP更新とプロトコル仕様作業&lt;/h2>
&lt;h3 id="カレンダーnipスタック-formstrチームからの4つの提案">カレンダーNIPスタック: Formstrチームからの4つの提案&lt;/h3>
&lt;p>Ix2 (&lt;a href="https://github.com/geralt-debugs">@geralt-debugs&lt;/a>) は5月17日に4つの調整されたNIP PRを公開しました。すべて同じ作者の下で既に出荷されている&lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>実装を参照しています。&lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a>は、汎用化された「参加者自己削除」イベントとしてkind 84を提案します: 任意のイベントのタグ付けされた参加者は、元のイベントを&lt;code>e&lt;/code>、&lt;code>a&lt;/code>、&lt;code>k&lt;/code>タグで参照するkind 84を公開してオプトアウトを表明できます。リレーはkind 84の署名者が参照されたイベントの&lt;code>p&lt;/code>タグに現れるかを検証してから削除を尊重しなければならず、kind 5削除は常に優先されます。このPRは以前はNIP-52カレンダーコンテキスト内でしか記述されていなかったパターンを汎用化するので、kind 84は非作者が任意の参加者イベントから離脱するための標準的な方法になります。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a>はカレンダースタックの基礎です: プライベートカレンダーイベント用のNIP-52E (kinds 32678 時間ベース、32681 日別イベント、32123 プライベートカレンダーリスト、31926 ビジーリスト、1052 ギフトラップ、52 rumor) と繰り返しイベント用のNIP-52R。アーキテクチャの中核にはビューキーパターンがあります: ランダムに生成されたキーペアがNIP-44でイベントコンテンツを暗号化し、秘密の半分 (bech32エンコードされて&lt;code>nsec&lt;/code>) が各参加者にギフトラップされます。署名者はパブリックな&lt;code>d&lt;/code>タグのみを保持します。他のすべては暗号化された&lt;code>content&lt;/code>内に存在します。このようにコンテンツ暗号化をアイデンティティから切り離すことは、イベントの編集が受信者の再キー付けを必要としないことを意味します。NIP-52Rは、既存のkinds 31923と31922に、生のRFC 5545 RRULE値を使用して繰り返しを宣言するための2つのオプションタグを定義し、RRULEが存在するときには&lt;code>D&lt;/code>日インデックスがオプションになります。前方秘匿性は明示的に欠如しています: リークされたビューキーは同じ&lt;code>d&lt;/code>タグの下のイベントの過去および将来のすべてのバージョンを明らかにします。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a>はNIP-52E上に構築され、PR説明が「中央仲介者のないCalendly/Cal.comへのドロップイン代替」と呼ぶ分散型アポイントメントスケジューリング仕様を追加します。kind 31927は暗号化された空き時間ウィンドウ付きのスケジューリングページを広告します。kind 32680はビューキー用のホスト側自己暗号化リカバリレコードです。kinds 1057と1058はギフトラップされた予約リクエストとレスポンスです。巧妙なメカニズム: 予約者はリクエストを送信する前に将来のプライベートイベントの&lt;code>d&lt;/code>タグとビューキーの両方を生成するので、予約者は正しいキーで自分のカレンダーにアポイントメントをすぐに追加でき、ホストはキーをラウンドトリップして返す必要がありません。予約レスポンスは、リレーが復号せずにフィルタできるように、外側のラップに暗号化されていない&lt;code>status&lt;/code>タグを持ちます。&lt;/p>
&lt;p>参照実装は&lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>およびZapstoreのCalendar Androidアプリとして既に稼働しています。&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a>は&lt;a href="https://github.com/nostr-protocol/nips/pull/2027">PR #2027&lt;/a>を優先して閉じ、年初から公開されていた以前のプライベートカレンダー提案を統合します。&lt;/p>
&lt;h3 id="payment-targetsとsilent-payments">Payment TargetsとSilent Payments&lt;/h3>
&lt;p>今週、&lt;code>kind:30023&lt;/code>ロングフォーム文書でさらに2つのNIP提案が回覧されました。&lt;/p>
&lt;p>&lt;strong>Payment Targets&lt;/strong>提案 (NIP-A3 / payto) は、RFC 8905 &lt;code>payto:&lt;/code> URIにマップされる1つ以上の&lt;code>[&amp;quot;payto&amp;quot;, &amp;quot;&amp;lt;type&amp;gt;&amp;quot;, &amp;quot;&amp;lt;authority&amp;gt;&amp;quot;]&lt;/code>タグを運ぶリプレイス可能なkind 10133イベントを定義します。サポートされるタイプには、bitcoin、lightning、ethereum、monero、nano、cashme、revolut、venmoが含まれます。意図は、lud16ベースのNIP-57 zapを補完する (置き換えるのではない) マルチレールチップジャーを標準化することです。Amethyst v1.11.0は最初の実装者です。マージされたPR &lt;a href="https://github.com/vitorpamplona/amethyst/pull/2953">#2953&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3009">#3009&lt;/a>はサブスクリプションと観測のサーフェスを提供し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/3011">PR #3011&lt;/a>は&lt;code>PaymentTargetsEvent&lt;/code>のUIを配線します。&lt;/p>
&lt;p>異なる作者から2つの競合するSilent Payments提案がドロップされました。最初のバリアントは、パブリック加法チュエックを介して&lt;code>nsec&lt;/code>からBIP-352 silent-payment scanおよびspendキーを導出するので、任意の送信者は&lt;code>npub&lt;/code>からセットアップなしで&lt;code>sp1q...&lt;/code>アドレスを構築できます。作者の警告は仕様で明示的です: 「bscanとbspendは&lt;code>nsec&lt;/code>とまったく同じ注意で扱わなければならない」、なぜならscanキーはnsecを明らかにするからです。2番目のバリアントは逆のアプローチを取り、Nostrアイデンティティから独立してキーを保つ標準BIP-352 silent-paymentアドレスを含む&lt;code>sp_address&lt;/code>フィールドをkind 0プロフィールメタデータに追加します。バリアント2は構造的により安全です。両方の提案は熟考されたレビュースレッドを引き付けました。erskingardner (Marmotリード) は提案を追跡するtrboumaのgistに詳細な&lt;a href="https://gist.github.com/trbouma/77648ebe1005b181b67d1c4b42c7f31d?permalink_comment_id=6167489#gistcomment-6167489">コメント&lt;/a>を投稿しました。彼の中心的な懸念は、バリアント1がscan秘密鍵を&lt;code>nsec&lt;/code>と公的に計算可能なチュエックから導出することで、それはscanキーを保持する任意の当事者 (実際にはユーザーが委任しなければならない第三者のスキャニングサービスを含む) が、そのチュエックを引くことで完全な&lt;code>nsec&lt;/code>を回復できることを意味します。リモートサービスがインバウンド支払いをスキャンできるようにする同じキーは、そのサービスがアイデンティティおよびそこから派生した資金を盗むことも可能にします。&lt;/p>
&lt;p>NIP-34 git-over-Nostr側では、hzrd149が&lt;a href="https://gitworkshop.dev/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5/relay.ngit.dev/schemata">schemata&lt;/a>に2つのパッチを公開しました。&lt;a href="https://gitworkshop.dev/">gitworkshop.dev&lt;/a>自体は2つのissueレポートを引き付けました: 1つはNIP-46リモート署名者を使用しているときにログインセッションがページリフレッシュで失われることを指摘し、もう1つはREADMEプレビューでの区別のあるリンクスタイリングを要求しています。&lt;/p>
&lt;h2 id="nostrの6つの5月">Nostrの6つの5月&lt;/h2>
&lt;p>2026年5月最後のニュースレターは、今週のリリースから一歩下がって、Nostrの歴史上の5月を見て歩きます。各年は異なる重心を持っていました: 2021年は単一のコミット、2022年はNIPsリポジトリ自体の形成、2023年はプロトコル仕様の爆発、2024年は集約サイクル、2025年はnegentropyがマージされDamusのNotedeckがベータに昇格した月、そして2026年は本号と前3号がカバーする月です。&lt;/p>
&lt;h3 id="2021年5月">2021年5月&lt;/h3>
&lt;p>Nostrは6か月齢でした。Nostrのコードは&lt;a href="https://github.com/fiatjaf/nostr">fiatjaf/nostr&lt;/a>にしか存在せず、月全体で正確に1つのコミットしか生成しませんでしたが、そのコミットはプロトコルで最も使われる部分の1つになりました。5月22日、fiatjafは&lt;a href="https://github.com/fiatjaf/nostr/commit/9ee3a02">NIP-02を再目的化&lt;/a>して連絡先リストNIPにしました。コミットメッセージには「NIP-02を再目的化し、NIP著者表示を追加」とあり、明示的なクレジットは2月9日に公開され、fiatjafがそのアイデアをNIP-02にまとめた前日に閉じられたarcbtc (LNbitsのBen Arc) による&lt;a href="https://github.com/nostr-protocol/nostr/pull/16">PR #16&lt;/a>に対してです。arcbtcの提案は小さなものでした: 「アカウントの復元と公開鍵を推薦するために有用な」「フォロワーリストをリレーに送信する」ためのkindです。fiatjafはそれを、3つの目的を同時に果たすタグを持つ単一の&lt;code>kind:3&lt;/code>イベントに一般化しました。それらはフォローリスト (ソーシャルグラフ)、petnameストア (友人向けのローカルニックネーム)、リレー推薦ソース (フォロー先が使うリレー) です。同じイベント、著者ごとにリプレイス可能で、「この人は誰をフォローしているのか」「彼らを何と呼んでいるのか」「どこで読んでいるのか」への正典的な回答となりました。次の5年間で構築されたすべてのクライアントは&lt;code>kind:3&lt;/code>を読みます。同じコミットで追加された、各NIPがその著者を名指すという慣習は、すべての仕様が今バイラインを持つ理由です。&lt;/p>
&lt;h3 id="2022年5月">2022年5月&lt;/h3>
&lt;p>NIPsリポジトリがコミュニティプロジェクトになった月。5月1日、fiatjafは仕様を&lt;code>fiatjaf/nostr&lt;/code>から専用の&lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a>リポジトリへ&lt;a href="https://github.com/nostr-protocol/nips/commit/f25c7e6">移行&lt;/a>し、5月2日には&lt;a href="https://github.com/nostr-protocol/nips/commit/c053670">正式な承認基準&lt;/a>を追加しました。2日後、Robert C. Martin (Uncle Bob) は最初の外部プルリクエスト&lt;a href="https://github.com/nostr-protocol/nips/pull/1">PR #1&lt;/a>を公開し、&lt;code>e&lt;/code>と&lt;code>p&lt;/code>タグのスレッディング慣習を提案しました。このPRは元々NIP-13と番号付けられ、その後proof-of-workのために場所を空けるため&lt;a href="https://github.com/nostr-protocol/nips/commit/bd4a81a">NIP-10に改名&lt;/a>されました。最初の6つのNIPのうち3つはUncle Bobのものです: NIP-10 (スレッディングマーカー)、NIP-14 (&lt;a href="https://github.com/nostr-protocol/nips/commit/ebacbcc">Subjectタグ&lt;/a>)、および&lt;a href="https://github.com/nostr-protocol/nips/commit/e22ea1a">&lt;code>kind:1&lt;/code>を正典的な短文ノートkindとして&lt;/a>確定した5月21日のコミット。5月5日、William Casarinは最初のNIPコミットを行いました: &lt;a href="https://github.com/nostr-protocol/nips/commit/d7a4aad">NIP-13 Proof of Work&lt;/a>と&lt;a href="https://github.com/nostr-protocol/nips/commit/ad1eb96">kind:2 recommend-relayイベント&lt;/a>。翌日、fiatjafは&lt;a href="https://github.com/nostr-protocol/nips/commit/37eb53e">NIP-07 &lt;code>window.nostr&lt;/code>&lt;/a>を公開し、20行のmarkdownが今日でも使われているブラウザ拡張機能署名者インターフェースを定義しました。David A. HardingによるNIP-05の&lt;a href="https://github.com/nostr-protocol/nips/commit/57b86d2">CORS警告&lt;/a>とNIP-01の&lt;a href="https://github.com/nostr-protocol/nips/commit/a4aea53">&lt;code>filter.limit&lt;/code>&lt;/a>は同じ週に到着しました。nostr-toolsは5月8日に&lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/dc489bf">最初のブラウザインポート可能なESMビルド&lt;/a>をリリースしました。Semisolは月末に&lt;a href="https://github.com/nostr-protocol/nips/commit/a787093">NIP-15 (End Of Stored Events)&lt;/a>と&lt;a href="https://github.com/nostr-protocol/nips/commit/62fde6c">NIP-16 (イベントkind範囲)&lt;/a>を起草しました。これらは今でもリレーの動作を支配する文書です。&lt;/p>
&lt;h3 id="2023年5月">2023年5月&lt;/h3>
&lt;p>プロトコル仕様の爆発。その月に64のNIP PRが公開され、Nostrの次の2年間のサーフェスエリアを定義した提案のいくつかがすべて31日以内に到着し、Nostrがこれまで受けた最大の資金調達アナウンスは、Jack Dorseyの#startsmallからのOpenSats &lt;a href="https://opensats.org/blog/opensats-receives-additional-funding-of-dollar10m-from-startsmall">$1000万助成金&lt;/a>として5月4日に到着し、それ以来のあらゆるNostr助成金の波を支えた資金となりました。NIP-47 (Nostr Wallet Connect) は&lt;a href="https://github.com/nostr-protocol/nips/pull/406">5月2日にマージ&lt;/a>され、Albyのwallet-connect仕様をメインプロトコルに取り込みました。2日後、Vitor Pamplonaは&lt;code>kind:30311&lt;/code>ルームと&lt;code>kind:1311&lt;/code>チャットメッセージを備えた&lt;a href="https://github.com/nostr-protocol/nips/pull/498">NIP-53 Live Activitiesを提案&lt;/a>しました。これは、続くすべてのNostrライブストリーミングサーフェスの基礎となりました。Pablo Fernandezは5月5日に&lt;a href="https://github.com/nostr-protocol/nips/pull/501">NIP-84 Highlights&lt;/a>を、5月14日に&lt;a href="https://github.com/nostr-protocol/nips/pull/530">NIP-89 Recommended Application Handlers&lt;/a>を公開しました。v0l (Snort著者のKieran Babich) は5月8日に&lt;a href="https://github.com/nostr-protocol/nips/commit/29f26e7">NIP-98 HTTP Auth&lt;/a>を提案しました。これはNIP-96とBlossomの両方が後に依存した認証プリミティブです。Jonathan Staabは5月15日に&lt;a href="https://github.com/nostr-protocol/nips/pull/532">NIP-32 Labels&lt;/a>を提案し、同日&lt;a href="https://github.com/nostr-protocol/nips/pull/484">NIP-30 Custom Emoji&lt;/a>がマージされました。Arthur Francaは5月21日に&lt;a href="https://github.com/nostr-protocol/nips/pull/547">NIP-96 HTTP File Storage Integration&lt;/a>を提案しました。2日後、Vitorは&lt;a href="https://github.com/nostr-protocol/nips/commit/e4937be">NIP-57にzapスプリット&lt;/a>を追加し、verbirichaは&lt;a href="https://github.com/nostr-protocol/nips/commit/0495931">NIP-23に&lt;code>kind:30024&lt;/code>ロングフォームドラフト&lt;/a>を追加しました。これはHabla、YakiHonne、Highlighterでの現代的なNostrロングフォームオーサリングワークフローの基礎となる仕様です。fiatjafは5月28日に&lt;a href="https://github.com/nostr-protocol/nips/pull/566">NIP-29 Simple Groups&lt;/a>を提案しました。これは&lt;code>kind:9000&lt;/code>から&lt;code>kind:9020&lt;/code>のモデレーションイベントをカバーする最初のリレー管理型グループ仕様です。月は5月31日にPaul Millerが&lt;a href="https://github.com/nostr-protocol/nips/pull/574">NIP-44の対話&lt;/a>を公開して閉じました。これはNIP-04を置き換えることを意図したXChaCha20ベースの暗号化DM設計です。クライアント側も同じくらい速く動きました: Damusは&lt;a href="https://github.com/damus-io/damus/commits/master/?since=2023-05-10&amp;amp;until=2023-05-15">5月10日から5月15日にかけて&lt;/a>NWC、zap poolとPending Zapsをリリースし、Snortは&lt;a href="https://github.com/v0l/snort/commit/6cbc3ae">zap pool&lt;/a>と&lt;a href="https://github.com/v0l/snort/commit/d5032d6">L402ペイウォールされたメディア&lt;/a>をローンチし、&lt;a href="https://github.com/vitorpamplona/amethyst/releases">Amethyst&lt;/a>はその月に約30のバージョン付きリリースを、5月1日のv0.40.1から月末のv0.55.x範囲まで、v0.45.0でのzapスプリットとv0.46.0でのNIP-32ラベルを含めて出荷しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/commit/6654cf9">Primal Androidリポジトリ&lt;/a>は5月16日に作成されました。&lt;a href="https://github.com/rust-nostr/nostr/releases/tag/v0.22.0">rust-nostr v0.22.0&lt;/a>はNIP-47とNIP-58を追加しました。5月1日、&lt;a href="https://github.com/hoytech/strfry/commit/de475c5">strfryはnegentropy統合を出荷&lt;/a>しました。これは後にNIP-77となるDoug Hoyteのセットレコンシリエーションプロトコルの最初のリレー実装です。月は&lt;a href="https://www.forbes.com/sites/digital-assets/2023/05/30/bitcoin-social-network-nostr-creator-fiatjaf-/">Forbesが5月30日にfiatjafの長編プロフィールを発表&lt;/a>して閉じました。これはNostrの匿名の創設者に関する最初の主要メディアのディープダイブの1つです。&lt;/p>
&lt;h3 id="2024年5月">2024年5月&lt;/h3>
&lt;p>集約サイクル。派手な提案は少なく、より多くの出荷。&lt;a href="https://github.com/nostr-protocol/nips/pull/787">NIP-54 Decentralized Wikis&lt;/a>は5月2日に&lt;code>kind:30818&lt;/code>記事とケース正規化された&lt;code>d&lt;/code>タグとともにマージされました。3日後、&lt;a href="https://github.com/nostr-protocol/nips/pull/1213">NIP-56&lt;/a>は、乱用レポートがコンテンツのみのカテゴリと並んでデジタル脅威 (マルウェア、フィッシング) をフラグ付けできるように拡張されました。5月6日、&lt;a href="https://github.com/nostr-protocol/nips/pull/1221">NIP-25リアクションは簡素化&lt;/a>され、返信スレッド全体を&lt;code>e&lt;/code>タグとして含めることを停止しました。Arthur Francaは5月12日に&lt;a href="https://github.com/nostr-protocol/nips/pull/1233">NIP-22 Commentを提案&lt;/a>し、非&lt;code>kind:1&lt;/code>イベント (記事、ファイル、製品) への返信が構造化された方法でスレッド化されるように&lt;code>kind:1111&lt;/code>を導入しました。5月19日、fiatjafは&lt;a href="https://github.com/nostr-protocol/nips/pull/1248">NIP-46を全面刷新&lt;/a>してNIP-04を完全に放棄し、すべてのbunkerトラフィックをNIP-44暗号化に切り替えました。これはそれ以来すべてのbunker実装を形作った非推奨化の動きです。5月20日、&lt;a href="https://github.com/nostr-protocol/nips/pull/923">NIP-71 Video Events&lt;/a>は&lt;code>kind:21&lt;/code>と&lt;code>kind:22&lt;/code>とともにマージされ、&lt;a href="https://github.com/nostr-protocol/nips/pull/1171">NIP-10&lt;/a>は&lt;code>e&lt;/code>タグにオプションのpubkey引数を追加したので、クライアントは参照されたイベントを最初にフェッチせずにスレッド著者を解決できるようになりました。Kieran Walshの&lt;a href="https://github.com/nostr-protocol/nips/pull/1175">NIP-35 Torrents&lt;/a>は5月22日にマージされ、5月24日にNIPs READMEは&lt;a href="https://github.com/nostr-protocol/nips/pull/1251">CIP-01&lt;/a>を最初にリポ外提案として参照し、「NIPは複数の提案の場の1つ」というパターンの始まりを合図しました。5月25日、&lt;a href="https://github.com/nostr-protocol/nips/pull/1254">クリーンアップPR&lt;/a>は、下流実装が凍結する前にNIP-71から&lt;code>aes-256-gcm&lt;/code>タグを削除しました。NIP-96は5月27日に&lt;a href="https://github.com/nostr-protocol/nips/pull/1262">&lt;code>list files&lt;/code>を追加し変換要件をドロップ&lt;/a>しました。5月28日、Jonathan Staabは&lt;a href="https://github.com/nostr-protocol/nips/pull/1264">NIP承認基準を引き上げること&lt;/a>を提案し、ドラフトが卒業する前に少なくとも2つの相互運用実装を要求しました。クライアント側: Damusは5月9日～10日に&lt;a href="https://github.com/damus-io/damus/releases/tag/v1.7.2">v1.7.2&lt;/a>と&lt;a href="https://github.com/damus-io/damus/releases/tag/v1.8">v1.8&lt;/a>、および&lt;a href="https://github.com/damus-io/damus/commits/v1.9">完全なNIP-10マーカー処理を伴うv1.9&lt;/a>をタグ付けし、&lt;a href="https://github.com/damus-io/damus/commit/8feb228">プッシュ通知にNIP-98認証&lt;/a>を実装し、完全な&lt;a href="https://github.com/damus-io/damus/commit/52aefc8">NIP-10マーカーサポート&lt;/a>を提供しました。Amethystは5月14日に&lt;a href="https://github.com/vitorpamplona/amethyst/commit/1f45a63">NIP-17をデフォルトのDMモード&lt;/a>にし、&lt;a href="https://github.com/vitorpamplona/amethyst/commit/aa97c7e">NIP-65 outboxモデルのリレー管理&lt;/a>を構築し、&lt;a href="https://github.com/vitorpamplona/amethyst/commit/ff94f45">NIP-96サーバー選択&lt;/a>を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/commit/04c4490">NIP-06 BIP-32/BIP-39キー導出&lt;/a>を提供しました。Primal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.2">0.99.2&lt;/a>は5月10日にユーザータグ付けと外部ウォレットNWCを追加し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/0.99.4">0.99.4&lt;/a>が続きました。Pablo Fernandezは5月24日～31日にかけて&lt;a href="https://github.com/nostr-dev-kit/ndk/commits/master/?since=2024-05-01&amp;amp;until=2024-06-01">NDK楽観的更新クラスタ&lt;/a>を実現しました。Snortは&lt;a href="https://github.com/v0l/snort/commit/5763d91">NIP-96サーバー選択&lt;/a>を追加し、cashu-tsは暗号プリミティブを&lt;code>@cashu/crypto&lt;/code>に&lt;a href="https://github.com/cashubtc/cashu-ts/commit/3e20f45">分離&lt;/a>しました。&lt;/p>
&lt;h3 id="2025年5月">2025年5月&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77 (Negentropy Syncing)&lt;/a>が5月27日にマージされた月です。fiatjafとDoug Hoyteによる、ブルートフォースREQフィルタを対数コストの差分計算に置き換えるワイヤプロトコルの仕様です。これはstrfryが2年前にリレー側機能として出荷したのと同じnegentropyであり、今やクライアント・リレープロトコルとして正式化され、&lt;a href="https://github.com/nostr-protocol/nips/pull/1939">README エントリ&lt;/a>は同日到着しました。前の週、&lt;a href="https://github.com/nostr-protocol/nips/pull/1897">NIP-23ロングフォーム&lt;/a>は5月24日にHTML文書が&lt;code>&amp;lt;link&amp;gt;&lt;/code>タグを通じてNostrエンティティと関連付けられる方法を定義しました。これは正典的なWebコピープリミティブです。NIP-25は5月22日に&lt;a href="https://github.com/nostr-protocol/nips/pull/1702">リアクションターゲットのリレーヒント&lt;/a>を追加し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1486">絵文字-to-like/dislikeの推奨をドロップ&lt;/a>し、絵文字を明確な意味の単位として扱うようにしました。NIP-52は5月14日に、クライアントが本番で出荷していたkindに焦点を当てるために&lt;a href="https://github.com/nostr-protocol/nips/pull/1922">簡素化&lt;/a>されました。この削減により、1年後のFormstrカレンダー拡張機能がよりクリーンに接ぎ木されました。5月9日、&lt;a href="https://github.com/nostr-protocol/nips/commit/873afc5fb823f58c3b7f29c5090f9c56172623f2">Follow Packs&lt;/a> (kind 39089キュレーションされたフォローリスト) と&lt;a href="https://github.com/nostr-protocol/nips/pull/1848">Favorite Relays&lt;/a> (NIP-51の下の新しいリプレイス可能リスト) が同じ日にREADMEに入りました。Marmotプロトコルの弧はまだ始まっていませんでした: &lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>リポジトリのみが存在し (最初のコミットは2024年9月9日)、2025年5月はそのSvelte+Tauriプロトタイプフェーズであり、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/commit/b8e6754">5月14日のコミット&lt;/a>はプロジェクトが現在のアーキテクチャに転換する際にTauri固有のコードを削除しました。専用のMDK Rustコア (2025年9月12日)、Marmot仕様リポジトリ (2025年9月19日)、Flutter UI (2025年12月2日) はすべてその年の後半に来ました。クライアント側では、Damusの&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.4.0">Notedeck v0.4.0&lt;/a>が5月5日に最初のベータとしてリリースされ、全文検索、Dave AIアシスタント、NWC経由のzap、GIF、ユーザータグ付け、ミュートリストとともにアルファから卒業しました。2日後、hodlbodの&lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.0.0">Flotilla 1.0.0&lt;/a>がNIP-29ベースのグループチャットクライアントとして公開ローンチ境界を越え、&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.12">Coracle 0.6.12&lt;/a>がそれに続きました。これは&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.17">5月14日の0.6.17&lt;/a>まで続いた6つのCoracleリリースの最初でした。5月12日の&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v3.4.0">Amber v3.4.0&lt;/a>は非推奨のAndroid AutofillとClipboardManager APIから移行し、暗号化された共有プリファレンスからDataStoreに移行しました。5月20日のPrimal Android &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.2.20">2.2.20&lt;/a>はPrimal Premium用のRedeem Codeフローと再設計された画像ギャラリーを追加しました。5月21日の&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.14.0">nak v0.14.0&lt;/a>はCoracle、Flotilla、Notedeckリリースと同じ週にキャノニカルCLIのマイナーをカットしました。OpenSatsは5月22日に&lt;a href="https://opensats.org/blog/opensats-receives-two-million-donation-from-the-reynolds-foundation">Reynolds Foundationが200万ドルを提供&lt;/a>したときに、Bitcoin財務以外の最大寄付金を受け取りました。&lt;/p>
&lt;h3 id="2026年5月">2026年5月&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-05-06-newsletter/">ニュースレター #21&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-05-13-newsletter/">#22&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-05-21-newsletter/">#23&lt;/a>、および本号でカバーした月です。定義するスレッドは、MLS-on-Nostrがマルチクライアント本番に達したことです: &lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.8.0">MDK 0.8.0&lt;/a>はMIP-05リーフインデックスプリミティブとアドレス可能キーパッケージを出荷し、その後&lt;a href="https://github.com/marmot-protocol/mdk/pull/306">PR #306&lt;/a>が共有UniFFIサーフェスを通じてiOSとAndroid横断でNIP-40消えるメッセージ検証を追加しました。&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.5.22%2B25">White Noise v2026.5.22+25&lt;/a>は、Extensionプロセス内でMLS暗号文を復号するので、ブローカーは決して平文を見ないNotification Service Extensionを通じてiOSプッシュを出荷しました。そして2つの新しいMarmotクライアントが登場: &lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (マルチデバイスKeyPackageスロットを持つ.NET/AvaloniaデスクトップとAndroidクライアント) と&lt;a href="https://cordn.net">Cordn&lt;/a> (ContextVM上のグループごとのコーディネーターを使用する代替MLSアーキテクチャ)。Angorは&lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>で暗号化メッセージングをNIP-04からNIP-44に移行し、&lt;a href="https://github.com/nostr-protocol/nips/pull/574">2023年5月のPaul MillerのNIP-44提案&lt;/a>で開いた非推奨化の弧を閉じました。Formstrチームは5月17日に、参加者自己削除の&lt;a href="https://github.com/nostr-protocol/nips/pull/2350">PR #2350&lt;/a>、プライベートカレンダーイベントと繰り返しの&lt;a href="https://github.com/nostr-protocol/nips/pull/2351">PR #2351&lt;/a> (NIP-52EとNIP-52R)、および分散型アポイントメントスケジューリングの&lt;a href="https://github.com/nostr-protocol/nips/pull/2352">PR #2352&lt;/a>とともに、最近の記憶の中で最大の調整されたNIP提出を公開しました。すべて&lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>が既に参照実装を出荷している状態です。&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.11.0">Amethyst v1.11.0&lt;/a>はNIP-52カレンダーを第一級タイムラインカテゴリとしてレンダリングし、オンチェーンBitcoin zapをスプリット分配に拡張しました。&lt;a href="https://github.com/nostr-protocol/nips/pull/1494">NIP-77が2025年5月にマージ&lt;/a>されてから1年後、同じウィンドウで3つの独立した実装がnegentropy採用を出荷しました: &lt;a href="https://github.com/damus-io/notedeck/pull/1459">Notedeck PR #1459&lt;/a>はギフトラップとスレッドバックフィルのためにDamusのデスクトップクライアントに配線しました。&lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.4.0">Vector v0.4.0&lt;/a>はワンクリックTorと21ツールMCPエージェントサーフェスと並んで、その全面&lt;code>vector-core&lt;/code>書き直しの一部として完全negentropy MLS同期を使用しました。そして&lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v3.0.0-pre1">Citrine v3.0.0-pre1&lt;/a>は組み込みTorとマルチリレー集約と並んでAndroidネイティブリレーにそれを追加しました。&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.4">Mostro v0.17.4&lt;/a>は&lt;a href="https://github.com/MostroP2P/mostro/pull/738">PR #738&lt;/a>でPhase 3のスラッシュされたボンドの支払いにより、アンチ乱用ボンドループを閉じ、以前は脅かしていただけのものを強制しました。「NIP-04を置き換えるべきか」から「NIP-44を完全MLSグループ状態で置き換えるべきか」までの3年間。&lt;/p>
&lt;hr>
&lt;p>Nostrで議論したい場合は、DMをお送りください。&lt;/p></content:encoded></item><item><title>Nostr Compass #23</title><link>https://nostrcompass.org/ja/newsletters/2026-05-21-newsletter/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-05-21-newsletter/</guid><description>&lt;p>Primal 3.5は再構築されたAndroidシェルを出荷し、Amethystはオンチェーンbitcoin zapを追加、White Noiseはmarkdownレンダリングとディープリンクを獲得、Keycastはセキュリティ監査に合格し、AgentNoiseはMarmot暗号化チャットでローカルAIコーディングエージェントを制御できるようにします。HostrはNostr上のP2P賃貸宿泊プラットフォームをローンチし、リスティング、予約、EVMベースのエスクローをカバーする4つの草案NIPを備えます。AngorはNIP-04からNIP-44への暗号化メッセージング移行を行い、Dart NDKはNIP-77とwebサイナーを追加し、Alby js-sdk v8はネイティブNWCマルチリレー再接続を出荷し、KeyChatはSignal one-time prekey削除における前方秘匿性のギャップにパッチを当てます。プロトコル面では、Mostroのanti-abuseボンドがフェーズ2に到達し、Wispはプライベート返信とgift-wrappedリアクションを出荷、Namecoin NIP-05実装ウェーブが1週間で半ダースのクライアントに触れます。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="android版primal-35">Android版Primal 3.5&lt;/h3>
&lt;p>独自のキャッシュリレーインフラに支えられたソーシャルクライアントであるPrimalは、今週再構築されたアプリケーションシェルを備えた&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a>を出荷しました。再設計は、以前のナビゲーション構造を更新されたレイアウトと新しいExplore画面に置き換え、メインの発見面に専用のホームを与えます。このリリースはリンクプレビューのオーディオ再生を追加し、ノートに埋め込まれたオーディオファイルはフィードを離れることなくインラインで再生されます。NIP-05検証バッジがプロフィール上でインライン表示され、一目でアイデンティティ確認を表面化します。通知フィルタリングは刷新され、ユーザーは通知リストに届くイベントタイプを絞り込むことができます。エディタはより良いイベントリンク処理を獲得し、基盤のデータベースレイヤーは安定性の修正を受けました。&lt;/p>
&lt;h3 id="white-noise-markdownディープリンクオーディオメタデータ">White Noise: markdown、ディープリンク、オーディオメタデータ&lt;/h3>
&lt;p>NostrとMLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>)上に構築されたMarmot暗号化グループメッセージングアプリであるWhite Noiseは、フロントエンドとバックエンドのリポジトリでこれまでで最も忙しい週の1つを迎えました。&lt;/p>
&lt;p>フロントエンドでは、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a>がチャットメッセージ用の完全なmarkdownレンダリングを追加し、太字、斜体、コードブロック、リンクがメッセージビューでネイティブにレンダリングされるようになりました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a>は、これまで最後の管理者以外にブロックされていたグループ退出フローを有効化し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a>はHTTPリダイレクトインフラを必要とせずに、ユーザー、チャット、および設定をカバーする&lt;code>whitenoise://&lt;/code>および&lt;code>whitenoise-staging://&lt;/code> URIのネイティブディープリンクサポートを追加します。&lt;/p>
&lt;p>バックエンドのwhitenoise-rsでは、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a>がkind:30443発行のために&lt;code>d_tag&lt;/code>スロットを再利用することでキーパッケージのローテーションが適切に機能するようにし、NIP-33置換可能イベントセマンティクスを有効にして、連続するキーパッケージのローテーションがリレー上の以前のイベントを置き換え、現在のキーパッケージだけを保持するようにします。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a>は、オーディオ添付ファイル用のオプションの&lt;code>duration_ms&lt;/code>および&lt;code>waveform&lt;/code>フィールドで&lt;code>FileMetadata&lt;/code>を拡張し、MDKの&lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a>と協調して同じフィールドをMIP-04メディアタグに追加します。新しい&lt;code>whitenoise-markdown&lt;/code> crate (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>)は、以前のnostr-sdkトークンパーサを専用のmarkdownレンダリングライブラリに置き換えます。&lt;/p>
&lt;p>Marmotプロトコル仕様自体は、&lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>でセキュリティ修正を受け、MIP-01の画像キー派生のためにHKDF-SHA256を明示的に指定することでセキュリティ問題を閉じ、実装の分岐につながる可能性のあった曖昧さを取り除きました。MDKでは、&lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a>がwelcome失敗理由をサニタイズし、保存長を制限して、別のセキュリティ発見を閉じました。&lt;/p>
&lt;h3 id="amethyst-v1100-オンチェーンbitcoin-zap">Amethyst v1.10.0: オンチェーンbitcoin zap&lt;/h3>
&lt;p>Amethystは今週4つのリリースを出荷し、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a>を目玉としました。このリリースはNIP-BCオンチェーンbitcoin zapのサポートを追加し、ユーザーがbitcoinトランザクションを介してオンチェーンで直接決済されるzapを送信、受信、表示できるようにします。実行中の以前のリリースは、非準拠のファイル名を拒否するようにBlossom blob検出を修正し (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>)、デスクトップビルド用のProGuardルールにパッチを当て、拡張されたリアクションギャラリーで専用の₿行としてオンチェーンbitcoin zapper表示するプルリクエスト&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a>をマージしました。ページング付きの進行中のオンチェーントランザクション履歴画面が&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>でランディングしました。&lt;/p>
&lt;h3 id="agentnoise-white-noise経由でコーディングエージェントを制御">AgentNoise: White Noise経由でコーディングエージェントを制御&lt;/h3>
&lt;p>nvkによる&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a>は、White Noiseを実行するスマートフォンをローカルのCodexおよびClaudeコーディングエージェントセッションのコントロールサーフェスとして使用できるようにするRustネイティブのデスクトップヘルパーです。このツールは1つ以上のWhite Noiseチャットを聞き、初回ペアリングPINフローで送信者を認証し、設定されたランチャーを介してローカルコーディングエージェントを起動します。スマートフォンから&lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code>を送信すると、マシンホスト名と短いプロンプト要約にちなんで名付けられた新しいWhite Noise作業セッションが開かれ、進捗更新と最終出力がそのチャットにストリーミングされます。意図的にRustファーストで、Nodeを信頼できるブリッジパスから遠ざけています。プロジェクトは今週&lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a>に到達し、より短いスマートフォン読み取り可能な応答、短い一意のプレフィックスによるジョブ参照、およびオプトインのローカルセッションウォッチャを追加しました。AgentNoiseは&lt;code>marmot-protocol/whitenoise-rs&lt;/code>から&lt;code>wn&lt;/code>および&lt;code>wnd&lt;/code> CLIをサブプロセスとして駆動するため、White Noiseクライアント自体とNostrトランスポートを共有します。&lt;/p>
&lt;h3 id="keycastセキュリティ監査完了">Keycastセキュリティ監査完了&lt;/h3>
&lt;p>SQLite内で保存時に暗号化されたNostr秘密鍵を保存するチーム指向のNIP-46リモート署名サーバである&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>は、2026年5月にセキュリティ監査を完了しました。強化パスは認証、権限、データ整合性、および依存関係の問題に取り組み、結果は&lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>に文書化されています。変更内容: NIP-98 HTTP認証は今、正確に1つの&lt;code>u&lt;/code>タグと1つの&lt;code>method&lt;/code>タグを必要とし、古いタイムスタンプを拒否し、&lt;code>payload&lt;/code>ハッシュを検証します。&lt;code>ALLOWED_PUBKEYS&lt;/code>許可リストは正確に解析され、サーバ側で強制されます。空のポリシーはsign/encrypt/decryptリクエストをデフォルトで拒否します。SQLite接続で外部キー強制が有効化されます。&lt;code>/teams/:id&lt;/code>などのネストされたアプリルートはサーバ側で保護されます。SQLマイグレーションは、起動時に古い許可kinds権限JSONを正規化します。プロジェクトはまだ初期段階であり、監査は実際のチーム鍵を委ねる前の残存項目を記録しています。&lt;/p>
&lt;h3 id="scramble-デスクトップとandroid向けmarmotクライアント">Scramble: デスクトップとAndroid向けMarmotクライアント&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (旧OpenChat)は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmotプロトコル&lt;/a>用の.NET/Avaloniaデスクトップおよびandroidクライアントで、MIP 00-04を実装します: KeyPackage発行 (kind:30443)、NostrGroupData MLS拡張を伴うグループメタデータ、NIP-59 gift-wrapped welcomeイベント (kind:444)、ChaCha20-Poly1305暗号化メッセージ (kind:445)、およびBlossom暗号化メディア添付。White Noiseおよびその他のMarmot互換クライアントと完全に相互運用可能です。&lt;/p></description><content:encoded>&lt;p>Primal 3.5は再構築されたAndroidシェルを出荷し、Amethystはオンチェーンbitcoin zapを追加、White Noiseはmarkdownレンダリングとディープリンクを獲得、Keycastはセキュリティ監査に合格し、AgentNoiseはMarmot暗号化チャットでローカルAIコーディングエージェントを制御できるようにします。HostrはNostr上のP2P賃貸宿泊プラットフォームをローンチし、リスティング、予約、EVMベースのエスクローをカバーする4つの草案NIPを備えます。AngorはNIP-04からNIP-44への暗号化メッセージング移行を行い、Dart NDKはNIP-77とwebサイナーを追加し、Alby js-sdk v8はネイティブNWCマルチリレー再接続を出荷し、KeyChatはSignal one-time prekey削除における前方秘匿性のギャップにパッチを当てます。プロトコル面では、Mostroのanti-abuseボンドがフェーズ2に到達し、Wispはプライベート返信とgift-wrappedリアクションを出荷、Namecoin NIP-05実装ウェーブが1週間で半ダースのクライアントに触れます。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="android版primal-35">Android版Primal 3.5&lt;/h3>
&lt;p>独自のキャッシュリレーインフラに支えられたソーシャルクライアントであるPrimalは、今週再構築されたアプリケーションシェルを備えた&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.5.9">3.5.9&lt;/a>を出荷しました。再設計は、以前のナビゲーション構造を更新されたレイアウトと新しいExplore画面に置き換え、メインの発見面に専用のホームを与えます。このリリースはリンクプレビューのオーディオ再生を追加し、ノートに埋め込まれたオーディオファイルはフィードを離れることなくインラインで再生されます。NIP-05検証バッジがプロフィール上でインライン表示され、一目でアイデンティティ確認を表面化します。通知フィルタリングは刷新され、ユーザーは通知リストに届くイベントタイプを絞り込むことができます。エディタはより良いイベントリンク処理を獲得し、基盤のデータベースレイヤーは安定性の修正を受けました。&lt;/p>
&lt;h3 id="white-noise-markdownディープリンクオーディオメタデータ">White Noise: markdown、ディープリンク、オーディオメタデータ&lt;/h3>
&lt;p>NostrとMLS (&lt;a href="https://www.rfc-editor.org/rfc/rfc9420">RFC 9420&lt;/a>)上に構築されたMarmot暗号化グループメッセージングアプリであるWhite Noiseは、フロントエンドとバックエンドのリポジトリでこれまでで最も忙しい週の1つを迎えました。&lt;/p>
&lt;p>フロントエンドでは、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/665">PR #665&lt;/a>がチャットメッセージ用の完全なmarkdownレンダリングを追加し、太字、斜体、コードブロック、リンクがメッセージビューでネイティブにレンダリングされるようになりました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/675">PR #675&lt;/a>は、これまで最後の管理者以外にブロックされていたグループ退出フローを有効化し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/661">PR #661&lt;/a>はHTTPリダイレクトインフラを必要とせずに、ユーザー、チャット、および設定をカバーする&lt;code>whitenoise://&lt;/code>および&lt;code>whitenoise-staging://&lt;/code> URIのネイティブディープリンクサポートを追加します。&lt;/p>
&lt;p>バックエンドのwhitenoise-rsでは、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/835">PR #835&lt;/a>がkind:30443発行のために&lt;code>d_tag&lt;/code>スロットを再利用することでキーパッケージのローテーションが適切に機能するようにし、NIP-33置換可能イベントセマンティクスを有効にして、連続するキーパッケージのローテーションがリレー上の以前のイベントを置き換え、現在のキーパッケージだけを保持するようにします。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/833">PR #833&lt;/a>は、オーディオ添付ファイル用のオプションの&lt;code>duration_ms&lt;/code>および&lt;code>waveform&lt;/code>フィールドで&lt;code>FileMetadata&lt;/code>を拡張し、MDKの&lt;a href="https://github.com/marmot-protocol/mdk/pull/300">PR #300&lt;/a>と協調して同じフィールドをMIP-04メディアタグに追加します。新しい&lt;code>whitenoise-markdown&lt;/code> crate (&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/836">PR #836&lt;/a>)は、以前のnostr-sdkトークンパーサを専用のmarkdownレンダリングライブラリに置き換えます。&lt;/p>
&lt;p>Marmotプロトコル仕様自体は、&lt;a href="https://github.com/marmot-protocol/marmot/pull/68">PR #68&lt;/a>でセキュリティ修正を受け、MIP-01の画像キー派生のためにHKDF-SHA256を明示的に指定することでセキュリティ問題を閉じ、実装の分岐につながる可能性のあった曖昧さを取り除きました。MDKでは、&lt;a href="https://github.com/marmot-protocol/mdk/pull/307">PR #307&lt;/a>がwelcome失敗理由をサニタイズし、保存長を制限して、別のセキュリティ発見を閉じました。&lt;/p>
&lt;h3 id="amethyst-v1100-オンチェーンbitcoin-zap">Amethyst v1.10.0: オンチェーンbitcoin zap&lt;/h3>
&lt;p>Amethystは今週4つのリリースを出荷し、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.10.0">v1.10.0&lt;/a>を目玉としました。このリリースはNIP-BCオンチェーンbitcoin zapのサポートを追加し、ユーザーがbitcoinトランザクションを介してオンチェーンで直接決済されるzapを送信、受信、表示できるようにします。実行中の以前のリリースは、非準拠のファイル名を拒否するようにBlossom blob検出を修正し (&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.09.2">v1.09.2&lt;/a>)、デスクトップビルド用のProGuardルールにパッチを当て、拡張されたリアクションギャラリーで専用の₿行としてオンチェーンbitcoin zapper表示するプルリクエスト&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2977">#2977&lt;/a>をマージしました。ページング付きの進行中のオンチェーントランザクション履歴画面が&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2974">PR #2974&lt;/a>でランディングしました。&lt;/p>
&lt;h3 id="agentnoise-white-noise経由でコーディングエージェントを制御">AgentNoise: White Noise経由でコーディングエージェントを制御&lt;/h3>
&lt;p>nvkによる&lt;a href="https://github.com/nvk/agentnoise">AgentNoise&lt;/a>は、White Noiseを実行するスマートフォンをローカルのCodexおよびClaudeコーディングエージェントセッションのコントロールサーフェスとして使用できるようにするRustネイティブのデスクトップヘルパーです。このツールは1つ以上のWhite Noiseチャットを聞き、初回ペアリングPINフローで送信者を認証し、設定されたランチャーを介してローカルコーディングエージェントを起動します。スマートフォンから&lt;code>/claude &amp;lt;prompt&amp;gt;&lt;/code>を送信すると、マシンホスト名と短いプロンプト要約にちなんで名付けられた新しいWhite Noise作業セッションが開かれ、進捗更新と最終出力がそのチャットにストリーミングされます。意図的にRustファーストで、Nodeを信頼できるブリッジパスから遠ざけています。プロジェクトは今週&lt;a href="https://github.com/nvk/agentnoise/releases/tag/v0.1.24">v0.1.24&lt;/a>に到達し、より短いスマートフォン読み取り可能な応答、短い一意のプレフィックスによるジョブ参照、およびオプトインのローカルセッションウォッチャを追加しました。AgentNoiseは&lt;code>marmot-protocol/whitenoise-rs&lt;/code>から&lt;code>wn&lt;/code>および&lt;code>wnd&lt;/code> CLIをサブプロセスとして駆動するため、White Noiseクライアント自体とNostrトランスポートを共有します。&lt;/p>
&lt;h3 id="keycastセキュリティ監査完了">Keycastセキュリティ監査完了&lt;/h3>
&lt;p>SQLite内で保存時に暗号化されたNostr秘密鍵を保存するチーム指向のNIP-46リモート署名サーバである&lt;a href="https://github.com/marmot-protocol/keycast">Keycast&lt;/a>は、2026年5月にセキュリティ監査を完了しました。強化パスは認証、権限、データ整合性、および依存関係の問題に取り組み、結果は&lt;a href="https://github.com/marmot-protocol/keycast/blob/master/AUDIT.md">AUDIT.md&lt;/a>に文書化されています。変更内容: NIP-98 HTTP認証は今、正確に1つの&lt;code>u&lt;/code>タグと1つの&lt;code>method&lt;/code>タグを必要とし、古いタイムスタンプを拒否し、&lt;code>payload&lt;/code>ハッシュを検証します。&lt;code>ALLOWED_PUBKEYS&lt;/code>許可リストは正確に解析され、サーバ側で強制されます。空のポリシーはsign/encrypt/decryptリクエストをデフォルトで拒否します。SQLite接続で外部キー強制が有効化されます。&lt;code>/teams/:id&lt;/code>などのネストされたアプリルートはサーバ側で保護されます。SQLマイグレーションは、起動時に古い許可kinds権限JSONを正規化します。プロジェクトはまだ初期段階であり、監査は実際のチーム鍵を委ねる前の残存項目を記録しています。&lt;/p>
&lt;h3 id="scramble-デスクトップとandroid向けmarmotクライアント">Scramble: デスクトップとAndroid向けMarmotクライアント&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/Scramble">Scramble&lt;/a> (旧OpenChat)は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmotプロトコル&lt;/a>用の.NET/Avaloniaデスクトップおよびandroidクライアントで、MIP 00-04を実装します: KeyPackage発行 (kind:30443)、NostrGroupData MLS拡張を伴うグループメタデータ、NIP-59 gift-wrapped welcomeイベント (kind:444)、ChaCha20-Poly1305暗号化メッセージ (kind:445)、およびBlossom暗号化メディア添付。White Noiseおよびその他のMarmot互換クライアントと完全に相互運用可能です。&lt;/p>
&lt;p>プロジェクトは今週13のリリースを出荷し、マルチデバイスサポートを主な機能としました。各デバイスは一意のKeyPackageスロット (kind:30443の&lt;code>d&lt;/code>タグ)を生成します。起動時、Scrambleはリレーからユーザー自身のKeyPackageを取得し、ピアデバイスのスロットIDを検出し、staged commitフローを使用して既存のMLSグループに自動的に追加します。自動追加は、現在のユーザーが管理者であるグループに制限されており、管理者でないグループはグループ管理者に依頼するようにガイダンスが表示されてスキップされます。前方秘匿性の開示バナーは、新しくリンクされたデバイスに古いメッセージが利用できないことを通知します。スロットID調整パス (&lt;code>TryReconcileSlotId&lt;/code>)は、リレーKeyPackageバイトをローカルキーマテリアルと照合して正しい&lt;code>d&lt;/code>タグを採用することで、マルチデバイス以前のバージョンから移行したデバイスを処理します。AmberおよびNIP-46ユーザー向けの外部signer再接続も修正されました: &lt;code>ExternalSignerService&lt;/code>の組み込み自動再接続をブロックしていた&lt;code>IsConnected&lt;/code>ガードが、&lt;code>NostrService&lt;/code>内の9つのすべての呼び出しサイトで削除されました。&lt;/p>
&lt;h3 id="hostr-nostr上のp2p賃貸宿泊">Hostr: Nostr上のP2P賃貸宿泊&lt;/h3>
&lt;p>&lt;a href="https://hostr.network">Hostr&lt;/a> (&lt;a href="https://github.com/sudonym-btc/hostr">ソース&lt;/a>)は、完全にNostr上に構築されたピアツーピアの賃貸宿泊プラットフォームです。物件の検索とリスティング、予約の交渉、支払いの決済といった、完全なAirbnbスタイルのフローをカバーし、プロジェクトがアプリケーションと並行して開発している4つの草案NIPを使用します。&lt;/p>
&lt;p>宿泊NIPは、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/99.md">NIP-99&lt;/a>クラス分けリスティング (kind:30402アクティブ、kind:30403草案)を、タイプ (&lt;code>room&lt;/code>、&lt;code>house&lt;/code>、&lt;code>apartment&lt;/code>、&lt;code>villa&lt;/code>、&lt;code>hotel&lt;/code>、&lt;code>hostel&lt;/code>、&lt;code>resort&lt;/code>)、チェックイン/チェックアウト時間、最小滞在、および設定可能な精度で位置ベース検索を行うためのH3地理空間セルインデックスなどの宿泊固有のタグで拡張します。予約NIPは完全な交渉およびライフサイクルプロトコルを定義します: kind:32122置換可能予約イベントは&lt;code>d&lt;/code>トレードID、リスティングアンカー&lt;code>a&lt;/code>タグ、および役割 (&lt;code>buyer&lt;/code>、&lt;code>seller&lt;/code>、&lt;code>escrow&lt;/code>)を持つ参加者&lt;code>p&lt;/code>タグを運びます。kind:1327構造化メッセージrumorは、NIP-59 gift wrapを介してプライベート交渉段階のカウンターオファーを配信し、交渉が公開リレーから離れて留まるようにします。kind:1326追記専用遷移イベントは、予約がコミットされたら公開監査証跡を作成します。買い手のプライバシーは、暗号化された&lt;code>participant_proof&lt;/code>タグを介して買い手の実際のアイデンティティにバインドされたトレードごとの一時的なNostr鍵を通じて保持されます。エスクローNIPはkind:30303エスクローサービス広告およびkind:17388ユーザー信頼宣言を定義します。リファレンス実装はRootstock上のEVMスマートコントラクトを使用し、&lt;code>contractBytecodeHash&lt;/code>によってクライアントはデプロイされた契約が既知の監査済み実装と一致することを検証できます。マーケットプレイスリスティングNIPは、&lt;code>instantBook&lt;/code>、&lt;code>negotiable&lt;/code>、&lt;code>quantity&lt;/code>、&lt;code>securityDeposit&lt;/code>、&lt;code>cancellationPolicy&lt;/code>、&lt;code>maxDisputePeriod&lt;/code>を含む、すべてのNIP-99マーケットプレイスプロフィールで共有されるジェネリックタグを定義します。今週、プロジェクトはアプリストア提出を準備し、エージェント向け自動化のためのMCPクライアントアイデンティティサポートをマージしました。&lt;/p>
&lt;p>今週、Shakespeare MiniAppsプラットフォーム上に2つの新しいエントリが登場しました: 構造化された雑誌スタイルのコンテンツをNostrイベントとして発行するAI雑誌ジェネレータ&lt;a href="https://inkpress.shakespeare.wtf">InkPress&lt;/a>と、Soapboxスタック用の執筆・発行プラットフォーム&lt;a href="https://pressstr.shakespeare.wtf">PressStr&lt;/a>です。&lt;/p>
&lt;h2 id="今週の出荷">今週の出荷&lt;/h2>
&lt;h3 id="ngit-v244">ngit v2.4.4&lt;/h3>
&lt;p>&lt;strong>ngit&lt;/strong>は&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.4">v2.4.4&lt;/a>を出荷し、gitサーバがNostr状態よりもfast-forward先行しているケース向けに&lt;code>ngit sync --trust-server&lt;/code> (&lt;code>-t&lt;/code>)を追加しました。この状況が検出されると、syncは影響を受けるrefを報告し、更新された状態イベントに署名して発行するためにこのフラグを要求します。&lt;code>nostr.trust-server-domains&lt;/code> git設定は、フラグなしで自動的に信頼されるべきサーバのセミコロン区切り許可リストを提供します。&lt;/p>
&lt;h3 id="amber-v610-pre3がpsbt署名を追加">Amber v6.1.0-pre3がPSBT署名を追加&lt;/h3>
&lt;p>&lt;strong>Amber&lt;/strong>は&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre3">v6.1.0-pre3&lt;/a>をリリースし、新しいアプリ接続用の改善されたレイアウト、クラッシュ修正、および権限画面での全選択/全選択解除オプションを備えました。&lt;a href="https://github.com/greenart7c3/Amber/pull/438">PR #438&lt;/a>は、Intentベースの経路とNIP-46リレーベースの経路の両方を通じてPSBT署名サポートを追加し、Amberが要求元のアプリにnsecを公開することなく、Partially Signed Bitcoin Transactionに署名できるようにします。&lt;/p>
&lt;h3 id="wisp-v110がプライベート返信を出荷しamberサポートを削除">Wisp v1.1.0がプライベート返信を出荷し、Amberサポートを削除&lt;/h3>
&lt;p>&lt;strong>Wisp&lt;/strong>は&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.1.0">v1.1.0&lt;/a>をリリースし、NIP-17 gift wrap経由のプライベート返信 (&lt;a href="https://github.com/barrydeen/wisp/pull/540">PR #540&lt;/a>)、プライベート返信でのgift-wrappedリアクションとDIP-03 zap (&lt;a href="https://github.com/barrydeen/wisp/pull/543">PR #543&lt;/a>)、ノートの自動翻訳 (&lt;a href="https://github.com/barrydeen/wisp/pull/523">PR #523&lt;/a>)、およびzapダイアログのレジスタスタイルの法定通貨入力を備えました。&lt;a href="https://github.com/barrydeen/wisp/pull/541">PR #541&lt;/a>は、プライベートzapを自家製のDMリレー平文スキームから適切なDMリレールーティングを備えたDIP-03に移行します。同じリリースサイクルでNIP-55リモートsignerサポートが削除され (&lt;a href="https://github.com/barrydeen/wisp/pull/531">PR #531&lt;/a>)、Amberおよびその他の外部signer統合が削除され、同梱のローカルリレーも削除されました (&lt;a href="https://github.com/barrydeen/wisp/pull/533">PR #533&lt;/a>)。WispはAndroid向けNostrソーシャルクライアントです。&lt;/p>
&lt;h3 id="calendar-by-formstr-v154が新規参加者向けgift-wrapを修正">Calendar by Formstr v1.5.4が新規参加者向けgift wrapを修正&lt;/h3>
&lt;p>&lt;strong>Calendar by Formstr&lt;/strong>は&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.5.4">v1.5.4&lt;/a>を出荷しました (v1.5.2 → v1.5.4シーケンスの最新)。&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/160">PR #160&lt;/a>は、新規参加者を伴うプライベートカレンダーイベントを編集すると、更新されたイベントが&lt;code>p&lt;/code>タグに新しいpubkeyで発行されるが、それらの参加者にgift wrap招待が作成または配信されないというバグを修正し、直前追加向けの招待フローを壊していた問題を解決します。&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/156">PR #156&lt;/a>はプライベートイベント復号周りのエラー処理を追加し、クライアントが復号不可能なイベントで例外をスローしなくなります。&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/138">PR #138&lt;/a>はタイムゾーンをまたいでドリフトしていた定期イベント時刻を修正します。&lt;/p>
&lt;h3 id="applesauce-v610がnip-34-gitキャストとnip-51ルックアップリレーを追加">Applesauce v6.1.0がNIP-34 gitキャストとNIP-51ルックアップリレーを追加&lt;/h3>
&lt;p>&lt;strong>Applesauce&lt;/strong>はパッケージ全体で&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.1.0">v6.1.0&lt;/a>をリリースし、重要なNIP-34 (git-over-Nostr)サポートを備えました: applesauce-commonは新しい&lt;code>GitRepository&lt;/code>、&lt;code>GitGraspList&lt;/code>、&lt;code>FavoriteGitRepos&lt;/code>キャストと対応するファクトリを追加し、&lt;code>User.favoriteGitRepos$&lt;/code>、&lt;code>User.gitAuthors$&lt;/code>、&lt;code>User.graspServers$&lt;/code>リアクティブプロパティを公開し、アプリケーションが同じUserオブジェクトから直接、ユーザーがフォローするgitリポジトリ、リポジトリメンテナ、および設定されたGRASPサーバをリストできるようにします。同じリリースは、特定のデータを見つける場所を発見するために使用されるリレーリストファミリへの最近の追加である、NIP-51 kind 10086ルックアップリレーリストのサポートを追加します。applesauce-coreは、NIP-01置換可能アドレスルックアップのために&lt;code>EventCast&lt;/code>上に&lt;code>replaceableAddress&lt;/code>を得て、&lt;code>pointer&lt;/code>、&lt;code>kind&lt;/code>、および&lt;code>getReplaceableAddressForEvent&lt;/code>ヘルパーを備え、ベースの&lt;code>User&lt;/code>キャスト上に&lt;code>timeline$()&lt;/code>メソッドを追加します。&lt;a href="https://github.com/hzrd149/applesauce/pull/73">PR #73&lt;/a>は、poolのマニュアルメソッドがオフラインリレーを黙って削除する問題を修正します。&lt;/p>
&lt;h3 id="sprout-v0016がsprigバイナリとhuddleプロトコルv2を出荷">Sprout v0.0.16がSprigバイナリとhuddleプロトコルv2を出荷&lt;/h3>
&lt;p>BlockによるNostrリレーベースのセルフホストチームワークスペースで、人間とAIエージェントが同じ部屋とイベントログを共有する&lt;strong>Sprout&lt;/strong>は、デスクトップアプリの&lt;a href="https://github.com/block/sprout/releases/tag/v0.0.16">v0.0.16&lt;/a>を、新しいSprigオールインワンバイナリ (&lt;a href="https://github.com/block/sprout/pull/605">PR #605&lt;/a>)のローリングビルドと並行して出荷しました。SprigはACPハーネス、エージェント、および開発者MCPを単一のbusyboxスタイルバイナリにバンドルし、デプロイを容易にします。&lt;a href="https://github.com/block/sprout/pull/611">PR #611&lt;/a>で追加された&lt;code>--no-memory&lt;/code>フラグは、オペレータがACPハーネス用のNIP-AEコアメモリ注入を無効化できるようにします。リアルタイム面では、&lt;a href="https://github.com/block/sprout/pull/609">PR #609&lt;/a>がhuddle音声プロトコルを、最大10の同時ピアをサポートするv2フレームヘッダに拡張します。&lt;/p>
&lt;h3 id="nostrord-v103がosキーチェーンとマルチアカウントを追加">Nostrord v1.0.3がOSキーチェーンとマルチアカウントを追加&lt;/h3>
&lt;p>&lt;strong>Nostrord&lt;/strong>は&lt;a href="https://github.com/nostrord/nostrord/releases/tag/v1.0.3">v1.0.3&lt;/a>をリリースし、OSキーチェーンとパスフレーズフォールバックで強化されたローカルキーストレージ、マルチアカウントサポート、およびAndroid上でsignerアプリを開くタップ可能なbunker QRコードを備えました。&lt;/p>
&lt;h3 id="angorがnip-44に移行しセキュリティ強化を出荷">AngorがNIP-44に移行し、セキュリティ強化を出荷&lt;/h3>
&lt;p>Nostrとタップルート上に構築されたbitcoinクラウドファンディングアプリである&lt;strong>Angor&lt;/strong>は、今週セキュリティ強化とNostr統合の変更のセットを備えた3つの不安定版リリース (&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.24">v0.2.24&lt;/a>、&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.25">v0.2.25&lt;/a>、&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.26">v0.2.26&lt;/a>)を出荷しました。&lt;a href="https://github.com/block-core/angor/pull/860">PR #860&lt;/a>は、Nostr暗号化メッセージングをNIP-04からNIP-44に移行し、非推奨のXORベースのスキームをChaCha20-Poly1305暗号化に置き換えます。&lt;a href="https://github.com/block-core/angor/pull/861">PR #861&lt;/a>は、エフェメラルなNostr認証キーを使用して、選択されたウォレットなしでBlossomメディアのアップロードを許可し、まだウォレットを接続していないユーザーのアップロードを解除します。セキュリティシリーズはいくつかの強化カテゴリに対処しました: &lt;a href="https://github.com/block-core/angor/pull/854">PR #854&lt;/a>はAngorKeyの型安全性とニーモニックメモリ保護を追加し、&lt;a href="https://github.com/block-core/angor/pull/856">PR #856&lt;/a>はタイムロック、手数料率、ダスト閾値、およびペナルティルールのためのプロトコルレベル検証を強制し、&lt;a href="https://github.com/block-core/angor/pull/851">PR #851&lt;/a>は8つの中および低重大度カテゴリにわたって非破壊的強化を適用します。&lt;a href="https://github.com/block-core/angor/pull/859">PR #859&lt;/a>は、AOTコンパイルを有効化しランタイムコード生成を削除することでGrapheneOS互換性を修正し、&lt;a href="https://github.com/block-core/angor/pull/855">PR #855&lt;/a>は、OSがプロセスを終了する前にウォレット状態を永続化することでAndroidスワイプキルでのウォレット損失を防ぎます。&lt;/p>
&lt;h3 id="alby-js-sdk-v80がnwcマルチリレー再接続を出荷">Alby js-sdk v8.0がNWCマルチリレー再接続を出荷&lt;/h3>
&lt;p>&lt;strong>Alby js-sdk&lt;/strong>は、NWCマルチリレーサブスクリプションサポートを備えたv8.0ライン (&lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.1">v8.0.1&lt;/a>から&lt;a href="https://github.com/getAlby/js-sdk/releases/tag/v8.0.3">v8.0.3&lt;/a>)をリリースしました。&lt;a href="https://github.com/getAlby/js-sdk/pull/516">PR #516&lt;/a>は、nostr-tools依存関係を更新し、複数のリレーにわたるネイティブ自動再接続を有効化し、以前のポーリングアプローチをリレーネイティブの再接続ロジックに置き換えます。&lt;a href="https://github.com/getAlby/js-sdk/pull/542">PR #542&lt;/a>は、すべての&lt;code>console.debug&lt;/code>呼び出しを注入可能なロガーインターフェースに置き換え、アプリケーション開発者がSDK診断を独自のロギングインフラを介してルーティングできるようにします。このリリースはWebSocketポリフィルを削除し、サーバサイドのコンシューマにはNode.js 22以上を必要とします。v8.0.2は、一部のバンドラを壊していたutils crypto importバグの修正を追加しました。&lt;/p>
&lt;h3 id="keychat-v1411が前方秘匿性を修正">KeyChat v1.41.1が前方秘匿性を修正&lt;/h3>
&lt;p>Signalプロトコルと Nostrリレートランスポートを組み合わせたメッセージングアプリである&lt;strong>KeyChat&lt;/strong>は、&lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.41.1&amp;#43;6513">v1.41.1+6513&lt;/a>をリリースしました。目玉の修正は、成功した復号後にSignal one-time prekeyを直ちに削除することで前方秘匿性を強制し、デバイスが後に危殆化された場合に保持されたprekeyが過去のメッセージを復号するために使用される可能性があるギャップを閉じます。このリリースはまた、単一のリンクで構成されるメッセージのURLプレビューを追加し、20 MBの自動閾値を持つ新しい&lt;code>FileDownloadManager&lt;/code>の下でメディア自動ダウンロードを集中化し、NIP-11リレー情報のフェッチをリファクタリングしてコールドスタートで強制リフレッシュし、有料リレー料金設定が常に正しく読み込まれるようにします。&lt;/p>
&lt;h2 id="開発中">開発中&lt;/h2>
&lt;p>&lt;strong>Citrine&lt;/strong>は、NIP-70強制を実装する&lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a>をマージしました: Androidリレーは今、仕様が要求するように、保護されたイベントコンテンツを埋め込むリポストをブロックします。&lt;a href="https://github.com/greenart7c3/Citrine/pull/149">PR #149&lt;/a>は、リレー設定画面から複数の接続アドレス、localhost、ローカルWi-Fi、およびTorのための表示およびコピーアクションを追加します。&lt;a href="https://github.com/greenart7c3/Citrine/pull/141">PR #141&lt;/a>は、Amberとの外部signer統合を通じてNIP-42 AUTHチャレンジ処理を追加します。&lt;/p>
&lt;p>&lt;strong>Mostro&lt;/strong>は、anti-abuseボンドロールアウトのフェーズ2に到達しました。&lt;a href="https://github.com/MostroP2P/mostro/pull/737">PR #737&lt;/a>は、solver指向の紛争スラッシュロジックをランディングします: 管理者ハンドラは今、mostro-coreからの&lt;code>BondResolution&lt;/code>ペイロードを消費し、管理者が紛争を解決する際にいずれかの当事者のボンドをスラッシュできるようにします。&lt;a href="https://github.com/MostroP2P/mostro/pull/736">PR #736&lt;/a>でマージされたフェーズ1.5は、専用の&lt;code>PayBondInvoice&lt;/code>アクションと&lt;code>WaitingTakerBond&lt;/code>ステータスを導入し、テイカーのanti-abuseボンド支払いを買い手のトレードペイアウトから分離しました。モバイルクライアントは、&lt;a href="https://github.com/MostroP2P/mobile/pull/592">PR #592&lt;/a>で完全なフェーズ1.5 UXを追加しました。MostroはNostr上に構築されたピアツーピアbitcoin取引プロトコルです。&lt;/p>
&lt;p>&lt;strong>Damus&lt;/strong>は、リレーシグナルインジケータを復元する&lt;a href="https://github.com/damus-io/damus/pull/3773">PR #3773&lt;/a>をマージし、&lt;a href="https://github.com/damus-io/damus/pull/3775">PR #3775&lt;/a>は初回接続失敗後に再接続を拒否したリレーを修正します。&lt;/p>
&lt;p>&lt;strong>rust-nostr&lt;/strong>は、イベント最終化トレイトとNIP固有のイベントビルダを追加する&lt;a href="https://github.com/rust-nostr/nostr/pull/1358">PR #1358&lt;/a>をマージし、特定のプロトコル機能向けに正しく型付けされたイベントを構築しやすくします。&lt;a href="https://github.com/rust-nostr/nostr/pull/1363">PR #1363&lt;/a>は、NIP-46 signerがconnectレスポンスを送信する前に通知にサブスクライブすることを保証する修正をバックポートし、connect直後に到着するクライアントメッセージが失われる可能性のある競合条件を閉じます。&lt;/p>
&lt;p>&lt;strong>dart-nostr&lt;/strong>は、Namecoin &lt;code>.bit&lt;/code>リレーリゾルバとTLSAピンレコードを追加する&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">PR #44&lt;/a>をマージし、Flutterアプリケーションが&lt;code>wss://example.bit/&lt;/code>リレーURLをNamecoin DNS経由で実際のWebSocketアドレスに解決できるようにします。&lt;/p>
&lt;p>&lt;strong>Dart NDK&lt;/strong> (Dart/Flutter Nostr開発キット、現在は&lt;code>relaystr/ndk&lt;/code>)は、オフラインイベント署名プロトコルであるNIP-77を実装する&lt;a href="https://github.com/relaystr/ndk/pull/464">PR #464&lt;/a>をマージしました。signer側では、&lt;a href="https://github.com/relaystr/ndk/pull/602">PR #602&lt;/a>および&lt;a href="https://github.com/relaystr/ndk/pull/601">PR #601&lt;/a>がwebフィックスのイベントsignerと&lt;code>PlatformEventVerifier&lt;/code>抽象を追加し、Flutter webアプリが別のコードパスなしでプラットフォームsignerを使用できるようにします。&lt;a href="https://github.com/relaystr/ndk/pull/604">PR #604&lt;/a>は、ランタイムsigner選択のためのイベントsignerファクトリを導入します。&lt;a href="https://github.com/relaystr/ndk/pull/608">PR #608&lt;/a>はユーザーのNIP-17 DMリレーリスト (kind:10050)を取得する&lt;code>getDmRelays()&lt;/code>を追加し、&lt;a href="https://github.com/relaystr/ndk/pull/600">PR #600&lt;/a>はNIP-46署名済みフィールド保持を修正して、リモートsignerがラウンドトリップでフィールドを失わないようにします。&lt;/p>
&lt;p>&lt;strong>Pages by Form*&lt;/strong> (&lt;a href="https://github.com/formstr-hq/nostr-docs">リポジトリ&lt;/a>)はFormstrのNostrネイティブ共同ドキュメントアプリで、&lt;a href="https://pages.formstr.app">pages.formstr.app&lt;/a>でホストされ、今週暗号化添付およびドキュメント管理フローを引き締める4つのPRをマージしました。&lt;a href="https://github.com/formstr-hq/nostr-docs/pull/37">PR #37&lt;/a>は、暗号化添付をインライン化することでDOCX、HTML、およびPDFエクスポートの欠落画像を修正します: Blossomサーバから&lt;code>&amp;lt;encrypted-file&amp;gt;&lt;/code> blobを取得し、保存された鍵とnonceを使用してAES-GCM 256ビットで復号し、画像MIMEタイプを検証し、base64データURLに変換して、暗号化された形式でBlossom上にのみ存在する画像がエクスポートで保持されるようにします。&lt;a href="https://github.com/formstr-hq/nostr-docs/pull/39">PR #39&lt;/a>はローカルドキュメント検索メカニズムを追加し、&lt;a href="https://github.com/formstr-hq/nostr-docs/pull/38">PR #38&lt;/a>はリネームフローを整理し、&lt;a href="https://github.com/formstr-hq/nostr-docs/pull/40">PR #40&lt;/a>は共有バックアップ処理を修正します。&lt;/p>
&lt;p>&lt;strong>Zap Cooking&lt;/strong>は、まだユーザーに見える変化なしにフィードレンダリングプリミティブを敷設するフィード刷新の第一フェーズである&lt;a href="https://github.com/zapcooking/frontend/pull/396">PR #396&lt;/a>をマージしました。このPRは、&lt;code>url&lt;/code>、&lt;code>m&lt;/code> (MIME)、&lt;code>dim&lt;/code> (寸法)、&lt;code>blurhash&lt;/code>、&lt;code>alt&lt;/code>、&lt;code>x&lt;/code> (ファイルハッシュ)、および&lt;code>fallback&lt;/code>スロットを読み取るNIP-92 &lt;code>imeta&lt;/code>タグパーサ、および手動でポートされた正規のblurhashデコーダ (~200 LOC)を導入し、SSRセーフなnullフォールバックを持つcanvas経由でPNGデータURLを生成します。&lt;code>imeta&lt;/code>タグがない場合、パーサは現在のフィードがすでに使用しているのと同じヒューリスティックを使用してイベントコンテンツから生の画像およびビデオURLを抽出するフォールバックを行います。&lt;/p>
&lt;p>&lt;strong>Nurunuru&lt;/strong> (ぬるぬる、&lt;code>tami1A84/null--nostr&lt;/code>)は、Rust FFIエンジンを共有するネイティブAndroid、iOS、およびWebバリアントを持つNostrクライアントで、&lt;a href="https://github.com/tami1A84/null--nostr/pull/176">PR #176&lt;/a>でv1.5.0 Native → Web同期をマージしました。この同期は、Android v1.4.9およびiOS 1.0.4ですでに出荷されたいくつかの機能追加をWebビルドにもたらします: &lt;a href="https://github.com/tami1A84/null--nostr/pull/176">NotificationModal&lt;/a>は今、誕生日通知、相互フォローzap検出、およびカスタム絵文字リアクション通知を表面化します。リアクションピッカーはUnicodeデフォルトリアクションクイック行を削除し、UXをカスタム絵文字に集中させます。&lt;code>lib/recommendation.js&lt;/code>の推奨エンジンはアイコンや表示名のないユーザーをフィルタリングし、Followingエントリを優先し、Recommendedはバックグラウンドで読み込みます。音声入力は反対方向に進む唯一の機能です: WebビルドはすでにElevenLabs Scribeストリーミングを使用しており、v1.5.0はNative側をOS標準の&lt;code>SpeechRecognizer&lt;/code> (Android)および&lt;code>SFSpeechRecognizer&lt;/code> + &lt;code>AVAudioEngine&lt;/code> (iOS)に部分同期しますが、完全なNative Scribe統合はv1.6に延期されます。&lt;/p>
&lt;h2 id="プロトコルおよび仕様作業">プロトコルおよび仕様作業&lt;/h2>
&lt;p>**PR &lt;a href="https://github.com/nostr-protocol/nips/pull/2251">#2251&lt;/a>**はNIP-70保護イベント仕様を引き締めます: 今、保護されたイベントの完全なコンテンツを埋め込むリポストはリレーによって拒否されなければならないと明示的に述べます。NIP-70は、ノート作成者が自分のノートの再発行に同意しないことを示す&lt;code>-&lt;/code>タグを定義します。元の仕様はリレーフィルタリングの動作をカバーしていましたが、リポストの場合は曖昧なままでした。このPRはそのギャップを閉じます。Citrineの&lt;a href="https://github.com/greenart7c3/Citrine/pull/151">PR #151&lt;/a>は、この同じ週にリレー側で強制を実装します。&lt;/p>
&lt;p>**PR &lt;a href="https://github.com/nostr-protocol/nips/pull/1653">#1653&lt;/a>**は、プライベート草案イベントを保存および同期するためのDrafts NIPを提案します。この提案は、置換可能イベントと&lt;code>draft&lt;/code>ステータス、および作成者自身の鍵に対するNIP-44暗号化を使用し、クライアントが進行中の作業をリレーに保存できるようにし、それらのイベントが他の誰にも見えないようにします。草案イベントは、最終的なkindおよびタグを含む、完全な意図された発行イベントを暗号化されたコンテンツとして運びます。&lt;/p>
&lt;p>**Snapshots (&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>)**は、置換可能なNostrイベントの1つの正確なバージョンを保持するための不変のスナップショットイベントを定義するオープン提案です。スナップショットイベントは、置換可能イベントのアドレスに戻る&lt;code>a&lt;/code>タグを持つ、特定の時点における置換可能イベントの完全なコンテンツを運び、すべての履歴バージョンが一緒にクエリ可能になります。これにより、リレーが古いバージョンの保持を停止した後でも、観察者が履歴状態を検査することが可能になります。&lt;/p>
&lt;p>&lt;strong>Namecoin NIP-05波:&lt;/strong> 今週、&lt;code>.bit&lt;/code> NIP-05解決をNostrクライアントに追加する協調的な取り組みが見られました。NIP討論フィードは、Aegis (&lt;a href="https://github.com/ZharlieW/Aegis/pull/14">#14&lt;/a>、signerで署名時検証を追加)、nostter (&lt;a href="https://github.com/SnowCait/nostter/pull/2128">#2128&lt;/a>)、およびdart-nostr (&lt;a href="https://github.com/ethicnology/dart-nostr/pull/44">#44&lt;/a>)に対するオープンソースPRを、上流のNIP草案 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2349">PR #2349&lt;/a>)と並んで捉えました。Aegis PRは、検証をプロデューサ側に置く点で注目に値します: signerは、&lt;code>.bit&lt;/code>アイデンティティを主張するkind:0イベントに署名する前にNamecoinチェーンをチェックし、不一致の場合はユーザーに警告し、イベントがリレーに到達する前に問題を捕捉します。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-07-webブラウザ用windownostr">NIPディープダイブ: NIP-07 (webブラウザ用window.nostr)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/07.md">NIP-07&lt;/a>は、ブラウザ拡張機能がwebアプリケーションに公開する&lt;code>window.nostr&lt;/code>インターフェースを定義します。これはweb上で最も広く展開されているsignerインターフェースで、Alby、nos2x、Flamingo、およびhorseなどの拡張機能によって実装されています。&lt;/p>
&lt;p>インターフェースには2つの必須メソッドといくつかのオプションメソッドがあります。&lt;code>window.nostr.getPublicKey()&lt;/code>は、呼び出し元ページに秘密鍵を公開することなく、ユーザーの公開鍵を16進文字列として返します。&lt;code>window.nostr.signEvent(event)&lt;/code>は、&lt;code>created_at&lt;/code>、&lt;code>kind&lt;/code>、&lt;code>tags&lt;/code>、および&lt;code>content&lt;/code>を持つ部分的なイベントを受け取り、&lt;code>id&lt;/code>、&lt;code>pubkey&lt;/code>、および&lt;code>sig&lt;/code>が追加された完全な署名済みイベントを返します。重要なポイントは、秘密鍵が拡張機能の隔離されたコンテキストから決して離れないことです。webアプリケーションは未署名イベントを提出し、署名済みのものを受け取ります。&lt;/p>
&lt;p>オプションメソッドは暗号化をカバーします: 古い (現在は非推奨の)NIP-04スキーム用の&lt;code>window.nostr.nip04.encrypt&lt;/code>および&lt;code>window.nostr.nip04.decrypt&lt;/code>、および現在のNIP-44スキーム用の&lt;code>window.nostr.nip44.encrypt&lt;/code>および&lt;code>window.nostr.nip44.decrypt&lt;/code>。NIP-44をサポートする拡張機能は、呼び出し元ページがnsecを見ることなく、ダイレクトメッセージ暗号化と、pubkey鍵付き暗号化を必要とする他のアプリケーションの両方を扱えます。&lt;/p>
&lt;p>仕様には拡張機能の作者への推奨も含まれています: 拡張機能マニフェストで&lt;code>&amp;quot;run_at&amp;quot;: &amp;quot;document_end&amp;quot;&lt;/code>を使用してスクリプトをロードし、ページの読み込み時に&lt;code>window.nostr&lt;/code>が同期的に利用可能になるようにし、クライアントが拡張機能が注入する前に&lt;code>window.nostr&lt;/code>をチェックする競合条件を避けます。&lt;/p>
&lt;p>動作中のNIP-07の重要な例は、上記で扱ったKeycastプロジェクトです。Keycast webフロントエンドは、NIP-98 HTTP認証イベントに署名するためにNIP-07を使用します: SvelteKitアプリはユーザーのnsecを直接扱いません。&lt;code>window.nostr.signEvent&lt;/code>を呼び出して認証ヘッダを生成し、次にそのヘッダをKeycast APIに送信します。このアーキテクチャは、キーマテリアルがチーム鍵管理フロー全体を通じてブラウザ拡張機能内に留まることを意味します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hello from a NIP-07 signed event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2cdd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="nipディープダイブ-nip-39-プロフィール内の外部アイデンティティ">NIPディープダイブ: NIP-39 (プロフィール内の外部アイデンティティ)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/39.md">NIP-39&lt;/a>は、Nostrユーザーがプロフィール内で外部プラットフォームアイデンティティに対する制御を宣言する方法を定義します。各宣言はkind:10011イベント内で&lt;code>i&lt;/code>タグを使用し、他のプラットフォーム上の特定のアカウントの所有権と、独立に検証可能な証明を主張します。&lt;/p>
&lt;p>各タグは&lt;code>[&amp;quot;i&amp;quot;, &amp;quot;platform:identity&amp;quot;, &amp;quot;proof&amp;quot;]&lt;/code>の形式に従い、&lt;code>platform:identity&lt;/code>はコロンセパレータでプラットフォーム名とユーザー名を結合します (&lt;code>github:semisol&lt;/code>、&lt;code>twitter:semisol_public&lt;/code>)。&lt;code>proof&lt;/code>はプラットフォーム自体上の検証可能なアーティファクトを指します。&lt;/p>
&lt;p>GitHubの場合、証明はGist IDです。ユーザーは自分のGitHubアカウントから&lt;code>Verifying that I control the following Nostr public key: npub1...&lt;/code>というテキストを含む公開Gistを作成します。主張を検証するクライアントは&lt;code>https://gist.github.com/&amp;lt;identity&amp;gt;/&amp;lt;proof&amp;gt;&lt;/code>を取得し、Gistが主張されたGitHubユーザー名によって作成され、期待されるpubkeyを含むことを確認します。Twitterの場合、証明はツイートID、Mastodonの場合は投稿ID、Telegramの場合は公開グループ内のメッセージ参照です。&lt;/p>
&lt;p>アイデンティティプロバイダ名は&lt;code>a-z&lt;/code>、&lt;code>0-9&lt;/code>、および&lt;code>._-/&lt;/code>文字のみを含む必要があり、&lt;code>:&lt;/code>を含んではなりません。アイデンティティ名は小文字に正規化されるべきで、複数存在する場合はプライマリエイリアスが使用されます。&lt;/p>
&lt;p>今週起こっているNamecoin &lt;code>.bit&lt;/code> NIP-05の議論は、より広範なアイデンティティスタックにおけるNIP-39の役割を示しています: それはNostrキーを他の場所の確立されたアイデンティティと相互参照するための、標準化された、リレー非依存の方法を提供し、中央検証機関を必要としません。クライアントは、指定されたプラットフォーム上の公開アーティファクトを取得することで独立に証明を検証でき、証明はGistまたはツイートテキスト内の特定のNostr pubkeyにバインドされ、一般的なプラットフォーム認証情報ではありません。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;7f8e9d0c1b2a3e4f5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8a&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1747785600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10011&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;github:semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9721ce4ee4fceb91c9711ca2a6c9a5ab&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;twitter:semisol_public&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1619358434134196225&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;mastodon:bitcoinhackers.org/@semisol&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;109775066355589974&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3eff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>今週はこれで終わりです。何か構築しているか、共有するニュースがあれば、NostrでDMを送るか、&lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>で見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #22</title><link>https://nostrcompass.org/ja/newsletters/2026-05-13-newsletter/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-05-13-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrプロトコル開発の週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週：&lt;/strong> Nostr VPNが7日間で8つのリリースを出荷し、再設計されたデバイスペアリングフローからFIPS AEADスワップでTCPスループットをほぼ2倍にするまでの進化を遂げました。Marmot Protocol（White Noiseの基盤）がユーザーブロック機能を完成させるフロントエンドリリースを出荷し、MDKとバックエンドで31件のPRがマージされました。Grainがv0.6.0を出荷し、1つのマイルストーンで4つの新しいNIP実装を追加しました。Citrineがv3.0.0-pre1を出荷し、Tor内蔵とリレー集約を実現しました。Amberがv6.1.0-pre2を出荷し、接続フローと署名の改善を行いました。Alby Hubがv1.22.2を出荷し、AIとエージェントページおよびCore Lightning統合を追加しました。Mostroが同時テイカーボンドとmostro-core v0.11.0を出荷しました。Jumbleが最近の検索履歴とアカウントデータ永続性の修正を含む5つのリリースを出荷しました。Nostrordがグループ共有モーダルとArch Linuxパッケージを含む3つのリリースを出荷しました。Flotillaがビデオ通話、メールレンダリング、ルームメンションを含む1.8.0を出荷しました。Calendar by Formstrが予約スケジューリングとAndroidカレンダー同期を含むv1.5.1を出荷しました。Tamagostrichが分散型NIP-78タマゴッチをsats報酬とともにローンチしました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="nostr-vpnがv4010に至る8つのリリースを出荷">Nostr VPNがv4.0.10に至る8つのリリースを出荷&lt;/h3>
&lt;p>Nostr VPN（Nostrをピア発見に使用するRustベースの分散型メッシュVPN）が、macOS、Linux、Windows、Androidでv4.0.1からv4.0.10まで8つのリリースを出荷しました。v4.0.8での主要な変更：AEADがRustCryptoのchacha20poly1305ソフトウェアバックエンドからring 0.17のBoringSSLのChaCha20-Poly1305に切り替わり、aarch64ではNEON、x86_64ではAVX2/AVX-512の手動チューニングを使用します。同一ハードウェアでのDockerベンチマークでは、2ノード直接TCPスループットが437から1097 Mbpsに跳ね上がりました。v4.0.9はUDP送信パスにsendmmsg(2)バッチ処理を追加し、TCPシングルストリームを1066から1548 Mbps（1.45×）に押し上げました。v4.0.10はデバイスペアリングの完全なUXオーバーホールを出荷しました。&lt;/p>
&lt;h3 id="marmot--white-noiseがユーザーブロック完成とmdkおよびバックエンドでの31マージprを含むフロントエンドリリースを出荷">Marmot / White Noiseがユーザーブロック完成とMDKおよびバックエンドでの31マージPRを含むフロントエンドリリースを出荷&lt;/h3>
&lt;p>White Noiseが5月7日にv2026.5.7+24を出荷し、ブロック機能セットを完成させました。ブロックされたユーザーは、招待、チャットプレビュー、メッセージタイムライン、検索結果、通知から非表示になり、そのメッセージは未読バッジにカウントされなくなりました。MDKはPR #258でエクステンションv3ワイヤーフォーマットとdisappearing_message_secsスキーマを追加し、メッセージ消去機能の基盤を整えました。&lt;/p>
&lt;h3 id="grain-v060がnip-40nip-50nip-70nip-45を追加">Grain v0.6.0がNIP-40、NIP-50、NIP-70、NIP-45を追加&lt;/h3>
&lt;p>Grainが5月6日にv0.6.0を出荷し、4つの新しいNIP実装を追加しました。NIP-40イベント有効期限により、パブリッシャーは有効期限タイムスタンプを設定してリレーが期限切れ後にイベントを破棄できるようになります。NIP-50フルテキスト検索により、クライアントはREQメッセージで検索フィルターを発行できます。NIP-70保護イベントにより、リレーは作者の明示的な許可なしにイベントを再共有できなくなります。NIP-45カウントクエリにより、クライアントはリレーに一致するイベントの数を返すよう要求できます。&lt;/p>
&lt;h2 id="今週の出荷">今週の出荷&lt;/h2>
&lt;h3 id="citrine-v300-pre1がtor内蔵とリレー集約を実現">Citrine v3.0.0-pre1がTor内蔵とリレー集約を実現&lt;/h3>
&lt;p>Citrineがv3.0.0-pre1を出荷し、プライバシーを保護するリレーアクセスのためのTorサポートと、複数のアップストリームリレーからイベントを取得してローカルクライアントに提供するリレー集約を実現しました。PR #139は効率的なセット調整ベースのイベント同期のためのNIP-77（Negentropy Reconciliation）サポートを追加しました。&lt;/p>
&lt;h3 id="amber-v610-pre2が新しいアプリ接続フローを改善">Amber v6.1.0-pre2が新しいアプリ接続フローを改善&lt;/h3>
&lt;p>Amberがv6.1.0-pre2を出荷しました。主な修正点：署名者ダイアログがバンカーリクエストを受け入れた後に正しく閉じるようになり、不正なバンカーリクエストには無効リクエスト画面が表示され、インテントベースの署名リクエストにレート制限が追加されました。&lt;/p>
&lt;h3 id="alby-hub-v1222がaiとエージェントページおよびcore-lightningサポートを追加">Alby Hub v1.22.2がAIとエージェントページおよびCore Lightningサポートを追加&lt;/h3>
&lt;p>Alby Hubがv1.22.2を出荷しました。新しいAIとエージェントページにより、Alby HubのLightningとNWC機能がAIエージェントおよびMCP互換ツールに公開されます。Core Lightning（CLN）がLNDとLDKに加えてサポートされるバックエンドになりました。&lt;/p>
&lt;h3 id="mostroが同時テイカーボンドとmostro-core-v0110を出荷">Mostroが同時テイカーボンドとmostro-core v0.11.0を出荷&lt;/h3>
&lt;p>Mostroがテイカーボンド機能を進める11件のPRをマージしました。PR #733は、複数のテイカーが同時にボンドインボイスを送信でき、最初にロックした者が勝つ同時テイカーボンドを実装しました。mostro-coreがPR #144でAction::PayBondInvoiceとStatus::WaitingTakerBondを追加してv0.11.0を出荷しました。mostro-cliがv0.15.0を出荷しました。&lt;/p>
&lt;h3 id="jumbleが最近の検索とアカウント永続性を含む5つのリリースを出荷">Jumbleが最近の検索とアカウント永続性を含む5つのリリースを出荷&lt;/h3>
&lt;p>Jumbleがv26.5.2からv26.5.6を出荷しました。v26.5.5は最近の検索履歴を追加しました。v26.5.6で重大な永続性バグが修正され、アカウントとキャッシュデータがアプリの完全再起動後も保持されるようになりました。&lt;/p>
&lt;h3 id="nostrordがグループ共有モーダルメディアアップロードarch-linuxパッケージを出荷">Nostrordがグループ共有モーダル、メディアアップロード、Arch Linuxパッケージを出荷&lt;/h3>
&lt;p>Nostrordがv1.0.0、v1.0.1、v1.0.2を出荷しました。v1.0.1はAURでnostrord-binとしてArch Linuxパッケージを出荷し、PGP署名済みアーティファクト、最新へジャンプボタン、チャットでの画像・メディア貼り付けを実現しました。v1.0.2はPR #49でグループ共有を追加し、nostr:naddr URIとnostrord.com/open/リンクの両方を生成する共有モーダルを提供します。&lt;/p>
&lt;h3 id="fips-v030がクロスプラットフォーム対応nostrピア発見未修正lanのゲートウェイを出荷">FIPS v0.3.0がクロスプラットフォーム対応、Nostrピア発見、未修正LANのゲートウェイを出荷&lt;/h3>
&lt;p>FIPSがv0.3.0を出荷し、Linux専用からLinux、macOS、Windows、OpenWrtへの主要マイルストーンを達成しました。ノードは公開Nostrリレーでkind:37195パラメータ化置換可能イベントとして署名済みオーバーレイ広告を発行するようになりました。Nostr VPNのスループット向上をもたらしたring 0.17 ChaCha20-Poly1305スワップもFIPS v0.3.0に搭載されました。&lt;/p>
&lt;h3 id="camelus-v1101がデスクトップビルドを出荷">Camelus v1.10.1がデスクトップビルドを出荷&lt;/h3>
&lt;p>Camelus v1.10.1がWindowsとLinuxのデスクトップビルドを出荷し、モバイル専用配布から拡張しました。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrプロトコル開発の週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週：&lt;/strong> Nostr VPNが7日間で8つのリリースを出荷し、再設計されたデバイスペアリングフローからFIPS AEADスワップでTCPスループットをほぼ2倍にするまでの進化を遂げました。Marmot Protocol（White Noiseの基盤）がユーザーブロック機能を完成させるフロントエンドリリースを出荷し、MDKとバックエンドで31件のPRがマージされました。Grainがv0.6.0を出荷し、1つのマイルストーンで4つの新しいNIP実装を追加しました。Citrineがv3.0.0-pre1を出荷し、Tor内蔵とリレー集約を実現しました。Amberがv6.1.0-pre2を出荷し、接続フローと署名の改善を行いました。Alby Hubがv1.22.2を出荷し、AIとエージェントページおよびCore Lightning統合を追加しました。Mostroが同時テイカーボンドとmostro-core v0.11.0を出荷しました。Jumbleが最近の検索履歴とアカウントデータ永続性の修正を含む5つのリリースを出荷しました。Nostrordがグループ共有モーダルとArch Linuxパッケージを含む3つのリリースを出荷しました。Flotillaがビデオ通話、メールレンダリング、ルームメンションを含む1.8.0を出荷しました。Calendar by Formstrが予約スケジューリングとAndroidカレンダー同期を含むv1.5.1を出荷しました。Tamagostrichが分散型NIP-78タマゴッチをsats報酬とともにローンチしました。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="nostr-vpnがv4010に至る8つのリリースを出荷">Nostr VPNがv4.0.10に至る8つのリリースを出荷&lt;/h3>
&lt;p>Nostr VPN（Nostrをピア発見に使用するRustベースの分散型メッシュVPN）が、macOS、Linux、Windows、Androidでv4.0.1からv4.0.10まで8つのリリースを出荷しました。v4.0.8での主要な変更：AEADがRustCryptoのchacha20poly1305ソフトウェアバックエンドからring 0.17のBoringSSLのChaCha20-Poly1305に切り替わり、aarch64ではNEON、x86_64ではAVX2/AVX-512の手動チューニングを使用します。同一ハードウェアでのDockerベンチマークでは、2ノード直接TCPスループットが437から1097 Mbpsに跳ね上がりました。v4.0.9はUDP送信パスにsendmmsg(2)バッチ処理を追加し、TCPシングルストリームを1066から1548 Mbps（1.45×）に押し上げました。v4.0.10はデバイスペアリングの完全なUXオーバーホールを出荷しました。&lt;/p>
&lt;h3 id="marmot--white-noiseがユーザーブロック完成とmdkおよびバックエンドでの31マージprを含むフロントエンドリリースを出荷">Marmot / White Noiseがユーザーブロック完成とMDKおよびバックエンドでの31マージPRを含むフロントエンドリリースを出荷&lt;/h3>
&lt;p>White Noiseが5月7日にv2026.5.7+24を出荷し、ブロック機能セットを完成させました。ブロックされたユーザーは、招待、チャットプレビュー、メッセージタイムライン、検索結果、通知から非表示になり、そのメッセージは未読バッジにカウントされなくなりました。MDKはPR #258でエクステンションv3ワイヤーフォーマットとdisappearing_message_secsスキーマを追加し、メッセージ消去機能の基盤を整えました。&lt;/p>
&lt;h3 id="grain-v060がnip-40nip-50nip-70nip-45を追加">Grain v0.6.0がNIP-40、NIP-50、NIP-70、NIP-45を追加&lt;/h3>
&lt;p>Grainが5月6日にv0.6.0を出荷し、4つの新しいNIP実装を追加しました。NIP-40イベント有効期限により、パブリッシャーは有効期限タイムスタンプを設定してリレーが期限切れ後にイベントを破棄できるようになります。NIP-50フルテキスト検索により、クライアントはREQメッセージで検索フィルターを発行できます。NIP-70保護イベントにより、リレーは作者の明示的な許可なしにイベントを再共有できなくなります。NIP-45カウントクエリにより、クライアントはリレーに一致するイベントの数を返すよう要求できます。&lt;/p>
&lt;h2 id="今週の出荷">今週の出荷&lt;/h2>
&lt;h3 id="citrine-v300-pre1がtor内蔵とリレー集約を実現">Citrine v3.0.0-pre1がTor内蔵とリレー集約を実現&lt;/h3>
&lt;p>Citrineがv3.0.0-pre1を出荷し、プライバシーを保護するリレーアクセスのためのTorサポートと、複数のアップストリームリレーからイベントを取得してローカルクライアントに提供するリレー集約を実現しました。PR #139は効率的なセット調整ベースのイベント同期のためのNIP-77（Negentropy Reconciliation）サポートを追加しました。&lt;/p>
&lt;h3 id="amber-v610-pre2が新しいアプリ接続フローを改善">Amber v6.1.0-pre2が新しいアプリ接続フローを改善&lt;/h3>
&lt;p>Amberがv6.1.0-pre2を出荷しました。主な修正点：署名者ダイアログがバンカーリクエストを受け入れた後に正しく閉じるようになり、不正なバンカーリクエストには無効リクエスト画面が表示され、インテントベースの署名リクエストにレート制限が追加されました。&lt;/p>
&lt;h3 id="alby-hub-v1222がaiとエージェントページおよびcore-lightningサポートを追加">Alby Hub v1.22.2がAIとエージェントページおよびCore Lightningサポートを追加&lt;/h3>
&lt;p>Alby Hubがv1.22.2を出荷しました。新しいAIとエージェントページにより、Alby HubのLightningとNWC機能がAIエージェントおよびMCP互換ツールに公開されます。Core Lightning（CLN）がLNDとLDKに加えてサポートされるバックエンドになりました。&lt;/p>
&lt;h3 id="mostroが同時テイカーボンドとmostro-core-v0110を出荷">Mostroが同時テイカーボンドとmostro-core v0.11.0を出荷&lt;/h3>
&lt;p>Mostroがテイカーボンド機能を進める11件のPRをマージしました。PR #733は、複数のテイカーが同時にボンドインボイスを送信でき、最初にロックした者が勝つ同時テイカーボンドを実装しました。mostro-coreがPR #144でAction::PayBondInvoiceとStatus::WaitingTakerBondを追加してv0.11.0を出荷しました。mostro-cliがv0.15.0を出荷しました。&lt;/p>
&lt;h3 id="jumbleが最近の検索とアカウント永続性を含む5つのリリースを出荷">Jumbleが最近の検索とアカウント永続性を含む5つのリリースを出荷&lt;/h3>
&lt;p>Jumbleがv26.5.2からv26.5.6を出荷しました。v26.5.5は最近の検索履歴を追加しました。v26.5.6で重大な永続性バグが修正され、アカウントとキャッシュデータがアプリの完全再起動後も保持されるようになりました。&lt;/p>
&lt;h3 id="nostrordがグループ共有モーダルメディアアップロードarch-linuxパッケージを出荷">Nostrordがグループ共有モーダル、メディアアップロード、Arch Linuxパッケージを出荷&lt;/h3>
&lt;p>Nostrordがv1.0.0、v1.0.1、v1.0.2を出荷しました。v1.0.1はAURでnostrord-binとしてArch Linuxパッケージを出荷し、PGP署名済みアーティファクト、最新へジャンプボタン、チャットでの画像・メディア貼り付けを実現しました。v1.0.2はPR #49でグループ共有を追加し、nostr:naddr URIとnostrord.com/open/リンクの両方を生成する共有モーダルを提供します。&lt;/p>
&lt;h3 id="fips-v030がクロスプラットフォーム対応nostrピア発見未修正lanのゲートウェイを出荷">FIPS v0.3.0がクロスプラットフォーム対応、Nostrピア発見、未修正LANのゲートウェイを出荷&lt;/h3>
&lt;p>FIPSがv0.3.0を出荷し、Linux専用からLinux、macOS、Windows、OpenWrtへの主要マイルストーンを達成しました。ノードは公開Nostrリレーでkind:37195パラメータ化置換可能イベントとして署名済みオーバーレイ広告を発行するようになりました。Nostr VPNのスループット向上をもたらしたring 0.17 ChaCha20-Poly1305スワップもFIPS v0.3.0に搭載されました。&lt;/p>
&lt;h3 id="camelus-v1101がデスクトップビルドを出荷">Camelus v1.10.1がデスクトップビルドを出荷&lt;/h3>
&lt;p>Camelus v1.10.1がWindowsとLinuxのデスクトップビルドを出荷し、モバイル専用配布から拡張しました。&lt;/p>
&lt;h3 id="flotilla-180がビデオ通話メールレンダリングルームメンションを出荷">Flotilla 1.8.0がビデオ通話、メールレンダリング、ルームメンションを出荷&lt;/h3>
&lt;p>Flotillaが1.8.0を出荷しました。ボイスルームがビデオをサポートするようになり、参加者は通話中にカメラをオンにしたり画面を共有したりできます。welshmanライブラリの更新によりメールレンダリングが実現しました。ルームメンションにより、ユーザーはクリック可能なインラインリンクで他のルームやリレーを参照できます。&lt;/p>
&lt;h3 id="calendar-by-formstrが予約スケジューリングとandroidカレンダー同期を含むv151を出荷">Calendar by Formstrが予約スケジューリングとAndroidカレンダー同期を含むv1.5.1を出荷&lt;/h3>
&lt;p>Calendar by Formstrが5月10日にv1.5.0、5月11日にv1.5.1を出荷しました。予約スケジューリングにより、ユーザーは予約可能な時間枠を作成できます。読み取り専用のAndroidカレンダー統合により、Nostrイベントがデバイスカレンダーに同期されます。&lt;/p>
&lt;h2 id="開発中">開発中&lt;/h2>
&lt;h3 id="amethystが予約投稿nip-9aコミュニティルールデスクトップローカルリレーを追加">Amethystが予約投稿、NIP-9Aコミュニティルール、デスクトップローカルリレーを追加&lt;/h3>
&lt;p>Amethystが今週78件のPRをマージしました。予約投稿がPR #2765で実現しました。PR #2841でデスクトップビルドがSQLiteイベント永続化を持つ埋め込みローカルリレーを獲得しました。NIP-9Aコミュニティルールを実装する3件のPR：PR #2798が送信前にコミュニティルールに対して投稿を検証し、PR #2799が構造化されたNIP-9Aルールエディターを追加し、PR #2800がオプトインNIP-9Aフィードフィルターを追加しました。&lt;/p>
&lt;h3 id="shopstrがmcp監査ログとセッションセキュリティを追加">ShopstrがMCP監査ログとセッションセキュリティを追加&lt;/h3>
&lt;p>Shopstrが5件のPRをマージしました。MCPツールレイヤーの監査ログがPR #456で実現しました。PR #477でセッションセキュリティが強化され、発信元APIキーへのセッション固定とTTL削除が追加されました。&lt;/p>
&lt;h3 id="dart-ndkがwebサポートとシールシグネチャ検証を追加">Dart NDKがWebサポートとシールシグネチャ検証を追加&lt;/h3>
&lt;p>Dart NDKが6件のPRをマージしました。PR #571でSembastCacheManagerにWebサポートが追加されました。NIP-59 Gift WrapフローのためのシールシグネチャVerificationがPR #595で実現しました。&lt;/p>
&lt;h2 id="新しいプロジェクト">新しいプロジェクト&lt;/h2>
&lt;h3 id="tamagostrichがnip-78分散型タマゴッチをsats報酬とともにローンチ">TamagostrichがNIP-78分散型タマゴッチをsats報酬とともにローンチ&lt;/h3>
&lt;p>Tamagostrichは、IDENTITY Hackathon 2026でローンチされたブラウザベースの仮想ペットゲームで、赤ちゃんダチョウのNoriがあなたのNostrソーシャル活動を通じて成長します。ペットの状態はクロスデバイス同期のためNIP-78 kind:30078イベントに保存されます。マイルストーン報酬はNIP-47を通じてsatsで支払われます：レベル5で50 sats、レベル10で210 sats、最大レベル21で420 satsがユーザーのlud16アドレスに送られます。&lt;/p>
&lt;h2 id="プロトコルと仕様の作業">プロトコルと仕様の作業&lt;/h2>
&lt;p>今週5つの新しい提案が開かれました。&lt;/p>
&lt;p>PR #2331はNIP-9A：検証可能なコミュニティルールを提案し、機械可読な暗号学的署名付きコミュニティルール文書のためのkind:34551を導入します。&lt;/p>
&lt;p>PR #2335はNostrマーケットプレイスのための予約イベントを提案し、kind:32122（パラメータ化置換可能な予約イベント）、kind:1326（追記専用のトランジション監査レコード）、kind:32124（取引後レビュー）を定義します。交渉はNIP-59ギフトラップメッセージを通じてプライベートに行われます。&lt;/p>
&lt;p>PR #2334はNostrマーケットプレイスのためのエスクローサービスを提案し、エスクロー事業者がEVMコントラクトアドレスと手数料スケジュールを宣言するためのkind:30303を使用します。&lt;/p>
&lt;p>PR #2333はNIP-99マーケットプレイスリスティングのための宿泊施設リスティングプロファイルを提案し、短期レンタルリスティングのためのH3地理空間インデックスgタグでNIP-99を拡張します。&lt;/p>
&lt;p>PR #2332はNIP-BC：オンチェーンZaps（kind 8333）を提案し、NostrキーとBitcoin Taprostアドレスの直接的な同一性を利用します。kindの番号はNIP-57を反映しています：9735はLightning P2Pポート、8333はBitcoinメインネットのP2Pポートです。&lt;/p>
&lt;h2 id="nip深掘りnip-78アプリ固有データ">NIP深掘り：NIP-78（アプリ固有データ）&lt;/h2>
&lt;p>NIP-78は、アプリケーションがNostrイベントを使用してユーザーに代わって任意のプライベートまたはパブリックデータを保存する標準的な方法を定義します。中核となるイベントカインドは30078で、dタグがアプリケーション定義の識別子文字列であるパラメータ化置換可能イベントです。アプリケーションはストレージスロットに固有のdタグを与え、保持する必要があるJSONまたはテキストコンテンツを含む30078イベントを公開します。主な動機は、集中型サーバーなしのクロスデバイス同期です。プライベートなアプリケーションデータには、公開前にNIP-44を使用してコンテンツフィールドを暗号化できます。現在の利用者にはTamagostrich（ペット状態同期）、Wisp（ウォレットバックアップとセキュリティ設定）、NosPress（CMSオーケストレーション状態）、および複数のNostrクライアント設定同期実装が含まれます。&lt;/p>
&lt;hr>
&lt;p>主要ソース：&lt;/p>
&lt;ul>
&lt;li>NIP-78仕様：https://github.com/nostr-protocol/nips/blob/master/78.md&lt;/li>
&lt;li>Tamagostrich：https://github.com/Negr087/tamagostrich&lt;/li>
&lt;/ul>
&lt;p>関連項目：NIP-51 Lists、NIP-65 Relay List Metadata&lt;/p>
&lt;h2 id="nip深掘りnip-98http認証">NIP深掘り：NIP-98（HTTP認証）&lt;/h2>
&lt;p>NIP-98は、Nostrキーペアがユーザー名、パスワード、OAuthトークンを排除してHTTPサーバーへのリクエストを認可できるHTTP認証スキームを定義します。クライアントはkind 27235の短期間Nostrイベントを構築し、秘密鍵で署名し、JSONをbase64エンコードして、Authorization: Nostr &lt;base64> HTTPヘッダーで送信します。kind 27235イベントには、methodタグにHTTPメソッド、uタグに完全なリクエストURL、created_atタイムスタンプが含まれます。サーバーは署名を検証し、メソッドとURLが一致することを確認し、リプレイ攻撃を防ぐためにタイムスタンプが最近のものであることを確認します。NIP-98は、Blossom（BUD-01）でのブロブアップロード認証、Routstrのリクエストごとのアクセス制御、Sproutのgitトランスポート認証、Alby Hubの管理API認証に使用されています。&lt;/p>
&lt;hr>
&lt;p>主要ソース：&lt;/p>
&lt;ul>
&lt;li>NIP-98仕様：https://github.com/nostr-protocol/nips/blob/master/98.md&lt;/li>
&lt;li>BUD-01：https://github.com/hzrd149/blossom/blob/master/buds/01.md&lt;/li>
&lt;/ul>
&lt;p>関連項目：NIP-96 HTTP File Storage Integration&lt;/p>
&lt;hr>
&lt;p>今週はここまでです。何かを作っていたり、共有するニュースがあれば、NostrでDMを送るか、nostrcompass.orgでお会いしましょう。&lt;/p></content:encoded></item><item><title>Nostr Compass #21</title><link>https://nostrcompass.org/ja/newsletters/2026-05-06-newsletter/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-05-06-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの最新動向をお届けする週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の注目：&lt;/strong> Marmot ProtocolがMIP-05通知プリミティブ初実装、アドレス指定可能なNIP-51キーパッケージ、強化されたセキュリティレビューを備えたMDK 0.8.0を公開しました。LaWallet NWCはOpenSatsの資金提供以来最大のリリースとなるv0.10.0を公開し、完全な管理ダッシュボード、エンドユーザーウォレット、エンドツーエンドの活動ログ、新しいLightningAddress 1→NとNWCConnectionスキーマを提供します。AmethystはJWTリフレッシュ時の音声ギャップ解消、ライフサイクル対応キーデータサブスクリプション、リレーのキープアライブ再接続、アニメーション発言参加者インジケーターを含むNests安定化スプリントを実施しました。ngitはv2.4.2とv2.4.3を公開し、PRサブミッション時のGRASPサーバー検出とマルチリモート状態イベントフィルタリングを修正しました。GRAINはv0.5.4を公開し、本番環境向け強化とDockerクイックスタートでの無音データ損失バグを修正しました。Mostro CoreはPGP署名リリースアーティファクトを含むv0.10.1を公開しました。Claveはマルチアカウントサポートを備えたv0.2.0をiOSでリリースしました。&lt;/p>
&lt;h2 id="主要ストーリー">主要ストーリー&lt;/h2>
&lt;h3 id="mdk-080がmip-05通知プリミティブとアドレス指定可能なキーパッケージを追加">MDK 0.8.0がMIP-05通知プリミティブとアドレス指定可能なキーパッケージを追加&lt;/h3>
&lt;p>Marmotプロトコルの中核RustライブラリであるMDKは、5月4日にv0.8.0を公開しました。このリリースでは初のMIP-05通知ビルディングブロックを提供し、MIP-00キーパッケージをアドレス指定可能なイベントに移行してユーザーのキーパッケージをその場で置き換えられるようにし、混在バージョングループの互換性を向上させ、モバイルバインディングのUniFFIカバレッジを拡張し、管理アクション、コミット、ストレージ、暗号化境界、リプレイ処理に関するバリデーションパスを強化しています。MIP-05プリミティブにはPR #235で追加されたリーフインデックスヘルパーが含まれており、下流クライアントがグループ構造を漏らすことなく受信者ごとのプッシュ通知を届けるのに十分な情報を提供します。PR #273はmdk-coreのcrates.io公開を復元し、PR #269はtest_utilモジュールをtest-utils Cargoフィーチャーの背後に公開して外部クライアントスイートがMarmotのテストハーネスを共有できるようにします。&lt;/p>
&lt;h3 id="lawallet-nwc-v0100が完全なモノレポとエンドユーザーウォレットを提供">LaWallet NWC v0.10.0が完全なモノレポとエンドユーザーウォレットを提供&lt;/h3>
&lt;p>LaWalletチームのNIP-47 Nostr Wallet Connect実装であるLaWallet NWCは、4月30日にv0.10.0を公開しました。これはOpenSatsの資金提供以来最大のリリースです。完全なモノレポ、完全な管理ダッシュボード、エンドユーザーウォレット、エンドツーエンドの活動ログ、ダイナミックブランディング、新しいLightningAddress 1→NとNWCConnectionスキーマを提供します。PR #191で公開されたユーザー向けウォレットは、オンボーディング、ホーム、送受信、スキャン、通貨、アクティビティフィード、オフラインキャッシュをカバーしています。&lt;/p>
&lt;h3 id="amethystがnestsをキープアライブjwtレジリエンスライフサイクルサブスクリプションで安定化">AmethystがNestsをキープアライブ、JWTレジリエンス、ライフサイクルサブスクリプションで安定化&lt;/h3>
&lt;p>機能豊富なAndroidクライアントAmethystは、本番環境でのコール障害を引き起こしていた故障モードに焦点を当てた安定化スプリントでNIP-53 Nestsオーディオルームの作業を継続しました。PR #2733の音声ギャップ修正はJWTリフレッシュ中にアクティブストリームと新しい資格情報の取得を重複させます。PR #2730の新しいキープアライブメカニズムは手動ユーザー操作なしに切断されたリレーを再接続し、PR #2728はレガシーのKeyDataSourceSubscriptionをLifecycleAwareKeyDataSourceSubscriptionに置き換えます。PR #2724はマルチスピーカーセッションで発言中の参加者をハイライトするアニメーション外リングインジケーターを追加します。&lt;/p>
&lt;h3 id="ngit-v242とv243がgraspサーバー検出とマルチリモート状態イベントを修正">ngit v2.4.2とv2.4.3がGRASPサーバー検出とマルチリモート状態イベントを修正&lt;/h3>
&lt;p>NIP-34コラボレーションのコマンドラインツールおよびgitプラグインであるngitは、4月28日にv2.4.2を、5月1日にv2.4.3を公開しました。v2.4.2はrepo_graspsが正規化されたホスト名を保持していたがフルクローンURLと比較していたURL正規化の不一致を修正します。v2.4.3はリポジトリが同じ識別子を共有する複数のnostr://リモートを持つ場合に発生した状態イベントのあいまいさを修正します。&lt;/p>
&lt;h3 id="grain-v054が本番環境向け強化と無音データ損失の修正を実施">GRAIN v0.5.4が本番環境向け強化と無音データ損失の修正を実施&lt;/h3>
&lt;p>GoベースのNostrリレーおよびクライアントライブラリであるGRAINは、4月30日にv0.5.4を公開しました。このリリースはv0.5.3以降に蓄積された6つの修正をまとめており、コンテナ再起動時にイベントを無音でドロップしていたDockerクイックスタートの無音データ損失バグと、アドレス指定可能なイベント読み込みにおけるストレージ層の正確性バグを含みます。&lt;/p>
&lt;h3 id="mostro-core-v0101がpgp署名リリースアーティファクトを追加">Mostro Core v0.10.1がPGP署名リリースアーティファクトを追加&lt;/h3>
&lt;p>Mostroデーモンのピアツーピア機能を提供するRustライブラリであるMostro Coreは、4月28日にv0.10.1を公開しました。新しいリリースにはPGP署名リリースアーティファクトとverify-releaseフローが追加され、下流のパッケージャーがアーティファクトの出所を確認できます。&lt;/p>
&lt;h2 id="タグ付きリリース">タグ付きリリース&lt;/h2>
&lt;h3 id="clave-v020がnip-46-nostr-connect署名でiosにマルチアカウントをリリース">Clave v0.2.0がNIP-46 (Nostr Connect)署名でiOSにマルチアカウントをリリース&lt;/h3>
&lt;p>iOS向けNIP-46リモート署名アプリのClaveは、5月5日にv0.2.0を公開しました。最大の更新はマルチアカウントサポートの導入です。Claveは1台のデバイスに最大4つのアカウントを保持でき、ワンタップの切り替えとアカウントごとの分離を実現します。PR #23がマルチアカウントのiOSの仕組みを追加し、PR #22がAPNsペイロードにsigner_pubkeyフィールドを追加してデバイスがリモート署名リクエストがどのアカウントに属するかを判別できるようにします。&lt;/p>
&lt;h3 id="wispがv103からv105の安定化作業を公開">Wispがv1.0.3からv1.0.5の安定化作業を公開&lt;/h3>
&lt;p>AndroidクライアントのWispは、5月4日にv1.0.3、v1.0.4、v1.0.5を公開し安定化作業を実施しました。PR #506はフルメディアのロード中にぼかしたイメージプレビューのためのThumbhashを追加し、PR #514はボトムタブ切り替え時のもたつきを軽減します。&lt;/p>
&lt;h3 id="amber-610-pre1がレイアウトと安定性の修正を公開">Amber 6.1.0-pre1がレイアウトと安定性の修正を公開&lt;/h3>
&lt;p>NIP-55とNIP-46向けAndroid署名アプリのAmberは、新しいアプリ接続フローのレイアウト修正と複数のクラッシュ修正を含むv6.1.0-pre1を公開しました。PR #416はActivityStatsBarのレイアウトとテキストオーバーフローの問題を修正します。&lt;/p>
&lt;h3 id="routstr-core-v043が支払い返金利用レポートを改善">Routstr Core v0.4.3が支払い、返金、利用レポートを改善&lt;/h3>
&lt;p>Routstr Coreは5月1日にプレリリースとしてv0.4.3を公開し、支払いと返金の処理、コスト追跡、利用レポートを改善しました。&lt;/p>
&lt;h3 id="nostria-v3137からv3141がwebブックマークと自動テーマを追加">Nostria v3.1.37からv3.1.41がWebブックマークと自動テーマを追加&lt;/h3>
&lt;p>マルチプラットフォームNostrクライアントのNostriaは、v3.1.37からv3.1.41を公開し、NIP-B0 Webブックマークサポート、デバイス設定に追従する自動テーマ、アプリ内PDF表示を追加しました。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの最新動向をお届けする週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の注目：&lt;/strong> Marmot ProtocolがMIP-05通知プリミティブ初実装、アドレス指定可能なNIP-51キーパッケージ、強化されたセキュリティレビューを備えたMDK 0.8.0を公開しました。LaWallet NWCはOpenSatsの資金提供以来最大のリリースとなるv0.10.0を公開し、完全な管理ダッシュボード、エンドユーザーウォレット、エンドツーエンドの活動ログ、新しいLightningAddress 1→NとNWCConnectionスキーマを提供します。AmethystはJWTリフレッシュ時の音声ギャップ解消、ライフサイクル対応キーデータサブスクリプション、リレーのキープアライブ再接続、アニメーション発言参加者インジケーターを含むNests安定化スプリントを実施しました。ngitはv2.4.2とv2.4.3を公開し、PRサブミッション時のGRASPサーバー検出とマルチリモート状態イベントフィルタリングを修正しました。GRAINはv0.5.4を公開し、本番環境向け強化とDockerクイックスタートでの無音データ損失バグを修正しました。Mostro CoreはPGP署名リリースアーティファクトを含むv0.10.1を公開しました。Claveはマルチアカウントサポートを備えたv0.2.0をiOSでリリースしました。&lt;/p>
&lt;h2 id="主要ストーリー">主要ストーリー&lt;/h2>
&lt;h3 id="mdk-080がmip-05通知プリミティブとアドレス指定可能なキーパッケージを追加">MDK 0.8.0がMIP-05通知プリミティブとアドレス指定可能なキーパッケージを追加&lt;/h3>
&lt;p>Marmotプロトコルの中核RustライブラリであるMDKは、5月4日にv0.8.0を公開しました。このリリースでは初のMIP-05通知ビルディングブロックを提供し、MIP-00キーパッケージをアドレス指定可能なイベントに移行してユーザーのキーパッケージをその場で置き換えられるようにし、混在バージョングループの互換性を向上させ、モバイルバインディングのUniFFIカバレッジを拡張し、管理アクション、コミット、ストレージ、暗号化境界、リプレイ処理に関するバリデーションパスを強化しています。MIP-05プリミティブにはPR #235で追加されたリーフインデックスヘルパーが含まれており、下流クライアントがグループ構造を漏らすことなく受信者ごとのプッシュ通知を届けるのに十分な情報を提供します。PR #273はmdk-coreのcrates.io公開を復元し、PR #269はtest_utilモジュールをtest-utils Cargoフィーチャーの背後に公開して外部クライアントスイートがMarmotのテストハーネスを共有できるようにします。&lt;/p>
&lt;h3 id="lawallet-nwc-v0100が完全なモノレポとエンドユーザーウォレットを提供">LaWallet NWC v0.10.0が完全なモノレポとエンドユーザーウォレットを提供&lt;/h3>
&lt;p>LaWalletチームのNIP-47 Nostr Wallet Connect実装であるLaWallet NWCは、4月30日にv0.10.0を公開しました。これはOpenSatsの資金提供以来最大のリリースです。完全なモノレポ、完全な管理ダッシュボード、エンドユーザーウォレット、エンドツーエンドの活動ログ、ダイナミックブランディング、新しいLightningAddress 1→NとNWCConnectionスキーマを提供します。PR #191で公開されたユーザー向けウォレットは、オンボーディング、ホーム、送受信、スキャン、通貨、アクティビティフィード、オフラインキャッシュをカバーしています。&lt;/p>
&lt;h3 id="amethystがnestsをキープアライブjwtレジリエンスライフサイクルサブスクリプションで安定化">AmethystがNestsをキープアライブ、JWTレジリエンス、ライフサイクルサブスクリプションで安定化&lt;/h3>
&lt;p>機能豊富なAndroidクライアントAmethystは、本番環境でのコール障害を引き起こしていた故障モードに焦点を当てた安定化スプリントでNIP-53 Nestsオーディオルームの作業を継続しました。PR #2733の音声ギャップ修正はJWTリフレッシュ中にアクティブストリームと新しい資格情報の取得を重複させます。PR #2730の新しいキープアライブメカニズムは手動ユーザー操作なしに切断されたリレーを再接続し、PR #2728はレガシーのKeyDataSourceSubscriptionをLifecycleAwareKeyDataSourceSubscriptionに置き換えます。PR #2724はマルチスピーカーセッションで発言中の参加者をハイライトするアニメーション外リングインジケーターを追加します。&lt;/p>
&lt;h3 id="ngit-v242とv243がgraspサーバー検出とマルチリモート状態イベントを修正">ngit v2.4.2とv2.4.3がGRASPサーバー検出とマルチリモート状態イベントを修正&lt;/h3>
&lt;p>NIP-34コラボレーションのコマンドラインツールおよびgitプラグインであるngitは、4月28日にv2.4.2を、5月1日にv2.4.3を公開しました。v2.4.2はrepo_graspsが正規化されたホスト名を保持していたがフルクローンURLと比較していたURL正規化の不一致を修正します。v2.4.3はリポジトリが同じ識別子を共有する複数のnostr://リモートを持つ場合に発生した状態イベントのあいまいさを修正します。&lt;/p>
&lt;h3 id="grain-v054が本番環境向け強化と無音データ損失の修正を実施">GRAIN v0.5.4が本番環境向け強化と無音データ損失の修正を実施&lt;/h3>
&lt;p>GoベースのNostrリレーおよびクライアントライブラリであるGRAINは、4月30日にv0.5.4を公開しました。このリリースはv0.5.3以降に蓄積された6つの修正をまとめており、コンテナ再起動時にイベントを無音でドロップしていたDockerクイックスタートの無音データ損失バグと、アドレス指定可能なイベント読み込みにおけるストレージ層の正確性バグを含みます。&lt;/p>
&lt;h3 id="mostro-core-v0101がpgp署名リリースアーティファクトを追加">Mostro Core v0.10.1がPGP署名リリースアーティファクトを追加&lt;/h3>
&lt;p>Mostroデーモンのピアツーピア機能を提供するRustライブラリであるMostro Coreは、4月28日にv0.10.1を公開しました。新しいリリースにはPGP署名リリースアーティファクトとverify-releaseフローが追加され、下流のパッケージャーがアーティファクトの出所を確認できます。&lt;/p>
&lt;h2 id="タグ付きリリース">タグ付きリリース&lt;/h2>
&lt;h3 id="clave-v020がnip-46-nostr-connect署名でiosにマルチアカウントをリリース">Clave v0.2.0がNIP-46 (Nostr Connect)署名でiOSにマルチアカウントをリリース&lt;/h3>
&lt;p>iOS向けNIP-46リモート署名アプリのClaveは、5月5日にv0.2.0を公開しました。最大の更新はマルチアカウントサポートの導入です。Claveは1台のデバイスに最大4つのアカウントを保持でき、ワンタップの切り替えとアカウントごとの分離を実現します。PR #23がマルチアカウントのiOSの仕組みを追加し、PR #22がAPNsペイロードにsigner_pubkeyフィールドを追加してデバイスがリモート署名リクエストがどのアカウントに属するかを判別できるようにします。&lt;/p>
&lt;h3 id="wispがv103からv105の安定化作業を公開">Wispがv1.0.3からv1.0.5の安定化作業を公開&lt;/h3>
&lt;p>AndroidクライアントのWispは、5月4日にv1.0.3、v1.0.4、v1.0.5を公開し安定化作業を実施しました。PR #506はフルメディアのロード中にぼかしたイメージプレビューのためのThumbhashを追加し、PR #514はボトムタブ切り替え時のもたつきを軽減します。&lt;/p>
&lt;h3 id="amber-610-pre1がレイアウトと安定性の修正を公開">Amber 6.1.0-pre1がレイアウトと安定性の修正を公開&lt;/h3>
&lt;p>NIP-55とNIP-46向けAndroid署名アプリのAmberは、新しいアプリ接続フローのレイアウト修正と複数のクラッシュ修正を含むv6.1.0-pre1を公開しました。PR #416はActivityStatsBarのレイアウトとテキストオーバーフローの問題を修正します。&lt;/p>
&lt;h3 id="routstr-core-v043が支払い返金利用レポートを改善">Routstr Core v0.4.3が支払い、返金、利用レポートを改善&lt;/h3>
&lt;p>Routstr Coreは5月1日にプレリリースとしてv0.4.3を公開し、支払いと返金の処理、コスト追跡、利用レポートを改善しました。&lt;/p>
&lt;h3 id="nostria-v3137からv3141がwebブックマークと自動テーマを追加">Nostria v3.1.37からv3.1.41がWebブックマークと自動テーマを追加&lt;/h3>
&lt;p>マルチプラットフォームNostrクライアントのNostriaは、v3.1.37からv3.1.41を公開し、NIP-B0 Webブックマークサポート、デバイス設定に追従する自動テーマ、アプリ内PDF表示を追加しました。&lt;/p>
&lt;h3 id="noornote-v089がデスクトップ初回起動時の空白画面を修正">NoorNote v0.8.9がデスクトップ初回起動時の空白画面を修正&lt;/h3>
&lt;p>NoorNoteは4月28日にv0.8.9を公開し、デスクトップアプリの初回起動時の空白画面バグを修正しました。&lt;/p>
&lt;h3 id="kubo-v034からv041が保護者コントロールとweb-of-trustフィードキュレーションを備えた子供向けnostr動画プラットフォームを公開">Kubo v0.3.4からv0.4.1が保護者コントロールとWeb of Trustフィードキュレーションを備えた子供向けNostr動画プラットフォームを公開&lt;/h3>
&lt;p>Nostr上の子供向け動画プラットフォームKuboは、5月4日と5日にv0.3.4からv0.4.1を公開しました。各子供は別々のNostrキーペアと動画優先フィードを持ち、親が時間制限（1日15〜180分）、許可された時間帯、投稿アクションの表示を制御できます。&lt;/p>
&lt;h2 id="未リリースの変更">未リリースの変更&lt;/h2>
&lt;h3 id="sproutがdesktop-v004とv005を公開しnip-oaエージェント認証とペアリングサイドカーを追加">SproutがDesktop v0.0.4とv0.0.5を公開し、NIP-OAエージェント認証とペアリングサイドカーを追加&lt;/h3>
&lt;p>BlockのNostrクライアントSproutは、5月5日にDesktop v0.0.4を、5月6日にv0.0.5を公開しました。PR #471はリレーのNIP-43メンバーシップフローにNIP-OAエージェント認証を組み込み、自律エージェントが特定の人間公開鍵がその行動を承認したことを証明できるようにします。NIP-AB デバイスペアリング用の新しい一時的なサイドカーリレーがPR #467にsprout-pair-relayとして追加されます。&lt;/p>
&lt;h3 id="nostreamがmarmotリレーサポートとnip-25リアクションを追加">nostreamがMarmotリレーサポートとNIP-25リアクションを追加&lt;/h3>
&lt;p>Node.jsリレー実装のnostreamは、PR #602でMIP 00から03をカバーするMarmot Protocolリレーサポート、PR #589でNIP-25リアクションサポート、PR #586で#gフィルター用のジオハッシュプレフィックスマッチングをマージしました。&lt;/p>
&lt;h3 id="strfryが接続ごとの可観測性を追加しnofilesの上限を削減">strfryが接続ごとの可観測性を追加しnofilesの上限を削減&lt;/h3>
&lt;p>C++製Nostrリレーのstrfryはオブザーバビリティをターゲットとした14個のPRをマージしました。PR #218は接続ごとの保留中のアウトバウンド可観測性と設定可能なバックプレッシャーキャップを追加します。PR #224はイベントごとのモニターファンアウトからstd::functionのヒープアロケーションを削除します。&lt;/p>
&lt;h3 id="damusがtenor-gifをpurpleプロキシに置き換えコンパクションuxをリリース">DamusがTenor GIFをPurpleプロキシに置き換えコンパクションUXをリリース&lt;/h3>
&lt;p>DamusはPR #3737をマージし、Tenor GIF統合をDamus Purpleプロキシに置き換えました。&lt;/p>
&lt;h3 id="primal-androidがexploreアラートnip-05認証バッジを改善">Primal AndroidがExplore、アラート、NIP-05認証バッジを改善&lt;/h3>
&lt;p>Primal AndroidはPR #1043をマージし、_@domainの識別子を持つユーザーの点滅するNIP-05認証バッジを修正しました。&lt;/p>
&lt;h3 id="alby-hubがアプリconnectionからのnwc決済を追加">Alby HubがアプリConnectionからのNWC決済を追加&lt;/h3>
&lt;p>Alby HubはPR #2267をマージし、アプリ接続からの決済を可能にしました。&lt;/p>
&lt;h3 id="routstrd-authnip-98認証とnpub-rbacを備えたチーム向けdocker化routstrd">routstrd-auth：NIP-98認証とnpub RBACを備えたチーム向けDocker化Routstrd&lt;/h3>
&lt;p>routstrd-authは4月27日に作成され、npubベースのロールベースアクセスコントロールとNIP-98 HTTP認証を備えたマルチユーザーチームデプロイメント向けのRoutstrをDocker化したバリアントです。&lt;/p>
&lt;h3 id="routstrがデーモンクライアントとリモートモードにhermesを統合">RoutstrがデーモンクライアントとリモートモードにHermesを統合&lt;/h3>
&lt;p>RoutstrはPR #22をマージし、Hermes Agentとの統合を追加してRoutstrがNostr経由で発見したモデルプロバイダーとAPIキーでエージェントの設定ファイルが自動入力されるようにしました。&lt;/p>
&lt;h3 id="whitenoise-rsがアカウントごとのデータベース分離とプロポーザルアップグレードを公開">whitenoise-rsがアカウントごとのデータベース分離とプロポーザルアップグレードを公開&lt;/h3>
&lt;p>whitenoise-rsはPR #796をマージしてメッセージプロジェクションテーブルをアカウントごとのデータベースに移動し、PR #791はプロポーザルアップグレードを追加してグループが新しいプロポーザルタイプで機能を拡張できるようにします。&lt;/p>
&lt;h3 id="angorがコンパクトなアプリフローとキープロバイダーおよびネットワーク切り替えの強化を含む0221を公開">Angorがコンパクトなアプリフローとキープロバイダーおよびネットワーク切り替えの強化を含む0.2.21を公開&lt;/h3>
&lt;p>Angorは5月6日に0.2.21を公開し、モバイルデザインのパフォーマンス改善、コンパクトなアプリフロー、セキュアなキープロバイダーを提供します。&lt;/p>
&lt;h2 id="新たに追跡発見されたプロジェクト">新たに追跡・発見されたプロジェクト&lt;/h2>
&lt;h3 id="bitmacro-signerクライアントサイドキー暗号化を備えた自己ホスト型nip-46バンカー">BitMacro Signer：クライアントサイドキー暗号化を備えた自己ホスト型NIP-46バンカー&lt;/h3>
&lt;p>BitMacro SignerはNIP-46バンカーモデルを使用したセルフホスト型のNostr署名ツールです。キーはストレージ前にクライアントサイドで暗号化されるため、サーバーは平文を保持しません。&lt;/p>
&lt;p>今週はNIP-34リポジトリ発見で26件の新しいリポジトリアナウンスが見つかり、そのうち4件が注目されます。&lt;/p>
&lt;h3 id="gnostrnostr上に直接構築されたgit実装">gnostr：Nostr上に直接構築されたgit実装&lt;/h3>
&lt;p>gnostrはNostr上に直接構築されたgit実装で、ゼロから作られたNostrネイティブバージョン管理クライアントとして独自のワーキングツリーコマンドを提供します。&lt;/p>
&lt;h3 id="nostr-archivenostrとblossom上のコンテンツアドレス型アーカイブ仕様">nostr-archive：NostrとBlossom上のコンテンツアドレス型アーカイブ仕様&lt;/h3>
&lt;p>nostr-archiveはNostrとBlossom上のコンテンツアドレス型アーカイブのドラフト仕様とリファレンス実装です。&lt;/p>
&lt;h3 id="flower-cacheローカルblossomキャッシュサーバー">flower-cache：ローカルBlossomキャッシュサーバー&lt;/h3>
&lt;p>flower-cacheはローカルのBlossomキャッシュサーバーで、リモートBlossomサーバーのblobセットのホットローカルミラーが欲しいクライアントに有用です。&lt;/p>
&lt;h3 id="micro-vpn-ansiblenip-34経由のvpnデプロイメント向けansibleプレイブック">micro-vpn-ansible：NIP-34経由のVPNデプロイメント向けAnsibleプレイブック&lt;/h3>
&lt;p>micro-vpn-ansibleはNIP-34リポジトリとしてホストされる、マイクロVPNデプロイ用の小さなAnsibleプレイブックコレクションです。&lt;/p>
&lt;h2 id="プロトコル作業">プロトコル作業&lt;/h2>
&lt;h3 id="nipの更新">NIPの更新&lt;/h3>
&lt;ul>
&lt;li>NostrでのブローカーレスハッシュレートマーケットNostr（ドラフト提案）：現在のハッシュレート市場プレイヤーがユーザーにKYCを要求するカストディアルブローカーであると主張する匿名NIPドラフト。NostrイベントでのP2Pハッシュレートマーケットを提案。&lt;/li>
&lt;li>Curated Feeds：DVMフィードのシンプルな代替（ドラフト提案）：NIP-90 DVMはシンプルなフィードキュレーションには重すぎると主張し、イベントIDの順序付きリストを持つ薄いアドレス指定可能なイベントを提案。&lt;/li>
&lt;li>Profile Colors：決定論的ビジュアルアイデンティティ（ドラフト提案）：クライアント間で一貫したビジュアルアイデンティティのためにNostr公開鍵から決定論的な読みやすい色を導出するための新しいNIPドラフト。&lt;/li>
&lt;li>NamcoinトラックNIP：アイデンティティ、リレー、TLS、評判のアンカリング（ドラフトクラスター）：NostrスタックのピースをNamecoinに固定されたレコードに移動するドラフトNIPのクラスター。&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳解nip-34gitストッフ">NIP詳解：NIP-34（gitストッフ）&lt;/h2>
&lt;p>NIP-34はNostrリレー上でgitリポジトリ、パッチ、プルリクエスト、イシュー、マージステータスをホストするためのイベントkindを定義します。リポジトリはkind 30617のアドレス指定可能なイベントとしてアナウンスされます。パッチはgit format-patchの出力を運ぶkind 1617を使用します。プルリクエストはkind 1618を使用します。イシューはmarkdownコンテンツのkind 1621を使用します。ステータスイベントはスレッドをOpen（1630）、Applied/MergedまたはResolved（1631）、Closed（1632）、Draft（1633）の間で移動させます。今週のNIP-34のニュースは先週のGitWorkshop v2ローンチと同様です：GRASPサーバー、ngit、nostr://クローンURLスキームが合わさってブラウザ内PRマージボタンが機能し、完全に分散化されたフォージのループを閉じています。&lt;/p>
&lt;h2 id="nip詳解nip-53ライブアクティビティ">NIP詳解：NIP-53（ライブアクティビティ）&lt;/h2>
&lt;p>NIP-53はNostr上のライブアクティビティの標準イベントサーフェスを定義します：ライブストリーム、永続的なミーティングスペース、スケジュールされたカンファレンスイベント、リスナーの存在、ライブチャット。ライブストリームはkind 30311のアドレス指定可能なイベントとしてアナウンスされます。NIP-53は永続的な部屋とその中で開催されるスケジュールされたイベントを分離します：kind 30312 Meeting Spaceが部屋を定義し、kind 30313 Conference Eventがその部屋でのスケジュールされたまたは進行中のミーティングを表します。Nostrのライブアクティビティサーフェスは意図的に薄く設計されています：NIP-53がアクティビティをアナウンスし、zap（NIP-57）、zapゴール（NIP-75）、動画録画（NIP-71）などの隣接する関心事は他のNIPが処理します。&lt;/p>
&lt;hr>
&lt;p>今週はここまでです。何かを構築中または共有したいニュースがあれば、NostrでDMするか、nostrcompass.orgでご連絡ください。&lt;/p></content:encoded></item><item><title>Nostr Compass #20</title><link>https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ、Nostrに関する毎週のガイドです。&lt;/p>
&lt;p>&lt;strong>今週:&lt;/strong> &lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a>はgit-over-Nostrを、ブラウザ内PRマージボタン、Starsとリポジトリフォロー、帯域効率の良いgitエクスプローラ、kind &lt;code>1111&lt;/code>のインラインレビューコメント、暗号化されたマルチデバイス通知状態を備えた、より充実したコードレビューの場へと発展させました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a>はNostrのkind &lt;code>38421&lt;/code>アナウンスを介してモデルプロバイダを発見し、Cashuで支払いを行うローカルデーモンをローンチしました。タグ付けされたリリースには&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2およびv0.5.3&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0とMostro Mobile v1.2.5&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>、NoorNote、Nostria、Nostr Calendar、nos2x-fox、applesauce、nostr-double-ratchetなどが含まれます。未リリースの変更は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostreamのNIP-65およびNWC&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">FIPSのNostrベースudp:natブートストラップ&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">strfryの可観測性&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">Sproutオーナ証明&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">Zap Cookingレシピパック&lt;/a>を扱います。新規追跡プロジェクトには&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#nostrord-a-nip-29-client-built-with-kotlin-multiplatform-and-wasm">Nostrord&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#clave-brings-nip-46-remote-signing-to-ios-via-apns">Clave&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#treasures-decentralized-geocaching-on-nostr">Treasures&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#smesh-v051-self-hosted-nostr-relay-client-and-signer-in-one-stack">smesh&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">Surveil&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#smaller-additions-fundstr-nod-city-deploy-nsite-to-pages-and-null-nostr">Fundstr、Nod City、deploy-nsite-to-pages、null&amp;ndash;nostr&lt;/a>が含まれます。月末の振り返りは2021年から2026年までのNostrの4月を扱います。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="gitworkshopがブラウザ内prマージリポジトリフォロー帯域効率の良いgitエクスプローラを出荷">GitWorkshopがブラウザ内PRマージ、リポジトリフォロー、帯域効率の良いgitエクスプローラを出荷&lt;/h3>
&lt;p>Dan Conwayによる&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> git-over-Nostr向けのウェブベース共同作業レイヤーである&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>は、今週メジャーリリースを出荷しました。これにより、コメント、リポジトリリスト、通知を署名済みNostrイベント内に保ちながら、開発者がGitHubやGitLabに期待するワークフローに大きく近づきました。&lt;/p>
&lt;p>目玉の追加は、GRASPリレーを使用するリポジトリ向けの長らく待ち望まれていたブラウザ内PRマージボタンです。このリリースでは、リアクションと&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>リストの上に構築されたStarsおよびリポジトリフォロー機能も追加され、ピン留めされたリポジトリセットは順序付き&lt;code>a&lt;/code>タグを介してkind &lt;code>30617&lt;/code>のリポジトリアナウンスを指すkind &lt;code>10617&lt;/code>イベントとして発行されます。プロフィールページには、ポータブルなリポジトリリストを表示できるようになりました。&lt;/p>
&lt;p>帯域効率の良いgitエクスプローラが、これまでのブラウザ内の浅いクローンに取って代わりました。新しいエクスプローラはGRASPが構築されている基盤のgitクライアント/サーバプロトコルに依存しているため、ブラウザに完全なパックの取得を強制することなく大規模なリポジトリを扱えます。検索はユーザー名とリポジトリメタデータを対象とし、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>と、ネットワーク全体でリポジトリアナウンスを発見・同期する&lt;code>ngit-indexer&lt;/code>リレー実装によって動作します。ブラウザ内のリポジトリ作成ワークフローが、発見とオンボーディングの経路を完成させます。&lt;/p>
&lt;p>レビューツールは、Files Changedタブ、パッチごとの差分ビューア、および一連の実験的な新しいプリミティブを中心に再構築されています。インラインコードレビューコメントはkind &lt;code>1111&lt;/code>を使用し、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a>の上に構築されています。各コメントはファイルパス(&lt;code>f&lt;/code>タグ)、コミットSHA(&lt;code>c&lt;/code>タグ)、選択された行範囲(&lt;code>line&lt;/code>タグ)を指すため、クライアントは差分内の正しい位置にコメントを表示できます。実験的プリミティブの第二階層は、作成者およびリポジトリメンテナによる権限付けが行われ、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a>ラベルを使用します。IssueまたはPRの件名を提出後にリネーム、提出後にハッシュタグを追加、編集可能な要約のためにバージョン管理されたCoverNoteをPRまたはIssueの先頭にピン留め、インラインコード議論のサブスレッドを解決済みとしてマークすることができます。判定イベントと&lt;code>suggestion&lt;/code>ブロックは草案のままで、まだ出荷されていません。&lt;/p>
&lt;p>デバイス間の通知状態もNostrを介して同期されますが、プライバシー保護のひねりが加えられています。GitWorkshopは専用の通知キーペアを生成し、そのnsecを暗号化し、kind &lt;code>30078&lt;/code>イベント内に格納します。通知nsecは実際の通知状態イベントに署名します。この間接化により、ユーザーのメイン署名者が読み取りやアーカイブ操作ごとの頻繁な暗号化・復号リクエストでスパムされることが防がれ、外部の観察者がユーザーが通知状態を触った時を容易に見ることができなくなります。ユーザーはデバイス間で読み取り状態とアーカイブ状態を同期でき、リレーは暗号化されたblobだけを見ます。&lt;/p>
&lt;h3 id="routstrdがnostr経由推論のローカルルータをローンチ">RoutstrdがNostr経由推論のローカルルータをローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a>は、ローカルツールにOpenAI互換のエンドポイントを提供し、各リクエストを競合する&lt;a href="https://routstr.com">Routstr&lt;/a>プロバイダにルーティングする新しいTypeScriptデーモンです。デーモンはRoutstrのRIP-02仕様で定義されたNostrのkind &lt;code>38421&lt;/code>アナウンスを介してプロバイダを発見します。次に、RIP-06に基づいて価格、信頼、最近のパフォーマンスでプロバイダをスコアリングし、各リクエストを現在最良の選択肢に送信します。&lt;/p>
&lt;p>支払いは、cocodによって管理されLightningで資金供給されるローカルCashuウォレットを介して行われます。これにより、Nostrリレーを通じてプロバイダ発見を公開かつパーミッションレスに保ちながら、クライアントにsats建ての決済経路を提供します。セッション中にプロバイダが失敗した場合、Routstrdは次にランク付けされたノードにフォールバックできます。インストール経路は&lt;code>bun install -g routstrd&lt;/code>、続いてウォレットとリレー設定のための&lt;code>routstrd onboard&lt;/code>です。&lt;/p>
&lt;p>より広範な&lt;a href="https://github.com/routstr">Routstrオーガニゼーション&lt;/a>は、デーモン、Pythonノードソフトウェア(&lt;code>routstr-core&lt;/code>)、チャットUI、およびプロトコル仕様を保守しています。ユーザーにとって、ローカルポートが安定したインターフェースとなります。既存のOpenAI互換ツールがRoutstrdを指す一方、デーモンがプロバイダ発見、ルーティング、支払いを処理します。&lt;/p>
&lt;h2 id="タグ付きリリース">タグ付きリリース&lt;/h2>
&lt;h3 id="ngit-v242はpr提出向けのgraspサーバ検出を修正">ngit v2.4.2はPR提出向けのGRASPサーバ検出を修正&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a>は、リポジトリのGRASPサーバ検出の修正を伴う&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a>を出荷し、提案がPR kindを使用する際のPR提出をハッピーパスに保ちます。ngitは現在、大規模でない限りほとんどの変更に対してデフォルトで&lt;code>Patch&lt;/code> kindを使用することに注意してください。メンテナはデフォルトの変更に向けて作業中です。週の前半に出荷された&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>は、オープンPRのgitデータがリポジトリの指定されたgitサーバで利用できない場合のクローンおよびフェッチ中の&lt;code>fatal&lt;/code>エラーを修正しました。&lt;/p>
&lt;h3 id="wisp-v100がベータから卒業">Wisp v1.0.0がベータから卒業&lt;/h3>
&lt;p>リレールーティング、プライバシー、および小さなネイティブUIに焦点を当てたKotlinとJetpack ComposeのAndroidクライアントである&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>は、&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a>を出荷し、続いて&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>を出荷しました。1.0.0のマイルストーンは、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-22-newsletter/#wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Newsletter #19&lt;/a>で扱ったNormie Modeの法定通貨表示切り替え、For Youフィード、&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>リレーベースのグループ設定、および&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>リレーリスト配信をまとめたものです。v1.0.2はAndroid 15の16 KBページサイズサポート、ドロワーシートのQRスキャンタブ、インラインビデオコントロール用のダウンロードボタン、通知リストのパフォーマンス修正を追加します。&lt;/p>
&lt;h3 id="grain-v052はwebsocketロックアップを修正v053は仕上げを継続">grain v0.5.2はWebSocketロックアップを修正、v0.5.3は仕上げを継続&lt;/h3>
&lt;p>0ceanSlim製のGoリレーである&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>は、v0.5.0で導入されたWebSocketロックアップに対する重要なホットフィックスとして&lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a>をカットし、続いて&lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>を出荷しました。ロックアップは特定のフィルタおよびWebSocketパスの下で接続をハングさせていたため、v0.5.1またはv0.5.0のオペレータはアップグレードすべきです。grainはすべての主要なNostrイベントカテゴリを追跡し、NIP-11リレー情報を公開し、ホワイトリスト/ブラックリストのアクセス制御、kindごとのレート制限、ウェブダッシュボード、およびv0.5.xラインで追加されたGoクライアントライブラリをサポートします。&lt;/p>
&lt;h3 id="mostro-core-v0100とmostro-mobile-v125がnip-59デュアルキーgift-wrapを採用">Mostro Core v0.10.0とMostro Mobile v1.2.5がNIP-59デュアルキーgift wrapを採用&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0">Mostro Core v0.10.0&lt;/a>は、識別鍵とトレード鍵を分割した新しい&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift-wrapモジュールを追加します。以前のトランスポートコードは、トレードidentityとgift wrappingの両方に単一のidentity鍵を使用していました。v0.10.0は安定したトレードidentityをエフェメラルなwrapping鍵から分離するため、トレードプロトコルに必要なidentityを保ちながら、各トレードで新鮮なトランスポート鍵を使用できます。デーモン統合は&lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>経由でランディングし、&lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a>は同じ移行をコマンドラインクライアントにもたらします。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ、Nostrに関する毎週のガイドです。&lt;/p>
&lt;p>&lt;strong>今週:&lt;/strong> &lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#gitworkshop-ships-in-browser-pr-merge-repository-following-and-a-bandwidth-efficient-git-explorer">GitWorkshop&lt;/a>はgit-over-Nostrを、ブラウザ内PRマージボタン、Starsとリポジトリフォロー、帯域効率の良いgitエクスプローラ、kind &lt;code>1111&lt;/code>のインラインレビューコメント、暗号化されたマルチデバイス通知状態を備えた、より充実したコードレビューの場へと発展させました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#routstrd-launches-a-local-router-for-inference-over-nostr">Routstrd&lt;/a>はNostrのkind &lt;code>38421&lt;/code>アナウンスを介してモデルプロバイダを発見し、Cashuで支払いを行うローカルデーモンをローンチしました。タグ付けされたリリースには&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#ngit-v242-fixes-grasp-relay-detection-for-pr-submissions">ngit v2.4.2&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#wisp-v100-graduates-from-beta">Wisp v1.0.0&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#grain-v052-fixes-websocket-lockup-v053-continues-polish">grain v0.5.2およびv0.5.3&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#mostro-core-v0100-and-mostro-mobile-v125-adopt-nip-59-dual-key-gift-wrap">Mostro Core v0.10.0とMostro Mobile v1.2.5&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#marmot-ts-v050-ships-addressable-keypackages">marmot-ts v0.5.0&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#cruxcoach-v013-ships-encrypted-climbing-data-backup-with-nostr-and-blossom">CruxCoach v0.1.3&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#meiso-v130-adds-subtasks-blossom-attachments-and-nip-89-tagging">Meiso v1.3.0&lt;/a>、NoorNote、Nostria、Nostr Calendar、nos2x-fox、applesauce、nostr-double-ratchetなどが含まれます。未リリースの変更は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#amethyst-advances-nests-audio-rooms-with-moq-interop-testing">Amethyst Nests&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#nostream-adds-nip-65-relay-list-support-and-nwc-payments">nostreamのNIP-65およびNWC&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#fips-adds-nostr-based-udpnat-bootstrap">FIPSのNostrベースudp:natブートストラップ&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#strfry-adds-per-connection-observability">strfryの可観測性&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#sprout-adds-owner-attestation-and-multi-workspace-support">Sproutオーナ証明&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#zap-cooking-adds-recipe-packs-delete-requests-and-bunker-login">Zap Cookingレシピパック&lt;/a>を扱います。新規追跡プロジェクトには&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#nostrord-a-nip-29-client-built-with-kotlin-multiplatform-and-wasm">Nostrord&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#clave-brings-nip-46-remote-signing-to-ios-via-apns">Clave&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#treasures-decentralized-geocaching-on-nostr">Treasures&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#smesh-v051-self-hosted-nostr-relay-client-and-signer-in-one-stack">smesh&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">Surveil&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#smaller-additions-fundstr-nod-city-deploy-nsite-to-pages-and-null-nostr">Fundstr、Nod City、deploy-nsite-to-pages、null&amp;ndash;nostr&lt;/a>が含まれます。月末の振り返りは2021年から2026年までのNostrの4月を扱います。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="gitworkshopがブラウザ内prマージリポジトリフォロー帯域効率の良いgitエクスプローラを出荷">GitWorkshopがブラウザ内PRマージ、リポジトリフォロー、帯域効率の良いgitエクスプローラを出荷&lt;/h3>
&lt;p>Dan Conwayによる&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> git-over-Nostr向けのウェブベース共同作業レイヤーである&lt;a href="https://gitworkshop.dev">GitWorkshop&lt;/a>は、今週メジャーリリースを出荷しました。これにより、コメント、リポジトリリスト、通知を署名済みNostrイベント内に保ちながら、開発者がGitHubやGitLabに期待するワークフローに大きく近づきました。&lt;/p>
&lt;p>目玉の追加は、GRASPリレーを使用するリポジトリ向けの長らく待ち望まれていたブラウザ内PRマージボタンです。このリリースでは、リアクションと&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>リストの上に構築されたStarsおよびリポジトリフォロー機能も追加され、ピン留めされたリポジトリセットは順序付き&lt;code>a&lt;/code>タグを介してkind &lt;code>30617&lt;/code>のリポジトリアナウンスを指すkind &lt;code>10617&lt;/code>イベントとして発行されます。プロフィールページには、ポータブルなリポジトリリストを表示できるようになりました。&lt;/p>
&lt;p>帯域効率の良いgitエクスプローラが、これまでのブラウザ内の浅いクローンに取って代わりました。新しいエクスプローラはGRASPが構築されている基盤のgitクライアント/サーバプロトコルに依存しているため、ブラウザに完全なパックの取得を強制することなく大規模なリポジトリを扱えます。検索はユーザー名とリポジトリメタデータを対象とし、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>と、ネットワーク全体でリポジトリアナウンスを発見・同期する&lt;code>ngit-indexer&lt;/code>リレー実装によって動作します。ブラウザ内のリポジトリ作成ワークフローが、発見とオンボーディングの経路を完成させます。&lt;/p>
&lt;p>レビューツールは、Files Changedタブ、パッチごとの差分ビューア、および一連の実験的な新しいプリミティブを中心に再構築されています。インラインコードレビューコメントはkind &lt;code>1111&lt;/code>を使用し、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/22.md">NIP-22&lt;/a>の上に構築されています。各コメントはファイルパス(&lt;code>f&lt;/code>タグ)、コミットSHA(&lt;code>c&lt;/code>タグ)、選択された行範囲(&lt;code>line&lt;/code>タグ)を指すため、クライアントは差分内の正しい位置にコメントを表示できます。実験的プリミティブの第二階層は、作成者およびリポジトリメンテナによる権限付けが行われ、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/32.md">NIP-32&lt;/a>ラベルを使用します。IssueまたはPRの件名を提出後にリネーム、提出後にハッシュタグを追加、編集可能な要約のためにバージョン管理されたCoverNoteをPRまたはIssueの先頭にピン留め、インラインコード議論のサブスレッドを解決済みとしてマークすることができます。判定イベントと&lt;code>suggestion&lt;/code>ブロックは草案のままで、まだ出荷されていません。&lt;/p>
&lt;p>デバイス間の通知状態もNostrを介して同期されますが、プライバシー保護のひねりが加えられています。GitWorkshopは専用の通知キーペアを生成し、そのnsecを暗号化し、kind &lt;code>30078&lt;/code>イベント内に格納します。通知nsecは実際の通知状態イベントに署名します。この間接化により、ユーザーのメイン署名者が読み取りやアーカイブ操作ごとの頻繁な暗号化・復号リクエストでスパムされることが防がれ、外部の観察者がユーザーが通知状態を触った時を容易に見ることができなくなります。ユーザーはデバイス間で読み取り状態とアーカイブ状態を同期でき、リレーは暗号化されたblobだけを見ます。&lt;/p>
&lt;h3 id="routstrdがnostr経由推論のローカルルータをローンチ">RoutstrdがNostr経由推論のローカルルータをローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/routstr/routstrd">Routstrd&lt;/a>は、ローカルツールにOpenAI互換のエンドポイントを提供し、各リクエストを競合する&lt;a href="https://routstr.com">Routstr&lt;/a>プロバイダにルーティングする新しいTypeScriptデーモンです。デーモンはRoutstrのRIP-02仕様で定義されたNostrのkind &lt;code>38421&lt;/code>アナウンスを介してプロバイダを発見します。次に、RIP-06に基づいて価格、信頼、最近のパフォーマンスでプロバイダをスコアリングし、各リクエストを現在最良の選択肢に送信します。&lt;/p>
&lt;p>支払いは、cocodによって管理されLightningで資金供給されるローカルCashuウォレットを介して行われます。これにより、Nostrリレーを通じてプロバイダ発見を公開かつパーミッションレスに保ちながら、クライアントにsats建ての決済経路を提供します。セッション中にプロバイダが失敗した場合、Routstrdは次にランク付けされたノードにフォールバックできます。インストール経路は&lt;code>bun install -g routstrd&lt;/code>、続いてウォレットとリレー設定のための&lt;code>routstrd onboard&lt;/code>です。&lt;/p>
&lt;p>より広範な&lt;a href="https://github.com/routstr">Routstrオーガニゼーション&lt;/a>は、デーモン、Pythonノードソフトウェア(&lt;code>routstr-core&lt;/code>)、チャットUI、およびプロトコル仕様を保守しています。ユーザーにとって、ローカルポートが安定したインターフェースとなります。既存のOpenAI互換ツールがRoutstrdを指す一方、デーモンがプロバイダ発見、ルーティング、支払いを処理します。&lt;/p>
&lt;h2 id="タグ付きリリース">タグ付きリリース&lt;/h2>
&lt;h3 id="ngit-v242はpr提出向けのgraspサーバ検出を修正">ngit v2.4.2はPR提出向けのGRASPサーバ検出を修正&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/DanConwayDev/ngit-cli">ngit&lt;/a>は、リポジトリのGRASPサーバ検出の修正を伴う&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.2">v2.4.2&lt;/a>を出荷し、提案がPR kindを使用する際のPR提出をハッピーパスに保ちます。ngitは現在、大規模でない限りほとんどの変更に対してデフォルトで&lt;code>Patch&lt;/code> kindを使用することに注意してください。メンテナはデフォルトの変更に向けて作業中です。週の前半に出荷された&lt;a href="https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.4.1">v2.4.1&lt;/a>は、オープンPRのgitデータがリポジトリの指定されたgitサーバで利用できない場合のクローンおよびフェッチ中の&lt;code>fatal&lt;/code>エラーを修正しました。&lt;/p>
&lt;h3 id="wisp-v100がベータから卒業">Wisp v1.0.0がベータから卒業&lt;/h3>
&lt;p>リレールーティング、プライバシー、および小さなネイティブUIに焦点を当てたKotlinとJetpack ComposeのAndroidクライアントである&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>は、&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.0">v1.0.0&lt;/a>を出荷し、続いて&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v1.0.2">v1.0.2&lt;/a>を出荷しました。1.0.0のマイルストーンは、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-22-newsletter/#wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Newsletter #19&lt;/a>で扱ったNormie Modeの法定通貨表示切り替え、For Youフィード、&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>リレーベースのグループ設定、および&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>リレーリスト配信をまとめたものです。v1.0.2はAndroid 15の16 KBページサイズサポート、ドロワーシートのQRスキャンタブ、インラインビデオコントロール用のダウンロードボタン、通知リストのパフォーマンス修正を追加します。&lt;/p>
&lt;h3 id="grain-v052はwebsocketロックアップを修正v053は仕上げを継続">grain v0.5.2はWebSocketロックアップを修正、v0.5.3は仕上げを継続&lt;/h3>
&lt;p>0ceanSlim製のGoリレーである&lt;a href="https://github.com/0ceanSlim/grain">grain&lt;/a>は、v0.5.0で導入されたWebSocketロックアップに対する重要なホットフィックスとして&lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.2">v0.5.2&lt;/a>をカットし、続いて&lt;a href="https://github.com/0ceanSlim/grain/releases/tag/v0.5.3">v0.5.3&lt;/a>を出荷しました。ロックアップは特定のフィルタおよびWebSocketパスの下で接続をハングさせていたため、v0.5.1またはv0.5.0のオペレータはアップグレードすべきです。grainはすべての主要なNostrイベントカテゴリを追跡し、NIP-11リレー情報を公開し、ホワイトリスト/ブラックリストのアクセス制御、kindごとのレート制限、ウェブダッシュボード、およびv0.5.xラインで追加されたGoクライアントライブラリをサポートします。&lt;/p>
&lt;h3 id="mostro-core-v0100とmostro-mobile-v125がnip-59デュアルキーgift-wrapを採用">Mostro Core v0.10.0とMostro Mobile v1.2.5がNIP-59デュアルキーgift wrapを採用&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro-core/releases/tag/v0.10.0">Mostro Core v0.10.0&lt;/a>は、識別鍵とトレード鍵を分割した新しい&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift-wrapモジュールを追加します。以前のトランスポートコードは、トレードidentityとgift wrappingの両方に単一のidentity鍵を使用していました。v0.10.0は安定したトレードidentityをエフェメラルなwrapping鍵から分離するため、トレードプロトコルに必要なidentityを保ちながら、各トレードで新鮮なトランスポート鍵を使用できます。デーモン統合は&lt;a href="https://github.com/MostroP2P/mostro/pull/718">Mostro PR #718&lt;/a>経由でランディングし、&lt;a href="https://github.com/MostroP2P/mostro-cli/pull/165">mostro-cli PR #165&lt;/a>は同じ移行をコマンドラインクライアントにもたらします。&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.5">Mostro Mobile v1.2.5&lt;/a>はプロトコル作業と並行して出荷されました。&lt;a href="https://github.com/MostroP2P/mobile/pull/581">PR #581&lt;/a>は、テイカーがメイカーのアカウント年齢によってオファーをフィルタリングできるようにし、ユーザーがオーダーブック内の新しく作成されたメイカーアカウントを避ける方法を提供します。&lt;a href="https://github.com/MostroP2P/mobile/pull/580">PR #580&lt;/a>はキャンセルされたオーダー詳細の役割ラベルを修正し、&lt;a href="https://github.com/MostroP2P/mobile/pull/576">PR #576&lt;/a>は協調的キャンセルボタンを整理します。&lt;/p>
&lt;h3 id="marmot-ts-v050がアドレス可能keypackagesを出荷">marmot-ts v0.5.0がアドレス可能KeyPackagesを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>は、TypeScript版&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>クライアントの最初の計画された破壊的変更リリースである&lt;a href="https://github.com/marmot-protocol/marmot-ts/releases/tag/%40internet-privacy%2Fmarmot-ts%400.5.0">@internet-privacy/marmot-ts@0.5.0&lt;/a>をカットしました。&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/68">PR #68&lt;/a>はアドレス可能KeyPackageサポートを追加します。&lt;code>KeyPackageManager&lt;/code>は今、レガシーのkind &lt;code>443&lt;/code>と新しいkind &lt;code>30443&lt;/code>の両方のKeyPackageイベントを扱えます。このリリースは&lt;code>KeyPackageStore&lt;/code>とグループ状態ストレージクラスを削除し、それらを&lt;code>KeyPackageManager&lt;/code>と&lt;code>MarmotGroup&lt;/code>に渡される汎用キーバリューストアに置き換えます。また、招待とグループ管理を&lt;code>MarmotClient.invites&lt;/code>と&lt;code>MarmotClient.groups&lt;/code>に移動するため、直接埋め込むユーザーはアップグレード前にコンストラクタとストレージの変更が必要です。&lt;/p>
&lt;h3 id="cruxcoach-v013がnostrとblossomを使った暗号化クライミングデータバックアップを出荷">CruxCoach v0.1.3がNostrとBlossomを使った暗号化クライミングデータバックアップを出荷&lt;/h3>
&lt;p>&lt;a href="https://codeberg.org/CruxCoach/CruxCoach">CruxCoach&lt;/a>は、Kilter Boardクライマー向けの新しいオープンソースAndroidアプリです。Kilter Boardは、Bluetooth経由でホールドが光ってルートを表示する対話型トレーニングウォールです。アプリは4月14日にローンチし、4月26日に&lt;a href="https://codeberg.org/CruxCoach/CruxCoach/releases/tag/v0.1.3">v0.1.3&lt;/a>に到達しました。&lt;/p>
&lt;p>v0.1.3はオプトイン暗号化クラウドバックアップを追加します。ユーザーのCruxCoachアカウントはNostrキーペアであり、秘密鍵はローカルバックアップ暗号化鍵への入力を兼ねます。アプリはクライミングデータをオンデバイスで暗号化し、暗号文をBlossomストレージサーバ(&lt;code>blossom.primal.net&lt;/code>および&lt;code>nostr.download&lt;/code>)にミラーリングします。リモート削除アクションはBlossomクリーンアップパスを呼び出します。バックアップに加えて、CruxCoachはAmberサポート用の&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名、アプリ内開発者連絡用の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDM、リレー発見用の&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>リレーリスト、およびNostr配管用のVitor Pamplonaの&lt;a href="https://github.com/vitorpamplona/quartz">Quartz&lt;/a>ライブラリを使用します。ユーザーはZapstoreまたは直接Codeberg APKからインストールできます。&lt;/p>
&lt;h3 id="meiso-v130がサブタスクblossom添付nip-89タグ付けを追加">Meiso v1.3.0がサブタスク、Blossom添付、NIP-89タグ付けを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/higedamc/meiso">Meiso&lt;/a>は、タスクを&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>で暗号化されたkind &lt;code>30078&lt;/code>アプリケーションデータとしてNostrリレーに格納する、Android向けのミニマリストなFlutterタスクマネージャです。4月6日にリリースされた&lt;a href="https://github.com/higedamc/meiso/releases/tag/v1.3.0">v1.3.0&lt;/a>は、親子関係を持つサブタスク、ブロック/被ブロック/関連/重複のタスクリンク、Blossomおよび&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a> HTTPファイルアップロードエンドポイントを介した画像添付、発行されたイベント上の&lt;a href="https://github.com/nostr-protocol/nips/blob/master/89.md">NIP-89&lt;/a>推奨アプリケーション&lt;code>client&lt;/code>タグ、およびGoコマンドライン同期ツールを追加します。v1.3.0はまた、コールドスタートリレー動作とAmberクライアント再利用を修正します。&lt;/p>
&lt;h3 id="noornotenostrianostr-calendarnos2x-foxおよびライブラリリリース">NoorNote、Nostria、Nostr Calendar、nos2x-fox、およびライブラリリリース&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>は&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.7">v0.8.7&lt;/a>、&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.8">v0.8.8&lt;/a>、&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.9">v0.8.9&lt;/a>を発行しました。これらのリリースは引用リポストでの画像とビデオのクリック処理を修正し、長文記事画像のライトボックスサポートを追加し、空白のデスクトップ起動画面を修正します。&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>は&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.29">v3.1.29&lt;/a>、&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.30">v3.1.30&lt;/a>、&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.31">v3.1.31&lt;/a>をカットし、記事エディタの画像圧縮、ウォレットのUSDトグル、プロモーションカード制御、PDFサポート、およびモバイルレイアウトの磨き上げを追加しました。&lt;/p>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.1">Nostr Calendar v1.4.1&lt;/a>は、カレンダーイベント発行をカレンダーリスト管理から切り離し、招待追跡を修正します。&lt;a href="https://github.com/diegogurpegui/nos2x-fox/releases/tag/v1.19.0">nos2x-fox v1.19.0&lt;/a>は、Firefox NIP-07ブラウザ署名の許可にカスタム認可時間枠を追加します。&lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.97">nostr-double-ratchet v0.0.97&lt;/a>は新しいバイナリを出荷します。&lt;a href="https://github.com/nostr-wot/nostr-wot-sdk/releases/tag/nostr-wot-sdk%400.9.0">nostr-wot-sdk 0.9.0&lt;/a>はデフォルトで&lt;code>NostrSessionProvider&lt;/code>をマウントし、&lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/535">nostr-tools PR #535&lt;/a>はNIP-47ウォレットコネクト文字列のマルチリレー解析サポートを追加します。&lt;/p>
&lt;p>週の後半に、&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.1.0-pre1">Amber v6.1.0-pre1&lt;/a>は、より良いconnect-new-appレイアウト、signer-dialog修正、通知許可処理の改善、およびリファクタリングされたアカウント選択を伴うプレリリースを出荷しました。&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.14">nostr-vpn v0.3.14&lt;/a>はmacOS Apple Silicon、Linux、Windowsの成果物を含む新しいビルドをカットしました。&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.8">Bitcredit Core v0.5.7-hotfix-1およびv0.5.8&lt;/a>は、orphaned-blockバリデーション問題への連続的な修正を出荷しました。&lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">Surveil v0.1.6&lt;/a>はモバイルUIの磨き上げと刷新されたAboutページをもたらしました。プロジェクト自体は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-29-newsletter/#surveil-a-magic-the-gathering-deck-builder-on-nostr">以下&lt;/a>で紹介します。&lt;/p>
&lt;h3 id="applesauce-600がレガシーイベントファクトリを削除しblossom-uri解析を追加">applesauce 6.0.0がレガシーイベントファクトリを削除し、Blossom URI解析を追加&lt;/h3>
&lt;p>hzrd149のTypeScript Nostrツールキットである&lt;a href="https://github.com/hzrd149/applesauce">applesauce&lt;/a>は、モノレポ全体で6.0.0リリーストレインを出荷しました。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%406.0.0">applesauce-core@6.0.0&lt;/a>はレガシーの&lt;code>EventFactory&lt;/code>クラスと古い&lt;code>buildEvent&lt;/code>、&lt;code>modifyEvent&lt;/code>、&lt;code>createEvent&lt;/code>ヘルパーを削除し、呼び出し元を&lt;code>applesauce-core/factories&lt;/code>と&lt;code>applesauce-common&lt;/code>内の新しいファクトリクラスに移行させます。また、リンク解析へのIPアドレスとlocalhost処理、BUD-10 Blossom URI正規表現、および&lt;code>timeoutWithIgnore&lt;/code>、&lt;code>combineLatestBy&lt;/code>、&lt;code>combineLatestByIndex&lt;/code>、&lt;code>combineLatestByKey&lt;/code>などの新しいobservableヘルパーを追加します。&lt;/p>
&lt;p>パッケージレベルのリリースがNostr固有の部分を埋めます。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-content%406.0.0">applesauce-content@6.0.0&lt;/a>はテキストとMarkdown向けBUD-10 Blossom URIノードを追加し、レンダラにコンテンツ内のBlossom参照を解析するファーストクラスの方法を提供します。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-actions%406.0.0">applesauce-actions@6.0.0&lt;/a>はリレー、ユーザー、アイテムをカバーするNIP-51リスト向けの基底ファクトリクラスを追加し、リスト構築をよりad hocでないものにします。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet-connect%406.0.0">applesauce-wallet-connect@6.0.0&lt;/a>は&lt;code>WalletConnect.connectURI&lt;/code>を公開するため、アプリは既存のNIP-47ウォレットコネクトURIに直接アクセスできます。&lt;/p>
&lt;h2 id="未リリースの変更">未リリースの変更&lt;/h2>
&lt;h3 id="amethystがmoq相互運用テストでnestsオーディオルームを推進">AmethystがMoQ相互運用テストでNestsオーディオルームを推進&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は今週、先週の&lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a>オーディオルームスタックの上に構築された、いくつかのNestsフォーカスなPRをマージしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2622">PR #2622&lt;/a>は、Amethyst MoQクライアントをリファレンスウェブ実装に対して動作させるクロスクライアント相互運用ハーネスを追加します。目標は、Android/ブラウザのワイヤレベルの分岐をユーザーが遭遇する前に捕捉することです。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2625">PR #2625&lt;/a>はピクチャインピクチャのスピーカーフォーカスと接続状態を改善し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2620">PR #2620&lt;/a>は参加者グリッド内のアバター、ミュート状態、発話状態を明確化します。週の後半に、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2634">PR #2634&lt;/a>がフルスクリーンNestビューでのIMEパディングとウィンドウインセットを修正し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2635">PR #2635&lt;/a>がNestsフィードにプレゼンスベースの新鮮さフィルタリングを追加しました。別途、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2627">PR #2627&lt;/a>がAmethystのカスタムC secp256k1実装を削除し、&lt;code>libschnorr256k1&lt;/code>に移行しました。&lt;/p>
&lt;h3 id="nostreamがnip-65リレーリストサポートとnwc決済を追加">nostreamがNIP-65リレーリストサポートとNWC決済を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>は、先週の53 PRリレースプリントの後、3つの注目すべきPRをマージしました。&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>リレーリストメタデータサポートが&lt;a href="https://github.com/Cameri/nostream/pull/585">PR #585&lt;/a>でランディングし、リレーがkind &lt;code>10002&lt;/code>リレーリストイベントをインデックスして提供できるようになります。Nostr Wallet Connect決済プロセッサが&lt;a href="https://github.com/Cameri/nostream/pull/539">PR #539&lt;/a>で続き、pay-to-relay経路を追加します。接続クリーンアップは&lt;a href="https://github.com/Cameri/nostream/pull/438">PR #438&lt;/a>で改善され、アクティブなサブスクリプションを持つソケットが刈り取られず、長期間稼働するインスタンスでサブスクリプション数がドリフトするデッドコネクションのバグを修正します。&lt;/p>
&lt;h3 id="fipsがnostrベースudpnatブートストラップを追加">FIPSがNostrベースudp:natブートストラップを追加&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a>および&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>で以前扱ったFree Internetworking Peering Systemである&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>は、Nostrベースの&lt;code>udp:nat&lt;/code>ブートストラップを伴う&lt;a href="https://github.com/jmcorgan/fips/pull/53">PR #53&lt;/a>をマージしました。この変更により、ノードはNostrアドバートを発行し、暗号化されたofferおよびanswerシグナリングを交換し、STUNを介して公開アドレスを発見し、UDPホールパンチングを実行し、パンチされたソケットを通常のFIPSトランスポートスタックに引き渡すことができます。実装は、シグナルペイロードのアイデンティティを実際のNostr送信者にバインドし、設定されたDMおよびアドバートリレーに問い合わせてインボックスルックアップを行い、失敗した採用トラバーサルハンドオフをロールバックして、孤立したUDPトランスポートが生き続けないようにします。これは正規のリポジトリ&lt;code>jmcorgan/fips&lt;/code>で追跡すべきNostrアナウンスおよびNATトラバーサル作業です。&lt;/p>
&lt;h3 id="strfryが接続ごとの可観測性を追加">strfryが接続ごとの可観測性を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>は&lt;a href="https://github.com/hoytech/strfry/pull/214">PR #214&lt;/a>をマージし、接続ごとの可観測性とPrometheus経由でエクスポート可能な接続レベルメトリクスを追加しました。&lt;a href="https://github.com/hoytech/strfry/pull/204">PR #204&lt;/a>はPrometheusラベルを正規化し、&lt;a href="https://github.com/hoytech/strfry/pull/215">PR #215&lt;/a>はstrfry上に構築されたNamecoin identityプロジェクトを扱うCommunity Integrationsセクションをドキュメントに追加します。&lt;/p>
&lt;h3 id="sproutがowner-attestationとマルチワークスペースサポートを追加">SproutがOwner Attestationとマルチワークスペースサポートを追加&lt;/h3>
&lt;p>BlockのNostrクライアントである&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>は、NIP-OA (Owner Attestation)を実装する&lt;a href="https://github.com/block/sprout/pull/406">PR #406&lt;/a>をマージしました。この機能は、自律エージェントに特定の人間のpubkeyがそのアクションを認可したという暗号学的証明を与えます。&lt;a href="https://github.com/block/sprout/pull/409">PR #409&lt;/a>はデスクトップアプリにマルチワークスペースサポートを追加し、&lt;a href="https://github.com/block/sprout/pull/411">PR #411&lt;/a>はモバイルcomposeに&lt;code>#channel&lt;/code>オートコンプリートを追加し、&lt;a href="https://github.com/block/sprout/pull/410">PR #410&lt;/a>はアクティブチャネルメッセージをドロップする可能性のあった競合ウィンドウを閉じます。&lt;a href="https://github.com/block/sprout/pull/413">PR #413&lt;/a>はデバイス間の既読状態同期のためのNIP-RSを導入し、フォローアップの&lt;a href="https://github.com/block/sprout/pull/420">PR #420&lt;/a>と&lt;a href="https://github.com/block/sprout/pull/422">PR #422&lt;/a>がその既読状態をモバイルの未読バッジに配線します。&lt;/p>
&lt;h3 id="zap-cookingがレシピパック削除リクエストbunkerログインを追加">Zap Cookingがレシピパック、削除リクエスト、bunkerログインを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>は生産的なレシピ発行作業の一週間をマージしました。ユーザー自身のRecipe Packsに対する&lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a>削除リクエストが&lt;a href="https://github.com/zapcooking/frontend/pull/367">PR #367&lt;/a>でランディングします。発行の信頼性は&lt;a href="https://github.com/zapcooking/frontend/pull/366">PR #366&lt;/a>を通じて改善され、新しいレシピをすべて強制的にgardenリレーに載せ、共有レシピセットのリトライキューを追加します。ワンクリックの著者パック発行が&lt;a href="https://github.com/zapcooking/frontend/pull/365">PR #365&lt;/a>でランディングし、&lt;a href="https://github.com/zapcooking/frontend/pull/331">PR #331&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> bunkerログインサポートを追加します。&lt;/p>
&lt;h3 id="whitenoise-rsがローカルデータベースを暗号化">Whitenoise-rsがローカルデータベースを暗号化&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>は&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/758">PR #758&lt;/a>をマージし、Whitenoiseのオンディスクデータベースに対するSQLCipher暗号化を追加しました。これによりMarmotデーモンスタックの長年のat-restセキュリティギャップが閉じられます。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/775">PR #775&lt;/a>はグループ必須機能を公開し、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/772">PR #772&lt;/a>はグループメディア操作をセッション所有の&lt;code>MediaOps&lt;/code>に移行し、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/773">PR #773&lt;/a>はsession-opsリファクタの一部として&lt;code>SharedServices&lt;/code>ホルダーを抽出します。モバイル側では、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/577">whitenoise PR #577&lt;/a>がAndroidフォアグラウンドサービスのブート自動再起動を有効化し、デバイス再起動後にデーモンが戻らないケースを修正します。&lt;/p>
&lt;h2 id="新規追跡と発見">新規追跡と発見&lt;/h2>
&lt;h3 id="nostrord-kotlin-multiplatformとwasmで構築されたnip-29クライアント">Nostrord: Kotlin MultiplatformとWASMで構築されたNIP-29クライアント&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrord/nostrord">Nostrord&lt;/a>は、Discord代替のユースケースをターゲットとする新しい&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループチャットクライアントです。グループはリレー強制のメンバーシップ、ロール、モデレーション、アクセス制御を持つNostrリレー上に存在するため、グループ状態は選択されたNIP-29リレーによってホストされます。クライアント開発者はそれらのグループのために別個のアプリケーションデータベースを制御しません。ウェブアプリは&lt;a href="https://web.nostrord.com">web.nostrord.com&lt;/a>で稼働し、WebAssemblyにコンパイルするKotlin Multiplatformで構築されており、ネイティブのAndroid、iOS、デスクトップビルドが開発中です。Nostrordは&lt;a href="https://opensats.org">OpenSats&lt;/a>助成金の受領者であり、Flotilla、Chachi、0xChatが使用するのと同じNIP-29リレーと相互運用します。&lt;/p>
&lt;h3 id="claveがapns経由でnip-46リモート署名をiosにもたらす">ClaveがAPNs経由でNIP-46リモート署名をiOSにもたらす&lt;/h3>
&lt;p>&lt;a href="https://github.com/DocNR/clave">Clave&lt;/a>はベータ版のiOSリモート署名者で、アプリが開かれていないときにNostrイベントに署名します。秘密鍵はiPhone Keychainに残ります。クライアントが&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名リクエストを送信すると、サーバサイドのプロキシがApple Push Notificationを配信し、Notification Service Extensionを最大30秒間起こします。その拡張は&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化でリクエストを復号し、Keychainの鍵で署名し、レスポンスを発行します。デバイストークン登録はトークンハイジャックを防ぐために&lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a> HTTP Authを使用します。Claveは&lt;code>bunker://&lt;/code>と&lt;code>nostrconnect://&lt;/code>ペアリング、クライアントごとの信頼レベル、kindごとのオーバーライドをサポートし、Nosturとnastrudelでテスト済みです。&lt;/p>
&lt;h3 id="treasures-nostr上の分散型ジオキャッシング">Treasures: Nostr上の分散型ジオキャッシング&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/treasures">Treasures&lt;/a>は、キャッシュと発見が署名済みNostrイベントであるジオキャッシングプラットフォームです。キャッシュ作成者はGPS座標を持つkind &lt;code>37516&lt;/code>アドレス可能イベントを発行します。発見者は物理キャッシュに添付されたQRコードをスキャンして発見を記録します。コードは作成者pubkey、キャッシュ&lt;code>d&lt;/code>タグ、および物理訪問の証明として使用される検証秘密鍵をエンコードします。&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> zapは発見者からキャッシュ作成者に流れることができ、ライブアプリは&lt;a href="https://treasures.to">treasures.to&lt;/a>にあります。&lt;/p>
&lt;h3 id="smesh-v051-セルフホストのnostrリレークライアントおよび署名者を1つのスタックに">smesh v0.5.1: セルフホストのNostrリレー、クライアント、および署名者を1つのスタックに&lt;/h3>
&lt;p>&lt;a href="https://git.smesh.lol/smesh/smesh">smesh&lt;/a>は、mlekuによってGoおよびTinyGoから派生したカスタム言語Moxieで書かれたセルフホストのNostrスタックです。このスタックは、HTTP、WebSocket、AUTH、検索、およびBlossomサポート付きのネイティブリレーバイナリ、ESモジュールにコンパイルされたウェブクライアント&lt;code>sm3sh&lt;/code>、およびNIP-07ブラウザ署名とNIP-04およびNIP-44暗号化サポートを備えたブラウザ署名者拡張機能を出荷します。最近の作業には、v0.5.0でのMLS (RFC 9420) グループメッセージング、リレー同期のためのnegentropyセット調整、およびWeb of Trustグラフエンジンが含まれます。コードはmlekuのセルフホストforge &lt;code>git.smesh.lol&lt;/code>にあり、彼自身の&lt;code>git-web&lt;/code>ツールで構築されています。関連する&lt;a href="https://git.smesh.lol/smesh/gitea-nostr-auth">gitea-nostr-auth&lt;/a>リポジトリは、Gitea向けのOAuth2/OIDCブリッジです。ユーザーはNIP-07ブラウザ署名者で認証し、ブリッジはNIP-65を介してリレーを発見し、GiteaはOIDC identity claimsを標準的に受け取ります。&lt;/p>
&lt;h3 id="surveil-nostr上のmagic-the-gatheringデッキビルダー">Surveil: Nostr上のMagic: The Gatheringデッキビルダー&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/surveil">Surveil&lt;/a>は、Magic: The Gatheringプレイヤー向けのNostrクライアントで、ユーザーはカードを検索し、デッキを構築し、オンデバイスML Kit OCRでAndroid上の紙のカードをスキャンし、ネットワーク全体でデッキを共有できます。デッキはkind &lt;code>37381&lt;/code>アドレス可能イベントとして発行され、デッキイベント仕様はプロジェクトの&lt;code>NIP.md&lt;/code>に文書化されています。ソーシャルレイヤーは標準的なNostrプリミティブから構築されています。各デッキにスコープされたNIP-22 (kind &lt;code>1111&lt;/code>) スレッド化コメント、NIP-25 (kind &lt;code>7&lt;/code>) リアクション、プレイヤーホーム向けの&lt;a href="https://github.com/nostr-protocol/nips/blob/master/78.md">NIP-78&lt;/a> (kind &lt;code>30078&lt;/code>) プロフィールデータ、kind &lt;code>3&lt;/code>フォローフィード、および元のデッキに戻る&lt;code>a&lt;/code>タグを持つフォークです。&lt;a href="https://gitlab.com/chad.curtis/surveil/-/tags/v0.1.6">v0.1.6&lt;/a>は今週、モバイルUIの磨き上げ、ライフカウンター改善、刷新されたAboutページ、デッキヒーローバナーのリレーピルとともに出荷されました。ウェブアプリは静的HTMLが提供されるあらゆる場所で稼働し、Androidビルドは&lt;a href="https://zapstore.dev">Zapstore&lt;/a>を介して出荷され、kind &lt;code>37381&lt;/code>イベントは&lt;a href="https://about.ditto.pub/reference">Ditto&lt;/a>によってもMagicデッキとしてネイティブにインデックスされます。リポジトリはGitLabの&lt;a href="https://gitlab.com/chad.curtis/surveil">chad.curtis/surveil&lt;/a>にあります。&lt;/p>
&lt;h3 id="小さな追加-fundstrnod-citydeploy-nsite-to-pagesnull--nostr">小さな追加: Fundstr、Nod City、deploy-nsite-to-pages、null&amp;ndash;nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/ritty65/Fundstr">Fundstr&lt;/a>は、一度限りおよび定期的な誓約のためのCashu ecashを使用したNostr上のクリエイター資金調達プラットフォームで、クリエイターティア定義とNostr DMを備えます。&lt;a href="https://nod.city">Nod City&lt;/a>は、レビューが署名済みNostrイベントであり、レビュアーがzapを受け取ることができるBitcoinサービスレビューサイトです。公開ソースリポジトリは見つかりませんでした。&lt;a href="https://github.com/Origami74/deploy-nsite-to-pages">deploy-nsite-to-pages&lt;/a>は、&lt;code>nsyte download&lt;/code>を使用してnsiteをGitHub Pagesにミラーリングし、ルートkind &lt;code>15128&lt;/code>および名前付きkind &lt;code>35128&lt;/code> nsiteをサポートするGitHub Actionです。今週のNIP-34データでも発見された&lt;a href="https://github.com/tami1A84/null--nostr">null&amp;ndash;nostr&lt;/a>は、最近のOpenSatsウェーブでNurunuruとして扱われたクライアントです。MLSグループメッセージング、Amber、NIP-50検索、NIP-70保護投稿、ProofModeバッジ、およびZapstore配布をサポートします。&lt;/p>
&lt;p>FIPSはCompassにとって新しいプロジェクトではありません。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking">Newsletter #6&lt;/a>および&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#fips-v020-ships-tor-transport-reproducible-builds-and-sidecar-examples">Newsletter #10&lt;/a>で扱いました。データベースは今、正規のリポジトリである&lt;a href="https://github.com/jmcorgan/fips">jmcorgan/fips&lt;/a>を指しており、今週のNIP-34発見でも&lt;code>fips&lt;/code>や&lt;code>awesome-fips&lt;/code>のような関連するgit-over-Nostrミラーが表面化しました。&lt;/p>
&lt;h2 id="プロトコル作業">プロトコル作業&lt;/h2>
&lt;h3 id="nipアップデート">NIPアップデート&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>における最近の提案と議論:&lt;/p>
&lt;p>&lt;strong>今週マージされたもの:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove unused refs tag extension&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a>): 定義されていたが使用されていなかった&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>の&lt;code>refs&lt;/code>タグ拡張を削除します。このクリーンアップは、git-over-Nostrツールの実装曖昧性を減らします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-34 git repositories: remove incorrect NIP-09 claim&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>): &lt;a href="https://github.com/nostr-protocol/nips/blob/master/09.md">NIP-09&lt;/a>削除イベントがリポジトリ状態をリセットできるという誤った主張を削除します。NIP-09削除はクライアント側のイベント削除リクエストであり、リポジトリ状態機械ではありません。この訂正により、NIP-34実装者が削除ヒントを権威あるリポジトリリセットとして扱うことを防ぎます。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンおよび実装主導の作業:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>GitWorkshopのkind &lt;code>1111&lt;/code>インラインレビューコメント&lt;/strong>: インラインコードレビューコメントkindはGitWorkshopの&lt;code>NIP.md&lt;/code>に文書化されており、現在活発に使用されていますが、正式なNIPとしてはまだ提案されていません。判定イベント(kind &lt;code>7321&lt;/code>)と&lt;code>suggestion&lt;/code>ブロックは草案のままで、まだ出荷されていません。GitWorkshopとngitからの実装フィードバックが、これらの形が独立したgit-review NIPになるか、NIP-34の上に層をなすアプリケーションコンベンションのままであるかを決定します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Nostr mail coreとNostrmon&lt;/strong>: 今週、2つの新しいカスタムNIP草案が回覧されました。&lt;a href="https://njump.me/57d11cdf2f9ed73f7f39d6a7a6012ee3d642584ab11887f96a031f7d00fd9697">Nostr mail core&lt;/a>はRFC 2822メールコンテンツ用のkind &lt;code>1301&lt;/code>を提案し、プライベート配信のためにNIP-59でラップされ、NIP-05で解決されたブリッジpubkeyを介してレガシーメールにブリッジされます。&lt;a href="https://njump.me/5e9a8cee19d464f5f0322518ac9ccaf2399c69da6572346b4fb12d36acb17a27">Nostrmon&lt;/a>は、地域、マップ、クリーチャー、NPC、プレイヤーセーブ、およびアイテム用のアドレス可能イベントkindをスケッチします。両方ともカスタム草案のままで、マージされたNIPではありません。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-67: EOSE Completeness Hint&lt;/strong> (&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>): 提案は&lt;code>EOSE&lt;/code>に肯定的な完了マーカーを追加することの反復を続けており、リレーが「保存イベントが完全に配信された」を、リレーが完了主張をしないレガシーの&lt;code>EOSE&lt;/code>ケースと区別できるようにします。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="6つのnostrの4月">6つのNostrの4月&lt;/h2>
&lt;p>4月はNostrの開発経路のきれいな断面図を与えます。2021年のプロトコル文書、2022年の初期クライアント作業、2023年のDamus後のアプリケーション波、2024年のプライベートメッセージングとgit-over-Nostr作業、2025年のBlossomとリレーリストのクリーンアップ、2026年の採用フォーカスのクライアント助成金です。&lt;/p>
&lt;h3 id="2021年4月-nipsリポジトリ以前のプロトコル文書">2021年4月: NIPsリポジトリ以前のプロトコル文書&lt;/h3>
&lt;p>Fiatjafは2020年11月20日に元のNostr記事、&lt;a href="https://fiatjaf.com/nostr.html">&amp;ldquo;Notes and Other Stuff Transmitted by Relays&amp;rdquo;&lt;/a>を発表しました。その最初のテキストには既に、プロトコルを今も定義する核となる形が含まれていました。ユーザーは鍵でイベントに署名し、それらをリレーに発行し、選択したリレーから読み取ります。&lt;a href="https://github.com/nostr-protocol/nostr/commits?since=2021-04-01&amp;amp;until=2021-04-30">&lt;code>nostr-protocol/nostr&lt;/code>コミットログ&lt;/a>は、4月1日から4月30日の間にコミットがないことを示しています。活動はその両側にあります。2021年3月のコミットは初期の「nostwitter」リンクと&lt;code>kind&lt;/code>フィルタを追加し、2021年5月にはNIP-02が再利用され、NIP著作権が追加されました。&lt;/p>
&lt;p>2021年4月には、公開クライアント市場もなく、目に見えるリレーネットワークもなく、NIPsリポジトリもありませんでした。プロトコルは依然として小さな文書といくつかの実験として存在していました。Nostrはまだソーシャルネットワークにも開発プラットフォームにもなっていませんでした。それは依然として、最初の持続的な貢献者の波を待つリレー/鍵/イベントモデルでした。&lt;/p>
&lt;h3 id="2022年4月-nipsはまだメインリポジトリに存在した">2022年4月: NIPsはまだメインリポジトリに存在した&lt;/h3>
&lt;p>2022年4月は、NIPsがメインの&lt;code>nostr-protocol/nostr&lt;/code>リポジトリから移動する前の最後の月でした。分割がまだ起こっていなかったため、専用の&lt;a href="https://github.com/nostr-protocol/nips">&lt;code>nostr-protocol/nips&lt;/code>&lt;/a>リポジトリには4月のプルリクエスト履歴がありませんでした。メインリポジトリでは、3つの4月のコミットがランディングしました。4月8日のgoswami1999による&lt;a href="https://github.com/nostr-protocol/nostr/commit/bae286312a233b971bee5429adda7aff41747eb8">&amp;ldquo;Update readme to add nip12&amp;rdquo;&lt;/a>、4月25日のjb55による&lt;a href="https://github.com/nostr-protocol/nostr/commit/4b9e9d123273ba8a5c70d77df46922070c11c11d">&amp;ldquo;add kinds list&amp;rdquo;&lt;/a>、4月28日のsteliosrammosによる&lt;a href="https://github.com/nostr-protocol/nostr/commit/759997657f07e0344064228ffe5e93febe85d367">&amp;ldquo;add js formatting to sample code&amp;rdquo;&lt;/a>です。&lt;/p>
&lt;p>クライアント作業も形を成し始めていました。2022年4月のDamusコミットは初期のチャットルーム動作、プロフィール処理、およびアプリアイコンを追加し、nostr-toolsは初期のクライアントおよび実験のためのJavaScriptライブラリ経路になりつつありました。プロトコル面では、NIP-12ジェネリックタグクエリがタグ検索に文書化された場所を与え、kinds listはNostrをレジストリモデルに向けて動かし、より良いJavaScript例は仕様をクライアントおよびライブラリ作者にとって実装しやすくしました。5月1日、fiatjafはNIPsを専用リポジトリに移動しました。2022年4月は元のシングルリポジトリ時代の最後の月でした。&lt;/p>
&lt;h3 id="2023年4月-damus後のアプリケーション拡大">2023年4月: Damus後のアプリケーション拡大&lt;/h3>
&lt;p>2023年4月は、Damusが2023年1月31日にiOS App Storeでローンチしてから3か月後、Jack DorseyがNostrの公開鍵を投稿した後に到来しました。ネットワークはちょうど最初の大きな公開成長波を吸収したところでした。Damus、Snort、Iris、Coracle、Amethystなどのクライアントがアクティブで、リレーオペレータはより大きなソーシャルグラフが帯域幅、スパム、検索、モデレーションの前提に何をするかを学んでいました。&lt;/p>
&lt;p>2023年4月には1つのマージされたNIPs PRがありました。4月17日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/456">PR #456&lt;/a>は、NIP-21のURI処理にNIP-19 bech32エンティティリンクを追加しました。周囲のコミットは、プロトコル作業の背後にあるアプリケーション圧力を示しています。2023年4月には、&lt;a href="https://github.com/nostr-protocol/nips/commit/8b39976e78f90fe766ad7149e250777cddacbb5e">NIP-45 COUNT&lt;/a>、イベント固有のzapマーカー、&lt;a href="https://github.com/nostr-protocol/nips/commit/bf0a0da6a48b96467172414d8e41dc72b0ca379c">NIP-15マーケットプレイス&lt;/a>、NIP-26削除委任セマンティクス、NIP-94ファイルメタデータ、NIP-47ウォレットコネクトエラー処理、&lt;a href="https://github.com/nostr-protocol/nips/commit/e91ce3409e1ce8267fc07a21784d2538621267c3">NIP-30カスタム絵文字&lt;/a>に関する作業がありました。貢献者リストはfiatjaf、staab、pablof7z、Semisol、CodyTseng、sethforprivacy、mikedilger、AsaiToshiya、alexgleason、martindsq、frbittencourt、arkin0xを含むように広がりました。&lt;/p>
&lt;p>Damus、Snort、Iris、Coracle、Amethystはもはや仕様の周りのデモではありませんでした。それらはオンボーディング、フィード、スパム、zap、メディア、リレー選択に対処する本番クライアントでした。2023年4月のプロトコル作業は、それらのクライアントが作成したバックログのように読めます。zap、マーケットプレイス、ファイルメタデータ、カウント、絵文字、identityリンクはすべて、仕様を単純なノートおよびフォローを超えて押し進めました。&lt;/p>
&lt;h3 id="2024年4月-プライベートメッセージングgit-over-nostrおよびメンテナサポート">2024年4月: プライベートメッセージング、git-over-Nostr、およびメンテナサポート&lt;/h3>
&lt;p>2024年4月には2つのNIP PRマージがありました。4月10日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/1167">PR #1167&lt;/a>は、クライアントと署名者が要求および認可されたアクションに対して正確な言葉遣いを必要とする&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名の紛らわしい用語を修正しました。4月17日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/1108">PR #1108&lt;/a>は、ステータスイベント、明確化、オプションのメンテナ、リポジトリ識別子、および発見可能性タグを含む&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> git repositoriesを拡張しました。そのステップは、git-over-Nostrをngitとその後のGitWorkshopにとってより実用的にしました。&lt;/p>
&lt;p>以前はNIP-24だった&lt;a href="https://github.com/nostr-protocol/nips/commit/df30012430c88d49fb5b124992b04d5c61b6338b">NIP-17&lt;/a>は、プライベートDMおよび小グループチャット向けのsealed gift-wrappedメッセージとして4月24日にランディングしました。同じ期間にAmethyst、Primal、Gossip、nostr-tools、NDK、およびrust-nostrがすべてアクティブで、クライアントとライブラリの作業が並行して行われました。&lt;/p>
&lt;p>OpenSatsも2024年4月にNostr開発者への長期サポートを発表しました。4月9日の&lt;a href="https://opensats.org/blog/pablofz7-receives-lts-grant">PabloF7z&lt;/a>、4月12日の&lt;a href="https://opensats.org/blog/stuart-bowman-receives-lts-grant">Stuart Bowman&lt;/a>、4月15日の&lt;a href="https://opensats.org/blog/hzrd149-receives-lts-grant">hzrd149&lt;/a>です。これらの助成金は、資金を孤立したプロジェクト助成金から、リレー、ライブラリ、クライアントインフラの持続的な維持へと移動させました。&lt;/p>
&lt;h3 id="2025年4月-密なnipクリーンアップとblossom正式化">2025年4月: 密なNIPクリーンアップとBlossom正式化&lt;/h3>
&lt;p>2025年4月は、この振り返りで最も密なプロトコル月間で、16のマージされたNIPs PRがありました。月はNIP-73にブロックチェーントランザクションとアドレスを追加した&lt;a href="https://github.com/nostr-protocol/nips/pull/1846">PR #1846&lt;/a>と、標準化タグ表にNIP-C0タグを追加した&lt;a href="https://github.com/nostr-protocol/nips/pull/1865">PR #1865&lt;/a>で始まりました。続いて&lt;a href="https://github.com/nostr-protocol/nips/pull/1801">PR #1801&lt;/a>と&lt;a href="https://github.com/nostr-protocol/nips/pull/1889">PR #1889&lt;/a>がkind &lt;code>10002&lt;/code>リレーリスト再発行ガイダンスを改善し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1879">PR #1879&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>を縮小して明確化しました。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/1822">PR #1822&lt;/a>はBlossom相互作用のためにNIP-B7を追加し、1年以上の非公式な実践の後にNostrクライアントとBlossomサーバに正規の調整レイヤーを与えました。&lt;a href="https://github.com/nostr-protocol/nips/pull/1051">PR #1051&lt;/a>は、委任イベント署名仕様である&lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a>を非推奨としました。NIP-26は安全に実装することが難しく、NIP-46や他の署名者パターンが成熟するにつれて魅力が薄れていました。&lt;/p>
&lt;p>月の残りはクリーンアップとアプリケーション拡大を組み合わせました。&lt;a href="https://github.com/nostr-protocol/nips/pull/1882">PR #1882&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>にプライバシーポリシーおよび利用規約フィールドを追加し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1849">PR #1849&lt;/a>はNIP-B0の下でkind &lt;code>39701&lt;/code>ウェブブックマークを拡張し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1891">PR #1891&lt;/a>はそのブックマークkindをREADMEに追加し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1895">PR #1895&lt;/a>はNIP-B0標準化タグを追加しました。OpenSatsは4月16日に&lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants">Eleventh Wave of Nostr Grants&lt;/a>を発表し、Swae、HAMSTR、Vertex、Nostr Double Ratchet、Nostr Game Engineに資金を提供しました。Primal、Coracle、noStrudel、nostr-tools、NDK、rust-nostrもこの期間を通じて出荷していたため、プロトコルクリーンアップはアクティブなクライアントとライブラリ作業の隣に位置していました。&lt;/p>
&lt;h3 id="2026年4月-nip-34の強化バッジおよび採用フォーカスの助成金">2026年4月: NIP-34の強化、バッジ、および採用フォーカスの助成金&lt;/h3>
&lt;p>この号が閉じる2026年4月は、4つのマージされたNIPs PRがありました。最初は4月1日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>で、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/58.md">NIP-58&lt;/a>プロフィールバッジをkind &lt;code>10008&lt;/code>に変更し、kind &lt;code>30008&lt;/code>バッジセットを追加して、バッジ割り当てとバッジコレクションをより組み合わせやすくしました。第二のgit-over-Nostrユーザビリティ変更は4月10日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>で到来し、&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>に&lt;code>nostr://&lt;/code>クローンURLセマンティクスを追加しました。4月25日のクリーンアップ、&lt;a href="https://github.com/nostr-protocol/nips/pull/2325">PR #2325&lt;/a>と&lt;a href="https://github.com/nostr-protocol/nips/pull/2326">PR #2326&lt;/a>は、使われていないおよび誤ったNIP-34の言葉遣いを削除しました。&lt;/p>
&lt;p>関連するコミットは同じ表面を鋭くします。4月22日、fiatjafはNIP-51にBlossomサーバリストを追加し、NIP-29メタデータ編集をFlotillaのPUT形式の動作に合わせるように調整しました。4月26日、彼は明確化のためにNIP-5Aをリネームしました。2026年4月は、すでに使われているプロトコル表面を実装しやすく、誤読しにくくすることに焦点を当てました。&lt;/p>
&lt;p>OpenSatsは4月8日に&lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">Sixteenth Wave of Nostr Grants&lt;/a>を発表し、Amethyst Desktop、Nostr Mail、Nostrord、Nurunuru (null&amp;ndash;nostr)、およびHAMSTRの更新を支援しました。デスクトップクライアント、メール様メッセージング、グループUX、日本語オンボーディング、およびオフグリッド接続です。&lt;/p>
&lt;hr>
&lt;p>&lt;em>Nostr Compass #20をお読みいただきありがとうございます。ヒント、修正、または扱うべき新しいプロジェクトがあれば&lt;a href="https://nostr.com">NostrでDMを送ってください&lt;/a>。&lt;/em>&lt;/p></content:encoded></item><item><title>Nostr Compass #19</title><link>https://nostrcompass.org/ja/newsletters/2026-04-22-newsletter/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-04-22-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>準拠、&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a> community、&lt;a href="https://nostrcompass.org/ja/topics/nip-75/">NIP-75&lt;/a> zap goals、MoQベースaudio roomをまとめて進めました。&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a>は、NostrとCashu上のpay-per-use internet access仕様をv0.1.0として固め、&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>、compression、query hardening、完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> parityを進めました。Forgeswornは、signing、identity、paid API discoveryのstackを一気に公開しました。ShockWalletは、NostrネイティブなLightning wallet同期を押し進め、Formstr suiteはsecurity hardeningとRRULE supportを中心に26 PRをマージしました。StableKraft、Keep、topaz、WoT Relay、Flotilla、NipLockも今週の出荷に並びます。今週のdeep diveは&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>です。&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-ships-marmot-mip-compliance-nip-72-communities-zap-goals-and-moq-audio-rooms">Amethyst ships Marmot MIP compliance, NIP-72 communities, zap goals, and MoQ audio rooms&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は今週57本のPRをマージし、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> encrypted groupの準拠作業、community support、live stream向けzap goals、Media over QUICベースaudio roomをまとめて押し進めました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2462">PR #2462&lt;/a>は埋め込み&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>をMIP-01とMIP-05 wire formatへ合わせ、VarInt encodingとMDK test vectorによるround-trip validationを追加しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2435">PR #2435&lt;/a>はMIP-00 KeyPackage Relay List supportを加え、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2436">PR #2436&lt;/a>はWhite Noiseとのcross-client testingで見つかったadmin gateとmedia handlingの差分を埋めました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2466">PR #2466&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2471">PR #2471&lt;/a>はMLS commit framingとouter-layer復号の正しさを修正し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2477">PR #2477&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2493">PR #2493&lt;/a>はさらにcommit pathとmessage encryptionの整合性を詰め、reference vectorに対するcryptography validatorを追加しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2488">PR #2488&lt;/a>は、Marmot/MLS group操作をscriptableに扱えるCLIの&lt;code>amy&lt;/code>も出荷しています。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>準拠、&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a> community、&lt;a href="https://nostrcompass.org/ja/topics/nip-75/">NIP-75&lt;/a> zap goals、MoQベースaudio roomをまとめて進めました。&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a>は、NostrとCashu上のpay-per-use internet access仕様をv0.1.0として固め、&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>、compression、query hardening、完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> parityを進めました。Forgeswornは、signing、identity、paid API discoveryのstackを一気に公開しました。ShockWalletは、NostrネイティブなLightning wallet同期を押し進め、Formstr suiteはsecurity hardeningとRRULE supportを中心に26 PRをマージしました。StableKraft、Keep、topaz、WoT Relay、Flotilla、NipLockも今週の出荷に並びます。今週のdeep diveは&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>です。&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-ships-marmot-mip-compliance-nip-72-communities-zap-goals-and-moq-audio-rooms">Amethyst ships Marmot MIP compliance, NIP-72 communities, zap goals, and MoQ audio rooms&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は今週57本のPRをマージし、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> encrypted groupの準拠作業、community support、live stream向けzap goals、Media over QUICベースaudio roomをまとめて押し進めました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2462">PR #2462&lt;/a>は埋め込み&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>をMIP-01とMIP-05 wire formatへ合わせ、VarInt encodingとMDK test vectorによるround-trip validationを追加しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2435">PR #2435&lt;/a>はMIP-00 KeyPackage Relay List supportを加え、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2436">PR #2436&lt;/a>はWhite Noiseとのcross-client testingで見つかったadmin gateとmedia handlingの差分を埋めました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2466">PR #2466&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2471">PR #2471&lt;/a>はMLS commit framingとouter-layer復号の正しさを修正し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2477">PR #2477&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2493">PR #2493&lt;/a>はさらにcommit pathとmessage encryptionの整合性を詰め、reference vectorに対するcryptography validatorを追加しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2488">PR #2488&lt;/a>は、Marmot/MLS group操作をscriptableに扱えるCLIの&lt;code>amy&lt;/code>も出荷しています。&lt;/p>
&lt;p>community側では、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2468">PR #2468&lt;/a>がkind &lt;code>34550&lt;/code>定義の作成、moderator追加、relay hint設定、&lt;code>a&lt;/code>タグによる投稿、kind &lt;code>4549&lt;/code> approval event管理を含む&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a> supportを追加しました。絵文字では&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2458">PR #2458&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2473">PR #2473&lt;/a>がemoji set supportと完全なNIP-30 emoji-pack管理UIを追加しました。live surfaceでは、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2469">PR #2469&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-53/">NIP-53&lt;/a> Live Activities画面へ&lt;a href="https://nostrcompass.org/ja/topics/nip-75/">NIP-75&lt;/a> zap goalsを統合し、goal header、progress bar、one-tap zap、top-zappers leaderboardを導入しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2486">PR #2486&lt;/a>は専用のLive Streams feed、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2491">PR #2491&lt;/a>はproof-of-agreementとevent builder、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2461">PR #2461&lt;/a>はfeed内lowest-resolution HLS、picture-in-picture、full-screen時の自動解像度選択を追加しています。&lt;/p>
&lt;p>もっとも野心的なのはreal-time audioです。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2494">PR #2494&lt;/a>は&lt;a href="https://datatracker.ietf.org/group/moq/about/">Media over QUIC&lt;/a> transport clientとaudio room supportを追加しました。MoQのpub-sub modelは、WebSocket relayよりライブ音声に向いており、trackやpriorityごとのsubscriptionを可能にします。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2487">PR #2487&lt;/a>のPublic Chats画面と組み合わせると、Amethystはpublic audio roomとMarmot encrypted messagingを並行して持つことになります。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2485">PR #2485&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2490">PR #2490&lt;/a>はFollow Packs discovery feedとonboarding統合を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1983">PR #1983&lt;/a>はMarmot DMやmentionのためのalways-on notification serviceを導入し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2480">PR #2480&lt;/a>はadaptive cache sizing付きHLS video cachingを加えました。&lt;/p>
&lt;h3 id="tollgate-v010-stabilizes-pay-per-use-internet-over-nostr-and-cashu">TollGate v0.1.0 stabilizes pay-per-use internet over Nostr and Cashu&lt;/h3>
&lt;p>&lt;a href="https://github.com/OpenTollGate/tollgate">TollGate&lt;/a>は4月21日に&lt;a href="https://github.com/OpenTollGate/tollgate/releases/tag/v0.1.0">v0.1.0 release&lt;/a>を出し、pay-per-use network access向け仕様群に最初のtag付きsnapshotを与えました。WiFi router、Ethernet switch、Bluetooth tetherのような接続制御デバイスが価格を広告し、&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a> ecash tokenを受け取り、sessionを管理できます。数satsを持つlocal Cashu walletがあれば、accountもsubscriptionもKYCもなく、その場で次の1分または1MBの接続を買えます。&lt;/p>
&lt;p>releaseは3層構造を固定しています。&lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-01.md">TIP-01&lt;/a>はAdvertisement、Session、Noticeの3つの基本event shapeを定義し、&lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/TIP-02.md">TIP-02&lt;/a>はCashu payment layerを追加して、gateが広告する任意mintからcustomerがtokenを償還できるようにします。上位のinterface layerでは&lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/HTTP-01.md">HTTP-01&lt;/a>からHTTP-03が制限的OS向けplain HTTP surfaceを定義し、&lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/NOSTR-01.md">NOSTR-01&lt;/a>がWebSocketを張れるclient向けのNostr transportを定義します。medium layerでは&lt;a href="https://github.com/OpenTollGate/tollgate/blob/v0.1.0/WIFI-01.md">WIFI-01&lt;/a>がcaptive portal routingを扱います。payment assetがcredentialではなくbearer tokenなので、customerは事前ネット接続なしで最初の接続を購入でき、TollGate同士がuplinkを買い合うmulti-hop構成も可能です。詳しくは新しい&lt;a href="https://nostrcompass.org/ja/topics/tollgate/">TollGate topic page&lt;/a>にまとめました。&lt;/p>
&lt;h3 id="nostream-merges-53-prs-for-nip-45-nip-62-compression-and-query-hardening">nostream merges 53 PRs for NIP-45, NIP-62, compression, and query hardening&lt;/h3>
&lt;p>&lt;a href="https://github.com/Cameri/nostream">nostream&lt;/a>は、TypeScript relay implementationとして今週53本のPRをマージしました。feature面では、&lt;a href="https://github.com/Cameri/nostream/pull/522">PR #522&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a> &lt;code>COUNT&lt;/code> supportを追加し、&lt;a href="https://github.com/Cameri/nostream/pull/544">PR #544&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a> right-to-vanishをadvertised feature listへ加え、&lt;a href="https://github.com/Cameri/nostream/pull/548">PR #548&lt;/a>は最近のtag-case conventionに沿って&lt;code>#A&lt;/code>から&lt;code>#Z&lt;/code>のuppercase tag filterを受け入れるようにし、&lt;a href="https://github.com/Cameri/nostream/pull/514">PR #514&lt;/a>はevent import/exportにgzipとxz compressionを追加しました。&lt;/p>
&lt;p>query performanceとcorrectnessも強化されています。&lt;a href="https://github.com/Cameri/nostream/pull/534">PR #534&lt;/a>はbenchmark harnessとfilter-to-SQL translationの最適化を導入し、&lt;a href="https://github.com/Cameri/nostream/pull/524">PR #524&lt;/a>はwhitelist/blacklist pubkeyのprefix match bugをexact-matchへ修正し、&lt;a href="https://github.com/Cameri/nostream/pull/553">PR #553&lt;/a>は同一&lt;code>created_at&lt;/code>時のconcurrent insert raceを避けるdeterministic tie-breakerを&lt;code>upsertMany&lt;/code>へ追加しました。&lt;a href="https://github.com/Cameri/nostream/pull/493">PR #493&lt;/a>は&lt;code>X-Forwarded-For&lt;/code>をtrusted proxyだけに限定し、&lt;a href="https://github.com/Cameri/nostream/pull/557">PR #557&lt;/a>はretention、authentication hint、optional field整理を含めて完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> parityを達成しました。&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="primal-android-ships-explore-tab-nip-05-verification-and-audio-player">Primal Android ships Explore tab, NIP-05 verification, and audio player&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は先週のfeed redesignに続き11本のPRを積みました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1021">PR #1021&lt;/a>はpopular user、follow pack、curated feedを軸にしたExplore tabを導入し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1015">PR #1015&lt;/a>はPrimalのAdvanced Search DSLから初期値を作るfeed editorを追加しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/994">PR #994&lt;/a>はprofile向け&lt;a href="https://github.com/nostr-protocol/nips/blob/master/05.md">NIP-05&lt;/a> verification UIを追加し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/997">PR #997&lt;/a>はin-feed audio playerを埋め込み、audio attachmentをその場で再生できるようにしています。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1018">PR #1018&lt;/a>はwallet QR scanner経由の&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> nostr-connect pairingも追加しました。&lt;/p>
&lt;h3 id="strfry-adds-prometheus-write-path-metrics-and-fixes-nip-42-auth-envelope">strfry adds Prometheus write-path metrics and fixes NIP-42 AUTH envelope&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>はoperator向け改善をまとめて出しました。&lt;a href="https://github.com/hoytech/strfry/pull/194">PR #194&lt;/a>は専用Prometheus write-path metrics exporterとconnection gaugeを追加し、&lt;a href="https://github.com/hoytech/strfry/pull/197">PR #197&lt;/a>はconnectionごとのup/down bytesとcompression ratioをlogへ出すようにしました。&lt;a href="https://github.com/hoytech/strfry/pull/192">PR #192&lt;/a>はfilter tag limitをruntime-configurable optionへ昇格させ、&lt;a href="https://github.com/hoytech/strfry/pull/201">PR #201&lt;/a>は&lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a> AUTH failure responseを&lt;code>NOTICE&lt;/code>からNIP準拠の&lt;code>OK&lt;/code> envelopeへ修正しました。&lt;/p>
&lt;h3 id="shopstr-hardens-storefront-security-across-13-prs">Shopstr hardens storefront security across 13 PRs&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>は今週13本のPRをマージし、storefront security fixが大半を占めました。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/434">PR #434&lt;/a>はseller-to-visitor script executionを許していたstored JavaScript holeを閉じ、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/417">PR #417&lt;/a>はreflected XSSを防ぐためstorefront policy HTML renderingをescapeし、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/418">PR #418&lt;/a>は未認証cached-event deletion APIを閉じました。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/433">PR #433&lt;/a>、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/419">PR #419&lt;/a>、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/435">PR #435&lt;/a>、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/414">PR #414&lt;/a>も認証とSSRF関連の穴を塞いでいます。機能面では、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/421">PR #421&lt;/a>がfailed relay publish queueのreplay safetyを改善し、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/425">PR #425&lt;/a>がwallet event fetchを修復し、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/392">PR #392&lt;/a>がcheckout前にstored cart discountを再検証するようにしました。&lt;/p>
&lt;h3 id="nostria-v3126-through-v3128-add-background-music-playback-on-android">Nostria v3.1.26 through v3.1.28 add background music playback on Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>は今週&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.22">v3.1.22&lt;/a>から&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a>まで6リリースを出しました。中心は&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.26">v3.1.26&lt;/a>のAndroid background music playbackで、audio再生中にappが生き続け、notification barやlock screenからmedia controlを行えます。続く&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.27">v3.1.27&lt;/a>と&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.28">v3.1.28&lt;/a>はこの新しいmedia-service surfaceをhardeningしました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-15-newsletter/">Newsletter #18&lt;/a>では、その直前のlocal image generation releaseを扱っています。&lt;/p>
&lt;h3 id="wisp-v0180-beta-adds-normie-mode-for-you-feed-and-nip-29-group-config">Wisp v0.18.0-beta adds Normie Mode, For You feed, and NIP-29 group config&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>は4月16日に&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.18.0-beta">v0.18.0-beta&lt;/a>を出しました。&lt;a href="https://github.com/barrydeen/wisp/pull/462">PR #462&lt;/a>は法定通貨建て表示を増やすNormie Modeを追加し、&lt;a href="https://github.com/barrydeen/wisp/pull/464">PR #464&lt;/a>はtopic pickerとfirst-post coach付きのonboarding刷新を行い、&lt;a href="https://github.com/barrydeen/wisp/pull/469">PR #469&lt;/a>はextended follow、trending event、followed hashtagを混ぜるFor You feedを加えました。protocol面では&lt;a href="https://github.com/barrydeen/wisp/pull/471">PR #471&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a> group configurationを実装し、&lt;a href="https://github.com/barrydeen/wisp/pull/478">PR #478&lt;/a>が&lt;a href="https://github.com/nostr-protocol/nips/blob/master/42.md">NIP-42&lt;/a> AUTH完了前にgroup &lt;code>9021&lt;/code>、&lt;code>9007&lt;/code>、&lt;code>9009&lt;/code>を送らないよう順序を修正し、&lt;a href="https://github.com/barrydeen/wisp/pull/481">PR #481&lt;/a>はmentionされたpubkeyの&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> inbox relayへnoteをbroadcastするようにしました。&lt;/p>
&lt;h3 id="noornote-v084-adds-scheduled-posts-and-live-stream-zapping">NoorNote v0.8.4 adds Scheduled Posts and live stream zapping&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>は&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.4">v0.8.4&lt;/a>と&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.8.5">v0.8.5&lt;/a>を出しました。v0.8.4の中心はScheduled Posts add-onで、appは署名済みイベントをNoorNote運営relayへ渡し、指定時刻に公開させます。秘密鍵は端末外へ出ません。同じreleaseは&lt;a href="https://nostrcompass.org/ja/topics/nip-53/">NIP-53&lt;/a>経由でstream chat overlayへsatsが現れるone-tap live stream zapも追加し、fiat-rate APIが一時停止してもwallet balanceを表示し続けるようにしました。v0.8.5では長いAndroid scrollでpostが重複するtimeline deduplication bugが修正されています。&lt;/p>
&lt;h3 id="topaz-v002-ships-a-nostr-relay-for-android">topaz v0.0.2 ships a Nostr relay for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/topaz">topaz&lt;/a>は、&lt;a href="https://github.com/fiatjaf">fiatjaf&lt;/a>によるAndroid phone上で動く新しいNostr relayで、2026-04-17に&lt;a href="https://github.com/fiatjaf/topaz/releases/tag/v0.0.2">v0.0.2&lt;/a>を公開しました。現段階ではscopeは狭く、インストール可能なAndroid packageとして動作するrelayを提供することが主眼です。&lt;/p>
&lt;h3 id="stablekraft-v100-ships-the-first-stable-music-and-podcast-pwa-release">StableKraft v1.0.0 ships the first stable music-and-podcast PWA release&lt;/h3>
&lt;p>&lt;a href="https://github.com/ChadFarrow/stablekraft-app">StableKraft&lt;/a>は、podcast feed由来のmusicを発見、整理、再生するNext.js PWAで、authとsocial featureにNostr、V4V paymentにLightningを使います。2026-04-18に&lt;a href="https://github.com/ChadFarrow/stablekraft-app/releases/tag/v1.0.0">v1.0.0&lt;/a>へ到達しました。同週には、&lt;a href="https://github.com/ChadFarrow/stablekraft-app/commit/7ac90f6">15-minute OPML cacheとillegal XML stripping&lt;/a>でfeed ingestionを改善し、&lt;a href="https://github.com/ChadFarrow/stablekraft-app/commit/fbf337b">follow-up fix&lt;/a>でnightly reparse windowを720時間から24時間へ縮め、新規feedのself-healを速めています。&lt;/p>
&lt;h3 id="niplock-ships-a-nip-17-based-password-manager">NipLock ships a NIP-17-based password manager&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/npub1z5jf78uhd68znuwwwu926th55rzd0wy8nd9clkr03cx22mwme0jqazk56h/relay.ngit.dev/passwd">NipLock&lt;/a>は、credentialを&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> gift-wrapped DMとして保存し、device間で同期するpassword managerです。各password entryは自分の鍵から自分自身へのNIP-17 DMであり、同じ鍵で認証した任意deviceへ同じイベントが複製されます。署名はraw &lt;code>nsec&lt;/code>、&lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a>のようなbrowser extension、または&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>経由の&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>で行えます。&lt;/p>
&lt;h3 id="flotilla-budabit-polishes-its-nip-34-repo-surface">flotilla-budabit polishes its NIP-34 repo surface&lt;/h3>
&lt;p>Budabit communityによる&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a> fork、&lt;a href="https://github.com/Pleb5/flotilla-budabit">flotilla-budabit&lt;/a>は、NIP-34 git-over-nostr workflow周辺のfixをまとめて出しました。repo discussion controlの復元、detail pageでのsticky repo tab保持、saved GRASP relayからのrepo announcement読み込み、maintainer適用patch statusの同期などが含まれます。upstream Flotillaと近い状態を保ちながら、Budabit contributor向けrepo viewを優先しています。&lt;/p>
&lt;h3 id="rx-nostr-372-through-374-add-default-verifier-and-optional-constructor-args">rx-nostr 3.7.2 through 3.7.4 add default verifier and optional constructor args&lt;/h3>
&lt;p>&lt;a href="https://github.com/penpenpng/rx-nostr">rx-nostr&lt;/a>は、RxJSベースのNostr libraryで、&lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.2">3.7.2&lt;/a>、&lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.3">3.7.3&lt;/a>、&lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.7.4">3.7.4&lt;/a>を出しました。&lt;a href="https://github.com/penpenpng/rx-nostr/pull/192">PR #192&lt;/a>はdefault Schnorr verifierを追加し、paired releaseの&lt;a href="https://github.com/penpenpng/rx-nostr/releases/tag/crypto%403.1.6">crypto@3.1.6&lt;/a>が&lt;code>@noble/curves&lt;/code>利用bugを修正しました。&lt;a href="https://github.com/penpenpng/rx-nostr/pull/195">PR #195&lt;/a>は&lt;code>createRxNostr()&lt;/code>の引数をoptionalにし、zero-configでのquick integrationを可能にしています。&lt;/p>
&lt;h3 id="keep-android-v100-ships-with-reproducible-builds-and-zero-trackers">Keep Android v1.0.0 ships with reproducible builds and zero trackers&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>は、Nostrネイティブなpassword and secret managerで、hardening PRの積み上げの後、4月21日に&lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v1.0.0">v1.0.0&lt;/a>を出しました。&lt;a href="https://github.com/privkeyio/keep-android/pull/241">PR #241&lt;/a>はpinnedかつverifiedなtoolchainを使うreproducible build recipeを追加し、&lt;a href="https://github.com/privkeyio/keep-android/pull/248">PR #248&lt;/a>はGoogle ML KitをZXingへ置き換えてGoogle Play Services依存を外し、&lt;a href="https://github.com/privkeyio/keep-android/pull/252">PR #252&lt;/a>はv1.0.0 buildのtrackerがゼロであることを示す&lt;a href="https://reports.exodus-privacy.eu.org/en/">Exodus Privacy scan&lt;/a>を公開しました。&lt;a href="https://github.com/privkeyio/keep-android/pull/256">PR #256&lt;/a>はZapstore配布向け&lt;code>zapstore.yaml&lt;/code> manifestも追加しています。&lt;/p>
&lt;h3 id="flotilla-173-and-174-add-kind-9-wrapping-for-richer-nip-29-rooms">Flotilla 1.7.3 and 1.7.4 add kind-9 wrapping for richer NIP-29 rooms&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>は、hodlbodによる&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a> groups clientで、&lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.3">1.7.3&lt;/a>と&lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.4">1.7.4&lt;/a>を出しました。中心となるprotocol changeは、calendar eventやpollのようなnon-chat contentをkind &lt;code>9&lt;/code>で包むことです。これにより、それらをgroupへ送ったときroom contextが保たれます。同じrelease lineではpoll、Aegis URL schemeによる&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> login、space inviteのnative share、room mention、mobile clipboard image paste、draft、video in call、feed pagination改善も入りました。&lt;/p>
&lt;h3 id="wot-relay-v021-migrates-eventstore-to-lmdb">WoT Relay v0.2.1 migrates eventstore to LMDB&lt;/h3>
&lt;p>&lt;a href="https://github.com/bitvora/wot-relay">WoT Relay&lt;/a>は、bitvoraによるweb-of-trust filtered relayで、2026-04-22に&lt;a href="https://github.com/bitvora/wot-relay/releases/tag/v0.2.1">v0.2.1&lt;/a>を出しました。&lt;a href="https://github.com/bitvora/wot-relay/pull/97">PR #97&lt;/a>はeventstoreを&lt;a href="http://www.lmdb.tech/">LMDB&lt;/a>へ移行し、初期trust graph構築時にupstream read budgetを使い切らないようWoT bootstrap fetchを調整し、&lt;a href="https://github.com/bitvora/wot-relay/pull/99">PR #99&lt;/a>は&lt;code>golang.org/x/crypto&lt;/code>をv0.45.0へ上げ、&lt;a href="https://github.com/bitvora/wot-relay/pull/100">PR #100&lt;/a>はreleaseに合わせてadvertised &lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> software URLとversion stringを更新しました。&lt;/p>
&lt;h3 id="formstr-suite-pollerama-security-pass-forms-i18n-calendar-rrule-support">Formstr suite: Pollerama security pass, Forms i18n, Calendar RRULE support&lt;/h3>
&lt;p>Formstr suiteは今週26本のPRをマージし、Pollerama、Forms、Nostr Calendar全体で明確なsecurityテーマが見えました。&lt;a href="https://pollerama.fun">Pollerama&lt;/a>では、&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/182">PR #182&lt;/a>がlogout時のcached DM失効、&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/175">PR #175&lt;/a>がsecure browser storageへのlocal key移動、&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/171">PR #171&lt;/a>がkind &lt;code>0&lt;/code> profile contentの&lt;code>JSON.parse&lt;/code>防御を行い、product面では&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/186">PR #186&lt;/a>がHTTPS deep linking、&lt;a href="https://github.com/formstr-hq/nostr-polls/pull/169">PR #169&lt;/a>がpoll result上のauthor名clickable化を追加しました。&lt;/p>
&lt;p>&lt;a href="https://formstr.app">Formstr&lt;/a>側では、&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/475">PR #475&lt;/a>がaudio/video URL support、&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/439">PR #439&lt;/a>がi18n、&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/466">PR #466&lt;/a>がGoogle Forms importer、&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/463">PR #463&lt;/a>がsensitive key logのconsole出力削除を行いました。&lt;a href="https://calendar.formstr.app">Nostr Calendar by Formstr&lt;/a>は同日に&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.3.0">v1.3.0&lt;/a>と&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.4.0">v1.4.0&lt;/a>を出し、&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/107">PR #107&lt;/a>で複数およびcustom RRULE support、&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/101">PR #101&lt;/a>でRFC 5545に従うfloating RRULE dateのUTC解釈、&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/97">PR #97&lt;/a>でshared event追加、&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/86">PR #86&lt;/a>でlist-level notification preference、&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/112">PR #112&lt;/a>でlogin/loading path再設計を行いました。3つのprojectはすべて&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a> eventを基盤にしています。&lt;/p>
&lt;h3 id="also-shipped-notedeck-nostrblue-cliprelay-captains-log">Also shipped: notedeck, nostr.blue, cliprelay, Captain&amp;rsquo;s Log&lt;/h3>
&lt;p>大きな見出し機能はないものの、複数clientが小刻みなreleaseを出しました。&lt;a href="https://github.com/damus-io/notedeck">notedeck&lt;/a>は&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.4">v0.10.0-beta.4&lt;/a>でcolumn renderingとrelay pool fixを出し、&lt;a href="https://github.com/patrickulrich/nostr.blue/releases/tag/v0.8.6">nostr.blue v0.8.6&lt;/a>はDioxus 0.7.5を取り込み、native audio bridgeを&lt;code>manganis::ffi&lt;/code> pluginへ変えてAndroid buildを復旧しました。&lt;a href="https://github.com/tajava2006/cliprelay">cliprelay&lt;/a>はDesktop v0.0.3とAndroid v0.0.4を出し、clipboard sync loopを引き締め、32-bit Android variantを落としました。&lt;a href="https://github.com/nodetec/comet">Captain&amp;rsquo;s Log&lt;/a>は、sync relayのliveness detectionを含む3つのalpha buildを公開しています。&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="whitenoise-rs-refactors-to-session-scoped-account-views">whitenoise-rs refactors to session-scoped account views&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> clientのRust daemonとして、global singletonからaccountごとの&lt;code>AccountSession&lt;/code> viewへ移る15本のPRをマージしました。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/743">PR #743&lt;/a>が&lt;code>AccountSession&lt;/code>と&lt;code>AccountManager&lt;/code>の土台を置き、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/753">PR #753&lt;/a>がscoped relay handleを追加し、続くphaseでdraftとsetting、message operation、group read/write、membership、push notification、key-package read、group creationを順に移し、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/770">PR #770&lt;/a>でevent dispatchまでsession所有へ移しました。目標は、shared monolithを副作用の漏れにくいper-account surfaceへ分解することです。&lt;/p>
&lt;h3 id="white-noise-app-adds-blockunblock-ui-leave-group-and-offline-notices">White Noise app adds block/unblock UI, leave-group, and offline notices&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は、missingだったgroup lifecycle controlを追加しました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/578">PR #578&lt;/a>はblock/unblock UIを出し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/571">PR #571&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/572">PR #572&lt;/a>はRust側の&lt;code>clear_chat&lt;/code>、&lt;code>delete_chat&lt;/code>、&lt;code>leave_and_delete_group&lt;/code>をappへ結び、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/569">PR #569&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/576">PR #576&lt;/a>はchatとsettings画面へoffline noticeを追加しました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/585">PR #585&lt;/a>は「全key package削除」を「legacy key package削除」へ狭め、migration時にcurrent keyまで消えないようにしています。&lt;/p>
&lt;h3 id="mdk-adds-mixed-version-invite-support-and-selfupdate-convergence">MDK adds mixed-version invite support and SelfUpdate convergence&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>は7本のPRをマージしました。&lt;a href="https://github.com/marmot-protocol/mdk/pull/261">PR #261&lt;/a>はinvitee capabilityのLCDとして&lt;code>RequiredCapabilities&lt;/code>を計算し、AmethystとWhite Noise間のmixed-version inviteを可能にしました。&lt;a href="https://github.com/marmot-protocol/mdk/pull/264">PR #264&lt;/a>はSelfUpdate wire formatを実装間で収束させ、&lt;a href="https://github.com/marmot-protocol/mdk/pull/262">PR #262&lt;/a>はmalformed inviteeがstray stateを残さないようkey package parse順を修正し、&lt;a href="https://github.com/marmot-protocol/mdk/pull/256">PR #256&lt;/a>と&lt;a href="https://github.com/marmot-protocol/mdk/pull/259">PR #259&lt;/a>はrobustnessを強化し、&lt;a href="https://github.com/marmot-protocol/mdk/pull/265">PR #265&lt;/a>は&lt;code>group_required_proposals&lt;/code> accessorを公開しました。&lt;/p>
&lt;h3 id="nostter-adds-nip-44-encryption-across-people-lists-bookmarks-and-mutes">nostter adds NIP-44 encryption across people lists, bookmarks, and mutes&lt;/h3>
&lt;p>&lt;a href="https://github.com/SnowCait/nostter">nostter&lt;/a>は10本のPRをマージしました。&lt;a href="https://github.com/SnowCait/nostter/pull/2088">PR #2088&lt;/a>はmute listへ、&lt;a href="https://github.com/SnowCait/nostter/pull/2089">PR #2089&lt;/a>はbookmarkへ、&lt;a href="https://github.com/SnowCait/nostter/pull/2090">PR #2090&lt;/a>はpeople listへ&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a> encryptionを追加し、適用可能な箇所では&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>から移行しました。&lt;a href="https://github.com/SnowCait/nostter/pull/2087">PR #2087&lt;/a>は、encrypted kind-10000 flowが安定したためlegacy kind-30000 mute migration pathを削除しています。&lt;/p>
&lt;h3 id="zapcooking-ships-nourish-scoring-and-a-reusable-comment-thread">zap.cooking ships Nourish scoring and a reusable comment thread&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">zap.cooking&lt;/a>は今週20本のPRをマージしました。中心機能は新しいNourish recipe scoring moduleで、&lt;a href="https://github.com/zapcooking/frontend/pull/317">PR #317&lt;/a>と&lt;a href="https://github.com/zapcooking/frontend/pull/319">PR #319&lt;/a>がrecipeを栄養軸で評価します。同時に&lt;a href="https://github.com/zapcooking/frontend/pull/299">PR #299&lt;/a>から&lt;a href="https://github.com/zapcooking/frontend/pull/302">PR #302&lt;/a>までの4段階refactorでComments moduleが再利用可能な&lt;code>CommentThread&lt;/code>へ抽出されました。加えてrecipe scaling、media upload button統一、profile Replies tabも入りました。&lt;/p>
&lt;h3 id="ridestr-extracts-shared-rider-coordinator">ridestr extracts shared rider coordinator&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">ridestr&lt;/a>は10本のPRをマージし、Compose screenをfocused componentへ分割しつつ、rider/driver protocol logicを共有&lt;code>:common&lt;/code> coordinator moduleへ抽出しました（&lt;a href="https://github.com/variablefate/ridestr/pull/70">PR #70&lt;/a>）。&lt;a href="https://github.com/variablefate/ridestr/pull/60">PR #60&lt;/a>はRoadflare側向けkind &lt;code>3189&lt;/code> driver-ping receiverを追加しています。&lt;/p>
&lt;h3 id="blossom-drafts-a-bud-01-sunset-header-for-blob-expiration">Blossom drafts a BUD-01 Sunset header for blob expiration&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>は、SHA-256 hashでkey付けされたHTTP blob storage protocolで、&lt;a href="https://github.com/hzrd149/blossom/pull/99">PR #99&lt;/a>を開き、BUD-01へ&lt;code>Sunset&lt;/code> headerを追加する案を提示しました。serverはこのheaderでblobがいつ配信終了になるかを未来timestampとして広告でき、clientは404へ当たる前にretention制限を把握できます。標準&lt;a href="https://www.rfc-editor.org/rfc/rfc8594.html">RFC 8594&lt;/a> semanticsを使い、serverは助言として長めに保持しても、best-effortで宣言通り期限を守ってもよい設計です。&lt;/p>
&lt;h2 id="new-projects">New Projects&lt;/h2>
&lt;h3 id="forgesworn-publishes-a-29-repo-cryptographic-toolkit-for-nostr">Forgesworn publishes a 29-repo cryptographic toolkit for Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/forgesworn">Forgesworn&lt;/a>は、5日間で29本のopen-source repositoryを公開し、signing、identity、attestation、web of trust、paid API discoveryをまとめたstackを提示しました。signing stackの中心は、1つのmaster secretから無制限のunlinkable Nostr identityを導く&lt;a href="https://github.com/forgesworn/nsec-tree">nsec-tree&lt;/a>と、Tor default-onのRaspberry Pi向け&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> remote signerである&lt;a href="https://github.com/forgesworn/heartwood">Heartwood&lt;/a>です。&lt;a href="https://github.com/forgesworn/sapwood">Sapwood&lt;/a>はHeartwoodのweb management UIで、&lt;a href="https://github.com/forgesworn/heartwood-esp32">heartwood-esp32&lt;/a>はHeltec WiFi LoRa 32 board上の同種token logic実験です。&lt;a href="https://github.com/forgesworn/nsec-tree-cli">nsec-tree-cli&lt;/a>はoffline-first operation向けにderivation、proof、Shamir recovery flowを公開します。&lt;/p>
&lt;p>identityとtrustでは、&lt;a href="https://github.com/forgesworn/signet">Signet&lt;/a>が&lt;a href="https://github.com/forgesworn/signet/releases/tag/v1.6.0">v1.6.0&lt;/a>へ到達し、QR pairing flowとsession pubkey pinningを備えたdecentralized identity verification protocolを提供します。&lt;a href="https://github.com/forgesworn/nostr-attestations">nostr-attestations&lt;/a>は、credential、endorsement、vouch、provenance、licensing、trustを1つのkind &lt;code>31000&lt;/code>イベントへ統合し、&lt;a href="https://github.com/forgesworn/nostr-veil">nostr-veil&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a> assertionをsecp256k1上のLSAG ring signatureで支えるprivacy-preserving web of trustを構築します。monetization側では、&lt;a href="https://github.com/forgesworn/toll-booth">toll-booth&lt;/a>がExpress、Hono、Deno、Bun、Cloudflare Workers向けL402 middlewareを提供し、&lt;a href="https://github.com/forgesworn/toll-booth-dvm">toll-booth-dvm&lt;/a>がそれを&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a> DVMとして公開し、&lt;a href="https://github.com/forgesworn/toll-booth-announce">toll-booth-announce&lt;/a>がkind &lt;code>31402&lt;/code>のHTTP 402 service discoveryへつなぎます。全体はTypeScript中心、zero-dependency志向で、&lt;a href="https://github.com/forgesworn/anvil">anvil&lt;/a>というbash-only supply-chain-hardened release toolで出荷されています。&lt;/p>
&lt;h3 id="shockwallet-ships-nostr-native-lightning-wallet-sync-and-multi-node-connections">ShockWallet ships Nostr-native Lightning wallet sync and multi-node connections&lt;/h3>
&lt;p>&lt;a href="https://github.com/shocknet/wallet2">ShockWallet&lt;/a>は、self-custodial Lightning nodeとの接続transportとしてNostrを使うLightning walletです。appは1つ以上の&lt;a href="https://github.com/shocknet/Lightning.Pub">Lightning.Pub&lt;/a> nodeと&lt;code>nprofile&lt;/code>経由でpairし、walletとnodeの間でpayment authorizationをend-to-endで署名します。&lt;a href="https://github.com/shocknet/wallet2/pull/608">PR #608&lt;/a>はchannels dashboard UIを改善し、&lt;a href="https://github.com/shocknet/wallet2/pull/606">PR #606&lt;/a>は新規PUB user向けadmin-invite-link QR flowを追加し、&lt;a href="https://github.com/shocknet/wallet2/pull/607">PR #607&lt;/a>はmetrics dashboardの可読性を上げました。&lt;/p>
&lt;p>ShockWalletは、multi-device wallet state syncに&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-78&lt;/a> application-specific data eventを使います。これによりdesktop browserとphoneのwallet viewをcentralized sync serverなしで一致させます。これは&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>のさらに下の層にあり、NIP-47が既存walletへ支払いを依頼するinterfaceであるのに対し、ShockWalletはwallet自身のaccount/session transportとしてNostrを使っています。並行して、teamはwallet-to-app connection向けsession pairing protocolの&lt;a href="https://github.com/shocknet/CLINK">CLINK&lt;/a>も進めています。&lt;/p>
&lt;h3 id="nostrability-issues-migrate-to-git-over-nostr-after-github-censorship">Nostrability issues migrate to git over Nostr after GitHub censorship&lt;/h3>
&lt;p>&lt;a href="https://gitworkshop.dev/elsat@habla.news/nostrability/issues">Nostrability&lt;/a>は、elsatによるNostr client/relay interop trackerで、GitHub organizationが停止された後、issue workflowをgit over Nostrへ移しています。issue trackerは現在GitWorkshop/ngit上にあり、既存issueも引き継がれ、今後のinterop reportをNostrネイティブなinfrastructure内で扱えるようになりました。&lt;/p>
&lt;h3 id="nowhere-encodes-full-websites-into-url-fragments-and-routes-orders-through-nostr">nowhere encodes full websites into URL fragments and routes orders through Nostr&lt;/h3>
&lt;p>&lt;a href="https://github.com/5t34k/nowhere">nowhere&lt;/a>は、site全体をURL fragmentにserializeし、dictionary substitutionとraw DEFLATEで圧縮し、base64urlで符号化する新しいAGPL-3.0 projectです。HTTPではfragmentがserverへ送られないため、pageを配るhostは中身を見ず、site自体もserverへ保存されません。projectはevent、fundraiser、store、petition、message、drop、art、forumの8種類を用意し、creatorによる署名とURL単位のpassword encryptionもサポートします。store、forum、petitionではlive communicationが必要で、その通信はephemeral keyと&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a> encryptionを使ってNostr relay越しに流れます。&lt;a href="https://nowhr.xyz/install">nowhr.xyz&lt;/a> readerにより、短いstore URLはprintable QR codeとしても実用的です。&lt;/p>
&lt;h3 id="small-new-surfaces-relaykit-and-brainstorm-search">Small new surfaces: relayk.it and Brainstorm Search&lt;/h3>
&lt;p>&lt;a href="https://relayk.it">relayk.it&lt;/a>はSoapbox teamの&lt;a href="https://nostr.com/sam@relayk.it">sam&lt;/a>が作った、&lt;a href="https://shakespeare.diy">Shakespeare&lt;/a>ベースのrelay discovery clientで、完全にbrowser内で動作します。&lt;a href="https://brainstorm.world">Brainstorm Search&lt;/a>は、network全体のcontent surfacingに焦点を当てたsingle-page Nostr search UIとして公開されました。&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPs repository&lt;/a>での最近のproposalとdiscussionです。&lt;/p>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-67/">NIP-67&lt;/a>: EOSE Completeness Hint&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2317">PR #2317&lt;/a>）：relayがfilterに一致する保存済みイベントをすべて返し切ったかどうかを示す、任意の3番目要素を&lt;code>EOSE&lt;/code>へ追加する提案です。relay上限によって途中で切られたのか、本当に全部なのかをclientが区別できるようにします。&lt;/li>
&lt;li>&lt;strong>NIP-5D: Nostr Applets&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>）：&lt;a href="https://nostrcompass.org/ja/topics/nip-5a/">NIP-5A&lt;/a>の静的websiteと、進行中の&lt;a href="https://nostrcompass.org/ja/topics/nip-5c/">NIP-5C&lt;/a>のWASM scrollの中間にあたる、sandboxed iframe/WebViewで動くinteractive applet配布の提案です。&lt;/li>
&lt;li>&lt;strong>NIP-29: Subgroups spec&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2319">PR #2319&lt;/a>）：1つのgroup内に複数parallel channelを持てるsubgroup hierarchyを追加し、旧client向けの単一&lt;code>h&lt;/code>タグ形を保つ案です。&lt;/li>
&lt;li>&lt;strong>NIP-29: Explicit role permissions on kind 39003&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2316">PR #2316&lt;/a>）：kind &lt;code>39003&lt;/code> role eventへ明示permission schemaを導入し、&lt;code>moderator&lt;/code>のようなroleがrelayごとに別意味になる問題を減らす提案です。&lt;/li>
&lt;li>&lt;strong>NIP-11: access_control field for gated-relay discovery&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2318">PR #2318&lt;/a>）：relayのgating modeとaccess request endpointを示す&lt;code>access_control&lt;/code> objectを追加する案です。&lt;/li>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>）：先週扱ったkind &lt;code>10164&lt;/code> payment gateway descriptorのfield layout調整が続いています。&lt;/li>
&lt;li>&lt;strong>NIP-XX: Agent Reputation Attestations (Kind 30085)&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2320">PR #2320&lt;/a>）：Nostr上のautonomous agentやserviceについて、reliabilityやhonest advertisingを署名付きで評価するkind &lt;code>30085&lt;/code> addressable eventを提案します。&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>）：kind &lt;code>20411&lt;/code>、recipientごとの&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a> encryption、&lt;code>ttl&lt;/code> tag semanticsの議論が続いています。&lt;/li>
&lt;li>&lt;strong>marmot-ts 0.5.0 release PR&lt;/strong>（&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/70">PR #70&lt;/a>）：TypeScript Marmot clientのbreaking change群をまとめたrelease PRで、legacy kind &lt;code>443&lt;/code>と新kind &lt;code>30443&lt;/code>両対応、constructorとstorage layerの見直しが含まれます。&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-72-moderated-communities">NIP Deep Dive: NIP-72 (Moderated Communities)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/72.md">NIP-72&lt;/a>は、topic-based communityをNostr上で扱うためのモデルです。relayがmembershipとmoderationのauthorityになる&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>とは異なり、NIP-72 communityは通常のNostr eventとして存在し、関係するkindを運べるrelayならどこでも配信できます。誰でも投稿でき、認識済みmoderatorが承認した投稿だけがcommunity feedに表示されます。&lt;/p>
&lt;p>communityはkind &lt;code>34550&lt;/code>のaddressable eventで定義されます。&lt;code>d&lt;/code>タグが安定slugになり、&lt;code>name&lt;/code>、&lt;code>description&lt;/code>、&lt;code>image&lt;/code>、&lt;code>rules&lt;/code>タグが表示用metadataを持ち、&lt;code>p&lt;/code>タグに&lt;code>moderator&lt;/code> markerを付けてmoderator pubkeyを列挙します。&lt;code>relay&lt;/code>タグには&lt;code>author&lt;/code>、&lt;code>requests&lt;/code>、&lt;code>approvals&lt;/code>といったmarkerを付けて、どこへどの種別のイベントを出すべきかのhintを載せられます。ユーザーはkind &lt;code>1&lt;/code> noteやkind &lt;code>30023&lt;/code> articleなど任意の通常イベントへ、community coordinateである&lt;code>34550:&amp;lt;creator_pubkey&amp;gt;:&amp;lt;slug&amp;gt;&lt;/code>を値に持つ&lt;code>a&lt;/code>タグを追加して投稿します。その投稿はそれ単体でも有効なNostr eventですが、community-aware clientは認識済みmoderatorのapprovalが付いたものだけをcommunity feedへ出します。&lt;/p>
&lt;p>approvalはmoderatorが公開する別個のkind &lt;code>4549&lt;/code>イベントです。そこにはsubmissionを指す&lt;code>e&lt;/code>タグ、投稿者を指す&lt;code>p&lt;/code>タグ、communityを指す&lt;code>a&lt;/code>タグが入り、&lt;code>content&lt;/code>にはstringifyされたsubmission eventがcache copyとして埋め込まれます。これにより、元投稿が後で消されても承認済みpostをrenderできます。approval modelの利点は3つあります。moderation判断が透明でaudit可能であること、同じ投稿が複数communityで承認され得ること、そしてkind &lt;code>34550&lt;/code>からmoderatorが外されれば、そのmoderatorの古いapprovalがread layerで無効化されることです。NIP-72は、spamをwireに流したくないclosed spaceより、curated front page的なpublic topic communityに向いています。&lt;/p>
&lt;h2 id="nip-deep-dive-nip-57-zaps">NIP Deep Dive: NIP-57 (Zaps)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/57.md">NIP-57&lt;/a>は、Lightning paymentをNostr identityやeventへ結び付け、かつ検証可能な支払いreceiptをrelayへ戻す方法を定義します。senderが誰で、いくらを、誰へ、どの対象のために支払ったかをNostr clientが検証可能な形で見られるようにする仕様で、LNURL、Lightning、Nostrの3層をまたいでいます。&lt;/p>
&lt;p>flowには4つのactorがいます。senderのclientは、recipientのkind &lt;code>0&lt;/code> profile metadataの&lt;code>lud06&lt;/code>または&lt;code>lud16&lt;/code>、またはzap対象イベントの&lt;code>zap&lt;/code>タグからLNURL endpointを見つけます。そのclientは意図した支払いを記述するkind &lt;code>9734&lt;/code> zap requestを署名し、relayではなくrecipientのLNURL callbackへ送ります。recipient側のLNURL serverはrequestを検証し、description hashがrequest eventの文字列表現へコミットするLightning invoiceを返し、senderが支払うとsenderが指定したrelay setへkind &lt;code>9735&lt;/code> zap receiptを公開します。zap requestには&lt;code>p&lt;/code>タグ、任意の&lt;code>e&lt;/code>または&lt;code>a&lt;/code>タグ、&lt;code>amount&lt;/code>、&lt;code>relays&lt;/code>、任意のmessageを入れる&lt;code>content&lt;/code>、対象kindを示す&lt;code>k&lt;/code>タグが入ります。zap receiptには&lt;code>description&lt;/code>タグ内のrequest全文、&lt;code>bolt11&lt;/code>、&lt;code>preimage&lt;/code>が入り、recipientのLNURL responseでadvertiseされた&lt;code>nostrPubkey&lt;/code>でwallet serverが署名します。&lt;/p>
&lt;p>clientがkind &lt;code>9735&lt;/code> receiptをzapとして表示するなら、4点を検証すべきです。receipt署名がLNURL &lt;code>nostrPubkey&lt;/code>と一致すること、&lt;code>bolt11&lt;/code>金額が埋め込みrequestの&lt;code>amount&lt;/code>と一致すること、invoiceのdescription hashがstringified requestへコミットしていること、&lt;code>preimage&lt;/code>がinvoiceの&lt;code>payment_hash&lt;/code>へハッシュされることです。これをしないzap count集計は簡単に偽造されます。private zapでは&lt;code>content&lt;/code>を暗号化して&lt;code>anon&lt;/code>タグを付け、anonymous zapではephemeral keypairまで新しく生成します。NIP-57はさらに&lt;a href="https://nostrcompass.org/ja/topics/nip-75/">NIP-75&lt;/a> zap goalの土台にもなっており、&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>の&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2469">PR #2469&lt;/a>はこの週、&lt;a href="https://nostrcompass.org/ja/topics/nip-53/">NIP-53&lt;/a> Live Activities画面でgoal progressとtop-zapper leaderboardを描画するようにしました。付録で定義されるzap splitにより、1回のzapを複数recipientへweight付きで分配することもできます。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものがある、または共有したい更新がある場合は、NostrでDMを送るか、&lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>で見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #18</title><link>https://nostrcompass.org/ja/newsletters/2026-04-15-newsletter/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-04-15-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-ac/">NIP-AC&lt;/a>の音声通話とビデオ通話、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>向けのRFC 9420準拠、desktop Tor対応、custom C secp256k1、multi-wallet &lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>を含む大規模な更新を進めました。&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a>は、kind &lt;code>7741&lt;/code>イベントを使ってFirebaseをNostr relayで置き換えるAndroid向けpush通知appとして登場しました。&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>はReticulumを追加し、LoRa mesh上でインターネットなしにNostrイベントを流せるようにしました。&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a>は、self-hostedな&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a> media serverとNostr relayを束ねたdesktop appとしてv0.1.0を出荷しました。&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a>は、Nostrベースのinternet radio directory兼playerとしてv0.1.0を開始しました。&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>暗号化group chat向けself-hosted bot platformとして開発を始めました。&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>は、security audit、batched WASM verification、message systemの再設計を含むv0.5.0からv0.5.3を出荷しました。&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-merges-desktop-tor-c-secp256k1-webrtc-calls-and-multi-wallet-nwc">Amethyst merges desktop Tor, C secp256k1, WebRTC calls, and multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、今週だけで29本のPRをマージし、cryptography、networking、calling、wallet infrastructureにまたがる大きな前進を見せました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a>は、kmp-tor daemonを埋め込んだfail-closed設計でdesktop Tor supportを追加し、Torが起動できない場合はrelay接続自体を拒否します。これによりAndroid版とdesktop版のprivacy routingがそろい、Tor統合には130件超のunit testが付きました。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a>は、JNI binding付きのcustom C secp256k1実装を追加し、Schnorr signature verificationを従来のpure Kotlin経路より2倍から3倍高速化しました。GLV decomposition、wNAF point encoding、x86_64とARM64向けのhardware-accelerated SHA-256が使われています。関連PRである&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2188">PR #2188&lt;/a>、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2195">PR #2195&lt;/a>、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2204">PR #2204&lt;/a>では、fused multiply-reduce、field element保存用のFe4 struct、platform-specific intrinsicsも入り、Androidでさらに約28%の改善が見込まれています。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a>は、pure KotlinのMLS実装をRFC 9420へ合わせ、reuse guard、AAD、ciphertext sample derivation、commit処理修正、thread safetyを追加しました。これは&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>統合に向けたもので、先週のKotlin MLS作業の続きを受けて&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>を完全なMLS準拠へ近づけます。加えて、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2203">PR #2203&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2211">PR #2211&lt;/a>にかけては、&lt;a href="https://nostrcompass.org/ja/topics/nip-ac/">NIP-AC&lt;/a>向けの完全なWebRTC音声通話・ビデオ通話stackが入りました。ICE restart、runtime camera switching、自動再接続、resolutionとbitrate設定、TURN server選択、Android 14以降のforeground service制約対応、call state machineのthread safetyまで含まれます。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-ac/">NIP-AC&lt;/a>の音声通話とビデオ通話、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>向けのRFC 9420準拠、desktop Tor対応、custom C secp256k1、multi-wallet &lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>を含む大規模な更新を進めました。&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a>は、kind &lt;code>7741&lt;/code>イベントを使ってFirebaseをNostr relayで置き換えるAndroid向けpush通知appとして登場しました。&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>はReticulumを追加し、LoRa mesh上でインターネットなしにNostrイベントを流せるようにしました。&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a>は、self-hostedな&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a> media serverとNostr relayを束ねたdesktop appとしてv0.1.0を出荷しました。&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a>は、Nostrベースのinternet radio directory兼playerとしてv0.1.0を開始しました。&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>暗号化group chat向けself-hosted bot platformとして開発を始めました。&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>は、security audit、batched WASM verification、message systemの再設計を含むv0.5.0からv0.5.3を出荷しました。&lt;/p>
&lt;h2 id="top-stories">Top Stories&lt;/h2>
&lt;h3 id="amethyst-merges-desktop-tor-c-secp256k1-webrtc-calls-and-multi-wallet-nwc">Amethyst merges desktop Tor, C secp256k1, WebRTC calls, and multi-wallet NWC&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、今週だけで29本のPRをマージし、cryptography、networking、calling、wallet infrastructureにまたがる大きな前進を見せました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2381">PR #2381&lt;/a>は、kmp-tor daemonを埋め込んだfail-closed設計でdesktop Tor supportを追加し、Torが起動できない場合はrelay接続自体を拒否します。これによりAndroid版とdesktop版のprivacy routingがそろい、Tor統合には130件超のunit testが付きました。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2374">PR #2374&lt;/a>は、JNI binding付きのcustom C secp256k1実装を追加し、Schnorr signature verificationを従来のpure Kotlin経路より2倍から3倍高速化しました。GLV decomposition、wNAF point encoding、x86_64とARM64向けのhardware-accelerated SHA-256が使われています。関連PRである&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2188">PR #2188&lt;/a>、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2195">PR #2195&lt;/a>、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2204">PR #2204&lt;/a>では、fused multiply-reduce、field element保存用のFe4 struct、platform-specific intrinsicsも入り、Androidでさらに約28%の改善が見込まれています。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2202">PR #2202&lt;/a>は、pure KotlinのMLS実装をRFC 9420へ合わせ、reuse guard、AAD、ciphertext sample derivation、commit処理修正、thread safetyを追加しました。これは&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>統合に向けたもので、先週のKotlin MLS作業の続きを受けて&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>を完全なMLS準拠へ近づけます。加えて、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2203">PR #2203&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2211">PR #2211&lt;/a>にかけては、&lt;a href="https://nostrcompass.org/ja/topics/nip-ac/">NIP-AC&lt;/a>向けの完全なWebRTC音声通話・ビデオ通話stackが入りました。ICE restart、runtime camera switching、自動再接続、resolutionとbitrate設定、TURN server選択、Android 14以降のforeground service制約対応、call state machineのthread safetyまで含まれます。&lt;/p>
&lt;p>wallet側では、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1988">PR #1988&lt;/a>がmulti-wallet &lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> supportを追加し、1つのaccountに複数NWC walletを接続し、個別のbalance cardを見て、default walletを選び、旧single-wallet設定から移行できるようにしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2189">PR #2189&lt;/a>はGIF-to-MP4変換も追加し、3MBのGIFを約159KBのMP4へ圧縮できます。同じ週には、post composer向けAI tone suggestionと自動言語検出も入りました。&lt;/p>
&lt;h3 id="nstrfy-launches-nostr-native-push-notifications-for-android">nstrfy launches Nostr-native push notifications for Android&lt;/h3>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy-android">nstrfy&lt;/a>は4月13日に公開され、&lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.0.0">v1.0.0&lt;/a>から&lt;a href="https://github.com/vcavallo/nstrfy-android/releases/tag/v1.2.0">v1.2.0&lt;/a>まで3リリースを出しました。このappはntfy-androidのforkで、HTTP transportをNostrへ置き換えています。serverをpollしてpush通知を待つ代わりに、configurable relay上のkind &lt;code>7741&lt;/code>イベントへsubscribeし、それをnative Android notificationとして表示します。&lt;/p>
&lt;p>通知モデルは平文payloadと&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化payloadの両方をサポートします。暗号化時には、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>を使って&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>経由で署名するか、local nsecを使います。topic単位のsubscriptionでは送信者allowlistを設定でき、npub whitelistに入った相手だけがそのtopicの通知を発火できます。relay listは&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>を通じてprofileから取り込み、&lt;a href="https://nostrcompass.org/ja/topics/nip-40/">NIP-40&lt;/a>のevent expirationにも従います。tap-to-open URL、priority level、custom icon、action buttonなど、ntfyの通知語彙もそのまま多くが使えます。user searchはbrainstorm.worldの&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a> dataを使うNIP-50で動いています。&lt;/p>
&lt;p>&lt;a href="https://github.com/vcavallo/nstrfy.sh">nstrfy.sh&lt;/a>のcompanion projectは、bash CLIと、browserから送受信できる&lt;a href="https://nstrfy.sh">nstrfy.sh&lt;/a>のhosted web clientの両方を提供し、NIP-07 signer supportも持ちます。native appは&lt;a href="https://zapstore.dev/apps/io.nstrfy.android">Zapstore&lt;/a>で配布されています。&lt;/p>
&lt;h3 id="hamstr-adds-reticulum-for-nostr-over-lora-mesh">HAMSTR adds Reticulum for Nostr over LoRa mesh&lt;/h3>
&lt;p>&lt;a href="https://github.com/LibertyFarmer/hamstr">HAMSTR&lt;/a>は、ham radio経由でNostrイベントとLightning zapsを送るプロジェクトで、4月12日に&lt;a href="https://github.com/LibertyFarmer/hamstr/pull/10">PR #10&lt;/a>をマージし、transport backendとして&lt;a href="https://reticulum.network/">Reticulum&lt;/a> mesh networkingを追加しました。Reticulumは、LoRa、HF、VHF/UHF radio、serial link、TCP/IP上で動くcryptographic mesh protocolです。これによりHAMSTRは、インターネット基盤をまったく使わず、RNode hardware deviceのmesh上でNostrイベントをrelayできるようになります。&lt;/p>
&lt;p>既存のAX.25 Packet RadioとVARA HF transportも引き続き利用でき、operatorは自分の構成に合うradio linkを選べます。HAMSTRのzero-knowledge server architectureではrelayが秘密鍵を見ず、&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a> zap準拠によりoffline Lightning zapsもAmethystやPrimalのようなclientに正しく現れます。Reticulum transportのsetup guideは&lt;a href="https://github.com/LibertyFarmer/hamstr/blob/master/RETICULUM.MD">RETICULUM.MD&lt;/a>にあり、同週の&lt;a href="https://github.com/LibertyFarmer/hamstr/pull/11">PR #11&lt;/a>ではfrontendがSvelte 5とTailwindCSS v4へ移行しました。&lt;/p>
&lt;h2 id="shipping-this-week">Shipping This Week&lt;/h2>
&lt;h3 id="bloom-v010-ships-self-hosted-blossom-server-and-relay">Bloom v0.1.0 ships self-hosted Blossom server and relay&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrnative/bloom">Bloom&lt;/a>は4月9日に初リリース&lt;a href="https://github.com/nostrnative/bloom/releases/tag/v0.1.0">v0.1.0&lt;/a>を出しました。Tauri v2（Rust backend）とReact 19で構築されており、完全な&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a> protocol media serverとNostr relayを1つのdesktop applicationへ束ねています。ユーザーは、server infrastructureを自分で管理しなくても、SHA-256 content addressing、&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a> file metadata対応、&lt;code>blossom://&lt;/code> URI解決を備えたsovereign file storageを得られます。リリースには16本のplatform-specific binary assetが含まれています。&lt;/p>
&lt;h3 id="wavefunc-v010-and-v011-launch-nostr-internet-radio">WaveFunc v0.1.0 and v0.1.1 launch Nostr internet radio&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/wavefunc">WaveFunc&lt;/a>は4月13日に&lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.0">v0.1.0&lt;/a>と&lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a>を出し、Nostrベースのinternet radio directory兼playerとして始動しました。独自event kindがdata modelを定義し、radio station listingにkind &lt;code>31237&lt;/code>、favorites listにkind &lt;code>30078&lt;/code>、live chatにkind &lt;code>1311&lt;/code>、station commentにkind &lt;code>1111&lt;/code>を使います。relay backendにはKhatruが使われ、SQLite storageとBluge full-text searchで&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>を支えます。&lt;/p>
&lt;p>WaveFuncは&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a> Cashu walletとnutzap supportも備え、NDKからapplesauce-coreへ移行しました。&lt;a href="https://github.com/zeSchlausKwab/wavefunc/releases/tag/v0.1.1">v0.1.1&lt;/a>ではgenre carousel、Lightning donation popover、認証済みユーザー向けstation management、Zapstore listingが追加されました。Tauri v2のdesktop buildにはsystem tray integration、media key support、autostart、deep linkingも入り、buildはmacOS、Windows、Linux、Android向けに&lt;a href="https://wavefunc.live">wavefunc.live&lt;/a>から入手できます。&lt;/p>
&lt;h3 id="snort-ships-v050-through-v053-with-security-hardening-and-performance-overhaul">Snort ships v0.5.0 through v0.5.3 with security hardening and performance overhaul&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>は、ReactベースのNostr web clientで、&lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.0">v0.5.0&lt;/a>から&lt;a href="https://github.com/v0l/snort/releases/tag/v0.5.3">v0.5.3&lt;/a>まで3リリースを出しました。中心となるv0.5.0は、実Schnorr signature verification、偽造relay messageに対する&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>保護、PIN encryption改善、未検証&lt;a href="https://github.com/nostr-protocol/nips/blob/master/26.md">NIP-26&lt;/a> delegation trustの削除を含む包括的なsecurity audit対応です。性能面では、batched WASM signature verification、lazy-loaded route、priority profile loaderの再設計、worker-relay最適化が入りました。加えて、&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a> DVM向けkind &lt;code>7000&lt;/code> payment-required invoice表示も追加されています。&lt;a href="https://github.com/v0l/snort/pull/620">PR #620&lt;/a>はmessage systemも再設計し、gift wrapをworker relayへ永続化しつつ、O(n²)だったchat list計算をsingle-passのMapベースへ置き換えました。&lt;/p>
&lt;h3 id="primal-android-ships-3021-and-redesigns-feed-layout">Primal Android ships 3.0.21 and redesigns feed layout&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.21">v3.0.21&lt;/a>を出し、poll zap vote、wallet multi-account sharing、remote signerとwallet serviceのauto-reconnectまわりのbug fixを行いました。その後も7本のPRが入り、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1008">PR #1008&lt;/a>がmain screen layoutを統一し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1010">PR #1010&lt;/a>が大きいavatarとindent付きcontentを備えた新feed card designを導入し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1009">PR #1009&lt;/a>がmedia feed cardにvideo supportとportrait layoutを加え、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1012">PR #1012&lt;/a>がquick reply用compact text fieldを追加し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1013">PR #1013&lt;/a>がapp barを再設計しました。&lt;/p>
&lt;h3 id="nostria-v3119-through-v3121-add-local-ai-image-generation">Nostria v3.1.19 through v3.1.21 add local AI image generation&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>は&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.19">v3.1.19&lt;/a>から&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.21">v3.1.21&lt;/a>まで3リリースを出し、80件超のcommitを積みました。中心となる新機能は、WebGPU acceleration付きJanus Proを使うlocal image generationで、ユーザーは外部APIなしに端末上で画像を生成できます。加えてcloud image generation、multimodal chat、ONNX runtime support、AI prompt library、AI cache managementも入りました。client面では、新しいdialog system、note editorの見直し、music embed改善、signer login flow変更も含まれています。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/">Newsletter #17&lt;/a>では、v3.1.18までのnative mobile releaseを扱いました。&lt;/p>
&lt;h3 id="tubestr-v103-ships-feed-and-studio-updates">TubeStr v1.0.3 ships feed and studio updates&lt;/h3>
&lt;p>&lt;a href="https://github.com/Tubestr/tubestr-v2">TubeStr&lt;/a>は、Nostr上に構築されたprivate family video sharing appで、4月13日に&lt;a href="https://github.com/Tubestr/tubestr-v2/releases/tag/v1.0.3">v1.0.3&lt;/a>を出しました。このリリースはfeedとstudioの改善が中心です。&lt;a href="https://github.com/Tubestr/tubestr-v2/pull/3">PR #3&lt;/a>はonboarding screenを刷新し、&lt;a href="https://github.com/Tubestr/tubestr-v2/pull/2">PR #2&lt;/a>はvideo export errorを修正しました。アプリはfamily member間の暗号化media sharingにNDKとMDK（&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> Development Kit）を使っており、media storageには&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>統合が予定されています。TubeStrは&lt;a href="https://zapstore.dev">Zapstore&lt;/a>で利用できます。&lt;/p>
&lt;h2 id="in-development">In Development&lt;/h2>
&lt;h3 id="botburrow-begins-development-as-marmot-bot-platform">Botburrow begins development as Marmot bot platform&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/botburrow">Botburrow&lt;/a>はMarmot teamの新プロジェクトで、4月3日に始まりました。これはself-hostedなbot management platformで、各botが独自のNostr identityを持ち、Welcome message経由で&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>のMLS-encrypted group chatへ参加し、end-to-end encrypted messageを送受信します。dashboardはRails 8.1で構築され、単一のwhitenoise-rs daemon（&lt;code>wnd&lt;/code>）とUnix socketで通信します。&lt;/p>
&lt;p>Botburrowは、command、trigger、scheduled actionがcustom Ruby codeを実行できるscripting layerを備え、scriptは&lt;code>wnd&lt;/code>経由でprofile、group membership、pending inviteを参照でき、dashboardには実group内のbotへ送受信できるlive chat viewもあり、各botはconfig、cache、生成output向けの個別file storageを持ちます。&lt;a href="https://github.com/marmot-protocol/botburrow/commit/2ed012078eaab3c5b92dff16b87865c2e353bd80">Docker image&lt;/a>はmulti-arch buildでUmbrelとStart9向けzero-config self-hostingを目指しており、READMEには&lt;a href="https://github.com/marmot-protocol/botburrow/commit/c8ef8c306af247560b1952878206d854cde3fe20">trust model section&lt;/a>も追加されました。&lt;/p>
&lt;h3 id="nostr-archives-adds-trending-feeds-relay-and-entity-resolution">Nostr Archives adds trending feeds relay and entity resolution&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/nostrarchives-api">Nostr Archives&lt;/a>は、&lt;a href="https://nostrarchives.com">nostrarchives.com&lt;/a>で動くNostr archival and analytics platformで、Rust製&lt;a href="https://github.com/barrydeen/nostrarchives-api">API&lt;/a>とNext.js 16製&lt;a href="https://github.com/barrydeen/nostrarchives-frontend">frontend&lt;/a>の両方で開発が続いています。API側では&lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/118">PR #118&lt;/a>がclient leaderboardへtime-range filteringを追加し、&lt;a href="https://github.com/barrydeen/nostrarchives-api/pull/117">PR #117&lt;/a>がreply eventへengagement counterを追加しました。frontend側では&lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/85">PR #85&lt;/a>がURL pathからNostr entityを直接解決し、&lt;a href="https://github.com/barrydeen/nostrarchives-frontend/pull/86">PR #86&lt;/a>がAPI documentation pageを追加しました。platformはNIP-50 search relay、trending feeds relay、future-dated event用scheduler relay、kinds 0、3、10002向けindexer relayの4つを運用しています。&lt;/p>
&lt;h3 id="damus-fixes-favorites-timeline">Damus fixes favorites timeline&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>は、iOS clientで、&lt;a href="https://github.com/damus-io/damus/pull/3708">PR #3708&lt;/a>をマージし、&lt;code>subscribe_to_favorites()&lt;/code>関数をin-place filtering、deduplication rebuilding、persisted tab selection付きで書き直しました。&lt;/p>
&lt;h3 id="nostur-adds-private-zaps-and-custom-emoji-viewing">Nostur adds private zaps and custom emoji viewing&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>は今週10 commitを積み、private zap support、custom emoji viewing、animated &lt;code>.webp&lt;/code> rendering修正、voice messageのaudio format detectionを追加しました。&lt;/p>
&lt;h3 id="amber-ships-v601-through-v603-with-webdav-backup-and-relay-reconnection-fixes">Amber ships v6.0.1 through v6.0.3 with WebDAV backup and relay reconnection fixes&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は、Android向け&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a> signer appで、今週3リリースを出しました。&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.1">v6.0.1&lt;/a>ではWebDAVとGoogle Drive共有の2つのbackup optionを追加し、relay reconnectionにexponential backoffを実装し、Quartz libraryを1.08.0へ更新し、app update eventとprofile eventのvalidationを修正しました。&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.2">v6.0.2&lt;/a>はseed word使用時のaccount index optionを追加し、起動時にrelayがofflineでもreconnectionできるようにし、&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.3">v6.0.3&lt;/a>はintent受信時の空request IDをさらに修正しました。&lt;/p>
&lt;h3 id="plektos-v060-redesigns-with-ditto-themes">Plektos v0.6.0 redesigns with Ditto themes&lt;/h3>
&lt;p>&lt;a href="https://github.com/derekross/plektos">Plektos&lt;/a>は、interactive mapを備えた&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>ベースのdecentralized meetup and events platformで、4月14日に&lt;a href="https://github.com/derekross/plektos/commit/7a691cdf089ceb7a8582dd5c0ee026830f2cdc77">v0.6.0&lt;/a>と&lt;a href="https://github.com/derekross/plektos/commit/3a6474ae380522d8ee1b3526423fcfc3328fd879">v0.6.1&lt;/a>を出しました。この更新では、Ditto風community theme、custom background image upload、avatar shape設定、UI overhaulが入りました。&lt;a href="https://github.com/derekross/plektos/pull/6">PR #6&lt;/a>はsecurity、architecture、UXを含むfull code reviewを反映しています。Plektosはprotocol統合にNostrify、remote loginに&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>、ticket paymentにzapsを使い、Android buildはZapstoreで利用できます。&lt;/p>
&lt;h3 id="shadow-adds-nostr-os-api-and-cashu-wallet-app">Shadow adds Nostr OS API and Cashu wallet app&lt;/h3>
&lt;p>&lt;a href="https://github.com/justinmoon/shadow">Shadow&lt;/a>はJustin Moonのapp runtime platformで、2日で30超のcommitを積みました。&lt;a href="https://github.com/justinmoon/shadow/commit/88cbda5131814d2730a2d892029932136db005df">Commit 88cbda5&lt;/a>はruntime内で動くCashu wallet appを追加し、&lt;a href="https://github.com/justinmoon/shadow/commit/865c415">Commit 865c415&lt;/a>はpodcast player demoを追加しました。runtimeは&lt;code>Shadow.os.nostr&lt;/code>と&lt;code>Shadow.os.audio&lt;/code>をOS-level APIとして公開し、Pixel runtime laneではroot化Android device上でWayland compositorとGPU compositingが動きます。&lt;a href="https://github.com/justinmoon/shadow/pull/1">PR #1&lt;/a>と&lt;a href="https://github.com/justinmoon/shadow/pull/2">PR #2&lt;/a>はdesktop Linuxのfont loadingとXDG state directory handlingを修正しました。正式releaseはまだありません。&lt;/p>
&lt;h3 id="lief-fixes-amber-login-and-adds-zapstore">Lief fixes Amber login and adds Zapstore&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/lief">Lief&lt;/a>は、他のNostrユーザーへlong-form letterを作成・送信するNostr appで、4月12日にbuild &lt;code>v2026.04.12&lt;/code>を出しました。この更新ではAndroid上の&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> signer login issueを修正し、signer nudge flowを単純化し、nostrify依存を更新し、Zapstore integrationを追加しました。&lt;/p>
&lt;h3 id="espy-overhauls-color-picker-and-fixes-amber-login">Espy overhauls color picker and fixes Amber login&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/chad.curtis/espy">Espy&lt;/a>は、現実世界の場面から3から6色のpaletteを共有するNostr social appで、4月12日にbuild &lt;code>v2026.04.12&lt;/code>を出しました。更新では、grayscale toggleに代えてcurved saturation arcを持つcolor picker overhaulが入り、hue ring flicker bugが修正され、AlchemistとAstrologerというEaster egg characterも追加されました。PNG assetは703KB削減され、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a> login fix、signer nudge flow簡略化、nostrify依存更新、Zapstore integrationも含まれています。&lt;/p>
&lt;h3 id="jumble-adds-per-feed-kind-filters-and-articles-tab">Jumble adds per-feed kind filters and articles tab&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>は今週13 commitを積み、feedごとのkind filtering、Articles tab、privacy-preserving option付きnotification read status sync、avatar hide mode、account switchingのrace condition fixを追加しました。&lt;/p>
&lt;h3 id="primal-web-ships-8-version-bumps">Primal Web ships 8 version bumps&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-web-app">Primal Web&lt;/a>は1週間で3.0.93から3.0.101までのversion bumpを行い、21 commitを積みました。作業は主に、live stream chat改善、mention境界修正、bookmark pagination、duplicate like防止、relay proxy修正に集中しています。&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="nip-updates">NIP Updates&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPs repository&lt;/a>への最近の変更です。&lt;/p>
&lt;p>&lt;strong>Merged:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>（Git Stuff）: Add &lt;code>nostr://&lt;/code> clone URLs&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2312">PR #2312&lt;/a>）：&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>は、kind &lt;code>30617&lt;/code>のrepository announcementを使ってgit repositoryをNostr上でホストする方法を定義します。今回のPRは、&lt;code>git-remote-nostr&lt;/code> helperで使える&lt;code>nostr://&lt;/code> clone URL formatを追加し、&lt;code>nostr://&amp;lt;naddr&amp;gt;&lt;/code>、&lt;code>nostr://&amp;lt;npub|nip05&amp;gt;/&amp;lt;identifier&amp;gt;&lt;/code>、&lt;code>nostr://&amp;lt;npub|nip05&amp;gt;/&amp;lt;relay-hint&amp;gt;/&amp;lt;identifier&amp;gt;&lt;/code>の3形式を定義します。relay hintとidentifierはRFC 3986に従ってpercent-encodeされ、Shakespeare、ngit、GitWorkshop.dev、NostrHub.ioですでに使われています。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Open PRs and Discussions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>NIP-63a: Minimal Payment Gateway Descriptor&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2315">PR #2315&lt;/a>）：creatorが有料content access向けのpayment gateway、pricing model、subscription ruleを宣言するkind &lt;code>10164&lt;/code> replaceable eventを提案します。clientごとの独自payment flowではなく、1つのイベントから受け入れpayment methodやpricing tierをdiscoverできるようにするものです。&lt;/li>
&lt;li>&lt;strong>NIP-XX: Relay Self-Declaration Manifest and Retention Horizon&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2314">PR #2314&lt;/a>）：relay operatorがendpoint、retention window、write policy、supported NIPsを宣言するkind &lt;code>10100&lt;/code>イベントと、relayが&lt;code>EOSE&lt;/code>前に最古保持timestampを返す&lt;code>HORIZON&lt;/code> messageを提案します。HTTP-onlyだったNIP-11の配布失敗を補い、relayの時間的境界を明示する狙いです。&lt;/li>
&lt;li>&lt;strong>NIP-TPLD: Transient Private Location Data&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2309">PR #2309&lt;/a>）：kind &lt;code>20411&lt;/code>のephemeral rangeを使い、特定受信者だけが復号できる位置情報共有を提案します。contentには受信者pubkeyごとの&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号payloadが入り、&lt;code>ttl&lt;/code>タグで推奨保持期間を示します。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-5c/">NIP-5C&lt;/a>（Scrolls）: WASM programs update&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>）：WebAssembly program publishingとexecution specの作業が続いています。clientがrelayからWASM binaryを取得してsandbox内で実行できる「scrolls」のevent formatとruntime interfaceを更新するもので、&lt;a href="https://nprogram.netlify.app/">demo app&lt;/a>もあります。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a> large payload support&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/1907">PR #1907&lt;/a>）：現在65,535バイトの上限を超えるpayloadをNIP-44で扱うための後方互換な拡張を提案します。大きなkind &lt;code>3&lt;/code> contact listをremote signingする&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>用途が主な動機です。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-c7/">NIP-C7&lt;/a>: Restrict kind 9 to chat views&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2310">PR #2310&lt;/a>）：kind &lt;code>9&lt;/code>をchat-oriented viewに限定し、general feedで文脈を失ったchat messageが混ざらないようにする提案です。kind &lt;code>1&lt;/code>やkind &lt;code>30023&lt;/code>のような他contentはkind &lt;code>9&lt;/code> message内で参照すべきだと整理します。&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-29-relay-based-groups">NIP Deep Dive: NIP-29 (Relay-based Groups)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/29.md">NIP-29&lt;/a>は、relay自体がgroup membershipとmoderationを管理するgroup messaging modelを定義します。groupは特定relay上に存在し、relayが誰に書き込み権があるかを決めます。これは、client-side MLS encryptionを使う&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>や、gift-wrapped DMベースの&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> group chatとは異なる設計で、relay operatorがmessageを読め、moderationもrelayレベルで行われます。&lt;/p>
&lt;p>groupは&lt;code>&amp;lt;host&amp;gt;'&amp;lt;group-id&amp;gt;&lt;/code>形式で識別されます。例えば&lt;code>groups.nostr.com'abcdef&lt;/code>のような形です。特別なgroup ID &lt;code>_&lt;/code>はrelay-wide discussion向けtop-level groupとして予約されています。groupへ送るユーザーイベントは、group IDを持つ&lt;code>h&lt;/code>タグを必ず含みます。&lt;code>previous&lt;/code>タグはtamper detection用で、clientは直近50 message内で見た同じrelayのイベントhash先頭8文字を含め、relayは存在しない&lt;code>previous&lt;/code>を参照するイベントを拒否します。これによりforkされたrelayへ文脈外でmessageを再送することが難しくなります。&lt;/p>
&lt;p>membershipはkind &lt;code>9000-9020&lt;/code>範囲のmoderation eventで管理されます。ユーザーはkind &lt;code>9021&lt;/code>のjoin requestを送り、relayのpolicyに応じて受理または拒否されます。adminはkind &lt;code>9000&lt;/code>でuser追加、kind &lt;code>9001&lt;/code>で削除、kind &lt;code>9002&lt;/code>でmetadata編集、kind &lt;code>9005&lt;/code>でevent削除、kind &lt;code>9009&lt;/code>でinvite code作成ができます。relayはkind &lt;code>39000&lt;/code>でmetadata、kind &lt;code>39001&lt;/code>でadmin list、kind &lt;code>39002&lt;/code>でmember list、kind &lt;code>39003&lt;/code>でroleとcapabilityを公開します。groupはpublic、closed、fully openなどさまざまに設定でき、visibilityとwrite-accessは独立しています。&lt;/p>
&lt;p>重要なのは、NIP-29がchat message以外もgroup文脈へ入れられることです。long-form article（&lt;a href="https://nostrcompass.org/ja/topics/nip-23/">NIP-23&lt;/a>）、calendar event（&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>）、live stream（&lt;a href="https://nostrcompass.org/ja/topics/nip-53/">NIP-53&lt;/a>）、market listingなども&lt;code>h&lt;/code>タグを持ってgroup内へ入れられます。実装面では&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>が最も活発で、&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>も対応しており、reference implementationとして&lt;a href="https://github.com/fiatjaf/relay29">groups.fiatjaf.com&lt;/a>があります。relay operatorがcontentを読めるという明確なトレードオフがある一方、公開communityや開発者channelのような用途では、この単純さが利点になります。relayがcontentを読めないprivate messagingが必要なら、NIP-17かMarmotのほうが適しています。&lt;/p>
&lt;h2 id="nip-deep-dive-nip-90-data-vending-machines">NIP Deep Dive: NIP-90 (Data Vending Machines)&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/90.md">NIP-90&lt;/a>は、Nostr上でon-demand computationを行うためのプロトコルです。customerがjob requestを公開し、service providerがそれを処理して結果をNostr eventとして返します。仕様自身が言うように、これは「money in, data out」の市場であり、customerは誰が処理したかより出力そのものを重視します。&lt;/p>
&lt;p>プロトコルは、job requestに&lt;code>5000-5999&lt;/code>、job resultに&lt;code>6000-6999&lt;/code>、feedbackにkind &lt;code>7000&lt;/code>を割り当てます。result kindはrequest kindより常に1000大きくなります。requestには入力を示す&lt;code>i&lt;/code>タグ、期待する形式を示す&lt;code>output&lt;/code>タグ、最大支払いを示す&lt;code>bid&lt;/code>、job固有設定を入れる&lt;code>param&lt;/code>タグが含まれます。providerはresultで元requestを参照し、必要ならLightning invoiceを&lt;code>amount&lt;/code>タグで返せます。kind &lt;code>7000&lt;/code>のfeedback eventにより、&lt;code>payment-required&lt;/code>、&lt;code>processing&lt;/code>、&lt;code>error&lt;/code>、&lt;code>success&lt;/code>のような進捗通知も送れます。&lt;/p>
&lt;p>NIP-90はjob chainingもサポートし、あるjobの出力を次のjobの入力へ渡せます。これにより、音声のtranscription、要約、翻訳を別providerで順につなぐようなpipelineが可能になります。privacyが必要な場合、customerは&lt;code>i&lt;/code>や&lt;code>param&lt;/code>を&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>で暗号化し、&lt;code>encrypted&lt;/code>タグ付きで&lt;code>content&lt;/code>へ入れられます。その代わり、この場合は特定providerを事前に選ぶ必要があります。provider discoveryには&lt;a href="https://nostrcompass.org/ja/topics/nip-89/">NIP-89&lt;/a>が使われ、Snortのkind &lt;code>7000&lt;/code> invoice表示やnoStrudelのDVM explorerなど、周辺実装も増えています。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものがある、または共有したい更新がある場合は、NostrでDMを送るか、&lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>で見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #17</title><link>https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、Arti Tor統合と再設計されたShorts UIを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#amethyst%e3%81%8carti-tor%e3%82%92%e5%87%ba%e8%8d%b7%e3%81%97pure-kotlin%e3%81%aemls%e3%81%a8marmot%e3%82%92%e7%b5%b1%e5%90%88">v1.08.0&lt;/a>を出荷し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>のpure Kotlin実装を&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>ライブラリへ統合しました。&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>は、動画録画、アニメーションGIFプロフィール、プライベート返信を備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nostur-v1270%e3%81%8c%e5%8b%95%e7%94%bb%e9%8c%b2%e7%94%bb%e3%81%a8%e3%83%97%e3%83%a9%e3%82%a4%e3%83%99%e3%83%bc%e3%83%88%e8%bf%94%e4%bf%a1%e3%82%92%e8%bf%bd%e5%8a%a0">v1.27.0&lt;/a>を出荷しました。&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>は、Shows（OBSに接続できるカスタム配信情報）とTikTok風の縦型動画カルーセルを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#shosho-v0150%e3%81%8cshows%e3%81%a8%e7%b8%a6%e5%9e%8b%e5%8b%95%e7%94%bb%e3%82%ab%e3%83%ab%e3%83%bc%e3%82%bb%e3%83%ab%e3%82%92%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">v0.15.0&lt;/a>を開始しました。&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>は、ローテーションするephemeral keysを使う&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nymchat%e3%81%8cmarmot%e3%82%92%e5%b7%bb%e3%81%8d%e6%88%bb%e3%81%97%e5%bc%b7%e5%8c%96%e7%89%88nip-17%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e3%83%81%e3%83%a3%e3%83%83%e3%83%88%e3%82%92%e5%87%ba%e8%8d%b7">強化版NIP-17グループチャットへ戻すためMarmotを巻き戻し&lt;/a>、&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>は6リリースにわたり&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nostr-vpn%e3%81%8cexit-node%e5%af%be%e5%bf%9c%e3%81%a8umbrel%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0%e3%82%92%e5%87%ba%e8%8d%b7">exit node対応とUmbrelパッケージング&lt;/a>を進めました。&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は接続ごとの&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>署名鍵とZapstoreアプリ内更新を備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#amber-v600-pre1%e3%81%8c%e6%8e%a5%e7%b6%9a%e3%81%94%e3%81%a8%e3%81%aenip-46%e7%bd%b2%e5%90%8d%e9%8d%b5%e3%82%92%e8%bf%bd%e5%8a%a0">v6.0.0-pre1&lt;/a>へ進みました。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>はZapstore経由のAPK self-updateを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta%e3%81%8czapstore-self-update%e3%82%92%e5%87%ba%e8%8d%b7">v0.10.0-beta&lt;/a>に到達し、&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>（Badges）では&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">kind migration&lt;/a>が入りました。今週のNIPディープダイブは&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（Private Direct Messages）と&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Remote Signing）です。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amethystがarti-torを出荷しpure-kotlinのmlsとmarmotを統合">AmethystがArti Torを出荷し、pure KotlinのMLSとMarmotを統合&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はvitorpamplonaがメンテナンスするAndroidクライアントで、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a>まで4リリースを出荷し、未リリース作業の大きなまとまりを&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>ライブラリ（共有Kotlin Multiplatform Nostrモジュール）へ統合しました。見出しとなるリリースはv1.08.0「Arti Tor」で、アプリのTor接続をCベースのTorライブラリから、Tor ProjectによるRust実装の&lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>へ移行します。この移行は、従来のC Torバインディング下で起きていたランダムクラッシュに対処するものです。Artiはメモリ安全性とasync I/Oを目的にRustでゼロから書かれた、Tor ProjectによるCコードベースの長期的な置き換えです。&lt;/p>
&lt;p>v1.07.3ではShorts UIも再設計され、ページ送り型のデザインが、画像、shorts、長尺動画向けのedge-to-edgeフィードへ置き換えられました。同じリリースでbadgesはkind &lt;code>10008&lt;/code>へ、bookmarksはkind &lt;code>10003&lt;/code>へ移行され、今週&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">マージされた&lt;/a>&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>のkind migrationと足並みをそろえています。v1.07.4ではNostr Wallet Connectのsecret処理問題が修正され、v1.07.5では画像アップロード時のクラッシュが修正されました。&lt;/p>
&lt;p>mainには入っているものの、まだタグ付きリリースには含まれていない作業として、チームは&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルの完全なKotlin実装を書き上げ、ネイティブC/Rustライブラリバインディングを不要にしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a>はMarmot MLSグループメッセージングの中核層を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a>はグループチャットUIを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a>はsubscription manager付きの送受信メッセージプロセッサを追加します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a>はMLS group stateの永続化とKeyPackage rotation管理を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a>は改良されたGroupInfo署名を備えた完全なMLS test suiteを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a>はKeyPackage公開状態の追跡を追加します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a>はNostrの暗号処理向けにpure Kotlinのsecp256k1実装を追加し、ネイティブCライブラリ依存を置き換えます。Kotlin版MLS実装と組み合わせることで、&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>はネイティブバインディングなしでNostr署名とMarmotグループメッセージングを実行できるようになり、iOSを含むKotlin Multiplatformターゲットへの道が開かれます。&lt;/p>
&lt;p>チームは&lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a>（P2P Voice and Video Calls）サポートも進めています。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>はNIP-AC call state machine向けの完全なtest suiteを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>はアプリ再起動後に古いcall offerが再発火しないようにしています。&lt;/p>
&lt;h3 id="nostur-v1270が動画録画とプライベート返信を追加">Nostur v1.27.0が動画録画とプライベート返信を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>はiOS Nostrクライアントで、4月2日に&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a>を出荷しました。このリリースは、アップロード前トリミング付きのアプリ内動画録画を追加しており、ユーザーは短いクリップを撮影し、長さを整え、クライアントを離れずに公開できます。アニメーションGIF対応はプロフィール写真とバナー写真にも広がり、アニメーションWebPレンダリングも追加されました。新しいShortcuts統合により、Apple Shortcutsの自動化からNostr投稿を送れるようにもなっています。さらに、private repliesが追加され、Nosturと他クライアントの間でメッセージ配信に影響していたDM互換性問題も修正されました。&lt;/p>
&lt;h3 id="shosho-v0150がshowsと縦型動画カルーセルをローンチ">Shosho v0.15.0がShowsと縦型動画カルーセルをローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>はNostrライブ配信アプリで、4月7日に&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a>と&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a>を出荷しました。目玉機能はShowsです。配信者はライブ開始前にカスタムの番組情報を設定し、その番組をOBSや任意の外部エンコーダへ接続できます。これにより、「今何を配信しているのか」というメタデータが、実際に配信を開始する操作から切り離され、配信者はタイトル、説明、商品を事前に準備できるようになります。同じリリースでは、ライブ、クリップ、リプレイをフルスクリーンフィードでスワイプして見ていけるTikTok風の縦型動画カルーセルと、プロフィールページから直接動画クリップを公開したり商品を追加したりできるQuick Addも入りました。v0.15.1では、キーボードがライブ配信チャット入力欄を隠していたバグが修正されています。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、Arti Tor統合と再設計されたShorts UIを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#amethyst%e3%81%8carti-tor%e3%82%92%e5%87%ba%e8%8d%b7%e3%81%97pure-kotlin%e3%81%aemls%e3%81%a8marmot%e3%82%92%e7%b5%b1%e5%90%88">v1.08.0&lt;/a>を出荷し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>のpure Kotlin実装を&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>ライブラリへ統合しました。&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>は、動画録画、アニメーションGIFプロフィール、プライベート返信を備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nostur-v1270%e3%81%8c%e5%8b%95%e7%94%bb%e9%8c%b2%e7%94%bb%e3%81%a8%e3%83%97%e3%83%a9%e3%82%a4%e3%83%99%e3%83%bc%e3%83%88%e8%bf%94%e4%bf%a1%e3%82%92%e8%bf%bd%e5%8a%a0">v1.27.0&lt;/a>を出荷しました。&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>は、Shows（OBSに接続できるカスタム配信情報）とTikTok風の縦型動画カルーセルを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#shosho-v0150%e3%81%8cshows%e3%81%a8%e7%b8%a6%e5%9e%8b%e5%8b%95%e7%94%bb%e3%82%ab%e3%83%ab%e3%83%bc%e3%82%bb%e3%83%ab%e3%82%92%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">v0.15.0&lt;/a>を開始しました。&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>は、ローテーションするephemeral keysを使う&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nymchat%e3%81%8cmarmot%e3%82%92%e5%b7%bb%e3%81%8d%e6%88%bb%e3%81%97%e5%bc%b7%e5%8c%96%e7%89%88nip-17%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e3%83%81%e3%83%a3%e3%83%83%e3%83%88%e3%82%92%e5%87%ba%e8%8d%b7">強化版NIP-17グループチャットへ戻すためMarmotを巻き戻し&lt;/a>、&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>は6リリースにわたり&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nostr-vpn%e3%81%8cexit-node%e5%af%be%e5%bf%9c%e3%81%a8umbrel%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0%e3%82%92%e5%87%ba%e8%8d%b7">exit node対応とUmbrelパッケージング&lt;/a>を進めました。&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は接続ごとの&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>署名鍵とZapstoreアプリ内更新を備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#amber-v600-pre1%e3%81%8c%e6%8e%a5%e7%b6%9a%e3%81%94%e3%81%a8%e3%81%aenip-46%e7%bd%b2%e5%90%8d%e9%8d%b5%e3%82%92%e8%bf%bd%e5%8a%a0">v6.0.0-pre1&lt;/a>へ進みました。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>はZapstore経由のAPK self-updateを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta%e3%81%8czapstore-self-update%e3%82%92%e5%87%ba%e8%8d%b7">v0.10.0-beta&lt;/a>に到達し、&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>（Badges）では&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">kind migration&lt;/a>が入りました。今週のNIPディープダイブは&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（Private Direct Messages）と&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Remote Signing）です。&lt;/p>
&lt;h2 id="トップストーリー">トップストーリー&lt;/h2>
&lt;h3 id="amethystがarti-torを出荷しpure-kotlinのmlsとmarmotを統合">AmethystがArti Torを出荷し、pure KotlinのMLSとMarmotを統合&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はvitorpamplonaがメンテナンスするAndroidクライアントで、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.3">v1.07.3&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.08.0">v1.08.0&lt;/a>まで4リリースを出荷し、未リリース作業の大きなまとまりを&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>ライブラリ（共有Kotlin Multiplatform Nostrモジュール）へ統合しました。見出しとなるリリースはv1.08.0「Arti Tor」で、アプリのTor接続をCベースのTorライブラリから、Tor ProjectによるRust実装の&lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>へ移行します。この移行は、従来のC Torバインディング下で起きていたランダムクラッシュに対処するものです。Artiはメモリ安全性とasync I/Oを目的にRustでゼロから書かれた、Tor ProjectによるCコードベースの長期的な置き換えです。&lt;/p>
&lt;p>v1.07.3ではShorts UIも再設計され、ページ送り型のデザインが、画像、shorts、長尺動画向けのedge-to-edgeフィードへ置き換えられました。同じリリースでbadgesはkind &lt;code>10008&lt;/code>へ、bookmarksはkind &lt;code>10003&lt;/code>へ移行され、今週&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">マージされた&lt;/a>&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>のkind migrationと足並みをそろえています。v1.07.4ではNostr Wallet Connectのsecret処理問題が修正され、v1.07.5では画像アップロード時のクラッシュが修正されました。&lt;/p>
&lt;p>mainには入っているものの、まだタグ付きリリースには含まれていない作業として、チームは&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルの完全なKotlin実装を書き上げ、ネイティブC/Rustライブラリバインディングを不要にしました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2147">PR #2147&lt;/a>はMarmot MLSグループメッセージングの中核層を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2149">PR #2149&lt;/a>はグループチャットUIを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2146">PR #2146&lt;/a>はsubscription manager付きの送受信メッセージプロセッサを追加します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2141">PR #2141&lt;/a>はMLS group stateの永続化とKeyPackage rotation管理を追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2150">PR #2150&lt;/a>は改良されたGroupInfo署名を備えた完全なMLS test suiteを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2158">PR #2158&lt;/a>はKeyPackage公開状態の追跡を追加します。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2166">PR #2166&lt;/a>はNostrの暗号処理向けにpure Kotlinのsecp256k1実装を追加し、ネイティブCライブラリ依存を置き換えます。Kotlin版MLS実装と組み合わせることで、&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>はネイティブバインディングなしでNostr署名とMarmotグループメッセージングを実行できるようになり、iOSを含むKotlin Multiplatformターゲットへの道が開かれます。&lt;/p>
&lt;p>チームは&lt;a href="https://nostrcompass.org/en/topics/nip-ac/">NIP-AC&lt;/a>（P2P Voice and Video Calls）サポートも進めています。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>はNIP-AC call state machine向けの完全なtest suiteを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>はアプリ再起動後に古いcall offerが再発火しないようにしています。&lt;/p>
&lt;h3 id="nostur-v1270が動画録画とプライベート返信を追加">Nostur v1.27.0が動画録画とプライベート返信を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>はiOS Nostrクライアントで、4月2日に&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/v1.27.0">v1.27.0&lt;/a>を出荷しました。このリリースは、アップロード前トリミング付きのアプリ内動画録画を追加しており、ユーザーは短いクリップを撮影し、長さを整え、クライアントを離れずに公開できます。アニメーションGIF対応はプロフィール写真とバナー写真にも広がり、アニメーションWebPレンダリングも追加されました。新しいShortcuts統合により、Apple Shortcutsの自動化からNostr投稿を送れるようにもなっています。さらに、private repliesが追加され、Nosturと他クライアントの間でメッセージ配信に影響していたDM互換性問題も修正されました。&lt;/p>
&lt;h3 id="shosho-v0150がshowsと縦型動画カルーセルをローンチ">Shosho v0.15.0がShowsと縦型動画カルーセルをローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>はNostrライブ配信アプリで、4月7日に&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.0">v0.15.0&lt;/a>と&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.15.1">v0.15.1&lt;/a>を出荷しました。目玉機能はShowsです。配信者はライブ開始前にカスタムの番組情報を設定し、その番組をOBSや任意の外部エンコーダへ接続できます。これにより、「今何を配信しているのか」というメタデータが、実際に配信を開始する操作から切り離され、配信者はタイトル、説明、商品を事前に準備できるようになります。同じリリースでは、ライブ、クリップ、リプレイをフルスクリーンフィードでスワイプして見ていけるTikTok風の縦型動画カルーセルと、プロフィールページから直接動画クリップを公開したり商品を追加したりできるQuick Addも入りました。v0.15.1では、キーボードがライブ配信チャット入力欄を隠していたバグが修正されています。&lt;/p>
&lt;h2 id="今週のリリース">今週のリリース&lt;/h2>
&lt;h3 id="notedeck-v0100-betaがzapstore-self-updateを出荷">Notedeck v0.10.0-betaがZapstore self-updateを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>はDamusチームによるデスクトップおよびモバイルクライアントで、APK self-update向けのテスト用プレリリースとして&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.1">v0.10.0-beta.1&lt;/a>と&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.10.0-beta.2">v0.10.0-beta.2&lt;/a>を出荷しました。&lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a>はAndroidでNostr/Zapstore updater経由のAPK self-updateを追加し、&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-18-newsletter/#notedeck-moves-release-discovery-onto-nostr">Newsletter #14&lt;/a>で扱ったNostrネイティブな更新発見の作業を土台にしています。更新フローは、relayへ公開されたNostrイベントを通じて新しいリリースを発見し、その後、開発者がホストしている場所（GitHub releases、Blossom CDN、そのほかの配布元）からAPKをダウンロードし、署名済みNostrイベントに対してSHA-256 hashを検証してからインストールします。&lt;a href="https://github.com/damus-io/notedeck/pull/1438">PR #1438&lt;/a>はLoginボタンとCreateAccountボタンが即座に前画面へ戻ってしまうwelcome screenのバグを修正し、&lt;a href="https://github.com/damus-io/notedeck/pull/1424">PR #1424&lt;/a>はAgentium AI session viewでのテキストあふれを修正します。&lt;/p>
&lt;h3 id="amber-v600-pre1が接続ごとのnip-46署名鍵を追加">Amber v6.0.0-pre1が接続ごとのNIP-46署名鍵を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android Signer Application）署名者アプリで、4月4日に&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v6.0.0-pre1">v6.0.0-pre1&lt;/a>を出荷しました。最も重要な変更は、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Remote Signing）bunkerプロトコル向けの接続ごとの署名鍵です。Amberは、すべてのbunker接続に単一のkeypairを使う代わりに、接続された各クライアントごとに別の鍵を生成するようになりました。1つのクライアント接続が侵害されても、攻撃者は他のクライアントに対して署名者になりすますことができません。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/pull/377">PR #377&lt;/a>はZapstore経由のアプリ内更新確認とインストールを追加し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#notedeck-v0100-beta%e3%81%8czapstore-self-update%e3%82%92%e5%87%ba%e8%8d%b7">Notedeck&lt;/a>と並んでNostrネイティブなアプリ配布を採用しました。&lt;a href="https://github.com/greenart7c3/Amber/pull/375">PR #375&lt;/a>はAndroidKeyStore障害時にクラッシュさせず警告を表示するようにし、&lt;a href="https://github.com/greenart7c3/Amber/pull/371">PR #371&lt;/a>は無制限なストレージ増大を防ぐため、サイズ制限とcontent切り詰めを伴うデータベースクリーンアップを追加しています。このプレリリースには、&lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#amber-v502-through-v504">先週扱ったv5.0.xサイクル&lt;/a>から&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay auth whitelistとmnemonic recovery phrase loginも引き継がれています。&lt;/p>
&lt;h3 id="nostriaがネイティブモバイルアプリを出荷">Nostriaがネイティブモバイルアプリを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>はSondreBがメンテナンスするクロスプラットフォームNostrクライアントで、Android向けのネイティブモバイルアプリを、&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.11">v3.1.11&lt;/a>から&lt;a href="https://github.com/nostria-app/nostria/releases/tag/v3.1.18">v3.1.18&lt;/a>まで8リリースにわたり公開しました。最も重要な新機能は、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>やAegisのような署名者向けのネイティブlocal signer対応です。Linux、macOS、Windows向けの&lt;a href="https://www.nostria.app/download">デスクトップインストーラー&lt;/a>も利用できます。&lt;a href="https://github.com/nostria-app/nostria/pull/610">PR #610&lt;/a>は適応的runtime制限とpreview URL cleanupによりフィードのメモリ負荷を下げ、v3.1.14では&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>プロバイダーであるBrainstormとの統合が修正されました。v3.1.15は音楽機能の改善に集中しています。新しいAndroidアプリは&lt;a href="https://zapstore.dev/apps/app.nostria">Zapstore&lt;/a>で入手できます。&lt;/p>
&lt;h3 id="divine-108がresumable-uploadsとdmsを出荷">diVine 1.0.8がresumable uploadsとDMsを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は短尺動画クライアントで、87件のマージ済みPRを含む&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.8">1.0.8&lt;/a>を出荷しました。resumable uploadsにより、接続が不安定な環境でアップロードが中断されても、クリエイターは最初からやり直すのではなく、チャンク単位で続きから再開できます。このリリースでは動画品質とビットレート設定、ダブルタップでのlike、DM改善も追加されました。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2722">PR #2722&lt;/a>はデスクトップ動画撮影向けのmacOS camera pluginを追加し、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2820">PR #2820&lt;/a>は通知システムをenrichmentとgroupingを備えたBLoCアーキテクチャへ移行します。チームはAI生成のステッカーとカテゴリ画像もOpenMoji SVGへ置き換えました（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2844">PR #2844&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2842">PR #2842&lt;/a>）。&lt;/p>
&lt;h3 id="manent-v130が機密ノートのぼかし表示とnip-42-authを追加">Manent v1.3.0が機密ノートのぼかし表示とNIP-42 authを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>はプライベートな暗号化ノートおよびファイルストレージアプリで、4月2日に&lt;a href="https://github.com/dtonon/manent/releases/tag/v1.3.0">v1.3.0&lt;/a>を出荷しました。ユーザーはノートをsensitiveとしてマークできるようになり、一覧表示ではぼかして、何気ないスクロール中に私的な内容が露出しないようにできます。このリリースでは&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>（Authentication of Clients to Relays）対応も追加され、Manentはイベントを受け入れる前に認証を要求するrelayへも接続できるようになりました。Manentはすべてのデータをユーザーのkeypairを使ってNostr relays上に暗号化して保存するため、NIP-42対応はストレージに使えるrelayの集合を広げます。&lt;/p>
&lt;h3 id="wisp-v0170からv0173がライブ配信zapsとwallet-backupを追加">Wisp v0.17.0からv0.17.3がライブ配信zapsとwallet backupを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>はAndroid Nostrクライアントで、&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.2-beta">v0.16.2-beta&lt;/a>から&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.3-beta">v0.17.3-beta&lt;/a>まで6リリース、44件のマージ済みPRを出荷しました。v0.17.0ではwallet backup向けの安全プロンプトとzap UX改善が追加されています。&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.17.1-beta">v0.17.1&lt;/a>はプラットフォーム横断のライブ配信チャット可視化とライブ配信zap機能を追加しました。&lt;a href="https://github.com/barrydeen/wisp/pull/423">PR #423&lt;/a>はprofileのauto-search、zap success animation、ユーザーステータス改善を追加し、&lt;a href="https://github.com/barrydeen/wisp/pull/426">PR #426&lt;/a>は大きなtag listを持つイベントで&lt;code>computeId&lt;/code>がout-of-memoryクラッシュする問題を修正します。v0.16.x系列ではemoji shortcode autocomplete、グループチャットUI改善、すべての通知経路にわたるブロック済みユーザーフィルタリングも入りました。&lt;/p>
&lt;h3 id="mostroがdeep-linksnostr為替レート重複支払い修正を出荷">Mostroがdeep links、Nostr為替レート、重複支払い修正を出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>はNostr上に構築されたP2P Bitcoin取引所で、今週はサーバーデーモンとモバイルクライアントの両方で更新がありました。サーバー側では、&lt;a href="https://github.com/MostroP2P/mostro/pull/692">PR #692&lt;/a>が古い注文書き込みによって重複支払いが起きるのを防ぎます。このバグは、同じ取引に対して売り手へ二重に支払いが行われる可能性がありました。&lt;a href="https://github.com/MostroP2P/mostro/pull/693">PR #693&lt;/a>はorder全体の上書きではなく、dev_fee書き込みに対して対象を絞った更新を使います。&lt;/p>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>はFlutterクライアントで、4月3日に&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.3">v1.2.3&lt;/a>を出荷しました。このリリースは異なるMostroインスタンスからのdeep linksを扱えるため、ユーザーは正しい取引所サーバーへルーティングされるリンクをそのままタップできます。&lt;a href="https://github.com/MostroP2P/mobile/pull/498">PR #498&lt;/a>はバックグラウンド通知パイプラインでadminおよびdispute DMを検出し、アプリはHTTP/cache fallback付きでNostrから為替レートを取得するようになりました。&lt;a href="https://github.com/MostroP2P/mobile/pull/560">PR #560&lt;/a>は、特定のネットワーク条件でアプリがrelayへ到達できなくなるrelay connection blockingバグを修正します。&lt;/p>
&lt;h3 id="unfiltered-v1012がhashtagsとcommentsを追加">Unfiltered v1.0.12がhashtagsとcommentsを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>は画像中心のcontentに焦点を当てたNostrクライアントで、&lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.12">v1.0.12&lt;/a>を出荷しました。&lt;a href="https://github.com/dmcarrington/unfiltered/pull/69">PR #69&lt;/a>はhashtag対応を追加し、&lt;a href="https://github.com/dmcarrington/unfiltered/pull/72">PR #72&lt;/a>は投稿へcommentsを書いて表示する機能を追加します。&lt;a href="https://github.com/dmcarrington/unfiltered/pull/71">PR #71&lt;/a>は、1投稿に複数画像がある場合のナビゲーション問題を修正しました。&lt;/p>
&lt;h3 id="primal-androidがwallet-multi-account-sharingとremote-signer-auto-reconnectを出荷">Primal Androidがwallet multi-account sharingとremote signer auto-reconnectを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>はAndroid Nostrクライアントで、4月7日にリリースを出荷しました。この更新ではwallet multi-account sharingが追加され、Dev Toolsにはwallet削除付きのoverflow menuが入りました。remote signerは接続断時に自動再接続するようになり、wallet serviceにも独自のauto-reconnectロジックが追加されています。修正には、poll zap votesがTop Zapsに表示されなくなる変更、空のpoll optionでのクラッシュ防止、wallet未設定時の残高非表示、NWCレスポンス内でWalletException型をerror codeへマッピングする対応が含まれます。&lt;/p>
&lt;h3 id="titan-v010がbitcoin名登録付きネイティブnsiteブラウザをローンチ">Titan v0.1.0がBitcoin名登録付きネイティブ&lt;code>nsite://&lt;/code>ブラウザをローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/btcjt/titan">Titan&lt;/a>はNostr web向けのネイティブデスクトップブラウザで、4月7日に&lt;a href="https://github.com/btcjt/titan/releases/tag/v0.1.0">v0.1.0&lt;/a>を出荷しました。Titanは、Bitcoin上に登録された人間可読名を参照して&lt;code>nsite://&lt;/code> URLを解決し、Nostr relaysへサイトのcontent eventsを問い合わせ、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーから取得したページをレンダリングします。その結果、DNSもTLS証明書もホスティング事業者も要らないweb閲覧体験が生まれます。名前はBitcoinトランザクションに結び付いた&lt;a href="https://npub1hmq6xuqnplk5lw0h3700cujmx5gymqn5wrn42u6432r6ntzumezqc3marw.nsite.lol/register">web interface&lt;/a>を通じて登録されます。初期リリースはmacOS &lt;code>.dmg&lt;/code>（ARM、Intel向けRosetta 2対応）として提供され、Nix開発環境サポートも含みます。&lt;/p>
&lt;h3 id="bikel-v150がde-googled-phones向けネイティブforeground-serviceを出荷">Bikel v1.5.0がde-Googled phones向けネイティブforeground serviceを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/Mnpezz/bikel">Bikel&lt;/a>は、Nostrを使ってライド記録を公共インフラデータへ変える分散型サイクリングトラッカーで、4月4日に&lt;a href="https://github.com/Mnpezz/bikel/releases/tag/v1.5.0">v1.5.0&lt;/a>を出荷しました。このリリースでは、GMS依存のExpo TaskManagerからカスタムのネイティブforeground serviceへ移行し、LineageOS、GrapheneOS、そのほかのde-Googled Android環境で信頼性の高いバックグラウンド走行追跡を確保します。Bikel BotはCashu nutzapsによる自律的なeCash回収を行うdual-pocket architectureも獲得しました。v1.4.3とv1.4.2では非標準Android環境向けのバックグラウンド追跡同期が修正され、アプリにはOSM bike rack map pointの切り替えも追加されています。&lt;/p>
&lt;h3 id="sproutがnip-01nip-23nip-33対応を追加">SproutがNIP-01、NIP-23、NIP-33対応を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/block/sprout">Sprout&lt;/a>はBlockによる、Nostr relayを内蔵したコミュニケーションプラットフォームで、4月6日に&lt;a href="https://github.com/block/sprout/releases/tag/desktop/v0.1.0-rc7">desktop/v0.1.0-rc7&lt;/a>を出荷しました。今週、チームは&lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a>（Long-form Content）のkind &lt;code>30023&lt;/code>記事、&lt;code>d&lt;/code>タグをキーに置き換える&lt;a href="https://nostrcompass.org/en/topics/nip-33/">NIP-33&lt;/a> parameterized replaceable events、そして&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>/&lt;a href="https://nostrcompass.org/en/topics/nip-02/">NIP-02&lt;/a>のkind &lt;code>1&lt;/code> text notesとkind &lt;code>3&lt;/code> follow listsへの対応を追加しました。リリースには、54テーマを持つ適応型IDEテーマシステム、workflowおよびagent実行履歴のUX改善、members sidebarの整理も含まれています。&lt;/p>
&lt;h3 id="mesh-llm-v0560が分散config-protocolを出荷">mesh-llm v0.56.0が分散config protocolを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/michaelneale/mesh-llm">mesh-llm&lt;/a>は、ノードアイデンティティにNostr keypairsを使う分散LLM推論システムで、4月7日に&lt;a href="https://github.com/michaelneale/mesh-llm/releases/tag/v0.56.0">v0.56.0&lt;/a>を出荷しました。このリリースは、ownership semanticsを備えた分散config protocol、メモリ使用量を減らすための非対称KV cache quantization（Q8_0 keysとQ4 values）、アイデンティティkeystore向けのOS keychain保存、メッセージキューイングを伴う滑らかなchat streaming、fullscreen layoutとflash attention付きKV cache splittingの修正を追加します。&lt;/p>
&lt;h3 id="nostr-vpnがexit-node対応とumbrelパッケージングを出荷">Nostr VPNがexit node対応とUmbrelパッケージングを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/nostr-vpn">Nostr VPN&lt;/a>は、シグナリングにNostr relays、暗号化トンネルにWireGuardを使うP2P VPNで、今週は&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.0">v0.3.0&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.6">v0.3.6&lt;/a>まで6リリースを出荷しました。v0.3.xサイクルではWindowsとmacOSでexit node対応が追加され、ピアはネットワーク内の他ノードを経由してインターネットトラフィックをルーティングできるようになりました。inviteとaliasの伝播もNostr上で同期されるようになったため、ユーザーは帯域外の調整なしにネットワークアクセスを共有できます。これらのリリースには、self-hosted deployment向けUmbrelパッケージング、記憶した公開endpointを使うNAT punch-through、自動のstale exit node cleanup、公開されたprotocol specificationも含まれます。プロジェクトはself-healing default routesとunderlay repairによりmacOSのroute処理も安定化させ、Tauri経由のAndroid buildも追加しました。ビルドはmacOS（Apple SiliconとIntel）、Linux（AppImageと.deb）、Windows、Android向けに利用できます。&lt;/p>
&lt;h3 id="nymchatがmarmotを巻き戻し強化版nip-17グループチャットを出荷">NymchatがMarmotを巻き戻し、強化版NIP-17グループチャットを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>はMLS対応チャットクライアントで、&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/3.56.261">v3.56.261&lt;/a>から&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.274">v3.58.274&lt;/a>まで14リリースを出荷しました。最も大きな変化はプロトコル方針の転換です。&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.57.261">v3.57.261&lt;/a>ではMarmot MLS group chatsが追加されましたが、&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.268">v3.58.268&lt;/a>では&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>のmulti-device対応がまだ未完成で、デバイス間のgroup chat state同期に問題が出たため、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>へ戻しました。v3.58.271では、すべてのメッセージに対してローテーションするephemeral keysを使う強化版NIP-17グループチャットが導入され、タイミング攻撃や相関攻撃を防ぐ設計になっています。同週には、設定を細かく制御できるfriend system（&lt;a href="https://github.com/Spl0itable/NYM/releases/tag/v3.58.262">v3.58.262&lt;/a>）、暗号化されたアプリ設定内でのMLS group chat message同期、複数のrelay接続修正も入りました。&lt;/p>
&lt;h3 id="nak-v0195がblossom-multi-serverとoutbox-publishingを追加">nak v0.19.5がBlossom multi-serverとoutbox publishingを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>はfiatjafによるコマンドラインNostrツールキットで、&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.5">v0.19.5&lt;/a>を出荷しました。&lt;code>blossom&lt;/code>コマンドは複数の&lt;code>--server&lt;/code>フラグを受け取れるようになり、複数の&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーへ1回でアップロードできます。新しい&lt;code>key&lt;/code>コマンドは、部分的な鍵を左側ゼロ埋めで展開します。&lt;code>event&lt;/code>コマンドにはoutbox model経由でイベントを公開する&lt;code>--outbox&lt;/code>フラグが追加され、&lt;code>fetch&lt;/code>はイベントが返らなかった場合にerror codeで終了するようになりました。&lt;/p>
&lt;h2 id="開発中">開発中&lt;/h2>
&lt;h3 id="white-noiseがthumbhashプレビューとpush-registration-bridgeを追加">White Noiseがthumbhashプレビューとpush registration bridgeを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコル上に構築されたプライベートメッセンジャーで、今週5件のPRをマージしました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/549">PR #549&lt;/a>は画像プレビューのblurhashをthumbhashへ置き換えます。thumbhashは、元画像のアスペクト比と色分布を保ちながら、より小さいペイロードサイズで（典型的には30バイト未満、blurhashの約50から100バイトに対して）より鮮明なプレースホルダー画像を生成する新しいアルゴリズムです。古いcontent向けにはblurhashがfallbackとして残されています。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/548">PR #548&lt;/a>はwhitenoise-rsを更新し、&lt;a href="https://nostrcompass.org/ja/topics/mip-05/">MIP-05&lt;/a> push registration bridgeを追加して、&lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#marmot-moves-keypackages-to-addressable-events-and-tightens-push-notifications">先週のpush notification仕様作業&lt;/a>をクライアントへ接続します。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/493">PR #493&lt;/a>はチャットメッセージにcursor-based paginationを追加し、従来の読み込み戦略をスクロール駆動の方式へ置き換えました。&lt;/p>
&lt;h3 id="route96が動的label設定とzero-egress-cleanupを追加">Route96が動的label設定とzero-egress cleanupを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>はv0lによる&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバーで、今週3件のPRをマージしました。&lt;a href="https://github.com/v0l/route96/pull/80">PR #80&lt;/a>はadmin API経由の動的label model設定を追加し、オペレーターがサーバー再起動なしにcontent分類モデルを差し替えられるようにします。&lt;a href="https://github.com/v0l/route96/pull/82">PR #82&lt;/a>はadmin UIへlabel設定フィールドを追加し、&lt;a href="https://github.com/v0l/route96/pull/79">PR #79&lt;/a>は一度もダウンロードされていないファイルを自動削除するzero-egress file cleanup policyを追加して、オペレーターのストレージコストを抑えます。&lt;/p>
&lt;h3 id="snortがセキュリティ強化とdvm-payment-invoicesを出荷">Snortがセキュリティ強化とDVM payment invoicesを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>はwebクライアントで、今週は包括的なセキュリティ監査を伴う2リリースを出荷しました。修正にはSchnorr署名検証、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> relay message forgery保護（侵害されたrelay経由で攻撃者が署名要求を注入するのを防ぐ）、PIN暗号化改善、NIP-26 delegation trustの削除が含まれます。性能面の改善は、WASM内でのバッチSchnorr検証、lazy-loaded routes、事前コンパイル済み翻訳、イベントごとの二重検証の排除から来ています。&lt;a href="https://github.com/v0l/snort/pull/618">PR #618&lt;/a>は&lt;a href="https://nostrcompass.org/en/topics/nip-90/">NIP-90&lt;/a>（Data Vending Machine）のkind &lt;code>7000&lt;/code>支払い要求invoice表示を追加し、DVMが支払い要件を返したときにSnortがLightning invoiceをフィード内へ直接描画できるようにします。&lt;/p>
&lt;h3 id="damusがlmdb-compactionを改善">DamusがLMDB compactionを改善&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>はiOSクライアントで、&lt;a href="https://github.com/damus-io/damus/pull/3719">PR #3719&lt;/a>をマージし、スケジュールに基づく自動LMDB compactionを追加しました。これによりローカルデータベースが時間とともに無制限に肥大化するのを防ぎます。&lt;a href="https://github.com/damus-io/damus/pull/3663">PR #3663&lt;/a>はBlurOverlayViewを、壊れて見えるのではなく保護的に見えるよう改善しています。&lt;/p>
&lt;h3 id="captains-logがtag-indexingとnote-syncを追加">Captain&amp;rsquo;s Logがtag indexingとnote syncを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/captains-log">Captain&amp;rsquo;s Log&lt;/a>（Comet）はNodetecによるNostrネイティブな長文執筆ツールで、今週4件のPRをマージしました。&lt;a href="https://github.com/nodetec/captains-log/pull/156">PR #156&lt;/a>はノート横断のtag indexingとsync対応を追加し、&lt;a href="https://github.com/nodetec/captains-log/pull/157">PR #157&lt;/a>はnote syncとtag処理をリファクタリングし、&lt;a href="https://github.com/nodetec/captains-log/pull/159">PR #159&lt;/a>はゴミ箱に入れたノートの同期を修正して、削除済みノートがデバイス間でも削除されたまま保たれるようにします。&lt;/p>
&lt;h3 id="relatr-v02xがnostrネイティブvalidator-marketplaceとともにplugin-systemを再設計">Relatr v0.2.xがNostrネイティブvalidator marketplaceとともにplugin systemを再設計&lt;/h3>
&lt;p>&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>は、social graph distanceと設定可能なvalidatorsからtrust rankingを計算する&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a> scoring engineで、完全なplugin system再設計を伴うv0.2.x系列を出荷しました。validatorsは現在、マルチステップのhostオーケストレーション能力（Nostrクエリ、social graph lookup、NIP-05解決）を支えるためにforkされた、移植性の高い関数型式言語Eloで書かれています。pluginsはkind &lt;code>765&lt;/code>のNostr eventsとして公開されるため、配布自体がrelayネットワークにネイティブです。新しい&lt;a href="https://relatr.net">plugin marketplace&lt;/a>により、オペレーターはブラウザからvalidatorsを発見、インストール、重み付けでき、ローカルでのauthoringとpublishingにはCLIの&lt;code>relo&lt;/code>が使えます。アーキテクチャはsandbox化されており、pluginsはhostが明示的に提供した能力しか呼び出せないため、悪意あるvalidatorが定義されたスコープを抜け出すことはできません。Relatrインスタンスは今やwebsiteから管理でき、どのpluginsがscoring algorithmを構成しているか、各重みがいくつかまで完全に見通せます。&lt;/p>
&lt;h3 id="shopstrがモバイルナビゲーションとアクセス制御を改善">Shopstrがモバイルナビゲーションとアクセス制御を改善&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>はBitcoinでの売買向けNostrネイティブなマーケットプレイスで、今週はメインアプリとコンパニオンプロジェクトの&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>にまたがって158コミットを積みました。修正には、モバイルcommunityレイアウト改善、ナビゲーション時のmenu自動クローズ、dropdownのauto-closeが含まれます。保護されたルートはサインインなしで直接URLからアクセスできなくなり、slug matchingロジックも複数の完全一致を正しく扱うようになりました。&lt;/p>
&lt;h3 id="polleramaがnotificationsmovie-searchrating-uiを追加">Polleramaがnotifications、movie search、rating UIを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-polls">Pollerama&lt;/a>はNostr上に構築されたpolling、survey、social ratingアプリで、thread notifications、movie search機能、rating UIの刷新を追加しました。このリリースではfeed読み込み問題の修正と依存関係バージョン更新も行われています。&lt;/p>
&lt;h3 id="purserがmarmot暗号化を使うnostrネイティブpayment-daemonを構築">PurserがMarmot暗号化を使うNostrネイティブpayment daemonを構築&lt;/h3>
&lt;p>&lt;a href="https://github.com/EthnTuttle/purser">Purser&lt;/a>はZaprite代替として設計されたNostrネイティブpayment daemonで、今週はコアアーキテクチャ構築のために9件のPRをマージしました。このプロジェクトは、加盟店と顧客の暗号化メッセージングに、MDK経由の&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> MLSを使い、payment providerとしてStrikeとSquareを採用しています。今週はconfigとcatalog読み込み、message schema validation、MDK communication layer、StrikeおよびSquare provider実装、polling engine、anti-spam rate limiting、pending payment永続化、order processing pipelineが入りました。チームがlocal modeでmock MLSを取り除き実際の暗号化へ切り替えたため、99件すべてのtestsは現在、実際のmdk-core MLS操作を通しています。&lt;/p>
&lt;h3 id="vectorがdm-attachmentsをリファクタリングしprofile-editingを追加">VectorがDM attachmentsをリファクタリングし、profile editingを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>はTauriで構築されたプライバシー重視のNostrメッセンジャーで、&lt;a href="https://github.com/VectorPrivacy/Vector/pull/55">PR #55&lt;/a>をマージしてfrontendをリファクタリングしました。DM attachmentの復号と保存はvector-coreライブラリへ移され、アプリはprofile editingにも対応しました。upload cancelフラグはTauriSendCallbackまで正しく配線され、未使用だったattachment preview callbacksも整理されています。&lt;/p>
&lt;h2 id="プロトコルと仕様の動き">プロトコルと仕様の動き&lt;/h2>
&lt;h3 id="nipアップデート">NIPアップデート&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更です。&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>（Badges）: Profile Badgesはkind 10008へ、Badge Setsはkind 30008へ移行&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>）：Profile Badgesをkind &lt;code>30008&lt;/code>からkind &lt;code>10008&lt;/code>へ移行し（replaceable event、pubkeyごとに1つ）、Badge Sets向けにkind &lt;code>30008&lt;/code>を導入します。従来、Profile BadgesはBadge定義と同じkind（&lt;code>30008&lt;/code>）を使っていたため、&lt;code>d&lt;/code>タグで識別されるparameterized replaceable eventsになっていました。新しいkind &lt;code>10008&lt;/code>は単純なreplaceable eventで、pubkeyごとに1つ、&lt;code>d&lt;/code>タグは不要です。クライアントはparameterized replaceable eventsを走査する代わりに、ユーザーごとに単一のreplaceable eventを問い合わせればよくなります。Amethyst v1.07.3はすでにこの移行を出荷済みです。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>（Git Stuff）: git関連follow listsを追加&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2130">PR #2130&lt;/a>）：NIP-34のrepositoryおよびissue追跡向けfollow list慣例を追加します。ユーザーは、追跡したいrepositories（kind &lt;code>30617&lt;/code>）への&lt;code>a&lt;/code>タグ参照を含む、&lt;code>git-repos&lt;/code>や&lt;code>git-issues&lt;/code>のような&lt;code>d&lt;/code>タグ付きのkind &lt;code>30000&lt;/code> follow setsを公開します。クライアントはこれらのfollow setsを購読して、kind &lt;code>3&lt;/code>のcontact listsがpubkeys向けに機能するのと同様に、ユーザーのフィードへrepository activityを表示できます。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AC: WebRTC上のP2P Voice and Video Calls&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2301">PR #2301&lt;/a>）：元のNIP-100（0xChatが実装）を3点で拡張します。すなわち、メタデータ漏えいをなくすために&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift wrapsで包んだ&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化へ移行すること、voiceとvideo callのセットアップ（offer、answer、ICE candidates）向けに明示されたWebRTCワークフローを定義すること、そして各ピアが他の全ピアへ直接WebRTC接続を張るmesh group callモデルを採ることです。この仕様はNIP-100との後方互換性はありません。Amethystはすでにこれに沿った実装を進めており、call state machine test suite（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2143">PR #2143&lt;/a>）とstale call offer処理（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2164">PR #2164&lt;/a>）が今週入りました。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-340/">NIP-340&lt;/a>（FROST Quorum）&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2299">PR #2299&lt;/a>）：Nostr上での&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>（Flexible Round-Optimized Schnorr Threshold）threshold signing向け慣例を提案します。FROSTでは署名者グループが共同で1つのNostr identityを制御し、完全な秘密鍵を再構成せずに、t-of-nメンバーのいずれかでイベント署名できます。このNIPは、&lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#igloo-signer-11">FROSTR project&lt;/a>のIgloo signer作業を土台に、署名ラウンドの調整、key sharesの配布、threshold-signed eventsの公開方法を定義します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5d/">NIP-5D&lt;/a>（Nostr Web Applets）&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2303">PR #2303&lt;/a>）：iframe内で動作するsandboxed web applications（「napplets」）が、ホストアプリケーション（「shell」）と通信するための&lt;code>postMessage&lt;/code>プロトコルを定義します。shellは、構造化メッセージAPIを通じてnappletへNostr署名、relay access、ユーザー文脈を提供し、iframe sandboxは鍵への直接アクセスを防ぎます。これは&lt;a href="https://nostrcompass.org/en/topics/nip-5a/">NIP-5A&lt;/a>の静的webサイトホスティングモデルを、Nostr eventsを読んだり書いたりできる対話的アプリケーションへ拡張するものです。このNIPは、動作するruntime実装を伴って活発に開発中です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/en/topics/nip-5c/">NIP-5C&lt;/a>（Scrolls）&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>）：以前のNIP-A5提案から改名されたものです。Nostr上でWebAssemblyプログラムを公開し、発見するための慣例を定義します。WASM binariesはNostr eventsとして保存され、クライアントはそれらをダウンロードしてsandboxed runtimeで実行できます。&lt;a href="https://nprogram.netlify.app/">demo app&lt;/a>ではscrollsがブラウザ内で実行される様子が示されており、任意のクライアントが取得して実行できるexample programsがNostr eventsとして公開されています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）: Clarifications&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2304">PR #2304&lt;/a>）：サービスプロバイダーごとに複数鍵や複数relayが存在する場合の仕様文言を引き締め、複数のpubkeysやrelay endpointsにまたがって運用するプロバイダーからのassertionsをクライアントがどう扱うべきかを明確にします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-24/">NIP-24&lt;/a>（Extra Metadata Fields）: replaceable events向け&lt;code>published_at&lt;/code>&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2300">PR #2300&lt;/a>）：&lt;a href="https://nostrcompass.org/en/topics/nip-23/">NIP-23&lt;/a>（Long-form Content）由来の&lt;code>published_at&lt;/code>タグを、すべてのreplaceable eventsとaddressable eventsへ一般化します。このタグは表示専用です。&lt;code>published_at&lt;/code>が&lt;code>created_at&lt;/code>と等しければ、その時刻に「created」と表示し、異なる場合（イベントが更新された場合）は代わりに「updated」と表示できます。これにより、kind &lt;code>0&lt;/code>プロフィールに「joined at」日付を表示したり、他のreplaceable eventsでも更新をまたいで元の公開時刻を保てるようになります。補完的な&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>提案（&lt;a href="https://github.com/nostr-protocol/nips/pull/2302">PR #2302&lt;/a>）は、同じタグをlist eventsにも追加します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）: Ephemeral gift wrap kind&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>）：既存のkind &lt;code>1059&lt;/code> gift wrapに対応するephemeral版としてkind &lt;code>21059&lt;/code>を追加します。ephemeral events（kinds &lt;code>20000&lt;/code>から&lt;code>29999&lt;/code>）は&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>の意味論に従い、relayは保存を期待されず、配信後に破棄してかまいません。これによりアプリケーションは、通常の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMsと同じ3層暗号化モデルを保ったまま、relay上から配信後に消えるgift-wrapped messagesを送れるようになり、高頻度メッセージングのストレージ要件を下げられます。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="opensatsが第16回nostr-grantsを発表">OpenSatsが第16回Nostr grantsを発表&lt;/h3>
&lt;p>&lt;a href="https://opensats.org">OpenSats&lt;/a>は4月8日に&lt;a href="https://opensats.org/blog/sixteenth-wave-of-nostr-grants">第16回Nostr grants&lt;/a>を発表し、初回助成4件と更新1件を採択しました。&lt;a href="https://github.com/vitorpamplona/amethyst/tree/main/desktopApp">Amethyst Desktop&lt;/a>には、contributorのRobert Nagyが&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>とCommonsモジュール上にスタンドアロンのデスクトップアプリを構築するための資金が提供されます。これにより、Androidクライアントの機能群が、永続的なrelay接続を持つマウス中心のインターフェースへ持ち込まれます。&lt;a href="https://github.com/nogringo/nostr-mail">Nostr Mail&lt;/a>には、kind &lt;code>1301&lt;/code> eventsを&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift wrapsで包んで使う、Nostr上の完全なメールシステム構築向け資金が提供されます。FlutterクライアントとGmail/Outlook互換のSMTP bridge serversも含まれます。&lt;a href="https://github.com/Nostrord/nostrord">Nostrord&lt;/a>には、Discord風のグループメッセージング、モデレーション、スレッドを備えたKotlin Multiplatformの&lt;a href="https://nostrcompass.org/en/topics/nip-29/">NIP-29&lt;/a> relay-based group client向け資金が提供されます。&lt;a href="https://github.com/tami1A84/null--nostr">Nurunuru&lt;/a>には、LINEの馴染みあるインターフェースを手本にし、オンボーディング向けにpasskeyベースの生体認証ログインを備えた、日本語圏向けNostrクライアントのネイティブiOS版構築資金が提供されます。HAMSTRには助成更新が行われました（初回採択は&lt;a href="https://opensats.org/blog/eleventh-wave-of-nostr-grants#hamstr">第11回&lt;/a>）。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-17private-direct-messages">NIPディープダイブ: NIP-17（Private Direct Messages）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/17.md">NIP-17&lt;/a>は、Nostrにおける現在のプライベートダイレクトメッセージ標準を定義します。これは、relay上で送信者、受信者、タイムスタンプがすべて見えてしまい、暗号構成も弱かった旧来の&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>（Encrypted Direct Messages）方式を置き換えるものです。NIP-17は、暗号化に&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（Encrypted Payloads）を、メタデータ保護に&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）を組み合わせ、relayからは誰と誰が会話しているかが見えない3層システムを作ります。&lt;/p>
&lt;p>このプロトコルは、3つのevent kindsを入れ子にして使います。最も内側の層は実際のメッセージで、署名されていないkind &lt;code>14&lt;/code>イベントです。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">14&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://inbox.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;subject&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Project update&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;The new relay config is deployed. Let me know if you see any issues.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>kind &lt;code>14&lt;/code>イベントは意図的に署名されていません（&lt;code>sig&lt;/code>は空です）。仕様はこれを否認可能性を与えるものとして説明しますが、実際の保護は限定的です。rumorを包むkind &lt;code>13&lt;/code>のsealは、送信者の実鍵で署名されています。受信者はメッセージ内容を明かさなくても、その署名済みsealを第三者に見せることで、送信者が自分と通信した事実を証明できます。ゼロ知識証明を使えば、受信者は自分の秘密鍵を明かさずに、メッセージ内容そのものまで証明できます。署名のないrumorは、署名入り封筒に入った無署名の手紙のようなものです。封筒の署名が送信者と内容を結び付けます。真の否認可能性には、SignalのHMACのような対称認証が必要ですが、それはメッセージ自体が自己認証可能でなければならないNostrの分散relayモデルとは両立しません。NIP-17の本当の強みは、否認可能性ではなく、メタデータのプライバシーと内容の秘匿性です。&lt;/p>
&lt;p>この無署名メッセージは次にkind &lt;code>13&lt;/code>のsealで包まれ、実際の送信者によって署名され、受信者向けに&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>で暗号化されます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7e3a4b9c1f2e8d6a5b4c3d2e1f09876d7e3a4b9c1f2e8d6a5b4c3d2e1f09876&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744022400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 14 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>sealにはtagsがないため、復号できても受信者は分かりません。sealは送信者の実鍵で署名されており、受信者はsealの&lt;code>pubkey&lt;/code>が内側のkind &lt;code>14&lt;/code>の&lt;code>pubkey&lt;/code>と一致することを確認することでメッセージを認証できます。&lt;/p>
&lt;p>そのsealはさらにkind &lt;code>1059&lt;/code>のgift wrapで包まれ、ランダムな使い捨て鍵で署名され、受信者宛てに送られます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744065600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;f1a2b3c4d5e6f7890123456789abcdef01234567890abcdef1234567890abcdef&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted kind 13 payload&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>gift wrapの&lt;code>pubkey&lt;/code>は、このメッセージ専用に生成されたランダム鍵で、&lt;code>created_at&lt;/code>は最大2日前までランダム化されています。relayが実際に見る最外層はこれです。未知のpubkeyから受信者宛てに送られたメッセージで、タイムスタンプも実際の送信時刻を反映しません。このランダム化タイムスタンプは、保存済みイベントを後から分析する攻撃への対策になりますが、relayへ能動的に接続している攻撃者はgift wrapが最初に現れた時点を観測できるため、この防御は後からrelayデータを問い合わせる受動的観測者に対してのみ有効です。pubkeyがランダムでタイムスタンプも偽装されているため、relayは実際の送信者を特定できません。受信者がメッセージを読むには、自分の鍵とランダムpubkeyを使ってgift wrapを復号し、中のsealを取り出し、次に自分の鍵とsealに入っている送信者pubkeyでsealを復号し、その内側にあるkind &lt;code>14&lt;/code>メッセージを見つけます。&lt;/p>
&lt;p>NIP-17はforward secrecyを提供しません。すべてのメッセージは静的なNostr keypairを使って暗号化されます（NIP-44で送信者鍵と受信者鍵から導出した鍵を使用）。秘密鍵が侵害されると、その鍵宛てに暗号化された過去と未来のすべてのメッセージが復号可能になります。これは意図的なトレードオフです。暗号化はnsecだけに依存するため、ユーザーがnsecをバックアップしていれば、gift wrapsをまだ保持している任意のrelayからメッセージ履歴全体を復元できます。&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>で使われるMLSのようなプロトコルは、鍵素材をローテーションすることでforward secrecyを提供しますが、その代償としてstate同期が必要になり、鍵ローテーション後の過去メッセージ履歴復元は不可能になります。&lt;/p>
&lt;p>NIP-17は暗号化ファイルメッセージ向けのkind &lt;code>15&lt;/code>も定義しており、受信者がBlossomサーバーへアップロード前にAES-GCMで暗号化された添付ファイルを復号できるよう、&lt;code>file-type&lt;/code>、&lt;code>encryption-algorithm&lt;/code>、&lt;code>decryption-key&lt;/code>、&lt;code>decryption-nonce&lt;/code>タグを追加します。Kind &lt;code>10050&lt;/code>は、送信者がgift wrapsをどこへ届けるべきか分かるよう、ユーザーが希望するDM relay listを公開するのに使われます。メッセージ内の&lt;code>pubkey&lt;/code>と&lt;code>p&lt;/code> tagsの集合が1つのチャットルームを定義し、参加者の追加や削除はクリーンな履歴を持つ新しいルームを作ります。&lt;/p>
&lt;p>実装は主要クライアントの多くをカバーしています。&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>はすべての1対1メッセージングにNIP-17を使っています。&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>はproof-of-work DMsにNIP-17を使っています。&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal&lt;/a>、&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>、&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>、&lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a>、&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>は、いずれも主要DMプロトコルとしてNIP-17を実装しています。gift wrapへ&lt;code>expiration&lt;/code>タグを設定することで、仕様はdisappearing messagesにも対応します。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-46nostr-remote-signing">NIPディープダイブ: NIP-46（Nostr Remote Signing）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a>は、ユーザーの秘密鍵をクライアントアプリケーションから分離するためのプロトコルを定義します。webアプリへnsecを貼り付ける代わりに、ユーザーは秘密鍵を保持し、Nostr relays経由の署名要求へ応答するremote signer（「bunker」とも呼ばれます）を動かします。クライアントが秘密鍵を見ることはありません。これにより攻撃面は小さくなります。侵害されたクライアントでも署名要求は送れますが、鍵そのものを引き抜くことはできません。&lt;/p>
&lt;p>このプロトコルは、要求と応答の両方にkind &lt;code>24133&lt;/code>を使い、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（Encrypted Payloads）で暗号化します。クライアントはセッション用の使い捨て&lt;code>client-keypair&lt;/code>を生成し、互いのpubkeysをタグ付けしたNIP-44暗号化メッセージを通じてremote signerと通信します。以下は、クライアントからremote signerへ送る署名要求の例です。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aa11bb22cc33dd44ee55ff6677889900aabbccdd11223344556677889900aabb&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC request&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1122334455667788990011223344556677889900aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff0011223344556677&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>暗号化された&lt;code>content&lt;/code>には、JSON-RPC風の構造が入っています。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;random-request-id-1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;method&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;sign_event&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;params&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;kind\&amp;#34;:1,\&amp;#34;content\&amp;#34;:\&amp;#34;Hello from remote signing\&amp;#34;,\&amp;#34;tags\&amp;#34;:[],\&amp;#34;created_at\&amp;#34;:1744108800}&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>remote signerはこの要求を復号し、ユーザーへ承認を提示し（または設定済み権限に基づいて自動承認し）、ユーザーの秘密鍵でイベントへ署名し、その署名済みイベントを応答として返します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bb22cc33dd44ee55ff6677889900aabb11223344556677889900aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1744108801&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">24133&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;eff37350d839ce3707332348af4549a96051bd695d3223af4aabce4993531d86&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted JSON-RPC response&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>接続はどちら側からでも開始できます。remote signerは、自分のpubkeyとrelay情報を含む&lt;code>bunker://&lt;/code> URLを提供します。クライアントは、自分のclient pubkey、relays、接続検証用secretを含む&lt;code>nostrconnect://&lt;/code> URLを提供します。&lt;code>secret&lt;/code>パラメータは接続なりすましを防ぎます。帯域外でURLを受け取った当事者だけがhandshakeを完了できます。&lt;/p>
&lt;p>定義されているメソッドは8つです。セッション確立用の&lt;code>connect&lt;/code>、イベント署名用の&lt;code>sign_event&lt;/code>、ユーザーのpubkey取得用の&lt;code>get_public_key&lt;/code>、keepalive用の&lt;code>ping&lt;/code>、旧来暗号化用の&lt;code>nip04_encrypt&lt;/code>と&lt;code>nip04_decrypt&lt;/code>、現行暗号化用の&lt;code>nip44_encrypt&lt;/code>と&lt;code>nip44_decrypt&lt;/code>、そしてrelay管理用の&lt;code>switch_relays&lt;/code>です。relay migrationはremote signerが処理するため、セッションを壊さずに接続先relayを時間とともに移せます。&lt;/p>
&lt;p>クライアントは接続時にpermission systemを通じて具体的な能力を要求します。&lt;code>nip44_encrypt,sign_event:1,sign_event:14&lt;/code>のようなpermission文字列は、NIP-44暗号化アクセスと、kind &lt;code>1&lt;/code>およびkind &lt;code>14&lt;/code>イベントに限定した署名アクセスを要求します。remote signerはこれらの権限を受け入れることも、拒否することも、変更することもできます。つまり、ノートの閲覧と投稿だけを行うwebクライアントには&lt;code>sign_event:1&lt;/code>だけが与えられ、DMクライアントには&lt;code>sign_event:14&lt;/code>と&lt;code>nip44_encrypt&lt;/code>も与えられる、といった運用が可能です。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>はAndroidでNIP-46を実装しており、今週の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-08-newsletter/#amber-v600-pre1%e3%81%8c%e6%8e%a5%e7%b6%9a%e3%81%94%e3%81%a8%e3%81%aenip-46%e7%bd%b2%e5%90%8d%e9%8d%b5%e3%82%92%e8%bf%bd%e5%8a%a0">v6.0.0-pre1&lt;/a>ではクライアント間の分離のため、接続ごとの署名鍵が追加されました。&lt;a href="https://github.com/nicktee/nsecapp">nsec.app&lt;/a>（旧Nostr Connect）はwebベースのbunkerを提供します。&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>にはJavaScriptクライアント向けの&lt;code>BunkerSigner&lt;/code>が含まれており、&lt;a href="https://nostrcompass.org/en/newsletters/2026-04-01-newsletter/#nostr-tools-adds-bunker-relay-control-and-fixes-nip-47-multi-relay-parsing">先週のPR #530&lt;/a>では手動relay管理向けに&lt;code>skipSwitchRelays&lt;/code>が追加されました。このプロトコルはauth challengeもサポートします。remote signerが追加認証（パスワード、生体認証、ハードウェアトークン）を必要とする場合、クライアントがブラウザで開いて完了させる&lt;code>auth_url&lt;/code>を返します。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものがある、あるいは共有したいニュースがありますか。NostrでDMを送るか、&lt;a href="https://nostrcompass.org">nostrcompass.org&lt;/a>を見てください。&lt;/p></content:encoded></item><item><title>Nostr Compass #16</title><link>https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、ピン留めノート、&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>経由のrelay管理、&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a> Request to Vanishサポートを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amethyst%e3%81%8c%e3%83%94%e3%83%b3%e7%95%99%e3%82%81%e3%83%8e%e3%83%bc%e3%83%88relay%e7%ae%a1%e7%90%86request-to-vanish%e3%82%92%e5%87%ba%e8%8d%b7">v1.07.0&lt;/a>を出荷しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nip-5a%e3%81%8c%e3%83%9e%e3%83%bc%e3%82%b8-nostr%e3%81%ab%e9%9d%99%e7%9a%84%e3%82%a6%e3%82%a7%e3%83%96%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e3%82%82%e3%81%9f%e3%82%89%e3%81%99">NIP-5A&lt;/a>（静的ウェブサイト）がNIPsリポジトリへマージされ、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>ストレージを使ってNostrキーペア配下でサイトをホストする方法を定義しました。&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>は、voice rooms、email/password login、proof-of-work DMを含む&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#flotilla-v170%e3%81%8cvoice-roomsemail-login%e3%82%92%e8%bf%bd%e5%8a%a0">v1.7.0&lt;/a>を出荷しました。&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#white-noise%e3%81%8crelay-churn%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e5%88%b6%e5%be%a1%e3%82%92%e6%8b%a1%e5%bc%b5">v2026.3.23&lt;/a>でrelay churnを修正し、&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>はサインアップ不要の暗号化メッセンジャーとして&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nospeak%e3%81%8c10%e3%83%97%e3%83%a9%e3%82%a4%e3%83%99%e3%83%bc%e3%83%88%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">1.0.0&lt;/a>を開始しました。&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nymchat%e3%81%8cmarmot%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ae%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e3%83%81%e3%83%a3%e3%83%83%e3%83%88%e3%82%92%e5%87%ba%e8%8d%b7">group chats向けにMarmotを採用&lt;/a>し、&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>はプライベートカレンダーリストとICS importを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a>へ到達し、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amber-v502-%e3%81%8b%e3%82%89-v504">mnemonic recoveryとNIP-42 relay auth whitelist&lt;/a>を追加し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#marmot%e3%81%8ckeypackage%e3%82%92%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e5%8f%af%e8%83%bd%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e3%81%b8%e7%a7%bb%e3%81%97push-notification%e3%82%92%e5%8e%b3%e6%a0%bc%e5%8c%96">Marmot spec&lt;/a>はKeyPackagesをアドレス可能イベントへ移してMIP-05 push notification形式を厳格化しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="amethystがピン留めノートrelay管理request-to-vanishを出荷">Amethystがピン留めノート、relay管理、Request to Vanishを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はvitorpamplonaがメンテナンスするAndroidクライアントで、3日間に6リリース、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>までを出荷しました。目玉機能群は6つのプロトコルサーフェスにまたがっています。ピン留めノート、専用ポールフィード画面、relayへ完全なイベント削除を求める&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Request to Vanish）サポート、クライアント内からの&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>（Relay Management API）、relay情報画面内の&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（Relay Discovery and Liveness Monitoring）評価、そして&lt;a href="https://nostrcompass.org/ja/topics/nip-43/">NIP-43&lt;/a>（Relay Access Metadata and Requests）のメンバー情報表示です。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>はrelayオペレーター向けのJSON-RPCインターフェースを定義し、pubkeyのBAN、pubkeyの許可、BANユーザー一覧の取得といった管理コマンドを標準化API経由でクライアントから送れるようにします。Amethystはこれをrelay管理UIに直接公開したため、自分のrelayを運用するユーザーは、投稿に使うのと同じクライアントから運用管理もできるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a>は、BANおよび許可pubkeyの旧来のhex入力ダイアログを、対話型のユーザー検索ダイアログへ置き換えています。&lt;/p>
&lt;p>v1.07.2ではGIF keyboard uploadsが追加され、旧Amberバージョンが&lt;code>rejected&lt;/code>フィールドに空文字列を返していたために起きていた署名リグレッションも修正されました（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>）。v1.07.5では画像アップロード時クラッシュが修正されています。同週前半の&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a>では、単一選択と複数選択ポールの切り替え、動画プログレスバーのdrag-to-seek、匿名投稿の改善が入っていました。&lt;/p>
&lt;h3 id="nip-5aがマージnostrに静的ウェブサイトをもたらす">NIP-5Aがマージ、Nostrに静的ウェブサイトをもたらす&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>（静的ウェブサイト）が&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>経由でマージされ、Nostrキーペア配下で静的ウェブサイトをホストする方法を定義しました。仕様は2つのイベントkindを使います。kind &lt;code>15128&lt;/code>はpubkeyごとに1つのroot site用、kind &lt;code>35128&lt;/code>は&lt;code>d&lt;/code>タグで識別されるnamed site用です。各manifestはURL pathをSHA256 hashへ対応づけ、実ファイルが置かれている&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>ストレージホストを指す&lt;code>server&lt;/code>タグをオプションで持てます。&lt;/p>
&lt;p>ホスティングモデルは次のように動きます。サイト作者が静的サイトをビルドし、ファイルを1つまたは複数のBlossomサーバーへアップロードし、その後にpathとcontent hashの対応表を持つ署名済みmanifestイベントを公開します。ホストサーバーはWebリクエストを受けると、subdomainから作者のpubkeyを解決し、作者の&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relay listからmanifestを取得し、対応するblobをBlossomからダウンロードして配信します。更新manifestに署名できるのはその鍵だけなので、サイトの制御権は作者の側に残ります。NIP-5Aを理解するサーバーならどれでも同じmanifestから同じサイトを配信できるため、ホストサーバー自体は置き換え可能です。&lt;/p>
&lt;p>この仕様はすでに存在していたインフラの上に乗っています。lezによるNIP-5Aのreference host実装&lt;a href="https://github.com/lez/nsite">nsite&lt;/a>と、hzrd149による管理UI&lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>は、NIPがマージされる前から稼働していました。今回のマージにより、イベントkindとURL解決ルールが公式化され、2つ目3つ目の実装にとって安定したターゲットが生まれました。&lt;/p>
&lt;h3 id="white-noiseがrelay-churnを修正しクライアント制御を拡張">White Noiseがrelay churnを修正し、クライアント制御を拡張&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコル上のプライベートメッセンジャーで、3月25日に&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a>を出荷しました。主な作業はrelay安定性です。relay list publishはquorum logicを使い、残りをバックグラウンドで再試行するようになったため、ログインはすべてのrelay-list publish完了を待たずに先へ進めるようになりました。単発のfetchとpublishは長寿命poolに残留せず、スコープ付きの一時relay sessionを使います。復元されたsessionは起動後にgroup refresh pathを回復し、アプリは&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>を通じてrelay diagnosticsとrelay state inspectionを公開しました。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、ピン留めノート、&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>経由のrelay管理、&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a> Request to Vanishサポートを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amethyst%e3%81%8c%e3%83%94%e3%83%b3%e7%95%99%e3%82%81%e3%83%8e%e3%83%bc%e3%83%88relay%e7%ae%a1%e7%90%86request-to-vanish%e3%82%92%e5%87%ba%e8%8d%b7">v1.07.0&lt;/a>を出荷しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nip-5a%e3%81%8c%e3%83%9e%e3%83%bc%e3%82%b8-nostr%e3%81%ab%e9%9d%99%e7%9a%84%e3%82%a6%e3%82%a7%e3%83%96%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e3%82%82%e3%81%9f%e3%82%89%e3%81%99">NIP-5A&lt;/a>（静的ウェブサイト）がNIPsリポジトリへマージされ、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>ストレージを使ってNostrキーペア配下でサイトをホストする方法を定義しました。&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>は、voice rooms、email/password login、proof-of-work DMを含む&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#flotilla-v170%e3%81%8cvoice-roomsemail-login%e3%82%92%e8%bf%bd%e5%8a%a0">v1.7.0&lt;/a>を出荷しました。&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#white-noise%e3%81%8crelay-churn%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e5%88%b6%e5%be%a1%e3%82%92%e6%8b%a1%e5%bc%b5">v2026.3.23&lt;/a>でrelay churnを修正し、&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>はサインアップ不要の暗号化メッセンジャーとして&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nospeak%e3%81%8c10%e3%83%97%e3%83%a9%e3%82%a4%e3%83%99%e3%83%bc%e3%83%88%e3%83%a1%e3%83%83%e3%82%bb%e3%83%b3%e3%82%b8%e3%83%a3%e3%83%bc%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">1.0.0&lt;/a>を開始しました。&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nymchat%e3%81%8cmarmot%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ae%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e3%83%81%e3%83%a3%e3%83%83%e3%83%88%e3%82%92%e5%87%ba%e8%8d%b7">group chats向けにMarmotを採用&lt;/a>し、&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>はプライベートカレンダーリストとICS importを備えた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#calendar-by-form-v100">v1.0.0&lt;/a>へ到達し、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amber-v502-%e3%81%8b%e3%82%89-v504">mnemonic recoveryとNIP-42 relay auth whitelist&lt;/a>を追加し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#marmot%e3%81%8ckeypackage%e3%82%92%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e5%8f%af%e8%83%bd%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e3%81%b8%e7%a7%bb%e3%81%97push-notification%e3%82%92%e5%8e%b3%e6%a0%bc%e5%8c%96">Marmot spec&lt;/a>はKeyPackagesをアドレス可能イベントへ移してMIP-05 push notification形式を厳格化しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="amethystがピン留めノートrelay管理request-to-vanishを出荷">Amethystがピン留めノート、relay管理、Request to Vanishを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はvitorpamplonaがメンテナンスするAndroidクライアントで、3日間に6リリース、&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.0">v1.07.0&lt;/a>から&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.07.5">v1.07.5&lt;/a>までを出荷しました。目玉機能群は6つのプロトコルサーフェスにまたがっています。ピン留めノート、専用ポールフィード画面、relayへ完全なイベント削除を求める&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Request to Vanish）サポート、クライアント内からの&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>（Relay Management API）、relay情報画面内の&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（Relay Discovery and Liveness Monitoring）評価、そして&lt;a href="https://nostrcompass.org/ja/topics/nip-43/">NIP-43&lt;/a>（Relay Access Metadata and Requests）のメンバー情報表示です。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-86/">NIP-86&lt;/a>はrelayオペレーター向けのJSON-RPCインターフェースを定義し、pubkeyのBAN、pubkeyの許可、BANユーザー一覧の取得といった管理コマンドを標準化API経由でクライアントから送れるようにします。Amethystはこれをrelay管理UIに直接公開したため、自分のrelayを運用するユーザーは、投稿に使うのと同じクライアントから運用管理もできるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2039">PR #2039&lt;/a>は、BANおよび許可pubkeyの旧来のhex入力ダイアログを、対話型のユーザー検索ダイアログへ置き換えています。&lt;/p>
&lt;p>v1.07.2ではGIF keyboard uploadsが追加され、旧Amberバージョンが&lt;code>rejected&lt;/code>フィールドに空文字列を返していたために起きていた署名リグレッションも修正されました（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/2042">PR #2042&lt;/a>）。v1.07.5では画像アップロード時クラッシュが修正されています。同週前半の&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.2">v1.06.2&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.3">v1.06.3&lt;/a>では、単一選択と複数選択ポールの切り替え、動画プログレスバーのdrag-to-seek、匿名投稿の改善が入っていました。&lt;/p>
&lt;h3 id="nip-5aがマージnostrに静的ウェブサイトをもたらす">NIP-5Aがマージ、Nostrに静的ウェブサイトをもたらす&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>（静的ウェブサイト）が&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>経由でマージされ、Nostrキーペア配下で静的ウェブサイトをホストする方法を定義しました。仕様は2つのイベントkindを使います。kind &lt;code>15128&lt;/code>はpubkeyごとに1つのroot site用、kind &lt;code>35128&lt;/code>は&lt;code>d&lt;/code>タグで識別されるnamed site用です。各manifestはURL pathをSHA256 hashへ対応づけ、実ファイルが置かれている&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>ストレージホストを指す&lt;code>server&lt;/code>タグをオプションで持てます。&lt;/p>
&lt;p>ホスティングモデルは次のように動きます。サイト作者が静的サイトをビルドし、ファイルを1つまたは複数のBlossomサーバーへアップロードし、その後にpathとcontent hashの対応表を持つ署名済みmanifestイベントを公開します。ホストサーバーはWebリクエストを受けると、subdomainから作者のpubkeyを解決し、作者の&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relay listからmanifestを取得し、対応するblobをBlossomからダウンロードして配信します。更新manifestに署名できるのはその鍵だけなので、サイトの制御権は作者の側に残ります。NIP-5Aを理解するサーバーならどれでも同じmanifestから同じサイトを配信できるため、ホストサーバー自体は置き換え可能です。&lt;/p>
&lt;p>この仕様はすでに存在していたインフラの上に乗っています。lezによるNIP-5Aのreference host実装&lt;a href="https://github.com/lez/nsite">nsite&lt;/a>と、hzrd149による管理UI&lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>は、NIPがマージされる前から稼働していました。今回のマージにより、イベントkindとURL解決ルールが公式化され、2つ目3つ目の実装にとって安定したターゲットが生まれました。&lt;/p>
&lt;h3 id="white-noiseがrelay-churnを修正しクライアント制御を拡張">White Noiseがrelay churnを修正し、クライアント制御を拡張&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコル上のプライベートメッセンジャーで、3月25日に&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v2026.3.23">v2026.3.23&lt;/a>を出荷しました。主な作業はrelay安定性です。relay list publishはquorum logicを使い、残りをバックグラウンドで再試行するようになったため、ログインはすべてのrelay-list publish完了を待たずに先へ進めるようになりました。単発のfetchとpublishは長寿命poolに残留せず、スコープ付きの一時relay sessionを使います。復元されたsessionは起動後にgroup refresh pathを回復し、アプリは&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/495">PR #495&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/502">PR #502&lt;/a>を通じてrelay diagnosticsとrelay state inspectionを公開しました。&lt;/p>
&lt;p>同じリリースでは会話の振る舞いも変わりました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/468">PR #468&lt;/a>が&lt;code>q&lt;/code>タグと&lt;code>nostr:nevent&lt;/code>参照を使うNIP-C7 reply threadingを追加し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/471">PR #471&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/512">PR #512&lt;/a>が削除メッセージを静かに消すのではなく削除済みプレースホルダーとして見せるようにし、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/478">PR #478&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）を使った匿名バグレポートフローを入れ、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/486">PR #486&lt;/a>がクライアント内サポートチャットを追加しました。ユーザー向けメッセージ制御も同期間に入り、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/532">PR #532&lt;/a>はchat archive、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/541">PR #541&lt;/a>は期間指定可能なmute/unmute、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/535">PR #535&lt;/a>はnotification settingsを追加しています。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/539">PR #539&lt;/a>はpush登録の準備作業で、iOSではAPNs登録、AndroidではPlay Services検出を配線し、その上に登録処理を積める状態にしました。バックエンド側では&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>がMIP-05 push notification primitivesとnotification request builderを追加し（&lt;a href="https://github.com/marmot-protocol/mdk/pull/235">PR #235&lt;/a>、&lt;a href="https://github.com/marmot-protocol/mdk/pull/238">PR #238&lt;/a>）、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>はpush notification登録の永続化（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/688">PR #688&lt;/a>）、バックグラウンドタスクキャンセル修正（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/696">PR #696&lt;/a>）、起動時のkey package回復（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/693">PR #693&lt;/a>）を追加しました。&lt;/p>
&lt;h3 id="nostr-vpnがv030に到達しroster-syncとinvite-v2を追加">Nostr VPNがv0.3.0に到達し、roster syncとinvite v2を追加&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostr-vpn%E3%81%8Ctailscale%E4%BB%A3%E6%9B%BF%E3%81%A8%E3%81%97%E3%81%A6%E3%83%AD%E3%83%BC%E3%83%B3%E3%83%81">先週のローンチ記事&lt;/a>に続き、Nostr relayをシグナリングに、WireGuardを暗号化トンネルに使うP2P VPNの&lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>は高速なリリースペースを維持し、&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.3.3">v0.3.3&lt;/a>まで進みました。このバージョン更新では2つの破壊的変更が入っています。invite formatがv2へ移行し（0.3.0はv1 inviteをまだimportできますが、旧ビルドはv2 inviteをimportできません）、シグナリングプロトコルにadmin署名付きroster syncが追加されました。バージョンが混在するpeer同士でもmesh層では接続できますが、古いpeerはroster同期には参加しません。&lt;/p>
&lt;p>roster syncの追加は、managed networkへの移行の始まりです。admin nodeが全peerにmembership変更をpushできるようになり、meshへのデバイス追加や削除のたびに各peerが手動で設定を更新する必要がなくなります。同週のv0.2.xリリース群は具体的なデプロイ問題を修正しており、&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.22">v0.2.22&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.28">v0.2.28&lt;/a>ではWindows service管理、Android build scripts、LAN pairing flowの改善が入っています。&lt;/p>
&lt;h3 id="nospeakが10プライベートメッセンジャーとしてローンチ">nospeakが1.0プライベートメッセンジャーとしてローンチ&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>はNostr上のプライベートメッセンジャーで、3月27日に&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v1.0.0">1.0.0&lt;/a>を出荷しました。プロジェクトは1対1会話、グループ会話、連絡先管理、self-hostableアーキテクチャを含みます。1対1チャットは&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）を使い、これは&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）を組み合わせることで、relayから送信者を隠します。メディアについては、ファイルはBlossomサーバーへアップロードされる前にクライアント側でAES-256-GCM暗号化されます。このリリースはself-hosting向けcontainer imageとしても配布されています。&lt;/p>
&lt;h3 id="flotilla-v170がvoice-roomsとemail-loginを追加">Flotilla v1.7.0がvoice roomsとemail loginを追加&lt;/h3>
&lt;p>&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>は、hodlbodによるDiscord風&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>（Relay-based Groups）クライアントで、「relays as groups」モデルを中心に構築されています。3月30日と31日に&lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.0">v1.7.0&lt;/a>および&lt;a href="https://gitea.coracle.social/coracle/flotilla/src/tag/1.7.1">v1.7.1&lt;/a>を出荷しました。目玉機能はmplorentzによるvoice roomsです。ユーザーはグループchannel内でvoice callへ参加できるようになり、join dialog（&lt;a href="https://gitea.coracle.social/coracle/flotilla/pulls/109">PR #109&lt;/a>）ではaudio input deviceの選択と、音声通話に参加するかテキストチャットだけを見るかを選べます。このダイアログは前段のUX問題を解決します。以前はvoice対応roomへ入ると、メッセージ閲覧や設定確認だけが目的でもマイクが強制的に有効化されていました。&lt;/p>
&lt;p>同じリリースには、Nostr鍵ベース認証の代替となるemail/password login、DMへのproof-of-work、DM編集、再設計されたrelay onboardingとsettings、&lt;code>supported_nips&lt;/code>経由のBlossomサポート検出、改善されたnotification badges、Android push notification fallback、Androidでのfile upload修正も入っています。v1.7.1ではoffline signer使用時のpomade registration fallbackも修正されました。&lt;/p>
&lt;p>hodlbodは同時に&lt;a href="https://gitea.coracle.social/coracle/caravel">zooid relay&lt;/a>向けのhosting managerおよびdashboardであるCaravelも構築しており、初期開発だけで今週40コミットを記録しています。&lt;/p>
&lt;h3 id="nymchatがmarmotベースのgroup-chatsを出荷">NymchatがMarmotベースのgroup chatsを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">Nymchat&lt;/a>（NYM、Nostr Ynstant Messengerとしても知られます）はBitchatとbridgeされたエフェメラルチャットクライアントで、すべての新しいグループチャットが&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを使うMLS暗号化メッセージングへ移行したと発表しました。この統合では、key packages、welcome messages、group messagesにそれぞれkinds &lt;code>443&lt;/code>、&lt;code>444&lt;/code>、&lt;code>445&lt;/code>を使い、forward secrecy、post-compromise security、metadata leakageゼロを提供します。受信者がMLSを使えない場合、Nymchatは従来の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）ベースのgroup chat pathにフォールバックします。こちらもエンドツーエンド暗号化ですが、MLSのratchet-tree特性は持ちません。&lt;/p>
&lt;p>今週のv3.55およびv3.56系列は、新規デバイスでの読み込み、leave動作、notification routing、未読badge countといったgroup chatの境界ケースに集中していました。同じサイクルでは、エスケープされていないHTMLに起因するXSS脆弱性の修正と、user nicknameにも拡張されたkeyword/phrase blockingも入りました。これによりNymchatは、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#white-noise%e3%81%8crelay-churn%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e5%88%b6%e5%be%a1%e3%82%92%e6%8b%a1%e5%bc%b5">White Noise&lt;/a>と&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#openchat-v024-%e3%81%8b%e3%82%89-v030">OpenChat&lt;/a>に続くもう1つのMarmotクライアントとなり、同じプロトコル上でMLS暗号化group messagesを交換できるアプリ群を広げています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="calendar-by-form-v100">Calendar by Form* v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>（カレンダーイベント）上に構築された分散カレンダーアプリで、3月29日に&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v1.0.0">v1.0.0&lt;/a>へ到達しました。このリリースは、暗号化Nostrイベント（kind &lt;code>32123&lt;/code>）と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）の自己暗号化を使うprivate calendar listsを追加し、relayへそのグルーピングを明かさずにイベントを私的コレクションへ整理できるようにします。同じリリースでは、他アプリからカレンダーデータを取り込むICS intent handlingと、ユーザー間でイベントを共有するinvitation requestsも追加されました。&lt;/p>
&lt;h3 id="amber-v502-から-v504">Amber v5.0.2 から v5.0.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）署名者アプリで、3つのポイントリリース、&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.2">v5.0.2&lt;/a>、&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.3">v5.0.3&lt;/a>、&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.4">v5.0.4&lt;/a>を出荷しました。最も目に見える追加は、raw nsecやncryptsec文字列を要求せず、BIP39 seed phraseからsignerを復元できるmnemonic recovery phrase login（&lt;a href="https://github.com/greenart7c3/Amber/pull/358">PR #358&lt;/a>）です。&lt;a href="https://github.com/greenart7c3/Amber/pull/357">PR #357&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay auth whitelistを追加し、どのrelayがclient authenticationを要求できるかをユーザーが制限できるようにしました。&lt;a href="https://github.com/greenart7c3/Amber/pull/353">PR #353&lt;/a>はdecrypt permission向けのencryption scope選択を追加し、包括的権限ではなくNIP-04専用あるいはNIP-44専用のdecrypt accessを付与できるようにしています。v5.0.4では、scoped encrypt/decrypt permissionsが拒否処理に正しく反映されないバグが修正され、複数のbunker request受信時の性能も改善されました。&lt;/p>
&lt;h3 id="aegis-v040">Aegis v0.4.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>はクロスプラットフォーム署名者で、3月26日に&lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.4.0">v0.4.0&lt;/a>を出荷しました。このリリースではSettingsにFullおよびSelective authorization modesが追加され、複数のQRスキャン問題も修正されています。追随するコミット&lt;a href="https://github.com/ZharlieW/Aegis/commit/d4f799fe51dd82968d54f72ac77f2de29d0cfe6b">d4f799f&lt;/a>、&lt;a href="https://github.com/ZharlieW/Aegis/commit/3313af92e55e449ebc98fbd91a085bd444d716e7">3313af9&lt;/a>、&lt;a href="https://github.com/ZharlieW/Aegis/commit/3b214e4176f5dbe7f18690d0996e69dd151fe00f">3b214e4&lt;/a>、&lt;a href="https://github.com/ZharlieW/Aegis/commit/e4f40b6f1f48c2dae1bb5e4246df26c26dba419e">e4f40b6&lt;/a>では、この方向をさらに進め、batch select controls、再利用可能なbatch selection stats、set-all-groups selection APIs、app permissionsページ上のpermission別使用統計を追加しています。&lt;/p>
&lt;h3 id="schemata-v027-から-v030">Schemata v0.2.7 から v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/schemata">Schemata&lt;/a>はNostrイベントkind検証用のJSON Schema定義群で、&lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.7">v0.2.7&lt;/a>から&lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.3.0">v0.3.0&lt;/a>まで4リリース、21件のマージ済みPRを出しました。v0.3.0では、relay URL、hex ID、MIME type、BOLT-11文字列にわたるpattern consistency修正（&lt;a href="https://github.com/nostrability/schemata/pull/126">PR #126&lt;/a>）、relay URL patternの集中管理（&lt;a href="https://github.com/nostrability/schemata/pull/117">PR #117&lt;/a>）、&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a> bech32 base type schema（&lt;a href="https://github.com/nostrability/schemata/pull/118">PR #118&lt;/a>）、kind 777 spellイベントの検証（&lt;a href="https://github.com/nostrability/schemata/pull/125">PR #125&lt;/a>）が入りました。release pipelineは各リリース時にNostrへkind &lt;code>1&lt;/code> noteも公開するようになり（&lt;a href="https://github.com/nostrability/schemata/pull/120">PR #120&lt;/a>）、プロジェクト自身が検証対象のプロトコルを通じて自らを告知します。Schemataは、canonicalなJS/TSパッケージ以外に、Rust、Go、Python、Kotlin、Java、Swift、Dart、PHP、C#/.NET、C++、Ruby、Cの計12超の言語をサポートするようになりました。&lt;/p>
&lt;p>Schemataと並行して、チームは&lt;a href="https://github.com/nostrability/schemata-codegen">schemata-codegen&lt;/a>も公開しました。これは同じ検証問題に対して別アプローチを取る実験的コードジェネレーターです。Schemataのvalidator packagesがJSON Schema runtime dependencyを必要とするのに対し、schemata-codegenはschemaをtyped tag tuples、kind interfaces、runtime validatorsといったネイティブ言語構造へ直接移植することで、実行時にvalidator libraryを不要にします。&lt;a href="https://github.com/nostrability/schemata-codegen/blob/main/CODEGEN-VS-VALIDATORS.md">codegen-vs-validators比較&lt;/a>は、どちらのアプローチがどの場面に適するかを文書化しています。&lt;/p>
&lt;h3 id="bigbrotr-v650-から-v654">BigBrotr v6.5.0 から v6.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>はrelay分析プラットフォームで、&lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.0">v6.5.0&lt;/a>から&lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.5.4">v6.5.4&lt;/a>まで5リリースを出荷しました。v6.5.0では、&lt;code>parse_relay_url()&lt;/code> factory functionによるrelay URL validationの集中化、URL length checking、path sanitizationが入りました。monitoring基盤にも修正があり、announcementイベントは&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>にならったgeohash location tagsを含むようになり、期限のなかったGeo/Net &lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a> metadata testsにはtimeout protectionが追加され、無期限ハングを防いでいます。&lt;a href="https://github.com/BigBrotr/bigbrotr/pull/410">PR #410&lt;/a>はPostgreSQLを16から18へ上げており、async I/O subsystemとWAL throughput改善がrelay analytics pipelineに入っています。&lt;/p>
&lt;h3 id="vertex-lab-relayがnip-50プロフィール検索を追加">Vertex Lab relayがNIP-50プロフィール検索を追加&lt;/h3>
&lt;p>&lt;a href="https://vertexlab.io">Vertex Lab&lt;/a>は&lt;a href="https://github.com/vertex-lab/npub.world">npub.world&lt;/a>と&lt;a href="https://vertexlab.io/docs">Vertex&lt;/a> Web of Trust engineを手がけるチームで、&lt;code>wss://relay.vertexlab.io&lt;/code>がプロフィールクエリ向けに&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>（検索）をサポートしたと発表しました。NIP-50は標準Nostr &lt;code>REQ&lt;/code> filterに&lt;code>search&lt;/code>フィールドを拡張し、relayがindexを持つ場合にクライアントが全文検索クエリを送れるようにします。Web of Trustデータも提供するrelayにプロフィール検索が入ることで、&lt;code>relay.vertexlab.io&lt;/code>へ接続するクライアントは別検索サービスなしに名前や説明からユーザーを発見できます。&lt;/p>
&lt;h3 id="hashtree-v0217-と-v0218がwebrtcメッシュとiris-desktopを出荷">Hashtree v0.2.17 と v0.2.18がWebRTCメッシュとIris Desktopを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/mmalmi/hashtree">Hashtree&lt;/a>はmmalmiによる、Merkle rootをNostrへ公開するcontent-addressed blob storage systemで、3月31日に&lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.17">v0.2.17&lt;/a>と&lt;a href="https://github.com/mmalmi/hashtree/releases/tag/v0.2.18">v0.2.18&lt;/a>を出荷しました。この2リリースは30コミットのスプリントを締めくくるもので、3つの機能が加わっています。1つ目は&lt;code>hashtree-webrtc&lt;/code> crate（v0.2.18で&lt;code>hashtree-network&lt;/code>へ改名）によるWebRTCベースのP2P blob配布で、Rust CLI、simulation harness、TypeScript clientにまたがる統一mesh signalingを追加します。2つ目はrelease pipelineがWindows artifacts（CLI zipとIris installer）をビルドするようになったことで、macOS、Linux、Windowsのクロスプラットフォーム対応が整いました。3つ目は、両リリースがIris Desktop 0.1.0、すなわちmmalmiのNostr social clientを、AppImage、.deb、Windows installer assetとしてhashtree CLIと一緒に同梱していることです。Hashtreeは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/">Newsletter #10&lt;/a>で、filesystemベースの&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>互換ストアとして初めて取り上げました。今回のWebRTC層は、中央集権的Blossomサーバーに依存しないP2P content distributionへの第一歩です。&lt;/p>
&lt;h3 id="nostr-mail-client-v070-から-v072">Nostr Mail Client v0.7.0 から v0.7.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/nogringo/nostr-mail-client">Nostr Mail Client&lt;/a>はNostrアイデンティティ上に構築されたFlutter製メール風クライアントで、3日間で&lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.0">v0.7.0&lt;/a>、&lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.1">v0.7.1&lt;/a>、&lt;a href="https://github.com/nogringo/nostr-mail-client/releases/tag/v0.7.2">v0.7.2&lt;/a>を出荷しました。見えるプロダクト作業はオンボーディング（&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/9">PR #9&lt;/a>）とプロフィール編集（&lt;a href="https://github.com/nogringo/nostr-mail-client/pull/10">PR #10&lt;/a>）に集中しており、Nostrをメールボックスとして提示しようとするクライアントにとって基本的な部品です。後続のポイントリリースはこの作業を新しいAndroidおよびLinuxビルドへパッケージしました。&lt;/p>
&lt;h3 id="wisp-v0140-から-v0161">Wisp v0.14.0 から v0.16.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>はAndroid Nostrクライアントで、今週さらに&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.14.0-beta">v0.14.0-beta&lt;/a>から&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>まで13リリースを出しました。作業内容には、NIP-17 rumor JSON修正（&lt;a href="https://github.com/barrydeen/wisp/pull/385">PR #385&lt;/a>）、gallery cards上のrepost badges（&lt;a href="https://github.com/barrydeen/wisp/pull/383">PR #383&lt;/a>）、展開可能なreaction details（&lt;a href="https://github.com/barrydeen/wisp/pull/382">PR #382&lt;/a>）、永続emoji sets（&lt;a href="https://github.com/barrydeen/wisp/pull/381">PR #381&lt;/a>）、video autoplay controls（&lt;a href="https://github.com/barrydeen/wisp/pull/380">PR #380&lt;/a>）が含まれます。最新の&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.16.3-beta">v0.16.3-beta&lt;/a>では、ハイフンを含むcustom emoji shortcodeと欠落emoji tagsも修正されています。&lt;/p>
&lt;h3 id="primal-android-3017">Primal Android 3.0.17&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は3月24日に&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.17">3.0.17&lt;/a>を出荷しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/1000">PR #1000&lt;/a>はWalletExceptionの型をNWC response内のerror codeへ対応付け、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>クライアントに汎用エラーではなく構造化された障害情報を返します。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/995">PR #995&lt;/a>はpoll zap votesがTop Zapsとして見えてしまう問題を修正し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/998">PR #998&lt;/a>はwallet未設定時に残高とaction buttonsを非表示にします。&lt;/p>
&lt;h3 id="openchat-v024-から-v030">OpenChat v0.2.4 から v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>スタック上に構築されたAvaloniaベースのチャットクライアントで、4日間で&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.2.4">v0.2.4&lt;/a>から&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.3.0">v0.3.0&lt;/a>まで6リリースを出荷しました。commit logは、「Marmotが動く」から「誰かが日常的に使える」までの隙間を埋めていくクライアントの過程を示しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay authenticationが入り、それに続いてduplicate event filteringを持つrelay picker UIも入りました。voice messagesはpause、resume、seek、時間表示を獲得しました。signer pathも強化され、更新された&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> URI formatによってAmber接続が修正され、WebSocketはrequest送信前に自動再接続するようになり、replayed responseを検査することでduplicate Amber requestsも捕捉されます。ストレージ面では、LinuxとmacOSにAES-256-GCM secure storageとfile-backed keysが入り、user metadata fetchは&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relay discoveryを使ってローカルデータベースにキャッシュされるようになりました。&lt;/p>
&lt;h3 id="igloo-signer-11">Igloo Signer 1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype">Igloo&lt;/a>はFROSTRプロジェクトによるiOS向け&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a> threshold signerで、3月28日に&lt;a href="https://github.com/FROSTR-ORG/igloo-ios-prototype/releases/tag/v1.1">v1.1&lt;/a>を出荷しました。FROST（Flexible Round-Optimized Schnorr Threshold）署名は、署名者のグループが共同で1つのNostrキーペアを制御し、単一の当事者が完全な秘密鍵を保持しないまま、t-of-n参加者でイベント署名できるようにします。Iglooは、Nostr向けにこのアプローチを実装した最初期のモバイル実装の1つです。&lt;/p>
&lt;h3 id="nak-v0193-と-v0194">nak v0.19.3 と v0.19.4&lt;/h3>
&lt;p>fiatjafのコマンドラインNostrツールキット&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>が、3月26日と30日に&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.3">v0.19.3&lt;/a>と&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.4">v0.19.4&lt;/a>を出荷しました。どちらのリリースもpanic条件を修正しています。&lt;a href="https://github.com/fiatjaf/nak/pull/118">PR #118&lt;/a>は&lt;code>strings.Split&lt;/code>を&lt;code>strings.Cut&lt;/code>へ置き換え、潜在的なout-of-bounds accessを防ぎます。&lt;a href="https://github.com/fiatjaf/nak/pull/119">PR #119&lt;/a>はcurl flag parsingでも同種のpanicを防ぎます。&lt;/p>
&lt;h3 id="flora-v030">Flora v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/shawnyeager/flora-extension">Flora&lt;/a>は、Nostr上で分散スクリーン録画と共有を行うChrome拡張で、&lt;a href="https://github.com/shawnyeager/flora-extension/releases/tag/v0.3.0">v0.3.0&lt;/a>を出荷しました。このリリースは、public、unlisted、private modeを備えたprivate encrypted video sharingを追加します。private録画はAES-256-GCMで暗号化され、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）経由で受信者に渡されるため、録画は平文のままサーバーに触れません。&lt;/p>
&lt;h3 id="yakihonne-mobile-203">YakiHonne Mobile 2.0.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/YakiHonne/mobile-app">YakiHonne&lt;/a>はモバイルNostrクライアントで、relay reviewsとjoin requests、拡張されたnested replies、ノートのauto-translation、NWC multi-relay supportを含む&lt;a href="https://github.com/YakiHonne/mobile-app/releases/tag/YakiHonne-2.0.3">2.0.3&lt;/a>を出荷しました。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="zap-cookingがzap-pollsとbranta支払い検証を追加">Zap Cookingがzap pollsとBranta支払い検証を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>はレシピおよびcontentプラットフォームで、今週11件のPRをマージしました。焦点はinteractive contentとpayment flowsです。&lt;a href="https://github.com/zapcooking/frontend/pull/277">PR #277&lt;/a>はkind 6969のzap pollsを追加し、ユーザーはsatsを送って投票し、プロフィール画像付きで投票者一覧を見られるようになりました。&lt;a href="https://github.com/zapcooking/frontend/pull/274">PR #274&lt;/a>は投票インターフェースがフィード内で自然に見えるようpoll UXを再設計しています。&lt;/p>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend/pull/276">PR #276&lt;/a>はSend Payment flowにcamera-based QR scanningを追加し、送信先が正当かどうかを送信前に確認する検証サービス&lt;a href="https://branta.pro/">Branta&lt;/a>を統合しました。Brantaは送信前に支払い先をphishing、address swaps、man-in-the-middle interceptionに対して検査します。Zap Cookingでの実装では、Brantaにより検証されたplatform nameとlogoが支払いフロー内に直接表示され、Branta対応QRコードは&lt;code>branta_id&lt;/code>と&lt;code>branta_secret&lt;/code>パラメータを持てるため、walletはスキャンされたコード自体から送信先を検証できます。&lt;/p>
&lt;h3 id="divineが統一検索の基盤を敷き動画配信を強化">diVineが統一検索の基盤を敷き、動画配信を強化&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は短尺動画クライアントで、今週は検索、feed navigation、playback recovery、upload behaviorの強化に取り組みました。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2540">PR #2540&lt;/a>は、Videos、People、Tagsのグループ化セクションを持つ統一検索画面の基礎を敷きます。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2623">PR #2623&lt;/a>は、profile feeds、inbox、notifications、discover lists、classic vines、search、composable grid feedsにわたるpaginationを共通pagination controllerへ移すことで全体を強化しました。&lt;/p>
&lt;p>動画配信にも具体的な修正がいくつか入りました。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2643">PR #2643&lt;/a>はDivineホスト由来の派生ソースを順番に再試行し、それでもだめならraw blobへフォールバックしてからplayback errorを出すようにし、1つのソースの一時障害で即座に再生失敗にならないようにします。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2634">PR #2634&lt;/a>はcapability probingが一時的に失敗してもresumable uploadをDivine所有パスに維持し、短時間のネットワーク障害でuploadが壊れることを減らします。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2637">PR #2637&lt;/a>はsensitive-content gateも変更し、実際のwarning labelsがある動画のみをハードゲートし、単に作者が付けたcontent warning labelだけではゲートしないようにしました。&lt;/p>
&lt;h3 id="shopstrがカスタムstorefrontを追加しmilk-marketが引き続きマーケットプレイス作業を進める">Shopstrがカスタムstorefrontを追加し、Milk Marketが引き続きマーケットプレイス作業を進める&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>はNostrベースのマーケットプレイスで、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/245">PR #245&lt;/a>をマージしてcustom storefrontsを追加しました。これにより、売り手はすべてのlistingが同じ汎用表示に押し込まれるのではなく、より独自性のあるhome surfaceを持てます。&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>は牛乳に特化した専用マーケットプレイスで、storefront最適化（&lt;a href="https://github.com/shopstr-eng/milk-market/pull/18">PR #18&lt;/a>）、account recovery（&lt;a href="https://github.com/shopstr-eng/milk-market/pull/17">PR #17&lt;/a>）、beef splits（&lt;a href="https://github.com/shopstr-eng/milk-market/pull/15">PR #15&lt;/a>）、MCP tool typing fixes（&lt;a href="https://github.com/shopstr-eng/milk-market/pull/16">PR #16&lt;/a>）を継続しています。&lt;/p>
&lt;h3 id="notedeckが効果音を追加しandroid向けupdater-pathを拡張">Notedeckが効果音を追加し、Android向けupdater pathを拡張&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>はDamusチームによるデスクトップクライアントで、rodioを使ったUI interaction soundsを含むsound effects subsystemを追加する&lt;a href="https://github.com/damus-io/notedeck/pull/1412">PR #1412&lt;/a>と、CLI title flagや折りたたみ可能なsession foldersを含むAgentium更新を入れる&lt;a href="https://github.com/damus-io/notedeck/pull/1399">PR #1399&lt;/a>をマージしました。オープンな&lt;a href="https://github.com/damus-io/notedeck/pull/1417">PR #1417&lt;/a>は、Android上でNostr/Zapstore経由のAPK self-updateを提案しており、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/#notedeck%E3%81%8C%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E7%99%BA%E8%A6%8B%E3%82%92nostr%E4%B8%8A%E3%81%AB%E7%A7%BB%E8%A1%8C">Newsletter #14&lt;/a>で扱ったNotedeckのNostrネイティブupdater作業をさらに先へ進めています。&lt;/p>
&lt;h3 id="nostriaがrepost-relay-hintsとnip-98整合を追加">Nostriaがrepost relay hintsとNIP-98整合を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>は、kind 6およびkind 16イベントのrepost &lt;code>e&lt;/code> tagsへ&lt;a href="https://nostrcompass.org/ja/topics/nip-18/">NIP-18&lt;/a>（Reposts）relay hintsを追加する&lt;a href="https://github.com/nostria-app/nostria/pull/583">PR #583&lt;/a>、Brainstorm HTTP auth（kind 27235）を&lt;a href="https://nostrcompass.org/ja/topics/nip-98/">NIP-98&lt;/a>（HTTP認証）の必須タグへ合わせる&lt;a href="https://github.com/nostria-app/nostria/pull/582">PR #582&lt;/a>、Schemata schema validation testsを追加する&lt;a href="https://github.com/nostria-app/nostria/pull/576">PR #576&lt;/a>をマージしました。NIP-98の変更により、Nostriaは他クライアントと同じHTTP auth形式で外部サービスへ認証できるようになります。&lt;/p>
&lt;h3 id="nostr-docがデスクトップパッケージングとoffline-first作業を追加">Nostr-Docがデスクトップパッケージングとoffline-first作業を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-docs">Nostr-Doc&lt;/a>はForm*による共同編集ツールで、今週はパッケージングとエディター作業が活発でした。&lt;a href="https://github.com/formstr-hq/nostr-docs/commit/fcdc00a564c8d76f094c586b06efce07592a60e4">commit fcdc00a&lt;/a>がデスクトップアプリを追加し、&lt;a href="https://github.com/formstr-hq/nostr-docs/commit/3977a8eb2e62b84a67de756c2776e14de8470927">commit 3977a8e&lt;/a>がネイティブアプリ作業を始め、&lt;a href="https://github.com/formstr-hq/nostr-docs/commit/413a030f5b47fb8e32a5dff81bcef557ad9b5869">commit 413a030&lt;/a>がアプリをoffline-first挙動へ近づけています。エディター側では&lt;a href="https://github.com/formstr-hq/nostr-docs/commit/1855ce86ee83ad504e14e47d9c339baffb114786">commit 1855ce8&lt;/a>がCtrl+S保存、保存警告、link preview修正、strikethrough描画修正を追加しました。&lt;/p>
&lt;h3 id="rust-nostrがnip-21解析を最適化しrelay側nip-62サポートを追加">rust-nostrがNIP-21解析を最適化し、relay側NIP-62サポートを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>は8件のPRをマージしました。最も注目すべきは、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/21.md">NIP-21&lt;/a> URI解析を標準bech32解析性能に合わせる形で&lt;code>PublicKey::parse&lt;/code>内で最適化する&lt;a href="https://github.com/rust-nostr/nostr/pull/1308">PR #1308&lt;/a>です。以前はNIP-21 URIの解析にraw bech32 keysの約2倍の時間がかかっていました。加えて、このプロジェクトにはmemory、LMDB、SQLite、database test backendsそれぞれへrelay固有の&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Request to Vanish）サポートを追加する4つのオープンPRもあります（&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>）。&lt;/p>
&lt;h3 id="nostr-toolsがbunker-relay制御を追加しnip-47-multi-relay-parsingを修正">nostr-toolsがbunker relay制御を追加し、NIP-47 multi-relay parsingを修正&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>は、manual relay management向けにBunkerSignerParamsへ&lt;code>skipSwitchRelays&lt;/code>を追加する&lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/530">PR #530&lt;/a>と、仕様が許す複数relayに対応するため&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）接続文字列解析を修正する&lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/529">PR #529&lt;/a>をマージしました。&lt;/p>
&lt;h3 id="nostrabilityがsherlock-audit-dataを統合しschemata-overviewを公開">NostrabilityがSherlock audit dataを統合し、Schemata overviewを公開&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/nostrability">Nostrability&lt;/a>はNostrクライアント向け相互運用性trackerで、14件のPRをマージしました。&lt;a href="https://github.com/nostrability/nostrability/pull/306">PR #306&lt;/a>はdashboardへSherlock scan statisticsを統合しています。SherlockはNostrabilityの自動監査ツールで、Nostrクライアントへ接続し、公開されたイベントを取得し、各イベントをSchemata JSON Schema定義に照らして検証し、仕様違反を検出します。dashboardは現在、クライアントごとのschema fail rateを表示し（&lt;a href="https://github.com/nostrability/nostrability/pull/315">PR #315&lt;/a>）、開発者が自分のクライアントがどのイベントkindを誤っているかを確認できるようにしています。&lt;a href="https://github.com/nostrability/nostrability/pull/323">PR #323&lt;/a>はNostr publish workflowも刷新し、release announcementを、先行CIステップにキャンセルされない別jobとして実行するようにしました。&lt;/p>
&lt;p>elsatは3月30日に、&lt;a href="https://njump.me/naddr1qvzqqqr4gupzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqz4fnx4rkw3x57nrcwdn8zt22xd982jehfptsgqtrww">Schemata for nostr devs&lt;/a>も公開しました。ここではschemata、schemata-codegen、Sherlockがどう組み合わさるかが説明され、現時点のカバレッジ数、65 NIPsにまたがる179のevent kind schema、154のtag schema、13のprotocol messages、310のsample eventsが示されています。&lt;/p>
&lt;h3 id="nalgorithmがdigest生成とローカルscore-cachingを追加">Nalgorithmがdigest生成とローカルscore cachingを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/nalgorithm">Nalgorithm&lt;/a>は新しいrelevance-ranked Nostr feedプロジェクトで、今週public developmentを開始しました。&lt;a href="https://github.com/jooray/nalgorithm/commit/cf6c501e754ef95a1b4fecc1a76288471a101f43">commit cf6c501&lt;/a>は、followからpostを取得し、ユーザー定義のpreference promptに照らしてscore付けする初期Webアプリを構築します。&lt;a href="https://github.com/jooray/nalgorithm/commit/8e931b6ae85d470e73603752134ff49b7ba4bb86">commit 8e931b6&lt;/a>はトップランク投稿をspoken-word summaryへ変換するCLI digest toolを追加し、&lt;a href="https://github.com/jooray/nalgorithm/commit/4cb9c635489a9a3429e8d71f3861dc2a11624153">commit 4cb9c63&lt;/a>はfile-based score cachingとrecent likesからのincremental learned-prompt evolutionを追加しました。&lt;a href="https://github.com/jooray/nalgorithm/commit/c2edfb8b89fadbe0028c3f5729bda7e23b2e3c03">commit c2edfb8&lt;/a>は失敗したbatchのfallback scoresをキャッシュしないようにもしており、一時的なscoring failureでpost rankが恒久的に平坦化されることを防いでいます。&lt;/p>
&lt;h3 id="tenexがrag-vector-storeとtargeted-mcp-startupを追加">TENEXがRAG vector storeとtargeted MCP startupを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>は、AIエージェントをTelegram経由でNostr channelへ接続するNostrネイティブのagent frameworkで、今週7件のPRをマージしました。&lt;a href="https://github.com/tenex-chat/tenex/pull/101">PR #101&lt;/a>はSQLite-vec、LanceDB、Qdrant backendsを持つpluggable vector store abstractionを追加し、特定のvector databaseに縛られないretrieval-augmented generationをエージェントへ提供します。&lt;a href="https://github.com/tenex-chat/tenex/pull/102">PR #102&lt;/a>はMCP startupをtargeted化し、最初の実行時に全MCPサーバーを起動する代わりに、エージェントが実際に使うtoolsを持つサーバーだけを起動するようにしました。&lt;a href="https://github.com/tenex-chat/tenex/pull/100">PR #100&lt;/a>は&lt;code>send_message&lt;/code> toolを追加し、Telegram channel bindingを持つagentが、受信メッセージに応答するだけでなく自発的にメッセージをpushできるようにします。&lt;a href="https://github.com/tenex-chat/tenex/pull/106">PR #106&lt;/a>は&lt;code>.git/HEAD&lt;/code>を直接読むことで、subprocess起動に伴って発生していた9GBのBun/JSCメモリ事前確保を回避しました。&lt;/p>
&lt;h3 id="dart-ndkがamber-signerを移しalby-go-1-clickを追加">Dart NDKがAmber signerを移し、Alby Go 1-clickを追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/relaystr/ndk">Dart NDK&lt;/a>はFlutter向けNostr development kitで、11件のPRをマージしました。&lt;a href="https://github.com/relaystr/ndk/pull/525">PR #525&lt;/a>はAmber signer supportをndk_flutter packageへ移し、&lt;a href="https://github.com/relaystr/ndk/pull/552">PR #552&lt;/a>はsample appにAlby Goのone-click wallet connectionを追加します。&lt;a href="https://github.com/relaystr/ndk/pull/502">PR #502&lt;/a>はCLI向けinstall.sh scriptを追加し、&lt;a href="https://github.com/relaystr/ndk/pull/523">PR #523&lt;/a>はnative asset handlingを優先してRust verifier dependencyを削除しました。&lt;/p>
&lt;h2 id="protocol-and-spec-work">Protocol and Spec Work&lt;/h2>
&lt;h3 id="marmotがkeypackagesをアドレス可能イベントへ移しpush-notificationsを厳格化">MarmotがKeyPackagesをアドレス可能イベントへ移し、push notificationsを厳格化&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot">Marmot specification&lt;/a>は、プロトコルが鍵素材とgroup membershipを扱う方法を変える4件のPRをマージしました。&lt;a href="https://github.com/marmot-protocol/marmot/pull/54">PR #54&lt;/a>はKeyPackageイベントを通常の&lt;code>kind:443&lt;/code>から&lt;code>d&lt;/code>タグ付きのアドレス可能&lt;code>kind:30443&lt;/code>へ移行し、鍵ローテーション時に&lt;a href="https://nostrcompass.org/ja/topics/nip-09/">NIP-09&lt;/a>イベント削除を使う必要をなくします。アドレス可能イベントは上書き更新されるため、rotationが自己完結します。&lt;a href="https://github.com/marmot-protocol/marmot/pull/57">PR #57&lt;/a>は非adminユーザーによるSelfRemove proposals（自発的なgroup離脱）コミットを許可し、&lt;a href="https://github.com/marmot-protocol/marmot/pull/62">PR #62&lt;/a>はadminがSelfRemoveを使う前にadmin statusを relinquish することを要求し、高権限を保持したまま消えることを防ぎます。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot/pull/61">PR #61&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/mip-05/">MIP-05&lt;/a> push notification formatも厳格化し、single-blob base64 encoding、versioning、token wire format、x-only key使用法を明示しました。その結果、spec、client libraries、app backendsの間でtoken blobsとx-only keysに対して1つの定義済みwire representationが得られます。これらのspec変更の実装は今週White Noiseスタックへ入り、上の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#white-noise%e3%81%8crelay-churn%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e5%88%b6%e5%be%a1%e3%82%92%e6%8b%a1%e5%bc%b5">White Noise v2026.3.23セクション&lt;/a>で取り上げました。&lt;/p>
&lt;h3 id="nipアップデート">NIPアップデート&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>: 静的ウェブサイト&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>）：Blossomストレージを使い、Nostrキーペア配下で静的ウェブサイトをホストするためのkind &lt;code>15128&lt;/code>（root site）およびkind &lt;code>35128&lt;/code>（named site）manifestイベントを定義します。詳しくは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#nip%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%80%e3%82%a4%e3%83%96-nip-5a%e9%9d%99%e7%9a%84%e3%82%a6%e3%82%a7%e3%83%96%e3%82%b5%e3%82%a4%e3%83%88">下のディープダイブ&lt;/a>を参照してください。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-30/">NIP-30&lt;/a>（カスタム絵文字）: shortcodeでハイフンを許可&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2297">PR #2297&lt;/a>）：shortcode記述がハイフンを含められるよう更新されました。ハイフン入りshortcodeは実際にはNIP導入当初から使われており、今回の仕様変更は現在の利用実態を文書化するものです。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-C1: Agent TUI Messages&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2295">PR #2295&lt;/a>）：暗号化DM経由でagentが対話的UI要素を送るための構造化メッセージ形式を提案しています。typed &lt;code>text&lt;/code>、&lt;code>buttons&lt;/code>、&lt;code>card&lt;/code>、&lt;code>table&lt;/code> payloadsを含みます。ドラフトは既存の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>および&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>ダイレクトメッセージcontent内にJSONとして収め、新しいイベントkindは定義せず、button responsesには単純なcallback文字列形式を使います。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-95: Hybrid Peer-to-Peer Relay Protocol&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2293">PR #2293&lt;/a>）：relayが権威を保ちつつ、最近のイベントをWebRTC経由でP2P配布する調整役にもなるハイブリッドrelayモデルを提案します。ドラフトでは&lt;code>PEER_REGISTER&lt;/code>、&lt;code>PEER_REQUEST&lt;/code>、&lt;code>PEER_OFFER&lt;/code>などのrelay messageを導入し、安定したクライアントがSuper Peersとして振る舞い、relayがseed node兼fallbackとなります。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-B9: Zap Poll Events&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2284">PR #2284&lt;/a>）：&lt;a href="https://github.com/nostr-protocol/nips/blob/master/88.md">NIP-88&lt;/a>（Polls）が無料ポールをカバーした後、古いNIP-69 zap-poll案を再始動する提案です。ドラフトはkind &lt;code>6969&lt;/code>のpoll定義とkind &lt;code>9734&lt;/code>のzapsを投票として使い、経済的Sybil耐性を持つ有料ポーリングシステムにします。無料の1鍵1票ポールを補完します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-AD: Super Zap&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2289">PR #2289&lt;/a>）：relayのpubkeyやクライアントのpubkeyへ送られたzapsを、特化したプロモーションノートとして表示する慣例を提案しています。relayオペレーターやクライアントは&lt;code>lud16&lt;/code>付きプロフィールを公開し、そのreceiptを取得し、zap description内の埋め込みcontentを抽出し、必要に応じて最小sats閾値でspamを抑制します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Agent Reputation Attestations&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2285">PR #2285&lt;/a>）：Nostrエージェントに対する構造化reputation attestations向けのparameterized replaceable eventとしてkind &lt;code>30085&lt;/code>を提案しています。ドラフトは単一のグローバルスコアを避け、reputationを観測者依存とし、古いattestationが薄れていくtemporal decayを追加し、証拠要件付きnegative ratingsをサポートし、より良いSybil耐性に向けた単純weighted scoringとgraph-diversity scoringの両方を概説します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: Paid API Service Announcements&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2291">PR #2291&lt;/a>）：有料HTTP APIsを広告するためのkind &lt;code>31402&lt;/code>アドレス可能イベントを提案し、発見はNostr、支払いはHTTP 402処理を使います。ドラフトはtags-first設計なので、relayはJSON contentを解析せずに支払い方法、価格、能力でfilterできます。また任意でrequest/response schemaも許可し、クライアントやagentが呼び出しを自動生成できるようにします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-XX: SplitSigを使うLNURL-authからの鍵導出&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2294">PR #2294&lt;/a>）：LNURL-authのECDSA署名とクライアント側ランダムnonceを組み合わせてNostrキーペアを導出する提案です。導出式は&lt;code>nsec = SHA256(ecdsa_signature || nonce)&lt;/code>です。サーバーはECDSA署名（LNURL-auth handshakeに内在）を見ますがnonceは見ず、ブラウザはnonceを生成しますが署名は制御しません。どちらの断片だけでもnsecは導出できません。狙いは、同じLightning walletがデバイス間で同じNostr鍵を生み、walletがrecovery anchorとなり、どのサーバーも秘密鍵を再構築できないことです。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>: rejected fieldの文書化&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2290">PR #2290&lt;/a>）：intentベース署名者レスポンスの&lt;code>rejected&lt;/code>フィールドを文書化し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amethyst%e3%81%8c%e3%83%94%e3%83%b3%e7%95%99%e3%82%81%e3%83%8e%e3%83%bc%e3%83%88relay%e7%ae%a1%e7%90%86request-to-vanish%e3%82%92%e5%87%ba%e8%8d%b7">Amethyst v1.07.xの修正&lt;/a>が回避しなければならなかった挙動を正式化します。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipディープダイブ-nip-5a静的ウェブサイト">NIPディープダイブ: NIP-5A（静的ウェブサイト）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">NIP-5A&lt;/a>は、署名済みイベントを配信されるWebページへ変えるために、2つのイベントkindと既存blob storageインフラを使って、Nostrキーペア配下で静的ウェブサイトをホストする方法を定義します。&lt;a href="https://github.com/nostr-protocol/nips/blob/master/5A.md">仕様&lt;/a>は3月25日に&lt;a href="https://github.com/nostr-protocol/nips/pull/1538">PR #1538&lt;/a>経由でマージされました。&lt;/p>
&lt;p>このモデルでは、pubkeyごとに1つのroot site用にkind &lt;code>15128&lt;/code>、&lt;code>d&lt;/code>タグで識別されるnamed sites用にkind &lt;code>35128&lt;/code>を使います。各manifestは絶対URL pathをSHA256 hashへマッピングします。以下はroot site manifestの例です。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5324d695ed7abf7cdd2a48deb881c93b7f4e43de702989bbfb55a1b97b35a3de&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">15128&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/index.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;186ea5fd14e88fd1ac49351759e7ab906fa94892002b60bf7f5a428f28ca1c99&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/about.html&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;path&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;/favicon.ico&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;server&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://blossom.primal.net&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;My Nostr Site&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;description&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;A static website hosted on Nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;source&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://github.com/lez/nsite&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f4e4a9e785f70e9fcaa855d769438fea10781e84cd889e3fcb823774f83d094cf2c05d5a3ac4aebc1227a4ebc3d56867286c15a6df92d55045658bb428fd5fb5&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>配信フローは3段階です。ホストサーバーがHTTP requestを受け取り、subdomainから著者のpubkeyを抽出します（root sitesならnpub、named sitesならbase36エンコードpubkey）。次に、著者のrelay listを&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>経由で取得し、site manifestを問い合わせます。manifestが見つかると、サーバーは要求されたpathをcontent hashへ解決し、&lt;code>server&lt;/code> tagsに列挙されたBlossomサーバーから対応blobをダウンロードして返します。&lt;/p>
&lt;p>DNS subdomain formatは厳密に指定されています。root sitesは標準npubをsubdomainに使います。named sitesは、生のpubkeyの50文字base36 encodingに続けて&lt;code>d&lt;/code>タグ値を1つのDNS labelに収めます。DNS labelは63文字制限があり、base36 encodingは常に50文字を使うため、&lt;code>d&lt;/code>タグは13文字に制限されます。仕様はさらに、&lt;code>d&lt;/code>タグが&lt;code>^[a-z0-9-]{1,13}$&lt;/code>に一致し、ハイフンで終わらないことを要求しており、DNS解決の曖昧さを防ぎます。&lt;/p>
&lt;p>content hashを使うことで、同じサイトを異なるhost serversから配信でき、file integrityもサーバーを信用せずに検証できます。host serverはファイルを自前で保存する必要がありません。manifest内hashを使って必要時にBlossomから取得するだけです。つまり、作者が何を配信するかを制御し、Blossom serverが生ファイルを保持し、host serverは両者を接続するだけです。この3要素はそれぞれ独立に交換可能です。&lt;/p>
&lt;p>既存実装には、manifestを解決してファイルを配信するhost server&lt;a href="https://github.com/lez/nsite">nsite&lt;/a>と、manifestの構築と公開を行うUI&lt;a href="https://github.com/hzrd149/nsite-manager">nsite-manager&lt;/a>があります。仕様にはサイトのsource code repositoryへのリンク用&lt;code>source&lt;/code>タグも追加され、別途&lt;a href="https://github.com/nostr-protocol/nips/pull/2286">PR #2286&lt;/a>でマージされたREADME更新では、kind &lt;code>15128&lt;/code>と&lt;code>35128&lt;/code>の両方がNIP kind indexへ登録されました。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-62request-to-vanish">NIPディープダイブ: NIP-62（Request to Vanish）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">NIP-62&lt;/a>は、要求したpubkeyからのすべてのイベントをrelayが削除するよう求めるkind &lt;code>62&lt;/code>イベントを定義します。&lt;a href="https://github.com/nostr-protocol/nips/blob/master/62.md">仕様&lt;/a>の動機は法的なものです。忘れられる権利のある法域では、標準化され署名された削除要求があれば、relayオペレーターは行動すべき明確なシグナルを得られます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a7b8c9d0e1f23456789012345678901234567890abcdef1234567890abcdef12&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1743465600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">62&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;relay&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Requesting deletion of all events from this relay.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この仕様は、targeted vanish requestとglobal vanish requestを分けています。targeted requestは、どのrelayが対応すべきかを示す具体的な&lt;code>relay&lt;/code>タグを含みます。global requestは、relayタグ値として文字列&lt;code>ALL_RELAYS&lt;/code>を使い、そのイベントを見るすべてのrelayに対して、そのpubkey由来のすべてのイベント削除を求めます。準拠するrelayは、削除済みイベントが再びrelayへ再放送されないことも保証しなければならず、削除はstickyである必要があります。&lt;/p>
&lt;p>NIP-62は、範囲と意図の両面で&lt;a href="https://nostrcompass.org/ja/topics/nip-09/">NIP-09&lt;/a>（イベント削除）を超えます。NIP-09は個別イベントを削除でき、relayは準拠してもしなくてもよい仕様です。NIP-62はすべての削除を要求し、仕様はURLがタグ付けされたrelayに対してMUST準拠を求めています。さらに、要求pubkeyをp-tagした&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）イベントも削除するようrelayに求めているため、受信DMもユーザー自身のイベントと一緒に消されます。NIP-62 vanish requestに対してNIP-09削除イベントを公開しても効果はありません。いったんvanishした後で、vanish request自体を削除してun-vanishすることはできません。&lt;/p>
&lt;p>今週、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-04-01-newsletter/#amethyst%e3%81%8c%e3%83%94%e3%83%b3%e7%95%99%e3%82%81%e3%83%8e%e3%83%bc%e3%83%88relay%e7%ae%a1%e7%90%86request-to-vanish%e3%82%92%e5%87%ba%e8%8d%b7">Amethyst v1.07.0&lt;/a>はクライアント側のNIP-62サポートを出荷し、ユーザーがアプリからvanish requestを開始できるようにしました。relay側では、&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>が、memory、LMDB、SQLite、database test backendsそれぞれにNIP-62を追加する4つのオープンPRを抱えています（&lt;a href="https://github.com/rust-nostr/nostr/pull/1315">PR #1315&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1316">PR #1316&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1317">PR #1317&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1318">PR #1318&lt;/a>）。クライアントサポートとrelayサポートが同じ週に進んでいるわけです。&lt;/p>
&lt;p>この設計は実務的な緊張も生みます。Nostrの価値提案には検閲耐性が含まれ、relayは公開を妨げるべきではありません。一方でNIP-62は、特定pubkeyからの再公開をrelayがMUST防ぐケースを導入します。両者が両立するのは、この要求が自己指向だからです。あなたが求めているのは他人のイベント削除ではなく、自分自身のイベント削除です。検閲耐性は、明示的にオプトアウトした本人以外についてはそのまま保たれます。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）DMでご連絡ください&lt;/a>。Nostr上でもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #15</title><link>https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が3.0系ウォレットリリースに続き、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#primal%e3%81%8cfollow-packszap%e6%8b%a1%e5%bc%b5%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%aa%e3%83%b3%e3%82%af%e3%82%92%e8%bf%bd%e5%8a%a0">Follow Packs、zap拡張、&lt;code>primalconnect://&lt;/code>ディープリンク&lt;/a>を追加しました。&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>は1,085個のrelayにまたがる4,100万イベントを走査し、16,599個の有効な秘密鍵を見つけた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#bigbrotr%e3%81%8crelay%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e5%85%a8%e4%bd%93%e3%81%ae%e5%85%ac%e9%96%8b%e7%a7%98%e5%af%86%e9%8d%b5%e3%82%92%e5%8f%af%e8%a6%96%e5%8c%96">nsec漏えい分析&lt;/a>を公開しました。同じ週に&lt;a href="https://npub.world">npub.world&lt;/a>もプロフィールページへ警告を統合しています。Martti MalmiはNostr relayでシグナリングしWireGuardトンネルを張るTailscale代替の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostr-vpn%e3%81%8ctailscale%e4%bb%a3%e6%9b%bf%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">nostr-vpn&lt;/a>を立ち上げ、7日間で11リリースを出しました。&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>チームは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9doom%e3%81%8cnostr%e4%b8%8a%e3%81%a7peer-to-peer%e5%8b%95%e4%bd%9c">Nostr上で動くP2P DOOM&lt;/a>をオープンソース化し、&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#fips-v020%e3%81%8ctor%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e5%86%8d%e7%8f%be%e5%8f%af%e8%83%bd%e3%83%93%e3%83%ab%e3%83%89sidecar%e4%be%8b%e3%82%92%e5%87%ba%e8%8d%b7">v0.2.0&lt;/a>を出荷、&lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>は1週間で&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostrability-schemata%e3%81%8c%e5%a4%9a%e8%a8%80%e8%aa%9e%e5%8c%96">6言語対応&lt;/a>へ拡大しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="primalがfollow-packszap拡張ディープリンクを追加">PrimalがFollow Packs、zap拡張、ディープリンクを追加&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/">先週の3.0.7記事&lt;/a>に続き、&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は今週、オンボーディング、コンポーザーUX、ウォレット文脈に関するリリース後の作業を進めました。再設計されたオンボーディングはFollow Packs（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>）を導入し、ノートコンポーザーにはネイティブGIFボタンが追加され、zap拡張サービス（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>）がウォレットトランザクションにzap文脈を注釈し、&lt;code>primalconnect://&lt;/code>ディープリンクプロトコル（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>）がアプリ間ナビゲーションを可能にします。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>も同じ作業を並行してTestFlight経由で出荷しており、ウォレット切り替え（&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>）、ポール実装、オンボーディングのリファクタリングが同じ期間に入っています。&lt;/p>
&lt;h3 id="bigbrotrがrelayネットワーク全体の公開秘密鍵を可視化">BigBrotrがrelayネットワーク全体の公開秘密鍵を可視化&lt;/h3>
&lt;p>Nostr relay分析プラットフォームの&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>が、relayネットワーク上で露出した秘密鍵に関する&lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">詳細な分析&lt;/a>を公開しました。この調査は1,085個のrelayから4,100万イベントを走査し、イベントcontentに埋め込まれた有効なnsec文字列を探索した結果、16,599個の有効な秘密鍵を見つけました。この数字は一見すると深刻ですが、一致の92%を占める「Mr.nsec」というbotを除外すると見え方が変わります。botトラフィックを除いた後に残ったのは、合計21,000人超のフォロワーを持つ実在アカウント38件だけで、そのどれにも自分の鍵が公開されている自覚は見られませんでした。&lt;/p>
&lt;p>チームはnsec-leak-checkerを&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a>（Data Vending Machine）サービスとして構築し、秘密鍵そのものをチェッカーに明かさずに、走査済みデータセットに自分の鍵が含まれているかどうかを確認できるようにしました。&lt;a href="https://npub.world">npub.world&lt;/a>も同週にこの漏えいデータを統合し、公開鍵が検出されたプロフィールページに警告バナーを表示しています。この組み合わせにより、ネットワークはDVMやエージェント向けのプログラマブルなインターフェースと、一般ユーザー向けの人間可読な警告の両方を得ました。この基盤データセットは、置換可能イベントとアドレス可能イベントのマテリアライズドビュー、ならびに同期アイドルタイムアウト修正を追加した&lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>にも流れています。&lt;/p>
&lt;h3 id="nostr-vpnがtailscale代替としてローンチ">nostr-vpnがTailscale代替としてローンチ&lt;/h3>
&lt;p>Irisの作者であるMartti Malmi（mmalmi）が、Nostr relayをシグナリングに、boringtun経由のWireGuardを暗号化トンネルに使うP2P VPNの&lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>を構築して出荷しました。動機は直接的で、「Tailscaleがサードパーティアカウントを要求するのにうんざりしたので、Nostr VPNを作った」というものです。このツールはNostrキーペアをアイデンティティとして用い、中央調整サーバーなしでデバイス間にメッシュネットワークを作ります。&lt;/p>
&lt;p>プロジェクトは&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>まで、7日間で11リリースを出しました。このスプリントではWindows対応、ローカルネットワーク発見のためのLANペアリング、モバイル向けAndroid sidecarが追加されました。アーキテクチャは単純です。2台のデバイスがNostr relay上で接続メタデータを交換し、その後に直接WireGuardトンネルを確立します。発見とNAT越えのシグナリングはNostrが担い、実際の通信はWireGuardが担います。アイデンティティはNostrキーペアです。&lt;/p>
&lt;p>MalmiはSignal風の安全なメッセージングチャネルライブラリである&lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>の開発も継続しており、同じ週に&lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a>まで6リリースを出しました。&lt;/p>
&lt;h3 id="オープンソースdoomがnostr上でpeer-to-peer動作">オープンソースDOOMがNostr上でpeer-to-peer動作&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>チームは、Nostrをピア発見に、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>をエンドツーエンド暗号化に、n0のQUICネットワーキングライブラリ&lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>をgossipトランスポートに使うP2PマルチプレイヤーDOOM実装をオープンソース化しました。ゲームは4.2 MBのWebXDCファイルとして出荷され、チャットメッセージ内で送信でき、試合をホストしたり調整したりするサーバーを必要としません。&lt;/p>
&lt;p>技術的アプローチは、1993年の元のlockstep netcodeをリアルタイムのハイブリッド同期モデルに置き換えます。プレイヤーはNostr relayクエリを通じて互いを発見し、Marmotで暗号化されたチャネルでセッションを交渉し、その後低遅延のゲーム通信のためにIrohのQUIC gossip層へ移行します。このスタックでは、発見をNostr、暗号化をMarmot、トランスポートをIrohが担当します。&lt;/p>
&lt;p>Vectorは今週セキュリティ強化も出荷しました。リリースには、メモリ強化されたキーボールトとanti-debug保護、機密鍵素材のzeroize、完全なDMおよびグループメッセージフィルタリングを伴うユーザーブロック、Mini Apps向けのWebXDCリアルタイムチャネル修正が含まれます。&lt;/p>
&lt;h3 id="fips-v020がtorトランスポート再現可能ビルドsidecar例を出荷">FIPS v0.2.0がTorトランスポート、再現可能ビルド、sidecar例を出荷&lt;/h3>
&lt;p>Nostr隣接のメッシュネットワーキングプロジェクトである&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>（Free Internetworking Peering System）が&lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>を出荷しました。このリリースは匿名化されたメッシュリンク用のTorトランスポート、再現可能ビルド、Nostr relay経由で接続するsidecar例、OpenWrtパッケージワークフローにおけるNostrリリース公開を追加します。また、rekey後にdrain-windowフレームが原因で発生していたjitterスパイクも修正しました。ワイヤーフォーマットはv0.1.0から変更されているため、既存のv0.1.0ノードはアップグレードなしではv0.2.0と相互運用できません。&lt;/p>
&lt;h3 id="nostrability-schemataが多言語化">Nostrability Schemataが多言語化&lt;/h3>
&lt;p>Nostrイベントkindを検証するJSON Schema定義を維持する&lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>プロジェクトが、1週間でJavaScript専用から6言語対応へ拡大しました。Rust、Go、Dart、Swift、Python向けの新しいパッケージが出荷され、それぞれがデータパッケージとvalidatorを提供します。&lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a>では17個の新しいイベントkind schemaも追加されました。&lt;/p>
&lt;p>&lt;a href="https://nostrability.github.io/nostrability/">Nostrability interop tracker&lt;/a>も並行して刷新されました。新しいWhat&amp;rsquo;s Newタブは更新をAtomフィードとNostrイベントの両方で公開し、アプリカテゴリフィルタリングにより特定のクライアント種別に絞り込めるようになり、trackerはGitHubリポジトリのメタデータからプログラミング言語を自動検出するようになりました。Nostrability自体も専用npubを持つようになり、文書化するプロトコルを通じてプロジェクト自身が発見可能になっています。複数言語をまたぐライブラリ作者にとって、多言語schemaパッケージは各プロジェクトが独自のschemaコピーを維持する代わりに、同じイベントkind定義をネイティブimportとして利用できることを意味します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="amethyst-v1060-と-v1061">Amethyst v1.06.0 と v1.06.1&lt;/h3>
&lt;p>vitorpamplonaがメンテナンスするAndroidクライアント&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、3月23日に&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a>を出荷しました。目玉機能は&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）データを使った重み付き投票によるポールサポートで、ポールカードとzap pollカードも再設計されています。新しいレンダリングは、標準ポールとzap重み付きポールの双方に、より整理された視覚レイアウトを与えます。v1.06.1では、ポール描画パスで導入された安定性退行に対処する同時変更クラッシュ修正が入っています。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が3.0系ウォレットリリースに続き、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#primal%e3%81%8cfollow-packszap%e6%8b%a1%e5%bc%b5%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%aa%e3%83%b3%e3%82%af%e3%82%92%e8%bf%bd%e5%8a%a0">Follow Packs、zap拡張、&lt;code>primalconnect://&lt;/code>ディープリンク&lt;/a>を追加しました。&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>は1,085個のrelayにまたがる4,100万イベントを走査し、16,599個の有効な秘密鍵を見つけた&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#bigbrotr%e3%81%8crelay%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e5%85%a8%e4%bd%93%e3%81%ae%e5%85%ac%e9%96%8b%e7%a7%98%e5%af%86%e9%8d%b5%e3%82%92%e5%8f%af%e8%a6%96%e5%8c%96">nsec漏えい分析&lt;/a>を公開しました。同じ週に&lt;a href="https://npub.world">npub.world&lt;/a>もプロフィールページへ警告を統合しています。Martti MalmiはNostr relayでシグナリングしWireGuardトンネルを張るTailscale代替の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostr-vpn%e3%81%8ctailscale%e4%bb%a3%e6%9b%bf%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">nostr-vpn&lt;/a>を立ち上げ、7日間で11リリースを出しました。&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>チームは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9doom%e3%81%8cnostr%e4%b8%8a%e3%81%a7peer-to-peer%e5%8b%95%e4%bd%9c">Nostr上で動くP2P DOOM&lt;/a>をオープンソース化し、&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#fips-v020%e3%81%8ctor%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e5%86%8d%e7%8f%be%e5%8f%af%e8%83%bd%e3%83%93%e3%83%ab%e3%83%89sidecar%e4%be%8b%e3%82%92%e5%87%ba%e8%8d%b7">v0.2.0&lt;/a>を出荷、&lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>は1週間で&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostrability-schemata%e3%81%8c%e5%a4%9a%e8%a8%80%e8%aa%9e%e5%8c%96">6言語対応&lt;/a>へ拡大しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="primalがfollow-packszap拡張ディープリンクを追加">PrimalがFollow Packs、zap拡張、ディープリンクを追加&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/">先週の3.0.7記事&lt;/a>に続き、&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は今週、オンボーディング、コンポーザーUX、ウォレット文脈に関するリリース後の作業を進めました。再設計されたオンボーディングはFollow Packs（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/949">PR #949&lt;/a>）を導入し、ノートコンポーザーにはネイティブGIFボタンが追加され、zap拡張サービス（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/979">PR #979&lt;/a>）がウォレットトランザクションにzap文脈を注釈し、&lt;code>primalconnect://&lt;/code>ディープリンクプロトコル（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/969">PR #969&lt;/a>）がアプリ間ナビゲーションを可能にします。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>も同じ作業を並行してTestFlight経由で出荷しており、ウォレット切り替え（&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/191">PR #191&lt;/a>）、ポール実装、オンボーディングのリファクタリングが同じ期間に入っています。&lt;/p>
&lt;h3 id="bigbrotrがrelayネットワーク全体の公開秘密鍵を可視化">BigBrotrがrelayネットワーク全体の公開秘密鍵を可視化&lt;/h3>
&lt;p>Nostr relay分析プラットフォームの&lt;a href="https://github.com/BigBrotr/bigbrotr">BigBrotr&lt;/a>が、relayネットワーク上で露出した秘密鍵に関する&lt;a href="https://bigbrotr.com/blog/exposed-nsec-analysis/">詳細な分析&lt;/a>を公開しました。この調査は1,085個のrelayから4,100万イベントを走査し、イベントcontentに埋め込まれた有効なnsec文字列を探索した結果、16,599個の有効な秘密鍵を見つけました。この数字は一見すると深刻ですが、一致の92%を占める「Mr.nsec」というbotを除外すると見え方が変わります。botトラフィックを除いた後に残ったのは、合計21,000人超のフォロワーを持つ実在アカウント38件だけで、そのどれにも自分の鍵が公開されている自覚は見られませんでした。&lt;/p>
&lt;p>チームはnsec-leak-checkerを&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a>（Data Vending Machine）サービスとして構築し、秘密鍵そのものをチェッカーに明かさずに、走査済みデータセットに自分の鍵が含まれているかどうかを確認できるようにしました。&lt;a href="https://npub.world">npub.world&lt;/a>も同週にこの漏えいデータを統合し、公開鍵が検出されたプロフィールページに警告バナーを表示しています。この組み合わせにより、ネットワークはDVMやエージェント向けのプログラマブルなインターフェースと、一般ユーザー向けの人間可読な警告の両方を得ました。この基盤データセットは、置換可能イベントとアドレス可能イベントのマテリアライズドビュー、ならびに同期アイドルタイムアウト修正を追加した&lt;a href="https://github.com/BigBrotr/bigbrotr/releases/tag/v6.4.0">BigBrotr v6.4.0&lt;/a>にも流れています。&lt;/p>
&lt;h3 id="nostr-vpnがtailscale代替としてローンチ">nostr-vpnがTailscale代替としてローンチ&lt;/h3>
&lt;p>Irisの作者であるMartti Malmi（mmalmi）が、Nostr relayをシグナリングに、boringtun経由のWireGuardを暗号化トンネルに使うP2P VPNの&lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>を構築して出荷しました。動機は直接的で、「Tailscaleがサードパーティアカウントを要求するのにうんざりしたので、Nostr VPNを作った」というものです。このツールはNostrキーペアをアイデンティティとして用い、中央調整サーバーなしでデバイス間にメッシュネットワークを作ります。&lt;/p>
&lt;p>プロジェクトは&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.2">v0.2.2&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.13">v0.2.13&lt;/a>まで、7日間で11リリースを出しました。このスプリントではWindows対応、ローカルネットワーク発見のためのLANペアリング、モバイル向けAndroid sidecarが追加されました。アーキテクチャは単純です。2台のデバイスがNostr relay上で接続メタデータを交換し、その後に直接WireGuardトンネルを確立します。発見とNAT越えのシグナリングはNostrが担い、実際の通信はWireGuardが担います。アイデンティティはNostrキーペアです。&lt;/p>
&lt;p>MalmiはSignal風の安全なメッセージングチャネルライブラリである&lt;a href="https://github.com/mmalmi/nostr-double-ratchet">nostr-double-ratchet&lt;/a>の開発も継続しており、同じ週に&lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.86">v0.0.86&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-double-ratchet/releases/tag/v0.0.93">v0.0.93&lt;/a>まで6リリースを出しました。&lt;/p>
&lt;h3 id="オープンソースdoomがnostr上でpeer-to-peer動作">オープンソースDOOMがNostr上でpeer-to-peer動作&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>チームは、Nostrをピア発見に、&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>をエンドツーエンド暗号化に、n0のQUICネットワーキングライブラリ&lt;a href="https://github.com/n0-computer/iroh">Iroh&lt;/a>をgossipトランスポートに使うP2PマルチプレイヤーDOOM実装をオープンソース化しました。ゲームは4.2 MBのWebXDCファイルとして出荷され、チャットメッセージ内で送信でき、試合をホストしたり調整したりするサーバーを必要としません。&lt;/p>
&lt;p>技術的アプローチは、1993年の元のlockstep netcodeをリアルタイムのハイブリッド同期モデルに置き換えます。プレイヤーはNostr relayクエリを通じて互いを発見し、Marmotで暗号化されたチャネルでセッションを交渉し、その後低遅延のゲーム通信のためにIrohのQUIC gossip層へ移行します。このスタックでは、発見をNostr、暗号化をMarmot、トランスポートをIrohが担当します。&lt;/p>
&lt;p>Vectorは今週セキュリティ強化も出荷しました。リリースには、メモリ強化されたキーボールトとanti-debug保護、機密鍵素材のzeroize、完全なDMおよびグループメッセージフィルタリングを伴うユーザーブロック、Mini Apps向けのWebXDCリアルタイムチャネル修正が含まれます。&lt;/p>
&lt;h3 id="fips-v020がtorトランスポート再現可能ビルドsidecar例を出荷">FIPS v0.2.0がTorトランスポート、再現可能ビルド、sidecar例を出荷&lt;/h3>
&lt;p>Nostr隣接のメッシュネットワーキングプロジェクトである&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>（Free Internetworking Peering System）が&lt;a href="https://github.com/jmcorgan/fips/releases/tag/v0.2.0-rel">v0.2.0&lt;/a>を出荷しました。このリリースは匿名化されたメッシュリンク用のTorトランスポート、再現可能ビルド、Nostr relay経由で接続するsidecar例、OpenWrtパッケージワークフローにおけるNostrリリース公開を追加します。また、rekey後にdrain-windowフレームが原因で発生していたjitterスパイクも修正しました。ワイヤーフォーマットはv0.1.0から変更されているため、既存のv0.1.0ノードはアップグレードなしではv0.2.0と相互運用できません。&lt;/p>
&lt;h3 id="nostrability-schemataが多言語化">Nostrability Schemataが多言語化&lt;/h3>
&lt;p>Nostrイベントkindを検証するJSON Schema定義を維持する&lt;a href="https://github.com/nostrability/schemata">Nostrability Schemata&lt;/a>プロジェクトが、1週間でJavaScript専用から6言語対応へ拡大しました。Rust、Go、Dart、Swift、Python向けの新しいパッケージが出荷され、それぞれがデータパッケージとvalidatorを提供します。&lt;a href="https://github.com/nostrability/schemata/releases/tag/v0.2.6">v0.2.6&lt;/a>では17個の新しいイベントkind schemaも追加されました。&lt;/p>
&lt;p>&lt;a href="https://nostrability.github.io/nostrability/">Nostrability interop tracker&lt;/a>も並行して刷新されました。新しいWhat&amp;rsquo;s Newタブは更新をAtomフィードとNostrイベントの両方で公開し、アプリカテゴリフィルタリングにより特定のクライアント種別に絞り込めるようになり、trackerはGitHubリポジトリのメタデータからプログラミング言語を自動検出するようになりました。Nostrability自体も専用npubを持つようになり、文書化するプロトコルを通じてプロジェクト自身が発見可能になっています。複数言語をまたぐライブラリ作者にとって、多言語schemaパッケージは各プロジェクトが独自のschemaコピーを維持する代わりに、同じイベントkind定義をネイティブimportとして利用できることを意味します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="amethyst-v1060-と-v1061">Amethyst v1.06.0 と v1.06.1&lt;/h3>
&lt;p>vitorpamplonaがメンテナンスするAndroidクライアント&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が、3月23日に&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.0">v1.06.0&lt;/a>と&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.06.1">v1.06.1&lt;/a>を出荷しました。目玉機能は&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）データを使った重み付き投票によるポールサポートで、ポールカードとzap pollカードも再設計されています。新しいレンダリングは、標準ポールとzap重み付きポールの双方に、より整理された視覚レイアウトを与えます。v1.06.1では、ポール描画パスで導入された安定性退行に対処する同時変更クラッシュ修正が入っています。&lt;/p>
&lt;h3 id="amber-v500-と-v501">Amber v5.0.0 と v5.0.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）署名者アプリで、3月18日に最近の4.1.xプレリリース作業を安定版&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.0">v5.0.0&lt;/a>へ昇格させました。この安定版には、先週取り上げた&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay認証、組み込みTor、コンテンツタイプ固有の権限、暗号化PINストレージの変更が含まれています。その後の&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v5.0.1">v5.0.1&lt;/a>では、オフラインビルドフレーバーからinternet権限が削除され、そのビルドはAndroid権限レイヤーでネットワークリクエストを行えなくなりました。&lt;/p>
&lt;h3 id="mostro-v0170-と-mostro-mobile-v122">Mostro v0.17.0 と Mostro Mobile v1.2.2&lt;/h3>
&lt;p>Nostr上に構築されたP2P Bitcoin取引所&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が、3月18日に&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.17.0">v0.17.0&lt;/a>を出荷しました。サーバー側リリースはv0.16.xサイクルからの紛争処理とレーティング作業を継続し、買い手と売り手のより完全な取引レピュテーションデータをNostrイベントとして追加します。Flutterクライアントの&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>も3月23日に&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.2">v1.2.2&lt;/a>を続けて出荷し、モバイルインターフェースを最新のプロトコル変更と同期させています。&lt;/p>
&lt;h3 id="shosho-v0140">Shosho v0.14.0&lt;/h3>
&lt;p>Nostrライブストリーミングアプリ&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>が、3月19日にShosho Shopの開始を含む&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.14.0">v0.14.0&lt;/a>を出荷しました。リリースではプロフィールにShopタブ、Browse内のShop、ライブとクリップ上のIn-Live Shopボタンが追加されています。リリースノートによれば既存の「Nostr products」は自動的に表示され、購入者は売り手のPlebeian Marketページへ遷移して購入します。Shoshoのリリースノートはリスティングイベントkindを明示していないため、Shosho Shopが&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>がREADMEで明示的にサポートしている&lt;a href="https://nostrcompass.org/ja/topics/nip-99/">NIP-99&lt;/a>分類リスティングを読んでいるかは、まだ確認できません。&lt;/p>
&lt;h3 id="applesauce-v520">Applesauce v5.2.0&lt;/h3>
&lt;p>hzrd149によるNostrアプリ構築向けヘルパーパッケージ集&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>が、3月22日に&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core@5.2.0">v5.2.0&lt;/a>を出荷しました。このリリースは6つのパッケージにまたがります。SQLiteパッケージはイベントタグに対するUNIQUE制約衝突を修正し、重複挿入を防ぎます。signersパッケージは&lt;code>AndroidNativeSigner&lt;/code>を追加し、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ネイティブAndroid signerインターフェースをラップすることで、web-viewベースアプリが独自のbridgeコードなしでハードウェア支援署名を使えるようにします。relayパッケージはrelayとpoolの状態オブジェクトに&lt;code>challenge&lt;/code>フィールドを追加し、&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>認証状態を追跡して、relayが認証を要求していることをアプリが検知してプログラム的に応答できるようにします。coreパッケージはイベント参照の重複排除用に&lt;code>isEventPointerSame&lt;/code>と&lt;code>isAddressPointerSame&lt;/code>を得て、commonパッケージはユーザーのBlossomメディアサーバー解決用に&lt;code>user.blossomServers$&lt;/code>を追加します。ApplesauceはnoStrudel、Satellite、その他複数のWebクライアントを支えているため、これらの修正はWebクライアント層全体に伝播します。&lt;/p>
&lt;h3 id="wispが1週間で16リリース">Wispが1週間で16リリース&lt;/h3>
&lt;p>Android Nostrクライアント&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>が、今週&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.9.3-beta">v0.9.3-beta&lt;/a>から&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.13.1-beta">v0.13.1-beta&lt;/a>まで16リリースを出荷しました。追加された機能には、マルチアカウント対応、通知を減らすzen notificationsモード、ドラフトと予約投稿、安全性コンテンツフィルター、新しいflameアイコンが含まれます。&lt;/p>
&lt;h3 id="manent-v120">Manent v1.2.0&lt;/h3>
&lt;p>プライベートな暗号化ノートおよびファイルストレージアプリ&lt;a href="https://github.com/dtonon/manent">Manent&lt;/a>が、3月20日に&lt;a href="https://github.com/dtonon/manent/releases/tag/v1.2.0">v1.2.0&lt;/a>を出荷しました。このリリースはアプリ内からのカメラ撮影、ストレージコスト削減のためのアップロード前画像リサイズ、保存済み画像確認時のピンチズームを追加します。Manentはユーザーのキーペアを用いてノートとファイルをNostr relay上に暗号化して保存し、電話やデスクトップアプリをrelayデータから完全な状態を再構築できるthin clientにします。&lt;/p>
&lt;h3 id="divine-107">diVine 1.0.7&lt;/h3>
&lt;p>短尺動画クライアント&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>が、3月21日に動画再生watchdogを含む&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.7">1.0.7&lt;/a>を出荷しました。このwatchdogは停止した動画を自動で再開します。&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">v1.0.6&lt;/a>でE2Eテスト基盤と直接MP4読み込みが入った後、このリリースはエラーを出さず中断する動画という残る障害パスを対象にしています。&lt;/p>
&lt;h3 id="alby-extension-v3142">Alby Extension v3.14.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/lightning-browser-extension">Alby Extension&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>（ブラウザ拡張署名者）ブラウザ拡張で、3月18日にLightningアドレスQRコード表示とSchnorr署名サポートを含む&lt;a href="https://github.com/getAlby/lightning-browser-extension/releases/tag/v3.14.2">v3.14.2&lt;/a>を出荷しました。Schnorr対応により、ブラウザ拡張はNostrがネイティブに使うsecp256k1署名方式と整合します。&lt;/p>
&lt;h3 id="noornote-v065-から-v0611">NoorNote v0.6.5 から v0.6.11&lt;/h3>
&lt;p>ノートテイキングアプリ&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>が、&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.5">v0.6.5&lt;/a>から&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.6.11">v0.6.11&lt;/a>まで7リリースを出荷しました。目玉はFollow Packsで、ユーザーがまとめて閲覧・購読できるアカウントのキュレート済み束です。Twitter Listsに似ていますが、オンボーディング向けに設計されています。ユーザーはカスタムタイトル、説明、カバー画像付きでFollow Packsを作成、編集、共有できます。このシリーズでは基盤NostrライブラリもNDK v2からv3へ更新され、relay接続処理とサブスクリプション管理が改善されました。picture notesと再設計されたrelay接続体験もこの流れを締めくくっています。&lt;/p>
&lt;h3 id="nak-v0191-と-v0192">nak v0.19.1 と v0.19.2&lt;/h3>
&lt;p>fiatjafのコマンドラインNostrツールキット&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>が、3月17日と20日に&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>と&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.2">v0.19.2&lt;/a>を出荷しました。このツールはrelayとの対話、&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>（Bech32エンコードエンティティ）識別子のエンコードとデコード、イベント署名、relayデータの照会を行います。2つのポイントリリースは、先週の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/">v0.19.0&lt;/a>で入ったグループフォーラムUI追加に続くものです。&lt;/p>
&lt;h3 id="calendar-by-form-v021">Calendar by Form* v0.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>（カレンダーイベント）上に構築された分散カレンダーアプリで、3月20日に&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.1">v0.2.1&lt;/a>を出荷しました。このリリースはイベントリマインダーに影響していた通知テンプレート問題を修正します。CalendarはイベントをNostr kind 31922（日付ベース）とkind 31923（時刻ベース）イベントとして保存するため、これらのkindをサポートするNostrクライアントなら任意にカレンダーデータを表示できます。アプリはFormstrチームが開発しており、同チームはFormstr（分散フォーム）とPollerama（ポール）も維持しています。&lt;/p>
&lt;h3 id="nym-v350-から-v353">NYM v3.50 から v3.53&lt;/h3>
&lt;p>&lt;a href="https://github.com/Spl0itable/NYM">NYM&lt;/a>はBitchatとbridgeされた軽量エフェメラルチャットクライアントで、v3.50からv3.53まで28リリースを出荷しました。最も目立つ機能は、チャンネル内の&lt;code>@nymbot&lt;/code>メンションに応答し、relay状態や管理機能を提供する組み込みチャットbotのNymbotです。「hardcore mode」は送信する各メッセージごとに新しいキーペアを生成し、会話スレッドをアイデンティティレベルでリンク不能にします。トレードオフは明快で、永続アイデンティティは失われる一方、メッセージごとの匿名性を得ます。relay proxy層にも作業が入り、接続性向上のためのsharded relay proxy workers、geohash channelサポート、不正確なシステムクロックを持つノード向けのclock skew耐性が追加されました。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="dittoがblueskyブリッジとwikipedia統合を追加">DittoがBlueskyブリッジとWikipedia統合を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/soapbox-pub/ditto">Ditto&lt;/a>はSoapboxチームのカスタマイズ可能なNostrソーシャルクライアントで、今週3つの機能トラックにわたり300超のコミットを記録しました。1つ目はBlueskyブリッジで、19コミットを使ってBluesky投稿を完全なフィード風スレッドとしてインライン表示し、公式Discover（whats-hot）フィードをバックエンドに持つBluesky discoveryページへのサイドバーナビゲーションを追加し、コメント、共有、リアクション、リンクコピーのアクションボタンを接続しています。ユーザーがDitto内からBluesky投稿に返信すると、compose modalにはこのやり取りがクロスプロトコルであることを示す免責calloutが表示されます。&lt;a href="https://nostrcompass.org/ja/topics/nip-73/">NIP-73&lt;/a>（外部コンテンツID）のkind 17リアクションがこのクロスプロトコルモデルを支えています。NostrユーザーがBluesky投稿に反応すると、そのリアクションは外部コンテンツ識別子を参照する標準Nostrイベントとして保存されます。これはBluesky投稿からYouTube動画、Webページまで、あらゆる外部コンテンツにリアクションをブリッジできる同じNIP-73パターンです。&lt;/p>
&lt;p>2つ目のトラックはWikipedia統合で、9コミットが入りました。Dittoは汎用リンクプレビューの代わりに詳細ページでリッチなWikipedia記事contentをレンダリングし、記事サムネイル付き検索autocompleteを追加し、Wikipedia APIから特集contentを引く&lt;code>/wikipedia&lt;/code>ページも提供します。WikipediaとArchive.orgの結果は一般検索autocompleteドロップダウンにも表示されます。3つ目のトラックはCapacitor経由のiOSプラットフォーム対応で、remote build scriptとplatform設定が、アプリ内の全ページでbackdrop-blurヘッダーを新しいarc-based navigationデザインに置き換えるUI刷新（55コミット）と並行して入りました。314コミットにより、DittoはNostr専用クライアントから、BlueskyとWikipediaをNostrフィードと並ぶ第一級のcontent sourceとして扱うマルチプロトコル集約クライアントへ近づいています。&lt;/p>
&lt;h3 id="pikaがnip-34-forge-ciパイプラインを構築">PikaがNIP-34 forge CIパイプラインを構築&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>はMarmotベースの暗号化メッセージングアプリで、今週33件のPRをマージしました。焦点はプレマージCI付きのセルフホスト型&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> forgeです。このforgeはNIP-34イベントとしてパッチを受け取り、マージ前にCIチェックを実行し、構造化された状態をNostrイベント経由で返すgitホスティング層です。&lt;a href="https://github.com/sledtools/pika/pull/701">PR #701&lt;/a>はlaneベースのプレマージおよびnightly CIを追加し、Rust、TypeScript、Apple buildsといった各コードパスを独立したlaneで実行し、個別のpass/fail状態を持たせます。&lt;a href="https://github.com/sledtools/pika/pull/715">PR #715&lt;/a>は分離のためにmanaged CI agentsをIncus OpenClaw containersへ切り替え、&lt;a href="https://github.com/sledtools/pika/pull/733">PR #733&lt;/a>はコマンドラインからhosted forgeと対話するための&lt;code>ph forge&lt;/code> CLIを追加します。関連PRでは、マージ時のrepo書き込み権限（&lt;a href="https://github.com/sledtools/pika/pull/736">PR #736&lt;/a>）、live status badgesを伴う構造化CIメタデータ（&lt;a href="https://github.com/sledtools/pika/pull/722">PR #722&lt;/a>）、Apple nightly buildsの分割（&lt;a href="https://github.com/sledtools/pika/pull/738">PR #738&lt;/a>）、forge認証とbranch lookup修正（&lt;a href="https://github.com/sledtools/pika/pull/734">PR #734&lt;/a>）が処理されています。これはNIP-34 gitイベント上に構築された最初期の実用CI/CDシステムの1つであり、Nostrベースのソースコードホスティングを基本的なパッチ交換から、開発者がGitHubやGitLabに期待するマージとテストのワークフローへ押し進めています。&lt;/p>
&lt;h3 id="nostriaがcommunitiescode-snippetsvoice-event処理を追加">Nostriaがcommunities、code snippets、voice event処理を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>はsondrebがメンテナンスするクロスプラットフォームNostrクライアントで、#14で触れたWeb of Trustフィルタリングの先へ今週アプリサーフェスを広げました。主な追加は完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-72/">NIP-72&lt;/a>（モデレートコミュニティ）実装で、コミュニティ作成、モデレーターおよびrelay設定、画像プレビュー付き投稿承認追跡、PostsタブとModeratorsタブを持つ専用コミュニティページを提供します。&lt;/p>
&lt;p>同じ作業期間では、構文ハイライト付きエディターによるcode snippetの表示と編集、音声会話向けvoice event replyサポート、ダイレクトメッセージ用chat relay設定、Web Share APIによるchannel共有、メディアプレイヤー用toolbar docking system、最新Brainstorm Web of Trustサービスへのアプリ内サインアップ、NWCとBOLT-11インボイスを使うDMでの送金と受け取り、NostrネイティブGIF処理、既存のLightning splitをポッドキャストfeedから取り込めるより強いRSS import pathも追加されました。&lt;/p>
&lt;h3 id="nostr-vpnの高速反復">nostr-vpnの高速反復&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostr-vpn%e3%81%8ctailscale%e4%bb%a3%e6%9b%bf%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">初回ローンチ記事&lt;/a>の先でも、&lt;a href="https://github.com/mmalmi/nostr-vpn">nostr-vpn&lt;/a>のcommit logは実運用時に直面した具体的な問題を示しています。&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.3">v0.2.3&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.5">v0.2.5&lt;/a>では初期installer scriptとクロスプラットフォームCLIが追加されました。&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.6">v0.2.6&lt;/a>と&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.7">v0.2.7&lt;/a>でWindows対応が入り、config書き込みのUAC path quotingとdaemon所有config更新が必要になりました。&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.8">v0.2.8&lt;/a>から&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.10">v0.2.10&lt;/a>ではWindows GUI service actions、CLI subprocess handling、machine-scoped service configurationが修正されました。&lt;a href="https://github.com/mmalmi/nostr-vpn/releases/tag/v0.2.12">v0.2.12&lt;/a>ではLAN discoveryがtimed LAN pairingに置き換えられています。これは同じローカルネットワーク上の2デバイスがrelayシグナリングなしでペアリングする、ユーザー主導のフローです。このパターンは初期フィールドテストの典型で、各リリースが特定のデプロイ障害を狙い、ユーザーベースが小さいため日次で反復でき、開発者自身がリリース間でツールを使っていることがわかります。&lt;/p>
&lt;h3 id="cometの自動ビルド">Cometの自動ビルド&lt;/h3>
&lt;p>&lt;a href="https://github.com/nodetec/comet">Comet&lt;/a>（旧Captain&amp;rsquo;s Log）は、NodetecによるNostrネイティブ長文執筆ツールで、今週40超の自動alpha buildを生成しました。CometはNIP-23長文記事の執筆と公開のためのデスクトップアプリで、ローカルdraft保存、markdown編集、ユーザーのrelay setへのワンクリック公開を備えます。自動ビルドパイプラインはmain branchへの各commitごとにtagged releaseを生成するため、生のリリース数は機能開発速度の指標としては誤解を招きます。40ビルドが示しているのは、アプリが日次のアクティブ開発下にあり、各commitが数分以内にテスト・パッケージ化され・ダウンロード可能になっているということです。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>3月17日から24日の期間における&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>の最近の変更：&lt;/p>
&lt;p>3月18日から3月24日の間にNIPのマージはありませんでした。&lt;/p>
&lt;p>&lt;strong>期間中に更新されたオープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>NIP-AA: Autonomous Agents on Nostr&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2259">PR #2259&lt;/a>）：Nostrネットワーク上で動作する自律エージェント向けの慣例を提案しています。このPRは、エージェントが自身を識別し、サービスを発見し、Nostrイベントを通じて他のエージェントや人間と協調する方法を定義します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>（検索）: ソート拡張&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2283">PR #2283&lt;/a>）：NIP-50検索クエリにtop、hot、zaps、newを含むsortパラメータを追加します。これによりクライアントは、クライアント側でソートする代わりに、全文検索をサポートするrelayへランク済み結果を要求できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-A5: WASM Programs&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2281">PR #2281&lt;/a>）：WebAssemblyプログラムをNostr上で公開・発見するための慣例を提案しています。WASMバイナリはNostrイベントとして配布でき、relayはポータブル実行コードの発見層になります。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-CF: Combine Forces interoperable napps&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2277">PR #2277&lt;/a>）：異なるクライアントやサービス間で機能を合成できる相互運用可能なNostrアプリケーション「napps」の慣例を定義します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Snapshots NIP&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2279">PR #2279&lt;/a>）：relay同期とバックアップのためのrelay状態スナップショット機構を提案しています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Checkpoints NIP&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2278">PR #2278&lt;/a>）：既知の良好なrelay状態を示すcheckpointイベントを提案し、snapshots提案を補完します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>（バッジ）: Badge Setsリファクタ&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2276">PR #2276&lt;/a>）：バッジコレクションの構成と参照方法を再編成します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay情報ドキュメント）: 拡張&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2280">PR #2280&lt;/a>）：より豊かな機械可読relayメタデータのために追加フィールドを導入します。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nostrの5つの3月">Nostrの5つの3月&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#nostr-2%E6%9C%88%E3%81%AE5%E5%B9%B4%E9%96%93">先月のニュースレター&lt;/a>では、NIP-01の書き換えからDamus App Storeの波、メッシュネットワーキング、エージェント提案まで、Nostrの2月がどう進んだかを振り返りました。今回の回顧は2021年から2026年まで、それぞれの3月に何が起きたかを追います。&lt;/p>
&lt;h3 id="2021年3月-2つのコミット">2021年3月: 2つのコミット&lt;/h3>
&lt;p>誕生から4か月後、Nostrの3月の成果は3月4日に入った2つのコミットだけでした。fiatjafは&lt;a href="https://github.com/nostr-protocol/nostr/commit/dcd8cc3">nostwitterインスタンスへのリンクを追加し&lt;/a>、初期訪問者を実際に動くデプロイ先へ導きました。また&lt;a href="https://github.com/nostr-protocol/nostr/commit/54dfb46">基本filter定義にkindを追加しました&lt;/a>。この2つ目のコミットは示唆的です。2021年3月時点では、Nostrイベントをkindでfilterすることすらまだできませんでした。プロトコルはその程度に原始的だったのです。ネットワークには2つか3つのrelayしかなく、調整チャネルはTelegramグループだけでした。NIPsリポジトリもまだ存在せず、プロトコル提案はメインnostrリポジトリ内のファイルとして管理されていました。その月のコミッターはfiatjafただ1人です。5年後にVPN、マルチプレイヤーゲーム、メッシュネットワーキングを支えるプロトコルになるものの2021年3月の全成果は、1つのgit diffに収まります。&lt;/p>
&lt;h3 id="2022年3月-damus以前の構築期">2022年3月: Damus以前の構築期&lt;/h3>
&lt;p>メインのプロトコルリポジトリは2022年3月に0コミットでした。開発は完全にツール系リポジトリへ移っていました。fiatjafのVue.js Webクライアントで当時の主要Nostrインターフェースだった&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>には、Dockerデプロイ支援や&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>（DNSベース検証）の表示名修正を含む5コミットが入り、検証バッジから&lt;code>_@&lt;/code>プレフィックスが除去されました。Robert C. Martinの&lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>はClojureデスクトップクライアントで、threading、キーボードナビゲーション、編集ウィンドウを加える13以上のコミットを記録しました。その月にNostr上で最も有名なソフトウェア作者として積極的に開発していたのは暗号開発者ではなく、『Clean Code』を何百万部も売った人物でした。彼がClojureでNostrクライアントを書いていたという事実は、初期コミュニティの性格をよく示しています。そこには自分たちのために作る、意見の強いプログラマたちがいました。&lt;/p>
&lt;p>relayネットワークはおよそ15relayへ拡大し、アクティブユーザーは数百人規模になっていました。Damusはまだ存在せず、作成されるのは2022年4月まで待つ必要がありました。Nostreamもまだ現れていません。その月の作業はインフラ整備であり、すでに日々使われていた小さなコミュニティのために既存ツールをより信頼できるものにすることに集中していました。&lt;/p>
&lt;h3 id="2023年3月-爆発後のインフラ期">2023年3月: 爆発後のインフラ期&lt;/h3>
&lt;p>Damus App Storeの波と30万公開鍵超えから1か月後、2023年3月はその成長を吸収する時期でした。&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>は28件のPRをマージし、これはプロトコル史上2番目に多い月間件数です。&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>（リスト）がマージされ、クライアントは構造化されたフォロー・ミュート・ブックマークコレクションを得ました。&lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>（プロフィール内の外部アイデンティティ）も入り、NIP-78（アプリ固有データ）はアプリがプライベート状態を必要とする際の汎用ストレージkindを提供し、&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>（Lightning Zaps）の書き直し（&lt;a href="https://github.com/nostr-protocol/nips/pull/392">PR #392&lt;/a>）はzapフローを統合して用語を明確にしました。この月で最も議論されたPRは、50超のコメントを集めた別案のmention handling提案（&lt;a href="https://github.com/nostr-protocol/nips/pull/381">PR #381&lt;/a>）でした。&lt;/p>
&lt;p>最も重要な新規プロジェクトは、relay接続、イベント署名、キャッシュ、サブスクリプション管理のためのTypeScriptライブラリ&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>でした。pablof7zは2023年3月16日に&lt;a href="https://github.com/nostr-dev-kit/ndk/commit/09e5e03">初回コミット&lt;/a>を行い、11日後の3月27日には「ほぼ別の初回コミット」としてゼロから書き直し、3月31日にはLNURLとzapサポートを動かしていました。NDKは15日でゼロからzap対応に到達したのです。NDK作成から5日後の3月21日には、Albyチームが&lt;a href="https://github.com/getAlby/nostr-wallet-connect">NWC&lt;/a>を作成しました。これは&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>のリファレンス実装で、LightningウォレットをNostrアプリケーションへ接続します。その後3年間のWebベースNostr開発を支える2つのプロジェクトは、同じ30日間の中で生まれました。OpenSatsのNostr fundはまだ立ち上がっておらず、最初の波はNDK作成から4か月後の&lt;a href="https://opensats.org/blog/nostr-grants-july-2023">2023年7月&lt;/a>まで待つ必要がありました。&lt;/p>
&lt;p>その月のその他の注目作としては、NostrGit、NostrChat、LNbitsによるnostr-signing-deviceプロジェクト、nostrmoがありました。インテリジェントrelay選択に焦点を当てたRustデスクトップクライアント&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>は3つのリリースを出しました。プロトコルは構築モードにあり、2023年3月に作られたツール群は3年後の今も使われています。&lt;/p>
&lt;h3 id="2024年3月-プロトコル成熟期">2024年3月: プロトコル成熟期&lt;/h3>
&lt;p>2024年3月は、プロトコルを長期利用に耐えるものへ硬化させる時期でした。NIPsリポジトリは12件のPRをマージしました。最も重要だったのは、130超のコメントと44日のレビューを経て3月5日にマージされた&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a>（Git Stuff）、&lt;a href="https://github.com/nostr-protocol/nips/pull/997">PR #997&lt;/a>です。この議論スレッドは、分散型GitHubをどう作るかをコミュニティが議論していた時代の記録です。jb55は&lt;code>git send-email&lt;/code>との類似性を指摘し、Giszmoはcross-fork discoveryのためにroot commit hashを使う案を出し、「GitHubがやっていないことを私たちはできる」と述べ、mikedilgerはSSH鍵の代わりに&lt;a href="https://nostrcompass.org/ja/topics/nip-98/">NIP-98&lt;/a>（HTTP認証）のイベント署名認証を提案し、fiatjafはバージョン管理の一般性は不要だと率直に切り捨てました。「各バージョン管理システム向けではなく、git向けでいい。他は誰も使っていない」と。PRを開いた数時間後には、fiatjafはnak、go-nostr、gitstrを既にNostr上のpatch受け取り対応へ切り替えていました。OpenSats granteeだったngitのDanConwayDevも、この議論の最も活発な参加者の1人でした。プロフィールメタデータ向けのbot fieldも同時にマージされ、クライアントが自動アカウントと人間のアカウントを機械可読に区別できるようになりました。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はgitイベント対応、wiki記事、医療データ描画、content編集を1つのリリースでまとめたv0.85.0を出荷しました。&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>はv0.10.0へ到達しました。&lt;a href="https://github.com/Spl0itable/nosflare">Nosflare&lt;/a>はCloudflare Workers上で動くserverless Nostr relayとして、relayロジックがedgeで動けることを示しました。OpenSatsはAmethystクライアントへの継続的貢献に対して、Bruno Garciaへ&lt;a href="https://opensats.org/blog/bruno-garcia-receives-lts-grant">Long-Term Support grant&lt;/a>を出しています。&lt;/p>
&lt;h3 id="2025年3月-インフラ拡張期">2025年3月: インフラ拡張期&lt;/h3>
&lt;p>2025年3月には10本のNIPがマージされました。主役は&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（Relay Discovery and Liveness Monitoring）、&lt;a href="https://github.com/nostr-protocol/nips/pull/230">PR #230&lt;/a>で、25か月に及ぶ道のりを経て3月3日にマージされました。dskvrは2023年2月にrelay monitoringを初めて提案し、クライアント側でできると言われ、何千ものrelayへ同時接続することが個々のクライアントには非現実的である理由を説明し、完全な草案を7回作り直し、8地域（米国北東部、ブラジル、米国西部、米国東部、オーストラリア、インド、韓国、南アフリカ）にmonitoring nodesを構築し、relay toolingが追いつくのを待ちました。マージ時点ですでに実装はnostr.watch、relaypag.es、monitorlizard、Snort、noStrudel、Jumbleに存在していました。NIP-66データは後に&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#%E3%82%A2%E3%82%A6%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E6%A4%9C%E8%A8%BC">Newsletter #12&lt;/a>で取り上げたNostrability outboxベンチマークの燃料になります。NIP-C0（Code Snippets）も&lt;a href="https://github.com/nostr-protocol/nips/pull/1852">PR #1852&lt;/a>でマージされ、kind 1337イベントによるソースコード共有を追加しました。&lt;/p>
&lt;p>この月にはNostr向け最初のMCPサーバー群も登場しました。&lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">nostr-mcp-server&lt;/a>は3月23日に、&lt;a href="https://github.com/getAlby/nwc-mcp-server">nwc-mcp-server&lt;/a>は3月14日に出現しており、これはAnthropicが2024年11月にModel Context Protocolを発表してから4か月後のことです。これら初期ブリッジは、後の2025年末から2026年初頭にかけて現れる完全な&lt;a href="https://nostrcompass.org/ja/topics/contextvm/">ContextVM&lt;/a> SDKやagent commerce作業に先行していました。&lt;/p>
&lt;p>&lt;a href="https://github.com/mikedilger/gossip">Gossip&lt;/a>はv0.14.0を出荷し、relay認識型フィード管理を持つhodlbodのWebクライアント&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>も3つのリリースを出しました。OpenSatsは&lt;a href="https://opensats.org/blog/10th-wave-of-nostr-grants">第10波のNostr grants&lt;/a>を発表し、2023年半ばから続く資金供給パイプラインを維持しました。&lt;/p>
&lt;h3 id="2026年3月-収束">2026年3月: 収束&lt;/h3>
&lt;p>&lt;em>2026年3月の活動は、Nostr Compassの&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">#12&lt;/a>から&lt;a href="">#15&lt;/a>（本号）までの各号をもとにしています。&lt;/em>&lt;/p>
&lt;p>2026年3月は、ばらばらだった流れが実用システムへ収束した月でした。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#marmot-development-kit%E3%81%8C%E5%88%9D%E3%81%AE%E5%85%AC%E9%96%8B%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%92%E5%87%BA%E8%8D%B7">Marmot Development Kit&lt;/a>が暗号化メディア、多言語バインディング、spec・Rust・TypeScript間の協調更新を必要としたChaCha20-Poly1305移行を伴う初の公開リリースを出荷しました。&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">ShopstrとMilk Market&lt;/a>はagent-driven purchasing向けのMCP commerce surfaceを追加しました。&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay認証は&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">Amber&lt;/a>、strfry、OAuth Bunkerに同時に入っており、signer、relay、bunkerソフトウェア間のループを閉じています。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/#notedeck%E3%81%8C%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E7%99%BA%E8%A6%8B%E3%82%92nostr%E4%B8%8A%E3%81%AB%E7%A7%BB%E8%A1%8C">Notedeck&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>（ファイルメタデータ）リリースイベントを用いたNostrネイティブのソフトウェア更新を出荷しました。&lt;/p>
&lt;p>今週は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#bigbrotr%e3%81%8crelay%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e5%85%a8%e4%bd%93%e3%81%ae%e5%85%ac%e9%96%8b%e7%a7%98%e5%af%86%e9%8d%b5%e3%82%92%e5%8f%af%e8%a6%96%e5%8c%96">BigBrotr&lt;/a>が漏えい秘密鍵を探すためにrelayネットワーク全体を走査し、分析とDVM checkerの両方を公開しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#nostr-vpn%e3%81%8ctailscale%e4%bb%a3%e6%9b%bf%e3%81%a8%e3%81%97%e3%81%a6%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81">Nostr VPN&lt;/a>は、Nostrの鍵モデルがソーシャルメディアだけでなくネットワークインフラにも機能することを示しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9doom%e3%81%8cnostr%e4%b8%8a%e3%81%a7peer-to-peer%e5%8b%95%e4%bd%9c">DOOM&lt;/a>は、Nostr discovery、Marmot暗号化、QUIC transportを組み合わせてリアルタイムマルチプレイヤーゲームを動かせることを示しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#amber-v500-%e3%81%a8-v501">Amber&lt;/a>はv5.0.0へ到達し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-25-newsletter/#wisp%e3%81%8c1%e9%80%b1%e9%96%93%e3%81%a716%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9">Wisp&lt;/a>は7日で16リリースを出しました。主要プロジェクト群から1週間で25件以上のtagged releaseが出ています。&lt;/p>
&lt;p>月の最初の24日だけで7つのNIPがマージされました。プロトコルには&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>（Wiki）のDjotマークアップ、&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>（Bech32エンコードエンティティ）の入力制限、&lt;a href="https://nostrcompass.org/ja/topics/nip-91/">NIP-91&lt;/a>（フィルター用AND演算子）のboolean query logic、&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）のWeb of Trust assertionが加わりました。オープン提案は、自律エージェント（NIP-AA）からWASMプログラム（NIP-A5）、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>向け検索ソート拡張まで広がっています。&lt;/p>
&lt;h3 id="今後の展望">今後の展望&lt;/h3>
&lt;p>Nostrの5つの3月を辿ると、明確な弧が見えます。2021年には、まだkindでイベントをfilterできないプロトコルに対して、1人が2つのコミットを入れていました。2023年には、Damus後の爆発を吸収するためにNDKとNWCが5日違いで誕生しました。2024年には、141コメントのPRスレッドがソーシャルプロトコル上でgit協業をどう機能させるかを論じました。2025年には、25か月かけて7回書き直されたrelay monitoring specがついにマージされました。2026年には、Tailscaleがアカウントを要求することに苛立った誰かがNostrキーペアを使うVPNを作り、別の誰かがNostr relayでピアを発見しMarmotでゲームプレイを暗号化するマルチプレイヤーDOOMを出荷しました。BigBrotrが1,085relayにまたがる4,100万イベントを走査したことは、ネットワークの成長を測る具体的な尺度を与えます。2026年3月のプロトコル表面積は2021年3月の自分には見分けがつかないほど広がっていますが、土台のモデル、すなわちsecp256k1鍵で署名されrelay経由で配布されるイベントという構造自体は変わっていません。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）DMでご連絡ください&lt;/a>。Nostr上でもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #14</title><link>https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-03-18-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）メソッドサポートを実装、&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>が&lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>で複数relayサポートを追加、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>が組み込みTorとより細かい署名者権限を備えた&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>を出荷、&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>が&lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>でリスクのあるNWC keysendパスを削除。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>が&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a>で&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>（ファイルメタデータ）イベントを通じてリリースを発見する署名付きアップデーターを出荷、&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>が古い&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>（Relayリストメタデータ）状態を修正、&lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>が修正データでベンチマーク結果を改訂、&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>がDM用の直接relayサブスクリプションをテスト。&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>を出荷、&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>が&lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>を出荷、&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>が&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>でMarmot相互運用性を強化、&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>が&lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>でランタイムを統合、&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）Web of Trustフィルタリングを追加。NIPsリポジトリが&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>（Wiki）Djotマークアップと&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>（Bech32エンコードエンティティ）の5000文字入力上限をマージ。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="wallet-connectサポートが拡大しウォレットクライアントが障害パスを強化">Wallet Connectサポートが拡大し、ウォレットクライアントが障害パスを強化&lt;/h3>
&lt;p>vitorpaplonaがメンテナンスするAndroidクライアントの&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>をマージし、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>実装をほぼ完全なプロトコルカバレッジに近づけました。このパッチは&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>get_info&lt;/code>、ホールドインボイスメソッド、TLVレコード付きkeysendサポート、kind &lt;code>13194&lt;/code>による機能ディスカバリー、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）を使用したkind &lt;code>23197&lt;/code>の通知イベントを追加します。これにより、アプリ固有の拡張に頼ることなく、クライアントのNWCサーフェスが大幅に拡大されました。&lt;/p>
&lt;p>周辺のウォレットスタックも同じ方向に動きました。多くのNWCデプロイメントを支えるセルフカストディアルLightningノードおよびウォレットサービスの&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>が、複数relayサポートとよりシンプルな接続・スワップフローを備えた&lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>を出荷しました。モバイルLightningウォレットの&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>が、そのフローにおけるサイレントな資金流出パスを特定した後、NWC keysendサポートを削除する&lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>をマージし、同時にペンディングイベントとCashuアクティビティの処理も修正しました。Nostr上のウォレット接続は広がっており、実装者はセキュアにしにくいフローを削除しています。&lt;/p>
&lt;h3 id="notedeckがリリース発見をnostr上に移行">Notedeckがリリース発見をNostr上に移行&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のNotedeck記事に続き&lt;/a>、Damusチームのネイティブデスクトップクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>が&lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>をマージした後、&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a>を出荷しました。新しいアップデーターは署名されたkind &lt;code>1063&lt;/code>リリースイベントを購読し、ローカルプラットフォームと照合し、参照されたバイナリをダウンロードして、インストール前にSHA256ハッシュを検証します。リリースメタデータはもはやGitHub APIやプロジェクトウェブサイトから取得する必要はありません。信頼されたリリースpubkeyとrelay接続で十分です。&lt;/p>
&lt;p>同じパッチは、GitHubリリースアーティファクトからこれらのイベントを公開する&lt;code>notedeck-release&lt;/code> CLIも追加しており、リリースパイプラインにNostrネイティブの公開パスと発見パスの両方が備わったことになります。また、DamusとNotedeckのアップデーターモデルをZapstoreのrelay公開署名リリースフローにかなり近づけました。Zapstoreの&lt;code>zsp&lt;/code>ツールは既にソフトウェアアセットをkind &lt;code>1063&lt;/code>または&lt;code>3063&lt;/code>イベントとして処理しているため、このパスは1つのクライアントや1つのパブリッシャーに固定されていません。リリース候補の残りはフォローカラム、プロフィール「View As User」、&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）サポート、リアルタイムノート統計、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay情報ドキュメント）制限処理など、実用的なデスクトップ作業ですが、アップデーターがこの1つのリリースサイクルを超えて存続する可能性が最も高い部分です。&lt;/p>
&lt;h3 id="relay状態がランタイム動作に近づく">Relay状態がランタイム動作に近づく&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>が&lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>をマージし、古い保存済みrelayリストイベントIDを最新のkind &lt;code>10002&lt;/code>イベントの直接データベースクエリに置き換えました。古い値が古くなると、relay追加・削除操作がブートストラップや1年前のリストにフォールバックし、一部のrelay変更が成功したように見えても実際のアクティブ状態は変わらないままになる可能性がありました。&lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a>はLMDBコンパクション中に古い&lt;code>lock.mdb&lt;/code>状態を削除することで2番目の障害パスを修正し、次回起動時にアプリが&lt;code>SIGBUS&lt;/code>でクラッシュしなくなります。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>が&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>をオープンし、会話中にチャット相手の&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>（暗号化ダイレクトメッセージ）書き込みrelayに直接サブスクライブし、キャッシュサーバーをフォールバックとして維持します。&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>が&lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>をオープンし、ランダム化されたrelayスコアリング、nostr.watchの&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>稼働状況フィルタリング、Thompson Samplingを組み合わせて、relay選択を固定ヒューリスティックから学習ポリシーに変更します。クライアントは長い間relay選択をセットアップデータとして扱ってきましたが、より多くのアプリがそれを測定と修復ロジックが必要なライブ状態として扱うようになっています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="primal-android-307">Primal Android 3.0.7&lt;/h3>
&lt;p>Primalの Androidクライアント&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が、新しいポールとウォレットサイクルを含む&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>を出荷しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a>がzapベースのポール投票を追加、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a>が投票読み込みをページネーションし大規模なポールの使いやすさを維持、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a>がすべてのトランザクションのzapレシートを取得します。同リリースでは&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>でサポートされるイベントに&lt;a href="https://nostrcompass.org/ja/topics/nip-89/">NIP-89&lt;/a>（推奨アプリケーションハンドラー）クライアントメタデータをタグ付けし、ダウンストリームクライアントがイベントの出所をよりクリーンに属性付けできるようになります。&lt;/p>
&lt;h3 id="amber-v413">Amber v4.1.3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のAmber記事に続き&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>フロー用のAndroid署名者アプリ&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>が&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>を出荷しました。このリリースは最近の&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>relay認証作業の上に、より多くの運用強化を施しています。&lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a>がOrbotサポートに加えて組み込みTorを追加、&lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a>が粗いNIPベースの暗号化権限をコンテンツタイプ固有のルールに置き換え、&lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a>がオフラインフレーバーからネットワーク権限を削除し、&lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a>がそれを維持するためのCIチェックを追加します。&lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a>もPINストレージを暗号化DataStoreに移行しました。&lt;/p>
&lt;p>このリリースは署名者の境界自体を強化します。実際の鍵やrelay認証の判断をAmberに渡すAndroidフローにとって、難しい部分は署名者に何ができるかだけではなく、どれだけ狭くスコープを制限できるかでもあります。&lt;/p>
&lt;h3 id="route96-v060">Route96 v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のRoute96記事に続き&lt;/a>、Blossomと&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>（HTTPファイルストレージ）をサポートするメディアサーバーの&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>が&lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>をリリースしました。このリリースは設定とホワイトリスト状態をホットリロード付きでデータベースに移動し、コールドまたは古くなったファイル向けの保持ポリシーを追加します。また、より豊富な&lt;code>GET /user/files&lt;/code>エンドポイントに加え、ダウンロードとエグレスのファイル統計追跡も追加し、オペレーターにストレージサーバーの使用状況に関するより多くの可視性を提供します。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）メソッドサポートを実装、&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>が&lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>で複数relayサポートを追加、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>が組み込みTorとより細かい署名者権限を備えた&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>を出荷、&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>が&lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>でリスクのあるNWC keysendパスを削除。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>が&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a>で&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>（ファイルメタデータ）イベントを通じてリリースを発見する署名付きアップデーターを出荷、&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>が古い&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>（Relayリストメタデータ）状態を修正、&lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>が修正データでベンチマーク結果を改訂、&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>がDM用の直接relayサブスクリプションをテスト。&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>を出荷、&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>が&lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>を出荷、&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>が&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>でMarmot相互運用性を強化、&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>が&lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>でランタイムを統合、&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）Web of Trustフィルタリングを追加。NIPsリポジトリが&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>（Wiki）Djotマークアップと&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>（Bech32エンコードエンティティ）の5000文字入力上限をマージ。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="wallet-connectサポートが拡大しウォレットクライアントが障害パスを強化">Wallet Connectサポートが拡大し、ウォレットクライアントが障害パスを強化&lt;/h3>
&lt;p>vitorpaplonaがメンテナンスするAndroidクライアントの&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>が&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1828">PR #1828&lt;/a>をマージし、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>実装をほぼ完全なプロトコルカバレッジに近づけました。このパッチは&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>get_info&lt;/code>、ホールドインボイスメソッド、TLVレコード付きkeysendサポート、kind &lt;code>13194&lt;/code>による機能ディスカバリー、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）を使用したkind &lt;code>23197&lt;/code>の通知イベントを追加します。これにより、アプリ固有の拡張に頼ることなく、クライアントのNWCサーフェスが大幅に拡大されました。&lt;/p>
&lt;p>周辺のウォレットスタックも同じ方向に動きました。多くのNWCデプロイメントを支えるセルフカストディアルLightningノードおよびウォレットサービスの&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>が、複数relayサポートとよりシンプルな接続・スワップフローを備えた&lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.6">v1.21.6&lt;/a>を出荷しました。モバイルLightningウォレットの&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>が、そのフローにおけるサイレントな資金流出パスを特定した後、NWC keysendサポートを削除する&lt;a href="https://github.com/ZeusLN/zeus/pull/3835">PR #3835&lt;/a>をマージし、同時にペンディングイベントとCashuアクティビティの処理も修正しました。Nostr上のウォレット接続は広がっており、実装者はセキュアにしにくいフローを削除しています。&lt;/p>
&lt;h3 id="notedeckがリリース発見をnostr上に移行">Notedeckがリリース発見をNostr上に移行&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のNotedeck記事に続き&lt;/a>、Damusチームのネイティブデスクトップクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>が&lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>をマージした後、&lt;a href="https://github.com/damus-io/notedeck/releases/tag/v0.8.0-rc2">v0.8.0-rc2&lt;/a>を出荷しました。新しいアップデーターは署名されたkind &lt;code>1063&lt;/code>リリースイベントを購読し、ローカルプラットフォームと照合し、参照されたバイナリをダウンロードして、インストール前にSHA256ハッシュを検証します。リリースメタデータはもはやGitHub APIやプロジェクトウェブサイトから取得する必要はありません。信頼されたリリースpubkeyとrelay接続で十分です。&lt;/p>
&lt;p>同じパッチは、GitHubリリースアーティファクトからこれらのイベントを公開する&lt;code>notedeck-release&lt;/code> CLIも追加しており、リリースパイプラインにNostrネイティブの公開パスと発見パスの両方が備わったことになります。また、DamusとNotedeckのアップデーターモデルをZapstoreのrelay公開署名リリースフローにかなり近づけました。Zapstoreの&lt;code>zsp&lt;/code>ツールは既にソフトウェアアセットをkind &lt;code>1063&lt;/code>または&lt;code>3063&lt;/code>イベントとして処理しているため、このパスは1つのクライアントや1つのパブリッシャーに固定されていません。リリース候補の残りはフォローカラム、プロフィール「View As User」、&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）サポート、リアルタイムノート統計、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay情報ドキュメント）制限処理など、実用的なデスクトップ作業ですが、アップデーターがこの1つのリリースサイクルを超えて存続する可能性が最も高い部分です。&lt;/p>
&lt;h3 id="relay状態がランタイム動作に近づく">Relay状態がランタイム動作に近づく&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>が&lt;a href="https://github.com/damus-io/damus/pull/3665">PR #3665&lt;/a>をマージし、古い保存済みrelayリストイベントIDを最新のkind &lt;code>10002&lt;/code>イベントの直接データベースクエリに置き換えました。古い値が古くなると、relay追加・削除操作がブートストラップや1年前のリストにフォールバックし、一部のrelay変更が成功したように見えても実際のアクティブ状態は変わらないままになる可能性がありました。&lt;a href="https://github.com/damus-io/damus/pull/3690">PR #3690&lt;/a>はLMDBコンパクション中に古い&lt;code>lock.mdb&lt;/code>状態を削除することで2番目の障害パスを修正し、次回起動時にアプリが&lt;code>SIGBUS&lt;/code>でクラッシュしなくなります。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-ios-app">Primal iOS&lt;/a>が&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/194">PR #194&lt;/a>をオープンし、会話中にチャット相手の&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>（暗号化ダイレクトメッセージ）書き込みrelayに直接サブスクライブし、キャッシュサーバーをフォールバックとして維持します。&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>が&lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>をオープンし、ランダム化されたrelayスコアリング、nostr.watchの&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>稼働状況フィルタリング、Thompson Samplingを組み合わせて、relay選択を固定ヒューリスティックから学習ポリシーに変更します。クライアントは長い間relay選択をセットアップデータとして扱ってきましたが、より多くのアプリがそれを測定と修復ロジックが必要なライブ状態として扱うようになっています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="primal-android-307">Primal Android 3.0.7&lt;/h3>
&lt;p>Primalの Androidクライアント&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が、新しいポールとウォレットサイクルを含む&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/3.0.7">3.0.7&lt;/a>を出荷しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/945">PR #945&lt;/a>がzapベースのポール投票を追加、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/948">PR #948&lt;/a>が投票読み込みをページネーションし大規模なポールの使いやすさを維持、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/965">PR #965&lt;/a>がすべてのトランザクションのzapレシートを取得します。同リリースでは&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/968">PR #968&lt;/a>でサポートされるイベントに&lt;a href="https://nostrcompass.org/ja/topics/nip-89/">NIP-89&lt;/a>（推奨アプリケーションハンドラー）クライアントメタデータをタグ付けし、ダウンストリームクライアントがイベントの出所をよりクリーンに属性付けできるようになります。&lt;/p>
&lt;h3 id="amber-v413">Amber v4.1.3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のAmber記事に続き&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>フロー用のAndroid署名者アプリ&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>が&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3">v4.1.3&lt;/a>を出荷しました。このリリースは最近の&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>relay認証作業の上に、より多くの運用強化を施しています。&lt;a href="https://github.com/greenart7c3/Amber/pull/327">PR #327&lt;/a>がOrbotサポートに加えて組み込みTorを追加、&lt;a href="https://github.com/greenart7c3/Amber/pull/324">PR #324&lt;/a>が粗いNIPベースの暗号化権限をコンテンツタイプ固有のルールに置き換え、&lt;a href="https://github.com/greenart7c3/Amber/pull/336">PR #336&lt;/a>がオフラインフレーバーからネットワーク権限を削除し、&lt;a href="https://github.com/greenart7c3/Amber/pull/335">PR #335&lt;/a>がそれを維持するためのCIチェックを追加します。&lt;a href="https://github.com/greenart7c3/Amber/pull/322">PR #322&lt;/a>もPINストレージを暗号化DataStoreに移行しました。&lt;/p>
&lt;p>このリリースは署名者の境界自体を強化します。実際の鍵やrelay認証の判断をAmberに渡すAndroidフローにとって、難しい部分は署名者に何ができるかだけではなく、どれだけ狭くスコープを制限できるかでもあります。&lt;/p>
&lt;h3 id="route96-v060">Route96 v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のRoute96記事に続き&lt;/a>、Blossomと&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>（HTTPファイルストレージ）をサポートするメディアサーバーの&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>が&lt;a href="https://github.com/v0l/route96/releases/tag/v0.6.0">v0.6.0&lt;/a>をリリースしました。このリリースは設定とホワイトリスト状態をホットリロード付きでデータベースに移動し、コールドまたは古くなったファイル向けの保持ポリシーを追加します。また、より豊富な&lt;code>GET /user/files&lt;/code>エンドポイントに加え、ダウンロードとエグレスのファイル統計追跡も追加し、オペレーターにストレージサーバーの使用状況に関するより多くの可視性を提供します。&lt;/p>
&lt;h3 id="openchat-v010-alpha11">OpenChat v0.1.0-alpha.11&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のOpenChat記事に続き&lt;/a>、Marmotスタック上に構築されたAvaloniaベースのチャットクライアント&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>が、1週間の高速プロトコル作業の後に&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.11">v0.1.0-alpha.11&lt;/a>を出荷しました。&lt;a href="https://github.com/DavidGershony/openChat/commit/c33895d6b1a198f01b9b01a7be974bdce033fb9c">コミット c33895d&lt;/a>がWelcomeイベントを&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift wrapでラップし古いMIP-00タグ正規化シムを削除、&lt;a href="https://github.com/DavidGershony/openChat/commit/2738ff428154f60f50debb8f2a53662d427b28f1">コミット 2738ff4&lt;/a>がMIP-02準拠監査を完了、&lt;a href="https://github.com/DavidGershony/openChat/commit/8e470cf7945bced010168c8229d73d67db638b9f">コミット 8e470cf&lt;/a>がMIP-03グループメッセージ暗号化について同様に完了しました。&lt;a href="https://github.com/DavidGershony/openChat/commit/129ca37e264efaa2d1a8b04fe95cd72e5e212547">コミット 129ca37&lt;/a>もNIP-44処理を共有marmot-cs実装に統合し、クライアントサイドの暗号ドリフトのリスクを低減しました。&lt;/p>
&lt;h3 id="nak-v0190-および-v0191">nak v0.19.0 および v0.19.1&lt;/h3>
&lt;p>fiatjafのコマンドラインNostrツールキット&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>が&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.0">v0.19.0&lt;/a>と&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.19.1">v0.19.1&lt;/a>を出荷しました。0.19シリーズは&lt;a href="https://github.com/fiatjaf/nak/commit/5f4efdbc69a36fc80ea3f97b2cdee1db6a7c5b47">コミット 5f4efdb&lt;/a>でグループフォーラムUIを追加、&lt;a href="https://github.com/fiatjaf/nak/commit/da0b75337198010687aceb6a07bbae67407faee3">コミット da0b753&lt;/a>でグループメタデータ編集を完全置換フローに切り替え、&lt;a href="https://github.com/fiatjaf/nak/commit/bef67d35d259e0450debf0fd870e1a937a2406bf">コミット bef67d3&lt;/a>で古い&lt;code>no-text&lt;/code>処理を&lt;code>supported_kinds&lt;/code>に置き換えました。グループ実装者にとって、これによりCLIがグループ仕様とクライアントが向かう方向と整合します。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/en/newsletters/2026-03-11-newsletter/">先週のAmethyst記事に続き&lt;/a>、Nostrで最も広いプロトコルサーフェスの1つを持つAndroidクライアント&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、NIP-47パッチ後もウォレットとrelay作業の構築を続けました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1853">PR #1853&lt;/a>がrelay管理画面全体に&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a>（イベントカウント）COUNTクエリを追加し、各relayがホームフィード、通知、DM、インデックスデータについて実際にどれだけのイベントを保持しているかをユーザーが確認できるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1849">PR #1849&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）チャット用の暗号化ファイルアップロードを追加し、ストレージホストが暗号化バージョンを拒否した場合の非暗号化アップロードへのリトライパスも備えています。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1791">PR #1791&lt;/a>も完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）デスクトップバンカーログインをハートビートインジケーター付きで実装しました。これが重要なのは、リモート署名の失敗がユーザー側からはランダムなUI破損のように感じられることが多いためです。クライアントは署名者が生きているかどうかと最近いつ応答したかを表示し、現在のセッションがバンカーを使用している場合もそれを明確にします。&lt;/p>
&lt;h3 id="nostria">Nostria&lt;/h3>
&lt;p>ローカルファーストスタックを中心に構築されたマルチプラットフォームクライアントの&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>が、フィードとスレッドリプライのWeb of Trustフィルタリングを追加する&lt;a href="https://github.com/nostria-app/nostria/pull/561">PR #561&lt;/a>をマージしました。この機能は既存のtrust-serviceランクデータを使用し、フィードフィルターとリプライフィルターの両方として公開し、閾値をクリアしないランクの著者を非表示にしつつ、信頼された子孫が存在する場合はスレッド構造を保持します。これにより、「全員を表示」とハードコードされたリストベースのキュレーションの中間レイヤーがユーザーに提供されます。&lt;/p>
&lt;p>同じ週に&lt;a href="https://github.com/nostria-app/nostria/pull/563">PR #563&lt;/a>も実装され、サマリーページにコンテンツフィルタリングとリポストサポートが追加されました。追跡されたPRリスト外では、Nostriaはパワーユーザーサーフェスの充実も進めています。最新のBrainstorm Web of Trustサービスへのアプリ内サインアップ、NWCとBOLT-11インボイスを使用したDMでの送金・受金フロー、絵文字NIPを通じたNostrネイティブのGIF処理、ポッドキャストフィードから既存のLightningスプリットを取り込める強化されたRSSインポートパスも追加されました。Nostriaはランキング、メディア、ペイメント、パブリッシングを1つの接続されたアプリサーフェスとして扱っています。&lt;/p>
&lt;h3 id="nostur">Nostur&lt;/h3>
&lt;p>nostur-comがメンテナンスするiOSクライアントの&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>が、アウトボックスルーティングを固定プランからスコア付きポリシーに変更する&lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">PR #53&lt;/a>をオープンしました。このパッチはランダム化されたrelayスコアリング、キャッシュされたnostr.watchフィードによる&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a> relay稼働状況フィルタリング、Thompson Samplingを追加し、relayの成功・失敗データが将来の選択を変更するようにします。設計はフィルタリングされるrelayが多すぎる場合のセーフティバルブを保持し、&lt;code>.onion&lt;/code> relayも保持します。これは、relay選択を適応型システムとして扱うクライアントの最も明確な現在の例の1つです。&lt;/p>
&lt;h3 id="nostrability-outbox">Nostrability Outbox&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">以前のOutboxベンチマークレポートに続き&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>クライアントルーティングに焦点を当てたベンチマーク・分析プロジェクトの&lt;a href="https://github.com/nostrability/outbox">Nostrability Outbox&lt;/a>は、今週自身の主張を精緻化しました。&lt;a href="https://github.com/nostrability/outbox/pull/35">PR #35&lt;/a>がインフレートされたThompson Samplingの結果を1,511回のランにわたる完全な再ベンチマークに置き換え、NDKスタイルルーティング向けに&lt;code>CG3&lt;/code>バリアントを推奨しました。&lt;a href="https://github.com/nostrability/outbox/pull/43">PR #43&lt;/a>が減衰とユースケース比較を追加し、&lt;code>0 follows&lt;/code>キャッシュポイズニングバグを修正し、キャッシュTTLを固定した後にTellurideデータセットを再実行しました。&lt;/p>
&lt;p>これは通常の意味でのプロダクト作業ではありませんが、プロジェクトの数値がよりシャープになり、以前過大に主張していた部分ではより控えめになったため、クライアント作者にとって重要です。修正された結果は依然として有用です。ランダム化された選択はOutboxが関心を持つケースにおいて純粋に決定論的なルーティングに勝ち続けており、Thompson型の学習はクライアントが有用なrelay履歴を永続化する場合にカバレッジを実質的に改善でき、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>稼働状況フィルタリングはデッドrelayへの無駄な時間を削減します。この作業は&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/387">NDK #387&lt;/a>、&lt;a href="https://github.com/nostur-com/nostur-ios-public/pull/53">Nostur #53&lt;/a>、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1833">Amethyst #1833&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1282">rust-nostr #1282&lt;/a>、&lt;a href="https://github.com/coracle-social/welshman/pull/53">welshman #53&lt;/a>、&lt;a href="https://github.com/hzrd149/applesauce/pull/54">applesauce #54&lt;/a>と&lt;a href="https://github.com/hzrd149/applesauce/pull/55">applesauce #55&lt;/a>を含む具体的な実装提案にも発展しています。&lt;/p>
&lt;h3 id="white-noiseバックエンド">White Noiseバックエンド&lt;/h3>
&lt;p>White Noiseやその他のMarmotツーリングが使用するRustバックエンドの&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">whitenoise-rs&lt;/a>が、Blossomメディア処理周辺の境界強化パッチ2件をマージしました。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/637">PR #637&lt;/a>がBlossom URLにHTTPSを強制しアップロードタイムアウトを追加、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/642">PR #642&lt;/a>がBlobダウンロードを&lt;code>100 MiB&lt;/code>に上限設定し、過大なメディアプルがサービス拒否パスに変わることをブロックします。プライベートメッセージングソフトウェアにとって、メディアURLは暗号化されたアプリケーションロジックと信頼できないネットワークインフラストラクチャの間の最も鋭いインターフェースの1つです。今週チームはそのエッジを強化しました。&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr&lt;/h3>
&lt;p>Rustプロトコルライブラリの&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>が、&lt;code>LocalRelayBuilderNip42&lt;/code>のコンビニエンスコンストラクターを追加する&lt;a href="https://github.com/rust-nostr/nostr/pull/1280">PR #1280&lt;/a>をマージしました。新しいreadとwriteヘルパーは、埋め込みrelayやテストセットアップに&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>認証ポリシーをコードに変換するためのより明確な方法を提供します。これは小さなライブラリパッチですが、毎回ボイラープレートを繰り返さずに認証を有効にする必要があるローカルまたはアプリバンドルrelayを構築するチームにとって重要です。&lt;/p>
&lt;h3 id="pika">Pika&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">以前のPika記事に続き&lt;/a>、Marmotベースのメッセージングアプリ&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>が、ランタイム統合に焦点を当てたリリースサイクルで&lt;a href="https://github.com/sledtools/pika/releases/tag/pika/v1.1.1">pika/v1.1.1&lt;/a>と&lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v1.1.1">pikachat-v1.1.1&lt;/a>を出荷しました。&lt;a href="https://github.com/sledtools/pika/pull/542">PR #542&lt;/a>がCLIとサイドカー用の共有Marmotランタイムファサードを導入し、アプリホストも同じサーフェスに移行します。&lt;a href="https://github.com/sledtools/pika/pull/556">PR #556&lt;/a>がOpenClawエージェントのライフサイクルとプロビジョニング状態を強化、&lt;a href="https://github.com/sledtools/pika/pull/600">PR #600&lt;/a>がバックアップからの復元と管理環境向けのより厳格な回復安全性を追加しました。&lt;/p>
&lt;p>直接的なユーザー向けサーフェスは前回のPika記事よりも小さいですが、アーキテクチャの変更は意味があります。グループ、メディア、通話、セッションロジックを1つの共有ランタイムの背後にまとめることで、Marmotスタックの成長に伴ってアプリとデーモンが乖離する可能性が減少します。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>（Wiki）: AsciidocからDjotへの切り替え&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>）：kind &lt;code>30818&lt;/code>のWikiコンテンツがDjotを正規マークアップ形式として使用するようになりました。マージされたテキストは明示的なwikilink動作、kind &lt;code>818&lt;/code>のマージリクエスト例、kind &lt;code>30819&lt;/code>のリダイレクト例、&lt;code>d&lt;/code>タグの非ラテンスクリプト正規化例を追加します。これにより、実装者はAsciidocよりもクリーンなパースターゲットを得られ、Ruby中心のツールチェーンに依存するスペックパスが1つ削除されます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>（Bech32エンコードエンティティ）: 入力制限の追加&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2264">PR #2264&lt;/a>）：仕様がBech32エンコードエンティティ文字列を5000文字で上限設定することを推奨するようになりました。NIP-19文字列はQRフロー、ディープリンク、共有シート、多くのクライアントにわたるユーザー貼り付け入力に表示されるようになったため、これは実際のパーサー価値を持つ小さな変更です。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>（秘密鍵暗号化）向けNostrキーファイル&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2269">PR #2269&lt;/a>）：パスワード暗号化された鍵のエクスポートとインポート用の&lt;code>.nostrkey&lt;/code>ファイル形式を提案しています。マージされれば、生の&lt;code>ncryptsec&lt;/code>文字列をコピーするよりも通常のファイルベースのバックアップパスをクライアントに提供します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-43/">NIP-43&lt;/a>（Relayアクセスメタデータとリクエスト）のメンバーシップ状態の一貫性&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2267">PR #2267&lt;/a>）：relayがpubkeyごとに1つの権威あるメンバーシップ状態を維持すべきであることを明確にするセクションを追加します。メンバーシップの変更やリプレイされた履歴に関するグループクライアントロジックを簡素化します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）の削除ガイダンス&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2260">PR #2260&lt;/a>）：gift wrapされた削除イベントを通じたプライベートメッセージの編集と削除のための具体的なパスを提案しています。作業はまだオープンですが、NIP-17が古いDMフローを完全に置き換えるには、クライアント作者にここでの答えが必要です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-222/">NIP-222&lt;/a>向け共有インテントURI&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2266">PR #2266&lt;/a>）：モバイルおよびデスクトップアプリが共有コンテンツをNostrクライアントに渡す方法を標準化するドラフトです。現在のアプリ間フローで最も粗い相互運用エッジの1つです。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipディープダイブ-nip-94ファイルメタデータ">NIPディープダイブ: NIP-94（ファイルメタデータ）&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>はkind &lt;code>1063&lt;/code>をファイルのファーストクラスメタデータイベントとして定義します。&lt;a href="https://github.com/nostr-protocol/nips/blob/master/94.md">仕様&lt;/a>はイベントに人間が読める&lt;code>content&lt;/code>と、ダウンロードURL、MIMEタイプ、ハッシュ、寸法、プレビュー、フォールバック、ストレージサービスヒントの機械可読タグを提供します。これが重要なのは、ファイルがrelayで独自のオブジェクトとしてクエリ可能になるためです。クライアントはファイルが何であるかを理解するために周囲のコンテンツからメタデータをスクレイプする必要がありません。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a92ef8d7c3a1b5d4e8f9a0b1c2d3e4f567890abcdef1234567890abcdef1234&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1e2d3c4b5a697887766554433221100ffeeddccbbaa99887766554433221100&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1063&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;application/gzip&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4a5b6c7d8e9f00112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;size&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;48392011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0x0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;magnet&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;magnet:?xt=urn:btih:00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;i&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;blurhash&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;LEHV6nWB2yk8pyo0adR*.7kCMdnj&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;thumb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/thumb.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bbccddeeff00112233445566778899aabbccddeeff0011223344556677889900&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://downloads.example.org/notedeck/v0.8.0-rc2/screenshot.png&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ccddeeff00112233445566778899aabbccddeeff001122334455667788990011&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Signed macOS release artifact for Notedeck v0.8.0-rc2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;alt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Notedeck desktop release archive&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fallback&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://mirror.example.net/notedeck/v0.8.0-rc2/notedeck-macos-universal.tar.gz&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;service&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip96&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Notedeck macOS universal build&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;11aa22bb33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889911aa22bb33cc44dd55ee66ff77889900aabbccddeeff00112233445566778899&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>タグは見た目以上の仕事をしています。&lt;code>x&lt;/code>は配信されるファイルを識別し、&lt;code>ox&lt;/code>はサーバーサイドの変換前のオリジナルファイルを識別します。プレビュータグによりクライアントは完全なアセットをダウンロードせずにブラウズ可能なファイルインデックスを構築でき、&lt;code>summary&lt;/code>はそれらの横に短い抜粋を付けられます。&lt;code>fallback&lt;/code>はメインURLが失敗した場合の第2のソースを提供し、&lt;code>service&lt;/code>は&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>や別のホストなど、ファイル背後のストレージプロトコルをヒントとして示します。したがってNIP-94はソーシャル投稿の下で、生のストレージの上に位置します。ファイル自体を記述し、ファイルに関する会話を記述するものではありません。&lt;/p>
&lt;p>今週のNotedeckアップデーターが興味深い理由がここにあります。&lt;a href="https://github.com/damus-io/notedeck/pull/1326">PR #1326&lt;/a>はソフトウェアリリース発見に署名されたkind &lt;code>1063&lt;/code>イベントを使用し、ダウンロードしたバイナリを公開されたSHA256と照合して検証します。同じイベント形状でソフトウェアアーティファクトもメディアアップロードも記述できます。NIP-94は安定するほど古くなっていますが、より多くのプロジェクトがメタデータイベントを人のための装飾としてだけでなく、機械のためのトランスポートとして扱っているため、成長の余地があります。&lt;/p>
&lt;h2 id="nipディープダイブ-nip-54wiki">NIPディープダイブ: NIP-54（Wiki）&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>はkind &lt;code>30818&lt;/code>をWiki記事イベントとして定義します。&lt;a href="https://github.com/nostr-protocol/nips/blob/master/54.md">仕様&lt;/a>は&lt;code>d&lt;/code>タグを正規化された記事トピックとして扱い、多くの著者が同じ主題のエントリを公開できるようにします。記事本文は&lt;code>content&lt;/code>に格納され、タグは正規化されたアイデンティティ、表示タイトル、要約、以前のバージョンへの参照を処理します。つまりNIP-54は単なるコンテンツ形式ではなく、取得とランキングの問題でもあります。各クライアントはどの記事バージョンを表示するかを決定する必要があるためです。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8c94e5d1f2a300112233445566778899aabbccddeeff00112233445566778899&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1742342400&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30818&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Wiki&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Djot-formatted reference article about Nostr wiki events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30818:11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff:nostr-wiki&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.org&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;fork&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr is a [protocol][] for carrying events across relays.\n\n[protocol]: nostr:nevent1example&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;33cc44dd55ee66ff77889900aabbccddeeff0011223344556677889900112233cc44dd55ee66ff77889900aabbccddeeff00112233445566778899001122&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>今週のマージは&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">PR #2242&lt;/a>で正規マークアップをAsciidocからDjotに変更しました。これが実装者にとって重要なのは、Djotがより厳密な独立した仕様と言語間でよりシンプルなパーサーストーリーを持つためです。マージされたテキストはリファレンススタイルwikilinkの解決方法、kind &lt;code>818&lt;/code>のマージリクエストの使用方法、kind &lt;code>30819&lt;/code>のリダイレクトの使用方法、非ラテンスクリプトの&lt;code>d&lt;/code>タグ正規化の動作方法も明確にしています。これらは2つの独立したクライアントがリンクの指す先の記事について合意する部分です。&lt;/p>
&lt;p>NIP-54はプロトコル内で特殊な位置にもあります。Wikiクライアントはコンテンツレンダリングを必要としますが、ランキングポリシーも必要です。リアクション、relayリスト、コンタクトリスト、明示的な委譲シグナルはすべて、特定のトピックでどの記事が勝つかに影響します。Djotへの切り替えはこのランキング問題を解決しませんが、その下にあったパーサーの曖昧さの1つを取り除きます。今このマージが重要な理由がここにあります。変更はより見栄えの良い散文フォーマットについてではなく、マルチクライアントWiki動作を一貫して実装しやすくすることについてです。&lt;/p>
&lt;p>何か作っていますか、それとも取り上げてほしいことがありますか？Nostrで&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMを&lt;code>npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923&lt;/code>宛にお送りください。&lt;/p></content:encoded></item><item><title>Nostr Compass #13</title><link>https://nostrcompass.org/ja/newsletters/2026-03-11-newsletter/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-03-11-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>と&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>が、エージェント駆動コマース向けのMCPサーフェスを追加しました。一方で&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>、&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>（クライアントからrelayへの認証）に基づくrelay-authとprotected event対応を、アプリ、署名アプリ、relayソフトウェア全体に広げています。&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>はAIラベリング、モデレーションキュー、perceptual hash、機械可読なサーバードキュメントを含む2つのリリースを出荷しました。すでにWebで動いている&lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>は最初のAndroid alphaを公開し、その後&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）対応も追加しました。&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>（秘密鍵暗号化）によるサインアップを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はNamecoinベースの&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>（ドメイン認証）解決機能を出荷しました。&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>は&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>を公開し、NIPsリポジトリでは&lt;a href="https://nostrcompass.org/ja/topics/nip-91/">NIP-91&lt;/a>（フィルターのAND演算子）と&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（relay発見と稼働監視）向けの防御的ガイダンスがマージされました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="shopstrとmilk-marketがmcpコマースサーフェスを公開">ShopstrとMilk MarketがMCPコマースサーフェスを公開&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>はLightningとCashu決済を備えたP2Pマーケットプレイスで、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/234">PR #234&lt;/a>（&lt;a href="https://github.com/shopstr-eng/shopstr/commit/94ef7d1a4519e8e0158668d13c8cb8684b1d46e2">commit 94ef7d1&lt;/a>）をマージし、APIキー認証付きのMCPサーバーを追加しました。変更には、エージェント発見用の&lt;code>.well-known/agent.json&lt;/code>、MCPのオンボーディングとステータス用エンドポイント、注文作成と支払い確認ルート、専用の購入ツールと読み取りツール、APIキー向け設定画面が含まれます。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a>では、メッセージ、住所、注文更新、商品仕様選択といった売り手側アクションも追加されました。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a>のセキュリティ修正では、1回だけのSHA-256 APIキーハッシュを廃止し、ソルト付きPBKDF2を100,000回適用する方式へ置き換えています。&lt;/p>
&lt;p>エージェントは&lt;a href="https://nostrcompass.org/ja/topics/nip-99/">NIP-99&lt;/a>（Classified Listings）の出品を読み取り、既存の&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）と&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>（Cashu Wallet）の決済フローを使って、ページのスクレイピングやクライアント挙動の逆解析なしにチェックアウトまで進めます。&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>は、Nostr上の食品マーケットプレイスであり、&lt;a href="https://milk.market">milk.market&lt;/a>で公開されています。こちらも同じMCPとAPIキーの基盤を&lt;a href="https://github.com/shopstr-eng/milk-market/commit/da6c0b499494b4e4861c4ff8a220e066c46285b3">commit da6c0b4&lt;/a>で導入しました。&lt;a href="https://github.com/shopstr-eng/milk-market/pull/10">PR #10&lt;/a>は、定期注文、購入後の配送先変更、Stripeその他の法定通貨決済経路を含む複数マーチャント・複数通貨チェックアウト処理を追加します。続く&lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a>では、新規インストール時にfailed relay publishesテーブルが作成されず、初回ロードで500エラーになる起動時データベース初期化バグを修正しました。エージェント向けインターフェースは、ShopstrではBitcoinネイティブ決済、Milk Marketでは法定通貨とBitcoinの混在決済の両方に対応します。&lt;/p>
&lt;h3 id="bunker署名アプリrelayへ広がるnip-42-relay認証">Bunker、署名アプリ、relayへ広がるNIP-42 relay認証&lt;/h3>
&lt;p>&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>は、OAuthプロバイダーをNostr署名に橋渡しする&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）bunkerで、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>（ブラウザ拡張署名アプリ）ログイン、自動的な単一ID選択、削除されたIDのクリーンアップを追加しました（&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>）。IDが1つしかない場合、bunkerはプロンプトを出さず自動でそれを選びます。IDを削除すると、ぶら下がったassignmentやconnectionも同時に除去されます。&lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">Commit 6b8796c&lt;/a>は、assignmentされたユーザー向けに&lt;code>ALWAYS_ALLOWED_KINDS&lt;/code>設定を追加し、既定値としてアプリ固有データのkind &lt;code>30078&lt;/code>を許可します。これにより、委任されたIDはイベントごとの承認なしにアプリ固有ストレージへ書き込めます。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は、Android向け主要な&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリであり、週内に4つのプレリリースを含む&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a>を出荷しました。&lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a>は、kind &lt;code>22242&lt;/code>リクエスト向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay認証処理を追加します。実装では、relayごとの権限を追跡する新しいデータベースカラムが追加され、&lt;code>(pkKey, type, kind, relay)&lt;/code>に一意インデックスが張られています。ユーザーには専用の認証画面が表示され、relay単位またはすべてのrelay対象のワイルドカード&lt;code>*&lt;/code>スコープで許可・拒否を選んで保存できます。ワイルドカード権限を付与すると、あるkindに対するrelay固有エントリはすべて消去されます。&lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a>はその後続として、複数イベントリクエスト画面を別画面遷移ではなく、composableカードでインライン表示するようリファクタリングしました。このリリースには、デフォルトプロフィールrelayの更新、bottom sheetでのリクエスト表示、MediaTekデバイスでのクラッシュを避けるためStrongBox keystoreを無効化する修正も含まれます。&lt;/p>
&lt;p>relay側では、&lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-70/">NIP-70&lt;/a>（Protected Events）向けのNIP-42認証処理を実装し、&lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a>はprotected eventを埋め込んだリポストを拒否します。&lt;/p>
&lt;h3 id="notedeckがnip-11-relay制限とagentium機能を追加">NotedeckがNIP-11 relay制限とAgentium機能を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>は、Damusチームによるネイティブデスクトップクライアントで、今週14件のPRをマージしました。&lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay Information Document）にあるrelay制限の取得を追加し、すべてのoutbox relayがrelay情報ドキュメントに記載された&lt;code>max_message_length&lt;/code>と&lt;code>max_subscriptions&lt;/code>を尊重するようにします。実装には、バックグラウンドジョブ処理、接続再試行用のjitter付き指数バックオフ、カスタムHTTP Acceptヘッダーが含まれます。&lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a>はアカウント切り替え後にDMが読み込めなくなることがあるバグを修正し、&lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a>はエラー時のbroadcast spamを防ぐため、multicast relay通信にバックオフ機構を追加します。&lt;/p>
&lt;p>Agentiumサブシステム（Notedeckに内蔵されたコーディングエージェントUIで、内部名は「Dave」）には、クリップボード画像の貼り付け、kind &lt;code>31991&lt;/code>イベントを介してデバイス間同期する名前付き実行設定（&lt;a href="https://nostrcompass.org/ja/topics/nip-33/">NIP-33&lt;/a> パラメータ化置換イベント）、git worktree作成機能、セッションごとにバックエンドを選べるモデルピッカーが追加されました（&lt;a href="https://github.com/damus-io/notedeck/pull/1336">PR #1336&lt;/a>）。&lt;a href="https://github.com/damus-io/notedeck/pull/1338">PR #1338&lt;/a>はヘッドレスUIテスト向けに&lt;code>egui_kittest&lt;/code>を統合し、&lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a>はクライアント別の新規コンタクトリスト作成を追跡するダッシュボードカードを追加します。オープン中の&lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a>は、AmethystのNamecoin NIP-05解決機能を、ElectrumXルックアップ、SOCKS5経由のTorルーティング、検索バー統合付きでNotedeckへ移植します。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>と&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>が、エージェント駆動コマース向けのMCPサーフェスを追加しました。一方で&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>、&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>、&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>（クライアントからrelayへの認証）に基づくrelay-authとprotected event対応を、アプリ、署名アプリ、relayソフトウェア全体に広げています。&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>はAIラベリング、モデレーションキュー、perceptual hash、機械可読なサーバードキュメントを含む2つのリリースを出荷しました。すでにWebで動いている&lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>は最初のAndroid alphaを公開し、その後&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）対応も追加しました。&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>（秘密鍵暗号化）によるサインアップを追加し、&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はNamecoinベースの&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>（ドメイン認証）解決機能を出荷しました。&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>は&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>を公開し、NIPsリポジトリでは&lt;a href="https://nostrcompass.org/ja/topics/nip-91/">NIP-91&lt;/a>（フィルターのAND演算子）と&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（relay発見と稼働監視）向けの防御的ガイダンスがマージされました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="shopstrとmilk-marketがmcpコマースサーフェスを公開">ShopstrとMilk MarketがMCPコマースサーフェスを公開&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>はLightningとCashu決済を備えたP2Pマーケットプレイスで、&lt;a href="https://github.com/shopstr-eng/shopstr/pull/234">PR #234&lt;/a>（&lt;a href="https://github.com/shopstr-eng/shopstr/commit/94ef7d1a4519e8e0158668d13c8cb8684b1d46e2">commit 94ef7d1&lt;/a>）をマージし、APIキー認証付きのMCPサーバーを追加しました。変更には、エージェント発見用の&lt;code>.well-known/agent.json&lt;/code>、MCPのオンボーディングとステータス用エンドポイント、注文作成と支払い確認ルート、専用の購入ツールと読み取りツール、APIキー向け設定画面が含まれます。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/236">PR #236&lt;/a>では、メッセージ、住所、注文更新、商品仕様選択といった売り手側アクションも追加されました。&lt;a href="https://github.com/shopstr-eng/shopstr/pull/235">PR #235&lt;/a>のセキュリティ修正では、1回だけのSHA-256 APIキーハッシュを廃止し、ソルト付きPBKDF2を100,000回適用する方式へ置き換えています。&lt;/p>
&lt;p>エージェントは&lt;a href="https://nostrcompass.org/ja/topics/nip-99/">NIP-99&lt;/a>（Classified Listings）の出品を読み取り、既存の&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）と&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>（Cashu Wallet）の決済フローを使って、ページのスクレイピングやクライアント挙動の逆解析なしにチェックアウトまで進めます。&lt;/p>
&lt;p>&lt;a href="https://github.com/shopstr-eng/milk-market">Milk Market&lt;/a>は、Nostr上の食品マーケットプレイスであり、&lt;a href="https://milk.market">milk.market&lt;/a>で公開されています。こちらも同じMCPとAPIキーの基盤を&lt;a href="https://github.com/shopstr-eng/milk-market/commit/da6c0b499494b4e4861c4ff8a220e066c46285b3">commit da6c0b4&lt;/a>で導入しました。&lt;a href="https://github.com/shopstr-eng/milk-market/pull/10">PR #10&lt;/a>は、定期注文、購入後の配送先変更、Stripeその他の法定通貨決済経路を含む複数マーチャント・複数通貨チェックアウト処理を追加します。続く&lt;a href="https://github.com/shopstr-eng/milk-market/pull/11">PR #11&lt;/a>では、新規インストール時にfailed relay publishesテーブルが作成されず、初回ロードで500エラーになる起動時データベース初期化バグを修正しました。エージェント向けインターフェースは、ShopstrではBitcoinネイティブ決済、Milk Marketでは法定通貨とBitcoinの混在決済の両方に対応します。&lt;/p>
&lt;h3 id="bunker署名アプリrelayへ広がるnip-42-relay認証">Bunker、署名アプリ、relayへ広がるNIP-42 relay認証&lt;/h3>
&lt;p>&lt;a href="https://github.com/flox1an/oauth-bunker">OAuth Bunker&lt;/a>は、OAuthプロバイダーをNostr署名に橋渡しする&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）bunkerで、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>（ブラウザ拡張署名アプリ）ログイン、自動的な単一ID選択、削除されたIDのクリーンアップを追加しました（&lt;a href="https://github.com/flox1an/oauth-bunker/commit/f0c7683cb2374fd9a3ebd1b186055da8abd2c2ff">commit f0c7683&lt;/a>）。IDが1つしかない場合、bunkerはプロンプトを出さず自動でそれを選びます。IDを削除すると、ぶら下がったassignmentやconnectionも同時に除去されます。&lt;a href="https://github.com/flox1an/oauth-bunker/commit/6b8796c6c59c7d48dc1ede92d6de6bf54feb56cc">Commit 6b8796c&lt;/a>は、assignmentされたユーザー向けに&lt;code>ALWAYS_ALLOWED_KINDS&lt;/code>設定を追加し、既定値としてアプリ固有データのkind &lt;code>30078&lt;/code>を許可します。これにより、委任されたIDはイベントごとの承認なしにアプリ固有ストレージへ書き込めます。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>は、Android向け主要な&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリであり、週内に4つのプレリリースを含む&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.3-pre4">v4.1.3-pre4&lt;/a>を出荷しました。&lt;a href="https://github.com/greenart7c3/Amber/pull/317">PR #317&lt;/a>は、kind &lt;code>22242&lt;/code>リクエスト向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a> relay認証処理を追加します。実装では、relayごとの権限を追跡する新しいデータベースカラムが追加され、&lt;code>(pkKey, type, kind, relay)&lt;/code>に一意インデックスが張られています。ユーザーには専用の認証画面が表示され、relay単位またはすべてのrelay対象のワイルドカード&lt;code>*&lt;/code>スコープで許可・拒否を選んで保存できます。ワイルドカード権限を付与すると、あるkindに対するrelay固有エントリはすべて消去されます。&lt;a href="https://github.com/greenart7c3/Amber/pull/318">PR #318&lt;/a>はその後続として、複数イベントリクエスト画面を別画面遷移ではなく、composableカードでインライン表示するようリファクタリングしました。このリリースには、デフォルトプロフィールrelayの更新、bottom sheetでのリクエスト表示、MediaTekデバイスでのクラッシュを避けるためStrongBox keystoreを無効化する修正も含まれます。&lt;/p>
&lt;p>relay側では、&lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-70/">NIP-70&lt;/a>（Protected Events）向けのNIP-42認証処理を実装し、&lt;a href="https://github.com/hoytech/strfry/pull/176">PR #176&lt;/a>はprotected eventを埋め込んだリポストを拒否します。&lt;/p>
&lt;h3 id="notedeckがnip-11-relay制限とagentium機能を追加">NotedeckがNIP-11 relay制限とAgentium機能を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>は、Damusチームによるネイティブデスクトップクライアントで、今週14件のPRをマージしました。&lt;a href="https://github.com/damus-io/notedeck/pull/1316">PR #1316&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay Information Document）にあるrelay制限の取得を追加し、すべてのoutbox relayがrelay情報ドキュメントに記載された&lt;code>max_message_length&lt;/code>と&lt;code>max_subscriptions&lt;/code>を尊重するようにします。実装には、バックグラウンドジョブ処理、接続再試行用のjitter付き指数バックオフ、カスタムHTTP Acceptヘッダーが含まれます。&lt;a href="https://github.com/damus-io/notedeck/pull/1312">PR #1312&lt;/a>はアカウント切り替え後にDMが読み込めなくなることがあるバグを修正し、&lt;a href="https://github.com/damus-io/notedeck/pull/1333">PR #1333&lt;/a>はエラー時のbroadcast spamを防ぐため、multicast relay通信にバックオフ機構を追加します。&lt;/p>
&lt;p>Agentiumサブシステム（Notedeckに内蔵されたコーディングエージェントUIで、内部名は「Dave」）には、クリップボード画像の貼り付け、kind &lt;code>31991&lt;/code>イベントを介してデバイス間同期する名前付き実行設定（&lt;a href="https://nostrcompass.org/ja/topics/nip-33/">NIP-33&lt;/a> パラメータ化置換イベント）、git worktree作成機能、セッションごとにバックエンドを選べるモデルピッカーが追加されました（&lt;a href="https://github.com/damus-io/notedeck/pull/1336">PR #1336&lt;/a>）。&lt;a href="https://github.com/damus-io/notedeck/pull/1338">PR #1338&lt;/a>はヘッドレスUIテスト向けに&lt;code>egui_kittest&lt;/code>を統合し、&lt;a href="https://github.com/damus-io/notedeck/pull/1339">PR #1339&lt;/a>はクライアント別の新規コンタクトリスト作成を追跡するダッシュボードカードを追加します。オープン中の&lt;a href="https://github.com/damus-io/notedeck/pull/1314">PR #1314&lt;/a>は、AmethystのNamecoin NIP-05解決機能を、ElectrumXルックアップ、SOCKS5経由のTorルーティング、検索バー統合付きでNotedeckへ移植します。&lt;/p>
&lt;h3 id="divine-v106がe2eテスト基盤とnip-49インポートを出荷">diVine v1.0.6がE2Eテスト基盤とNIP-49インポートを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は、&lt;a href="https://divine.video">divine.video&lt;/a>でVineアーカイブを復元する短尺ループ動画クライアントであり、127件のマージ済みPRを含む&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.6">v1.0.6&lt;/a>を出荷しました。このリリースでは&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>アカウントインポート、外部&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>サポート、複数アカウント管理、macOSおよび実験的Linuxビルド、ローカルストレージを基盤にした再設計済みのdraftsおよびclipsライブラリが追加されています。&lt;/p>
&lt;p>エンジニアリング面では、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1928">PR #1928&lt;/a>が、Dockerバックエンドスタック（relay、API、Blossom、Postgres、Redis、ClickHouse）を相手にネイティブUI自動化を行うPatrolベースの完全なE2E統合テスト基盤を追加しました。5つの認証ジャーニーテストが、登録、認証、パスワードリセット、セッション期限切れ、トークン更新をカバーします。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2105">PR #2105&lt;/a>は動画読み込みをHLS優先から直接MP4優先へ切り替え、HLSには自動フォールバックします。これにより読み込み時間は30〜60秒からほぼ即時まで短縮されました。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2076">PR #2076&lt;/a>は、ホームフィードのAPIレスポンスをSharedPreferencesへキャッシュし、cold start時に即時表示できるようにします。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2104">PR #2104&lt;/a>は&lt;code>ai-generated&lt;/code>コンテンツラベルをフィードで非表示扱いにし、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/2100">PR #2100&lt;/a>はdiVineホスト動画だけを表示する安全設定を追加します。HiveからDriftへのプロフィールキャッシュ移行は、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1881">PR #1881&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1883">PR #1883&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1903">PR #1903&lt;/a>にまたがって継続しており、約1,074行のHiveコードをDrift DAOへ置き換えています。&lt;/p>
&lt;h3 id="vector-v032がnip-77-negentropy同期とmls改善を出荷">Vector v0.3.2がNIP-77 negentropy同期とMLS改善を出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）を使ったMLSグループ暗号化ベースのプライバシー重視デスクトップメッセンジャーで、&lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2">v0.3.2&lt;/a>を出荷しました。目玉は、MLSグループ同期向けのNIP-77 negentropy（&lt;a href="https://github.com/VectorPrivacy/Vector/commit/b06adf4af2673fb5ac5add01356999ea70628eac">commit b06adf4&lt;/a>）で、parallel bootを用いて見逃したメッセージを大幅に速く取り込みます。リリースにはこのほか、Linux完全対応の再構築された音声エンジン、ぼかしプレビュー付き画像spoiler、リッチリンクプレビュー付きクリック可能ハイパーリンク、グループ管理者向け&lt;code>@everyone&lt;/code>を含む&lt;code>@mention&lt;/code> ping、絵文字shortcodeオートコンプリート、グループミュート、既存リアクションへのタップ反応、キャンセル可能なファイルアップロードも含まれます。Vectorは&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>グループチャットイベントを明示的にフィルタし（&lt;a href="https://github.com/VectorPrivacy/Vector/commit/2179a51c0449b3a70663a1573195b7945adf58ba">commit 2179a51&lt;/a>）、グループ暗号化にはMLSのみを使います。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="route96-v050-と-v051">Route96 v0.5.0 と v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/v0l/route96">Route96&lt;/a>は、Blossomと&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>（HTTP File Storage）をサポートするメディアサーバーであり、&lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.0">v0.5.0&lt;/a>と&lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">v0.5.1&lt;/a>を出荷しました。v0.5.0は、自動AIラベリング、未ラベルアップロードへの遡及的バックフィル、フラグ付きファイル向けモデレーションキュー、EXIFベースのプライバシー拒否、禁止ハッシュ処理を追加します。&lt;/p>
&lt;p>v0.5.1は、知覚画像ハッシュ、類似画像検索のためのlocality-sensitive hashing、バッチ管理者エンドポイント、そしてエージェントツール向けにサーバーのBlossomおよびNIP-96 API面を説明する公開&lt;a href="https://github.com/v0l/route96/releases/tag/v0.5.1">&lt;code>SKILL.md&lt;/code>&lt;/a>を追加しました。&lt;a href="https://github.com/v0l/route96/pull/58">PR #58&lt;/a>はバックグラウンドワーカーを完全非同期のTokioタスクへ移し、&lt;a href="https://github.com/v0l/route96/commit/97b00a39e27b07053c2ad335dbf475bacba57bf8">commit 97b00a3&lt;/a>はhot loopを避けるためにバックオフを追加します。&lt;/p>
&lt;h3 id="samizdat-v100-alpha">Samizdat v1.0.0-alpha&lt;/h3>
&lt;p>&lt;a href="https://github.com/satsdisco/samizdat">Samizdat&lt;/a>は、&lt;a href="https://samizdat.press">samizdat.press&lt;/a>で利用できる長文リーダー兼パブリッシャーであり、最初のAndroidビルドを&lt;a href="https://github.com/satsdisco/samizdat/releases/tag/v1.0.0-alpha">v1.0.0-alpha&lt;/a>で出荷しました。アプリは、キュレートされたNostr長文記事のPressページを起点に、Press、Feed、Saved、Writeの各ビューを下部タブで切り替えます。Androidビルドは、Android Keystore暗号化によるネイティブ鍵保存、&lt;code>nostr:&lt;/code> URIと&lt;code>samizdat.press&lt;/code> deep linkの処理、AmberやPrimalなどへのAndroidアプリチューザー経由の署名アプリ引き渡しを追加し、直接鍵インポートを不要にします。pull-to-refresh、画面サイズをまたぐsafe area処理、ネイティブ共有、クリップボード、ハプティクス、スプラッシュスクリーン統合も、単なるWebラッパーではなくAndroid shell側に移されています。&lt;/p>
&lt;p>&lt;a href="https://github.com/satsdisco/samizdat/commit/d17308f3c2e6020e14074fbb1c03a8f60f29a3e6">Commit d17308f&lt;/a>は、AmberとPrimalフロー向けのインテントベース&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名を追加し、&lt;a href="https://github.com/satsdisco/samizdat/commit/e29dab84f7b58edd621f7b86ed7ca6458f965614">commit e29dab8&lt;/a>はJavaScript bridge回避策を、&lt;code>startActivityForResult&lt;/code>を使うネイティブCapacitorプラグインへ置き換えました。このalpha版のアプリはAndroid 7.0以上（API 24）が必要で、debug APKとして配布され、まだpush notificationはありません。公開は現在も署名アプリに依存しており、&lt;code>nsec&lt;/code>ログインはローカル閲覧とアカウント利用向けです。&lt;/p>
&lt;h3 id="calendar-by-form-v020">Calendar by Form* v0.2.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-calendar">Calendar by Form*&lt;/a>は、&lt;a href="https://calendar.formstr.app">calendar.formstr.app&lt;/a>で利用できる、&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）によるプライベートイベント共有を持つ分散型カレンダーアプリです。&lt;a href="https://github.com/formstr-hq/nostr-calendar/pull/38">PR #38&lt;/a>を含む&lt;a href="https://github.com/formstr-hq/nostr-calendar/releases/tag/v0.2.0">v0.2.0&lt;/a>では、&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>（Calendar Events）の定期イベント処理が拡張され、v0.1.0の単発イベント基盤を越えました。基礎となる変更は、ローカルイベント保存、署名アプリ処理、Android通知まわりにも及んでいます。これは、先月のリポジトリ移行に続くFormstr組織の2つ目のアクティブアプリケーションです。&lt;/p>
&lt;h3 id="mostro-v0164">Mostro v0.16.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>は、Nostr上に構築されたP2P Bitcoin取引所であり、&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.4">v0.16.4&lt;/a>を公開しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">先週取り上げた&lt;/a>紛争セッション復元（&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>）と自動クローズ（&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>）の修正も含まれています。このリリースで新たに入ったのは、kind &lt;code>38384&lt;/code>のユーザー評価イベントに&lt;code>days&lt;/code>フィールドを追加する&lt;a href="https://github.com/MostroP2P/mostro/pull/625">PR #625&lt;/a>、同評価イベントに有効期限を追加する&lt;a href="https://github.com/MostroP2P/mostro/pull/612">PR #612&lt;/a>、注文イベントの有効期限を固定24時間ではなく設定値へ切り替える&lt;a href="https://github.com/MostroP2P/mostro/pull/614">PR #614&lt;/a>です。&lt;a href="https://github.com/MostroP2P/mostro/pull/622">PR #622&lt;/a>は、開発手数料の重複支払いを防ぐidempotencyチェックを追加しています。&lt;/p>
&lt;h3 id="mostro-mobile-v121">Mostro Mobile v1.2.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>は、Mostro P2P取引所向けFlutterクライアントであり、11件の新機能と11件のバグ修正を含む&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.1">v1.2.1&lt;/a>を出荷しました。リリースには、紛争チャットでの暗号化マルチメディア表示（&lt;a href="https://github.com/MostroP2P/mobile/pull/514">PR #514&lt;/a>）、注文が終端状態へ達したときの紛争UI自動クローズ（&lt;a href="https://github.com/MostroP2P/mobile/pull/503">PR #503&lt;/a>）、NWCウォレットインポート用QRスキャン（&lt;a href="https://github.com/MostroP2P/mobile/commit/12eaee4d154fa31b07f82b96819de520e825aee6">commit 12eaee4&lt;/a>）、フランス語翻訳、FCM push notification処理が含まれます。&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>は、bip340依存をv0.2.0へ固定してSchnorr署名パディングバグを修正しました。&lt;/p>
&lt;h3 id="0xchat-v154">0xchat v1.5.4&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main">0xchat&lt;/a>は、Cashu対応のTelegram風メッセージングクライアントであり、Linuxデスクトップ修正に集中した&lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.4-release">v1.5.4&lt;/a>を出荷しました。AppImageのdock icon、絵文字描画、context menuフリーズ、返信・コピーUIのハングを修正しています。画像アップロード問題とnpub.cash統合も修正されました。&lt;a href="https://github.com/0xchat-app/0xchat-app-main/pull/49">PR #49&lt;/a>は、何もしていないのにglassmorphic再描画を強いていた3秒ポーリングタイマーを削除し、不要なUI再構築をなくしています。また、イベントキャッシュ読み込みを並行実行に変えることで、relay、contacts、channel起動を塞いでいたログイン初期化も解消しました。&lt;/p>
&lt;h3 id="keep-v060">Keep v0.6.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>に対応するAndroid向けFROST threshold signerで、&lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.0">v0.6.0&lt;/a>と&lt;a href="https://github.com/privkeyio/keep-android/releases/tag/v0.6.1">v0.6.1&lt;/a>を出荷しました。v0.6.0には、wallet descriptorの調整と管理UI、生体認証付きバックアップ/復元フロー（&lt;a href="https://github.com/privkeyio/keep-android/pull/184">PR #184&lt;/a>）、threshold shareからのnsec復元（&lt;a href="https://github.com/privkeyio/keep-android/pull/187">PR #187&lt;/a>）、Rust UniFFI経由のクロスプラットフォームanimated QR frame生成（&lt;a href="https://github.com/privkeyio/keep-android/pull/188">PR #188&lt;/a>）、チェーン検証付き署名監査証跡（&lt;a href="https://github.com/privkeyio/keep-android/pull/189">PR #189&lt;/a>）が含まれます。v0.6.1はライセンスをAGPL-3.0からMITへ切り替えました（&lt;a href="https://github.com/privkeyio/keep-android/pull/191">PR #191&lt;/a>）。&lt;/p>
&lt;h3 id="njump-v030">njump v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>は、&lt;a href="https://njump.me">njump.me&lt;/a>でNostrコンテンツを閲覧するための静的ゲートウェイであり、&lt;code>note1&lt;/code>コード解析の破壊的変更と基盤nostrライブラリ更新を含む&lt;a href="https://github.com/fiatjaf/njump/releases/tag/v0.3.0">v0.3.0&lt;/a>を出荷しました。&lt;/p>
&lt;h3 id="roadstr-v011">Roadstr v0.1.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/jooray/roadstr">Roadstr&lt;/a>は、Nostrを使う分散型道路イベント報告アプリで、初のデモリリース&lt;a href="https://github.com/jooray/roadstr/releases/tag/v0.1.1">v0.1.1&lt;/a>を出荷しました。アプリはopenfreemap.orgのvector tileを使って道路イベントを地図上に表示します。&lt;/p>
&lt;h3 id="bitcredit-v053">Bitcredit v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core">Bitcredit&lt;/a>は、Nostrトランスポート層と専用relayを&lt;a href="https://www.bit.cr/">bit.cr&lt;/a>に持つ電子手形アプリケーションであり、&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.3">v0.5.3&lt;/a>を出荷しました。&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/846">PR #846&lt;/a>は支払いと承認状態のためにAPIへ&lt;code>payment_actions&lt;/code>と&lt;code>bill_state&lt;/code>フィールドを追加し、&lt;a href="https://github.com/BitcreditProtocol/Bitcredit-Core/pull/849">PR #849&lt;/a>は匿名署名者向けの署名アドレス処理を修正します。&lt;/p>
&lt;h3 id="openchat-v010-alpha3">OpenChat v0.1.0-alpha.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>は、Marmotプロトコルの.NET MLSとC#ライブラリの上に構築されたチャットアプリケーションであり、&lt;a href="https://github.com/DavidGershony/openChat/releases/tag/v0.1.0-alpha.3">v0.1.0-alpha.3&lt;/a>を出荷しました。リリースには、Amberおよび&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>フロー向け外部署名アプリ対応（&lt;a href="https://github.com/DavidGershony/openChat/commit/e568d979fe15eead19172f2eb6f8cf26ca845247">commit e568d97&lt;/a>）、クラッシュウィンドウ中のデータ損失をなくすためMLS状態永続化をMLSサービス内部へ移す変更（&lt;a href="https://github.com/DavidGershony/openChat/commit/4720bc8625136a0d5b0e23322bc0c50cd80577e8">commit 4720bc8&lt;/a>）、新しいCIパイプライン経由のWindows、Linux、Androidビルド公開が含まれます。&lt;/p>
&lt;h3 id="opensignal-v100">OpenSignal v1.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/turizspace/opensignal">OpenSignal&lt;/a>は、Nostr向けKotlin Multiplatform製トレーディングcopilotであり、&lt;a href="https://github.com/turizspace/OpenSignal/releases/tag/v1.0.0">v1.0.0&lt;/a>を出荷しました。このリリースは、ドメインロジック、チャート描画、Nostr認証と公開、Blossomの&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>アップロードサポート、ONNXベースAI推論フックを、DesktopとAndroid shellをまたぐ共有KMPモジュールとしてまとめています。公開されたアーキテクチャには、チャートスクリーンショット解析用FastAPI AIサービス、モデル訓練パイプライン、サイズ計算と警告付きの構造化取引計画を生成するrisk engineも含まれます。ログインは生の&lt;code>nsec&lt;/code>鍵か外部署名アプリのどちらにも対応し、出力フローはローカル分析で終わらずNostrイベント公開まで進みます。&lt;/p>
&lt;h2 id="プロジェクト更新">プロジェクト更新&lt;/h2>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>は、Nostr上のGoogle Forms代替であり、&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">PR #434&lt;/a>（&lt;a href="https://github.com/formstr-hq/nostr-forms/commit/e9c4fd5dadfa0b83f1e87d7596eaf35f9fdb7da8">commit e9c4fd5&lt;/a>）をマージして、&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>（秘密鍵暗号化）による秘密鍵暗号化サインアップフローを追加しました。これ以前、Formstrを使うには&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>ブラウザ拡張か、生の&lt;code>nsec&lt;/code>貼り付けが必要でした。新しいフローではクライアント側で鍵ペアを生成し、ユーザーが選んだパスワードでNIP-49のscrypt + XChaCha20-Poly1305方式を使って秘密鍵を暗号化し、その結果の&lt;code>ncryptsec&lt;/code>文字列を保存します。これでユーザーは署名拡張を入れなくても、パスワードだけで再ログインできます。鍵管理は終始クライアント側にとどまります。&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は、高機能Androidクライアントであり、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">先週オープンだった&lt;/a>Namecoinベース&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>解決機能を4件のPRで出荷しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>は、&lt;code>.bit&lt;/code>、&lt;code>d/&lt;/code>、&lt;code>id/&lt;/code>識別子向けにElectrumXを使った検閲耐性NIP-05検証を追加します。AmethystがNIP-05フィールド内でこれらのサフィックスを検出すると、ElectrumX-NMCサーバーへ名前のトランザクション履歴を問い合わせ、最新出力から&lt;code>NAME_UPDATE&lt;/code>スクリプトを解析してNostr pubkeyを抽出し、36,000ブロックより古い名前は拒否します。これはNamecoinの有効期限ウィンドウに相当します。ElectrumX接続はTor有効時にSOCKS5経由で行われ、クリアネットと&lt;code>.onion&lt;/code>エンドポイント間を動的に選択します。1時間TTLのLRUキャッシュが繰り返しのブロックチェーンクエリを防ぎます。&lt;/p>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1771">PR #1771&lt;/a>は、そのフローにおけるレースコンディションとresolverの正しさを修正しました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1785">PR #1785&lt;/a>では、新規ユーザーが通常のNIP-05識別子またはNamecoinベースの識別子から、サインアップ時にフォローリストを取り込めるようになります。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1786">PR #1786&lt;/a>は、どのElectrumXサーバーで名前解決を行うかをユーザーが選べるカスタム設定を追加しました。&lt;/p>
&lt;h3 id="nostr-idb">nostr-idb&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/nostr-idb">nostr-idb&lt;/a>は、IndexedDBへのNostrイベント保存を補助するライブラリであり、&lt;a href="https://github.com/hzrd149/nostr-idb/pull/6">PR #6&lt;/a>をマージして&lt;a href="https://nostrcompass.org/ja/topics/nip-91/">NIP-91&lt;/a>のANDタグフィルターをサポートしました。この変更はクライアント側フィルターマッチングへ積集合セマンティクスを追加し、IndexedDBクエリが列挙されたタグ値のうち1つではなく、すべてを要求できるようにします。&lt;a href="https://github.com/hzrd149/nostr-idb/pull/8">PR #8&lt;/a>はライブラリを最新のNIP-DBインターフェースへ更新し、続く&lt;a href="https://github.com/hzrd149/nostr-idb/commit/b49b3d32c575ff8214dc3fb07675109c2a971972">commit b49b3d3&lt;/a>は購読デッドロックを修正するとともに、nostr-toolsを本番依存から外しました。&lt;/p>
&lt;h3 id="pensieve">Pensieve&lt;/h3>
&lt;p>&lt;a href="https://github.com/andotherstuff/pensieve">Pensieve&lt;/a>は、ClickHouse分析を備えたarchive-first Nostr indexerであり、&lt;a href="https://github.com/andotherstuff/pensieve/pull/8">PR #8&lt;/a>をマージして、エントリ単位のキャッシュTTL強制とキー単位のmiss coalescingを追加しました。最もコストの高い時系列エンドポイント（engagement stats、hourly activity、per-kind activity）は、同期的な再計算ストームを起こす代わりに、10分間のサーバー側TTLを使うようになっています。&lt;/p>
&lt;h3 id="blossom">Blossom&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>は、分散型メディアホスティングのプロトコル兼サーバースタックであり、BUD-11認可に関する2つの更新をマージしました。&lt;a href="https://github.com/hzrd149/blossom/pull/91">PR #91&lt;/a>は、オプション認可を独立したBUDへ切り出し、&lt;code>x&lt;/code>タグと&lt;code>server&lt;/code>タグの役割を明確化します。&lt;a href="https://github.com/hzrd149/blossom/pull/93">PR #93&lt;/a>は、エンドポイント固有の認可挙動を整理し、アップロード検証用&lt;code>X-SHA-256&lt;/code>ヘッダーを正式化します。この2件のPRで、認可ロジックはBUD-11へ統合され、アップロード、削除、メディア管理フローにおけるリクエストハッシュ処理の曖昧さが解消されます。&lt;/p>
&lt;h2 id="nip更新">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>マージ済み:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-91/">NIP-91&lt;/a>（フィルターのAND演算子）&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">PR #1365&lt;/a>）: タグフィルターへ積集合セマンティクスを追加し、relayが列挙されたタグ値のどれか1つではなく、すべてを要求するクエリに応答できるようにします。タグの多いクエリで、クライアント側の後処理と帯域幅を減らします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（relay発見と稼働監視）: 防御的措置&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">PR #2240&lt;/a>）: &lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">先週取り上げた&lt;/a>outbox benchmarkを受け、仕様はrelay監視データの不機嫌な経路に関する警告を追加しました。クライアントはkind &lt;code>30166&lt;/code>監視イベントを前提に動作してはなりません。監視者は誤っていることも、古いことも、悪意あることもあります。クライアントは複数ソースを照合し、単一フィードだけでユーザーのrelay graphの大部分を切り落とさないことが求められます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>（プロフィール内の外部ID）: kind 10011レジストリ整理&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2256">PR #2256&lt;/a>）: kind &lt;code>10011&lt;/code>への参照を仕様へ直接追加し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/">先週取り上げた&lt;/a>Amethyst実装と整合させます。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRと議論:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-70/">NIP-70&lt;/a>（Protected Events）: protected eventを埋め込んだリポストの拒否&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>）: relayが元イベントにはNIP-70を強制しても、同じ内容を含むリポストを受け入れてしまえば、&lt;code>-&lt;/code>タグは実質的な効果を持ちません。このPRは、relayがkind 6およびkind 16によるprotected eventのリポストも拒否しなければならないとするルールを追加します。&lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a>はすでにこれを実装しています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>（動画イベント）: 複数音声トラック&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2255">PR #2255&lt;/a>）: 代替トラック、言語バリアント、音声のみストリーム向けのaudio &lt;code>imeta&lt;/code>タグを追加します。クライアントは安定した動画ファイルを保ったまま音声言語だけを切り替えたり、ポッドキャストのようなコンテンツ向けに音声を別トラックとして配信したりできます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>（Relay Information Document）と&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>のrelay属性&lt;/strong>（&lt;a href="https://github.com/nostr-protocol/nips/pull/2257">PR #2257&lt;/a>）: relay情報ドキュメントに構造化された&lt;code>attributes&lt;/code>フィールドを追加し、現在の自由文descriptionを超える機械可読メタデータをクライアントやdiscoveryツールへ提供します。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説-nip-49秘密鍵暗号化">NIP詳細解説: NIP-49（秘密鍵暗号化）&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-49/">NIP-49&lt;/a>は、クライアントが秘密鍵をパスワードで暗号化し、その結果を&lt;code>ncryptsec&lt;/code> bech32文字列としてエンコードする方法を定義します。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-11-newsletter/#formstr">Formstr&lt;/a>は新しいサインアップフローでNIP-49を使っています。&lt;/p>
&lt;p>この形式は、専用のイベントkindに結びついているわけではありません。クライアントはまず生の32バイトsecp256k1秘密鍵を取り、scryptでユーザーのパスワードから対称鍵を導出し、XChaCha20-Poly1305で秘密鍵を暗号化してから、その結果をbech32の&lt;code>ncryptsec&lt;/code>文字列へ包みます。1バイトのフラグは、その鍵が暗号化前に安全でない取り扱いを受けたことがあるかどうかを記録します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4d47f4f0a6f6edbc1bbd7f4e2a45ec68f27cba91d6c6ab5cf28d8d87b0f3d57e&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1f8b4c3e7b0f9451d4f9b8a7c6e5d4c3b2a1908f7e6d5c4b3a29181716151413&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1741699200&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30078&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;encrypted-key-backup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;format&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;ncryptsec&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip49&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ncryptsec1qgg9947rlpvqu76pj5ecreduf9jxhselq2nae2kghhvd5g7dgjtcxfqtd67p9m0w57lspw8gsq6yphnm8623nsl8xn9j4jdzz84zm3frztj3z7s35vpzmqf6ksu8r89qk5z2zxfmu5gv8th8wclt0h4p&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;6a8f6e4b2d1901735f0ad4b6e8c1f3a579d0e2b4c6f8a1d3e5f7091b2c3d4e5f11223344556677889900aabbccddeeff00112233445566778899aabbccddeeff&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上のJSONイベントはアプリケーションレベルの例であり、NIP-49そのものの必須要件ではありません。NIPが標準化するのは暗号化された鍵フォーマットです。クライアントは&lt;code>ncryptsec&lt;/code>をローカルに保存してもよく、アプリ固有ストレージを通じて同期してもよく、バックアップ文字列としてエクスポートしてもかまいません。パスワードは鍵導出前にUnicode NFKCへ正規化されるため、同じパスワードならクライアントやプラットフォームをまたいでも一貫して復号できます。&lt;/p>
&lt;p>1バイトの鍵セキュリティフラグには3つの定義済み値があります。&lt;code>0x00&lt;/code>は鍵の取り扱い履歴が不明であること、&lt;code>0x01&lt;/code>は暗号化前に平文Webフォームへ貼り付けたなど安全でない取り扱いがあったことが分かっていること、&lt;code>0x02&lt;/code>は安全な文脈で生成・暗号化され、露出したことが一度もないことを意味します。クライアントはこれを使って、既知の不安全履歴を持つ鍵のインポート時に警告を表示できます。&lt;/p>
&lt;p>NIP-49は平文&lt;code>nsec&lt;/code>エクスポートより鍵を強く守りますが、その強さはパスワードと設定されたscryptコスト次第です。&lt;code>LOG_N&lt;/code>値を高くすればオフライン総当たりは難しくなりますが、正当な復号も遅くなります。仕様は、攻撃者にオフライン解析用のciphertext収集機会を与えるため、暗号化済み鍵を公開relayへ載せないよう警告しています。比較対象として、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名は鍵そのものを露出させず、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a> Android署名は鍵を専用署名アプリ内に閉じ込めます。NIP-49は別の役割を担います。自分で鍵を管理するユーザー向けの、持ち運び可能な暗号化バックアップです。&lt;/p>
&lt;p>実装例には、サインアップ向けの&lt;a href="https://github.com/formstr-hq/nostr-forms/pull/434">Formstr PR #434&lt;/a>、&lt;code>ncryptsec&lt;/code>のバックアップと復元に対応する&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>、アカウントインポートを追加した&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-11-newsletter/#divine-v106%e3%81%8ce2e%e3%83%86%e3%82%b9%e3%83%88%e5%9f%ba%e7%9b%a4%e3%81%a8nip-49%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%82%92%e5%87%ba%e8%8d%b7">diVine v1.0.6&lt;/a>、FROST shareエクスポート向けの&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-11-newsletter/#keep-v060">Keep v0.6.0&lt;/a>、そして&lt;a href="https://nsec.app">nsec.app&lt;/a>や&lt;a href="https://github.com/getAlby/hub">Alby&lt;/a>のような鍵管理ツールがあります。&lt;/p>
&lt;h2 id="nip詳細解説-nip-70protected-events">NIP詳細解説: NIP-70（Protected Events）&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-70/">NIP-70&lt;/a>はprotected eventを定義します。イベントが&lt;code>[&amp;quot;-&amp;quot;]&lt;/code>タグを持つ場合、relayは&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>認証を要求し、かつ認証済みpubkeyがイベント作成者と一致しない限り、それを拒否しなければなりません。&lt;/p>
&lt;p>NIP-42認証フローは次のとおりです。relayはランダム文字列を含む&lt;code>AUTH&lt;/code> challengeを送り、クライアントはrelay URLとchallengeをタグに含む署名済みkind &lt;code>22242&lt;/code>イベントで応答します。relayは署名を検証し、認証イベント内のpubkeyが、公開しようとしているprotected event内のpubkeyと一致することを確認します。pubkeyが一致しない場合、relayは&lt;code>restricted&lt;/code>メッセージ接頭辞とともにイベントを拒否します。&lt;/p>
&lt;p>イベント内容自体は公開でも構いません。&lt;code>-&lt;/code>タグが制御するのは、そのタグを尊重するrelayへ誰がそのイベントを公開できるかだけです。これは、&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>（Simple Groups）の半閉鎖フィード、メンバー専用relay空間、その他relay graphを通じた再配布を制限したい文脈を対象にしています。NIP-70は新しいイベントkindではなく単一タグによる慣例なので、既存のどのイベントkindにも&lt;code>-&lt;/code>タグを付けられます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;cb8feca582979d91fe90455867b34dbf4d65e4b86e86b3c68c368ca9f9eef6f2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1707409439&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;-&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;hello members of the secret group&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;fa163f5cfb75d77d9b6269011872ee22b34fb48d23251e9879bb1e4ccbdd8aaaf4b6dc5f5084a65ef42c52fbcde8f3178bac3ba207de827ec513a6aa39fa684c&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>relayが元イベントの第三者公開を防いでも、誰かがその内容をリポストに包んで再公開することはできます。&lt;a href="https://github.com/nostr-protocol/nips/pull/2251">PR #2251&lt;/a>はこれに対処し、relayがkind 6とkind 16のprotected eventリポストも拒否しなければならないと定めます。&lt;a href="https://github.com/hoytech/strfry/pull/156">strfry PR #156&lt;/a>はprotected event向けNIP-42認証を追加し、&lt;a href="https://github.com/hoytech/strfry/pull/176">strfry PR #176&lt;/a>はprotected contentを埋め込んだリポストを遮断します。&lt;/p>
&lt;p>NIP-70が制御するのはrelayの挙動です。受信者が別の場所に内容をコピーすることまでは防げませんし、仕様もそれを明記しています。&lt;code>-&lt;/code>タグは、relayに再公開拒否の機械可読シグナルを与えます。比較すると、&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Request to Vanish）はrelayに事後削除を求める一方、NIP-70は取り込み時点で未承認公開を防ぎます。両者は補完関係にあります。作成者は拡散を抑えるためにイベントをprotectedにでき、その後、受け入れてしまったrelayから削除したければ削除要求を送れます。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っているものがありますか。共有したいニュースはありますか。&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMでご連絡&lt;/a>いただくか、Nostr上で見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #12</title><link>https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a>が暗号化メディアと多言語バインディングを含む&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#marmot-development-kit%e3%81%8c%e5%88%9d%e3%81%ae%e5%85%ac%e9%96%8b%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%82%92%e5%87%ba%e8%8d%b7">初の公開リリース&lt;/a>を出荷。&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a>が14種のrelay選択アルゴリズムにわたる&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#%e3%82%a2%e3%82%a6%e3%83%88%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9%e3%83%a2%e3%83%87%e3%83%ab%e3%81%ae%e6%a4%9c%e8%a8%bc">アウトボックスモデルベンチマーク&lt;/a>を公開。&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>がTorと&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）署名を備え、8日間で&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#wisp%e3%81%8c%e3%82%a2%e3%83%ab%e3%83%95%e3%82%a1%e3%81%8b%e3%82%89%e3%83%99%e3%83%bc%e3%82%bf%e3%81%b8">アルファからベータ&lt;/a>に到達。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">NIP-91&lt;/a>（ANDフィルター）がマージ。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a>がnegentropy同期を15倍のパフォーマンス向上とともに提供。本号にはNostr2月の5年間回顧録も収録し、3つのrelayにサービスするスペック書き換えから、Damus App Store爆発、メッシュネットワーキングとAIエージェント提案までのプロトコルの歩みを辿ります。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="アウトボックスモデルの検証">アウトボックスモデルの検証&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a>が、異なるrelay選択アルゴリズムが分散relayネットワークからイベントをどの程度適切に取得するかをテストする一連のアウトボックスモデルベンチマークを公開しました。プロジェクトは10日間で16件のPRと76件のコミットをマージし、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>（Relayリストメタデータ）実装戦略に関する最も徹底的な実証分析となった可能性があります。&lt;/p>
&lt;p>ベンチマークは5言語15種のクライアントとライブラリにわたる実世界のフォローリストに対して14種のrelay選択アルゴリズムをテストしています。人気relayのみをクエリするベースラインアプローチではイベントの約26%を取得します。Thompson Samplingを用いた貪欲集合被覆は80-90%の再現率に達します。双曲線割引とEWMA relayレイテンシ追跡を使用するレイテンシ対応バリアントを追加すると、6つのテストプロファイルにわたって2秒時点での完全性が62-80%から72-96%に向上しました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（Relayモニタリング）のデッドrelayフィルタリングは大きな影響をもたらしました。&lt;a href="https://nostr.watch">nostr.watch&lt;/a>の稼働状況データに基づくrelay候補の事前フィルタリングにより、デッドrelayの40-64%が除外され、relay成功率が30%から75-85%に倍増しました。フィード読み込み時間は39%短縮されました（10プロファイルで40秒から24秒に）。EOSE-raceシミュレーションでは、EOSEプラス200msの猶予期間を待つことで、最初のrelayの完了時に停止するよりも完全性が向上することが判明しました。&lt;/p>
&lt;p>relay経路設定を完全に書き換えられないクライアント向けに、「ハイブリッドアウトボックスエンリッチメント」アプローチがあります。既存のハードコードされたアプリrelayの上に著者ごとのアウトボックスクエリを追加します。このハイブリッドは26%のベースラインに対して80%の1年間イベント再現率を達成し、レガシーrelayアーキテクチャを持つクライアントへの移行パスを提供します。&lt;/p>
&lt;h3 id="contextvmがmcp-nipを提出しエフェメラルgift-wrapを出荷">ContextVMがMCP NIPを提出しエフェメラルGift Wrapを出荷&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>はNostrと&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>を橋渡しするプロトコルで、今週&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>に2件の提案を提出しました。&lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a>はCVMをエフェメラルkind 25910イベントを使用してNostr上でMCP JSON-RPCメッセージを転送するための慣例として形式化します。&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）をエフェメラルkind（21059）で拡張し、&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>（基本プロトコルフロー）のエフェメラルセマンティクスに従って、relayが配信後にラップされたメッセージを破棄できるようにします。&lt;/p>
&lt;p>エフェメラルgift wrap慣例はContextVM SDK v0.6.xリリースファミリーの&lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a>として出荷されました。&lt;a href="https://github.com/ContextVM/sdk">SDK実装&lt;/a>はOPTIONAL（両方のkindを受け入れてピア機能を自動検出）、EPHEMERAL（kind 21059のみ）、PERSISTENT（kind 1059のみ）の3つの設定を持つ&lt;code>GiftWrapMode&lt;/code>列挙型を追加します。AIツール呼び出しでは、エフェメラルモードはrelayに中間リクエスト-レスポンストラフィックを保存することを回避し、ストレージコストとプライバシー露出の両方を削減します。&lt;/p>
&lt;p>独立した運営者から新しいパブリックMCPサーバーがネットワーク上に出現し、Wolfram Alphaクエリサーバーも含まれます。ContextVMチームはv0.6.xリリースサイクルとともにCEP-15（共通ツールスキーマ）とCEP-17（サーバーrelayリスト公開）を公開しました。&lt;/p>
&lt;h3 id="marmot-development-kitが初の公開リリースを出荷">Marmot Development Kitが初の公開リリースを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>（Marmot Development Kit）は&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>にわたる&lt;a href="https://nostrcompass.org/ja/topics/mls/">Marmot&lt;/a>暗号化メッセージングを支えるRustライブラリで、初の公開リリースとして&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a>を出荷しました。200件以上のPRがこのバージョンにマージされ、6人の新しいコントリビューターが参加しました。&lt;/p>
&lt;p>このリリースには暗号化メディアサポート（MIP-04）とHKDFシード導出（MIP-01 v2）、決定論的コミットレース解決（MIP-03）、暗号化ローカルストレージ、Marmotコミットとプロポーザルのための管理者認可バリデーション、プロトコル拡張性のためのGREASEサポートが含まれます。Kotlin、Python、Ruby、Windows向けのバインディングがAndroidクロスコンパイルとともに出荷されます。ライブラリはセキュリティアドバイザリ修正とメモリ内の機密値をゼロ化する&lt;code>Secret&amp;lt;T&amp;gt;&lt;/code>型を含むOpenMLS 0.8.0にアップグレードされています。&lt;/p>
&lt;p>コンパニオンプロトコル変更（&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>）はkind 445メッセージの&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）暗号化をChaCha20-Poly1305に置き換えました。NIP-44は仕様上UTF-8文字列入力を要求するため、標準的なTypeScript Nostrライブラリを通じて生のMarmotメッセージバイトを渡すことが不可能でした。代替方式はMarmotエクスポーターシークレットから直接キーを導出します。この破壊的変更は&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">コアスペック&lt;/a>、&lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a>、&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/54">TypeScript SDK&lt;/a>にわたる協調的なアップデートを必要としました。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>はhzrd149がメンテナンスするTypeScript実装で、4件のPRをマージし独自の破壊的API変更を含みます。&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">包括的アップデート&lt;/a>はcreate/publish/rotateライフサイクル用のキーパッケージマネージャー、&lt;code>sendChatMessage&lt;/code>コンビニエンスメソッド、参加なしの招待プレビュー（&lt;code>readInviteGroupInfo&lt;/code>）、前方秘密性ローテーションの自己アップデート、構造化デバッグログを追加しました。グループ復号APIは&lt;code>readGroupMessage&lt;/code>から&lt;code>decryptGroupMessage&lt;/code>に変更され、より豊富な結果バリアント（processed/skipped/rejected/unreadable）を持ちます。gzuuusはNIP-65 relayサポートとMIP-00に準拠したラストリゾートキーパッケージ処理を含むサンプルクリーンアップに貢献しました。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise CLI&lt;/a>（&lt;code>wn&lt;/code>）はモバイルアプリと新しいTUIの両方を支えるRustバックエンドで、10日間で16件のPRをマージしました。署名者ライフサイクル処理がRAAIスコープガードによるキャンセルセーフティ（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>）を獲得し、中断された操作が署名者の状態をリークする可能性のあるバグのクラスを修正しました。ログインは必要なrelayリスト（kind 10002/10050/10051）が欠落している場合にブロックするようになり（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>）、giftwrapサブスクリプションはinboxリストが不在の場合に&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relayにフォールバックします（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>）。デバッグモード（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>）はデータベースクエリとMLSラチェットツリーの検査をJSON出力として公開します。その他の修正は、署名者の再登録後のサブスクリプション回復、ウェルカムメッセージのキャッチアップタイミング、relayフィルターバリデーション、ユーザー検索半径制限に対応しました。&lt;/p>
&lt;p>Marmotは今週、コアのRustスタック以外でも大きな拡大を見せました。&lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>はWhite Noiseメッセージングスタックへのターミナルベースのインターフェースで、3月3日にローンチしました。&lt;code>wn&lt;/code> CLIをサブプロセスとしてラップし、そのJSON出力をElmにインスパイアされた単方向アーキテクチャでレンダリングし、未読インジケーター付きのマルチ会話ナビゲーション、グループ作成とメンバー検索、リアルタイムメッセージストリーミング、ターミナルからの絵文字リアクションを提供します。&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a>はRustツールチェーンの階層化アーキテクチャを反映した完全なC# Marmotスタックを公開しました。&lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a>はC#でMLS RFC 9420暗号プリミティブを実装します。&lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a>はその上にNostr relayトランスポートを追加し、MDKのC#相当として機能します。&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>は.NET 9とAvalonia UIで構築されたクロスプラットフォームデスクトップアプリで、NIP-44 DM、Marmotグループ暗号化、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）リモート署名、マルチrelayステータスインジケーターを備えた動作するチャットクライアントに両者を統合します。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a>が暗号化メディアと多言語バインディングを含む&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#marmot-development-kit%e3%81%8c%e5%88%9d%e3%81%ae%e5%85%ac%e9%96%8b%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%82%92%e5%87%ba%e8%8d%b7">初の公開リリース&lt;/a>を出荷。&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a>が14種のrelay選択アルゴリズムにわたる&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#%e3%82%a2%e3%82%a6%e3%83%88%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9%e3%83%a2%e3%83%87%e3%83%ab%e3%81%ae%e6%a4%9c%e8%a8%bc">アウトボックスモデルベンチマーク&lt;/a>を公開。&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>がTorと&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android署名アプリケーション）署名を備え、8日間で&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#wisp%e3%81%8c%e3%82%a2%e3%83%ab%e3%83%95%e3%82%a1%e3%81%8b%e3%82%89%e3%83%99%e3%83%bc%e3%82%bf%e3%81%b8">アルファからベータ&lt;/a>に到達。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#nip%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">NIP-91&lt;/a>（ANDフィルター）がマージ。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#vector-v031">Vector v0.3.1&lt;/a>がnegentropy同期を15倍のパフォーマンス向上とともに提供。本号にはNostr2月の5年間回顧録も収録し、3つのrelayにサービスするスペック書き換えから、Damus App Store爆発、メッシュネットワーキングとAIエージェント提案までのプロトコルの歩みを辿ります。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="アウトボックスモデルの検証">アウトボックスモデルの検証&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostrability/outbox">Nostrability&lt;/a>が、異なるrelay選択アルゴリズムが分散relayネットワークからイベントをどの程度適切に取得するかをテストする一連のアウトボックスモデルベンチマークを公開しました。プロジェクトは10日間で16件のPRと76件のコミットをマージし、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>（Relayリストメタデータ）実装戦略に関する最も徹底的な実証分析となった可能性があります。&lt;/p>
&lt;p>ベンチマークは5言語15種のクライアントとライブラリにわたる実世界のフォローリストに対して14種のrelay選択アルゴリズムをテストしています。人気relayのみをクエリするベースラインアプローチではイベントの約26%を取得します。Thompson Samplingを用いた貪欲集合被覆は80-90%の再現率に達します。双曲線割引とEWMA relayレイテンシ追跡を使用するレイテンシ対応バリアントを追加すると、6つのテストプロファイルにわたって2秒時点での完全性が62-80%から72-96%に向上しました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>（Relayモニタリング）のデッドrelayフィルタリングは大きな影響をもたらしました。&lt;a href="https://nostr.watch">nostr.watch&lt;/a>の稼働状況データに基づくrelay候補の事前フィルタリングにより、デッドrelayの40-64%が除外され、relay成功率が30%から75-85%に倍増しました。フィード読み込み時間は39%短縮されました（10プロファイルで40秒から24秒に）。EOSE-raceシミュレーションでは、EOSEプラス200msの猶予期間を待つことで、最初のrelayの完了時に停止するよりも完全性が向上することが判明しました。&lt;/p>
&lt;p>relay経路設定を完全に書き換えられないクライアント向けに、「ハイブリッドアウトボックスエンリッチメント」アプローチがあります。既存のハードコードされたアプリrelayの上に著者ごとのアウトボックスクエリを追加します。このハイブリッドは26%のベースラインに対して80%の1年間イベント再現率を達成し、レガシーrelayアーキテクチャを持つクライアントへの移行パスを提供します。&lt;/p>
&lt;h3 id="contextvmがmcp-nipを提出しエフェメラルgift-wrapを出荷">ContextVMがMCP NIPを提出しエフェメラルGift Wrapを出荷&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>はNostrと&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>を橋渡しするプロトコルで、今週&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>に2件の提案を提出しました。&lt;a href="https://github.com/nostr-protocol/nips/pull/2246">PR #2246&lt;/a>はCVMをエフェメラルkind 25910イベントを使用してNostr上でMCP JSON-RPCメッセージを転送するための慣例として形式化します。&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">PR #2245&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>（Gift Wrap）をエフェメラルkind（21059）で拡張し、&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>（基本プロトコルフロー）のエフェメラルセマンティクスに従って、relayが配信後にラップされたメッセージを破棄できるようにします。&lt;/p>
&lt;p>エフェメラルgift wrap慣例はContextVM SDK v0.6.xリリースファミリーの&lt;a href="https://docs.contextvm.org/spec/ceps/cep-19/">CEP-19&lt;/a>として出荷されました。&lt;a href="https://github.com/ContextVM/sdk">SDK実装&lt;/a>はOPTIONAL（両方のkindを受け入れてピア機能を自動検出）、EPHEMERAL（kind 21059のみ）、PERSISTENT（kind 1059のみ）の3つの設定を持つ&lt;code>GiftWrapMode&lt;/code>列挙型を追加します。AIツール呼び出しでは、エフェメラルモードはrelayに中間リクエスト-レスポンストラフィックを保存することを回避し、ストレージコストとプライバシー露出の両方を削減します。&lt;/p>
&lt;p>独立した運営者から新しいパブリックMCPサーバーがネットワーク上に出現し、Wolfram Alphaクエリサーバーも含まれます。ContextVMチームはv0.6.xリリースサイクルとともにCEP-15（共通ツールスキーマ）とCEP-17（サーバーrelayリスト公開）を公開しました。&lt;/p>
&lt;h3 id="marmot-development-kitが初の公開リリースを出荷">Marmot Development Kitが初の公開リリースを出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/mdk">MDK&lt;/a>（Marmot Development Kit）は&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>にわたる&lt;a href="https://nostrcompass.org/ja/topics/mls/">Marmot&lt;/a>暗号化メッセージングを支えるRustライブラリで、初の公開リリースとして&lt;a href="https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0">v0.6.0&lt;/a>を出荷しました。200件以上のPRがこのバージョンにマージされ、6人の新しいコントリビューターが参加しました。&lt;/p>
&lt;p>このリリースには暗号化メディアサポート（MIP-04）とHKDFシード導出（MIP-01 v2）、決定論的コミットレース解決（MIP-03）、暗号化ローカルストレージ、Marmotコミットとプロポーザルのための管理者認可バリデーション、プロトコル拡張性のためのGREASEサポートが含まれます。Kotlin、Python、Ruby、Windows向けのバインディングがAndroidクロスコンパイルとともに出荷されます。ライブラリはセキュリティアドバイザリ修正とメモリ内の機密値をゼロ化する&lt;code>Secret&amp;lt;T&amp;gt;&lt;/code>型を含むOpenMLS 0.8.0にアップグレードされています。&lt;/p>
&lt;p>コンパニオンプロトコル変更（&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">MIP-03&lt;/a>）はkind 445メッセージの&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>（暗号化ペイロード）暗号化をChaCha20-Poly1305に置き換えました。NIP-44は仕様上UTF-8文字列入力を要求するため、標準的なTypeScript Nostrライブラリを通じて生のMarmotメッセージバイトを渡すことが不可能でした。代替方式はMarmotエクスポーターシークレットから直接キーを導出します。この破壊的変更は&lt;a href="https://github.com/marmot-protocol/marmot/pull/48">コアスペック&lt;/a>、&lt;a href="https://github.com/marmot-protocol/mdk/pull/208">MDK&lt;/a>、&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/54">TypeScript SDK&lt;/a>にわたる協調的なアップデートを必要としました。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>はhzrd149がメンテナンスするTypeScript実装で、4件のPRをマージし独自の破壊的API変更を含みます。&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/52">包括的アップデート&lt;/a>はcreate/publish/rotateライフサイクル用のキーパッケージマネージャー、&lt;code>sendChatMessage&lt;/code>コンビニエンスメソッド、参加なしの招待プレビュー（&lt;code>readInviteGroupInfo&lt;/code>）、前方秘密性ローテーションの自己アップデート、構造化デバッグログを追加しました。グループ復号APIは&lt;code>readGroupMessage&lt;/code>から&lt;code>decryptGroupMessage&lt;/code>に変更され、より豊富な結果バリアント（processed/skipped/rejected/unreadable）を持ちます。gzuuusはNIP-65 relayサポートとMIP-00に準拠したラストリゾートキーパッケージ処理を含むサンプルクリーンアップに貢献しました。&lt;/p>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise CLI&lt;/a>（&lt;code>wn&lt;/code>）はモバイルアプリと新しいTUIの両方を支えるRustバックエンドで、10日間で16件のPRをマージしました。署名者ライフサイクル処理がRAAIスコープガードによるキャンセルセーフティ（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/538">PR #538&lt;/a>）を獲得し、中断された操作が署名者の状態をリークする可能性のあるバグのクラスを修正しました。ログインは必要なrelayリスト（kind 10002/10050/10051）が欠落している場合にブロックするようになり（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/515">PR #515&lt;/a>）、giftwrapサブスクリプションはinboxリストが不在の場合に&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relayにフォールバックします（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/518">PR #518&lt;/a>）。デバッグモード（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/528">PR #528&lt;/a>）はデータベースクエリとMLSラチェットツリーの検査をJSON出力として公開します。その他の修正は、署名者の再登録後のサブスクリプション回復、ウェルカムメッセージのキャッチアップタイミング、relayフィルターバリデーション、ユーザー検索半径制限に対応しました。&lt;/p>
&lt;p>Marmotは今週、コアのRustスタック以外でも大きな拡大を見せました。&lt;a href="https://github.com/marmot-protocol/wn-tui">White Noise TUI&lt;/a>はWhite Noiseメッセージングスタックへのターミナルベースのインターフェースで、3月3日にローンチしました。&lt;code>wn&lt;/code> CLIをサブプロセスとしてラップし、そのJSON出力をElmにインスパイアされた単方向アーキテクチャでレンダリングし、未読インジケーター付きのマルチ会話ナビゲーション、グループ作成とメンバー検索、リアルタイムメッセージストリーミング、ターミナルからの絵文字リアクションを提供します。&lt;/p>
&lt;p>&lt;a href="https://github.com/DavidGershony">DavidGershony&lt;/a>はRustツールチェーンの階層化アーキテクチャを反映した完全なC# Marmotスタックを公開しました。&lt;a href="https://github.com/DavidGershony/dotnet-mls">dotnet-mls&lt;/a>はC#でMLS RFC 9420暗号プリミティブを実装します。&lt;a href="https://github.com/DavidGershony/marmot-cs">marmot-cs&lt;/a>はその上にNostr relayトランスポートを追加し、MDKのC#相当として機能します。&lt;a href="https://github.com/DavidGershony/openChat">OpenChat&lt;/a>は.NET 9とAvalonia UIで構築されたクロスプラットフォームデスクトップアプリで、NIP-44 DM、Marmotグループ暗号化、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）リモート署名、マルチrelayステータスインジケーターを備えた動作するチャットクライアントに両者を統合します。&lt;/p>
&lt;p>&lt;a href="https://github.com/zerosats/mdk-pwa-reference">MDK PWA Reference&lt;/a>はMarmot暗号化アプリケーションを構築するためのProgressive Web Appテンプレートを提供し、グループチャットへのAIエージェント参加とArkadeウォレットインフラを通じたBitcoin支払いの実験的サポートを含みます。&lt;/p>
&lt;h3 id="wispがアルファからベータへ">Wispがアルファからベータへ&lt;/h3>
&lt;p>&lt;a href="https://github.com/barrydeen/wisp">Wisp&lt;/a>は新しいAndroid Nostrクライアントで、2月24日の&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha">初のアルファ&lt;/a>から3月3日の&lt;a href="https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta">v0.3.4-beta&lt;/a>まで、8日間で19リリース、115件のマージ済みPR、276件のコミットを生み出しました。&lt;/p>
&lt;p>機能の軌跡は、ほとんどのクライアントが到達するのに数か月かかる領域をカバーしています。v0.1.0はoutbox/inbox relayモデルサポートとオンボーディングフローを搭載して出荷されました。v0.1.3までにクライアントはAmber向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>インテントベース署名、&lt;code>.onion&lt;/code> relay接続用の組み込みTor SOCKS5プロキシ、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>（Nostr Wallet Connect）を備えました。v0.2.0はミュートリストフィルタリングとカスタム絵文字サポートでベータに昇格し、v0.2.4はコンテンツ警告オーバーレイを追加しました。v0.3.xシリーズはノート向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-13/">NIP-13&lt;/a>プルーフオブワーク、永続設定によるバックグラウンドPoWマイニング、&lt;code>.onion&lt;/code> relayストレージ、ミュートスレッド通知を導入しました。&lt;/p>
&lt;p>Google ML Kitによるオンデバイス翻訳は、最初のモデルダウンロード後はネットワークアクセスなしでローカルに実行されます。インタラクティブなソーシャルグラフ可視化は、ピンチズームナビゲーションとプロフィール検査を備えた約30fpsのvelocity Verlet物理シミュレーションを使用します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="vector-v031">Vector v0.3.1&lt;/h3>
&lt;p>Marmot暗号化メッセージングアプリの&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>が、グループ管理の改善とパフォーマンス作業を含む&lt;a href="https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1">v0.3.1&lt;/a>を出荷しました。マルチ管理者グループ、一括招待、npubによる招待、グループアバターがコラボレーション機能を拡張します。Androidバックグラウンド通知がインラインの返信と既読マークアクションをサポートするようになりました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">Negentropy&lt;/a>ベースの決定論的同期がオフライン中に見逃されたメッセージを含む完全な会話履歴を取得します。音声テキスト変換がAndroidでGPUアクセラレーションにより再構築されました。ファイル添付処理がダウンロード進捗、再試行ステート、ディレクトリのzip送信、全体にわたるライブ進捗インジケーターで刷新されました。起動時間、画像処理、オーディオ再生、一般的なUIレスポンシブネスにわたってパフォーマンスが15倍以上向上しました。アプリインストールサイズは3分の1以上削減され、フロントエンドは約半分に縮小されました。32ビットARM Androidサポートが追加されました。&lt;/p>
&lt;h3 id="alby-hub-v1215">Alby Hub v1.21.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>はNostr Wallet Connect（&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>）をサポートするセルフカストディアルLightningノードで、&lt;a href="https://github.com/getAlby/hub/releases/tag/v1.21.5">v1.21.5&lt;/a>を出荷しました。デフォルトのNWC設定に2つ目のrelayが追加され、relay再起動時の信頼性が向上しました。トランザクションリスト内の無効なzapデータの修正により、不正な形式の&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>（Lightning Zaps）イベントの表示問題が解消されました。新しいアプリストアエントリにはAlby CLIとLNVPSが含まれます。&lt;/p>
&lt;h3 id="nospeak-v012x">nospeak v0.12.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/psic4t/nospeak">nospeak&lt;/a>はテキストベースのNostrメッセージングクライアントで、この期間に3つのリリースを出荷しました。&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.0">v0.12.0&lt;/a>は4桁キーパッドによるPINアプリロックと、ベンガル語、タイ語、ベトナム語、ヒンディー語、アラビア語、ヘブライ語、ウルドゥー語、トルコ語、日本語、中国語、韓国語、オランダ語、ポーランド語、ロシア語、ペルシア語のRTLサポートを含む15以上の新しい言語翻訳を追加しました。&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.1">v0.12.1&lt;/a>は純粋な黒背景とシアンアクセントのCypherテーマに加え、Android動画ポスター生成を導入しました。&lt;a href="https://github.com/psic4t/nospeak/releases/tag/v0.12.2">v0.12.2&lt;/a>は連絡先メニューにチャットエクスポートとプロフィール表示を追加しました。&lt;/p>
&lt;h3 id="citrine-v200-pre2">Citrine v2.0.0-pre2&lt;/h3>
&lt;p>greenart7c3によるAndroidパーソナルrelayの&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>が、新しいデータベースインデックスと再構成されたKotlinコルーチンによるrelayパフォーマンス改善を含む&lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2">v2.0.0-pre2&lt;/a>を出荷しました。各ホステッドウェブアプリが独自のポートで起動するようになりました。全文検索とイベント展開機能を備えた再設計されたイベント画面が変更を締めくくります。&lt;/p>
&lt;h3 id="noornote-v05x">NoorNote v0.5.x&lt;/h3>
&lt;p>&lt;a href="https://github.com/77elements/noornote">NoorNote&lt;/a>はNostrベースのノートテイキングアプリケーションで、&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.0">v0.5.0&lt;/a>から&lt;a href="https://github.com/77elements/noornote/releases/tag/v0.5.7">v0.5.7&lt;/a>まで8つのリリースを出荷しました。v0.5.0のAndroidローンチでは&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a> Amber署名者サポートと&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>（動画イベント）ノート公開が追加されました。v0.5.1の再設計されたウェルカムページにはパブリックタイムラインプレビューが含まれ、APKが15 MBに縮小されました。v0.5.2のRelay Browserではユーザーが共有可能なURLを通じてパブリックrelayタイムラインを閲覧でき、メディアダウンロードと&lt;a href="https://nostrcompass.org/ja/topics/nip-30/">NIP-30&lt;/a>カスタム絵文字リアクションも搭載されました。v0.5.7までの後続リリースでは、協調的な「tribes」ノート共有システムにおける同期競合状態に対処しました。&lt;/p>
&lt;h3 id="noscall-v051">NosCall v0.5.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>はNostr音声・動画通話アプリで、音声メッセージサポート、グループエントリーを含む最適化されたデスクトップエクスペリエンス、デスクトップでの連絡先お気に入り、連絡先ノートとフィルタリング、データエクスポートとクリーンアップオプション、システムフォントサイズのアクセシビリティサポートを含む&lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.1-release">v0.5.1&lt;/a>を出荷しました。&lt;/p>
&lt;h3 id="shosho-v0130">Shosho v0.13.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>はNostrライブストリーミングアプリで、ストリームカードメニューからのMP4リプレイダウンロードとプロフィール向け&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>（DNSベース検証）を含む&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0">v0.13.0&lt;/a>を出荷しました。RTMPパブリッシャーはExpo Modules APIに移行されました。低帯域幅接続でのストリーミングパフォーマンスが改善され、旧型デバイスでのクラッシュと&lt;a href="https://zap.stream">Zap.Stream&lt;/a>へのiOSストリーミングが修正されました。&lt;/p>
&lt;h3 id="nostr-java-v200">nostr-java v2.0.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java">nostr-java&lt;/a>は設定可能なWebSocketバッファサイズを含む&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0">v2.0.0&lt;/a>を出荷し、アプリケーションがより大きなNostrイベントを切り捨てなしに処理できるようになりました。メジャーバージョンのバンプは接続APIへの破壊的変更を反映しています。&lt;/p>
&lt;h3 id="prism-110">Prism 1.1.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>はlong-formコンテンツサポート（kind 30023記事）とアプリ内で直接作成するためのMarkdownエディターを含む&lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.0">1.1.0&lt;/a>を出荷し、続いて&lt;a href="https://github.com/hardran3/Prism/releases/tag/1.1.1">1.1.1&lt;/a>のバグ修正リリースが行われました。&lt;/p>
&lt;h3 id="angor-v026">Angor v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/block-core/angor">Angor&lt;/a>はBitcoinクラウドファンディングプラットフォームで、Boltz統合とワンクリック投資フローを含む&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.6">v0.2.6&lt;/a>を出荷しました。投資と資金調達の両プロジェクトタイプがtestnet上でエンドツーエンドで動作します。チームはUIが約70%完成していると述べています。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1365">NIP-91: フィルターのAND演算子&lt;/a>&lt;/strong>：relayサブスクリプションのタグ配列にANDフィルターセマンティクスを追加します。現在、タグフィルターに複数の値を指定すると（例：複数の&lt;code>p&lt;/code>タグ）、そのいずれかを含むイベントにマッチします。NIP-91では指定されたすべてのタグ値に同時にマッチするイベントをクライアントが要求でき、帯域幅を削減しより高速なインデックス操作を可能にします。nostr-rs-relay、satellite-node、worker-relay、applesauceを含む複数のrelay実装が既に存在します。以前はNIP-119として番号付けされていました。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2247">NIP-30: タグ内の絵文字セットアドレス&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/topics/nip-30/">NIP-30&lt;/a>のカスタム絵文字タグにオプションの絵文字セットアドレスを含められるようになりました。クライアント内で絵文字をクリックすると、ブックマークやブラウジングのためにその絵文字が属するセットを開けます。&lt;a href="https://github.com/purrgrammer/chachi">Chachi&lt;/a>クライアントに由来します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2111">NIP-29: unallowpubkeyとunbanpubkeyの追加&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループチャット用の2つの新しい管理者コマンド。&lt;code>unallowpubkey&lt;/code>はBANせずに許可リストからpubkeyを削除します。&lt;code>unbanpubkey&lt;/code>はメンバーリストにpubkeyを再追加せずにBANを解除します。以前は許可リストからの削除にはBANが伴い、BANの解除にはメンバーとしての再追加が必要でした。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2244">NIP-A7: Spells&lt;/a>&lt;/strong>（2月27日オープン）：purrgrammerによる提案で、spellsはkind 777イベントとして公開されるポータブルな保存済みNostrクエリです。spellはREQまたはCOUNTフィルターを構造化タグ（kindの&lt;code>k&lt;/code>、pubkeyの&lt;code>authors&lt;/code>、任意のタグフィルターの&lt;code>tag&lt;/code>）にエンコードし、ランタイム変数を持ちます。&lt;code>$me&lt;/code>はログインユーザーのpubkeyに解決され、&lt;code>$contacts&lt;/code>はユーザーのkind 3フォローリストに展開されます。相対タイムスタンプ（&lt;code>7d&lt;/code>、&lt;code>2w&lt;/code>、&lt;code>1mo&lt;/code>）によりハードコードされた日付なしにローリングタイムウィンドウを定義できます。&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>と&lt;a href="https://github.com/purrgrammer/grimoire">Grimoire&lt;/a>で既に実装されており、spellsによりユーザーはクライアントをまたいで移動するキュレートされたフィードを作成、共有、購読できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2245">NIP-59: エフェメラルGift Wrap（kind 21059）&lt;/a>&lt;/strong>（2月27日オープン）：&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift wrapのエフェメラルバリアントを追加します。kind 21059はNIP-01エフェメラルセマンティクスに従い、relayは配信後にイベントを破棄します。メッセージの永続化が不要なMCPトランスポート向けにContextVMが提案しました。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2246">ContextVM: Nostr上のMCP JSON-RPC&lt;/a>&lt;/strong>（2月27日オープン）：エフェメラルkind 25910イベントとアドレッシングおよび相関のための&lt;code>p&lt;/code>と&lt;code>e&lt;/code>タグを使用して、Model Context ProtocolメッセージをNostr上で転送する方法を規定します。意図的に薄い仕様で、プロトコルの詳細は&lt;a href="https://docs.contextvm.org">ContextVMスペック&lt;/a>に委ねています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2238">NIP-29: オーディオ/ビデオライブスペース&lt;/a>&lt;/strong>（2月25日オープン、ドラフト）：fiatjafによるドラフトで、&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループにライブオーディオとビデオを拡張します。グループメタデータイベントにオプションの&lt;code>livekit&lt;/code>と&lt;code>no-text&lt;/code>タグを追加します。ユーザーが音声スペースに参加する際、クライアントは&lt;code>/.well-known/nip29/livekit/{groupId}&lt;/code>でrelayにJWTをリクエストします。relayはグループメンバーシップを確認し、ユーザーの16進pubkeyを&lt;code>sub&lt;/code>クレームとするトークンを発行し、&lt;a href="https://livekit.io/">LiveKit&lt;/a>にメディアトランスポートのために渡されます。音声ルームのアクセスはグループの既存の権限モデルを継承するため、relayサイドのメンバーシップルールが発言者を管理します。PyramidとChachiでテスト中です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2235">協調的イベント所有権&lt;/a>&lt;/strong>（2月24日オープン）：pablof7zはポインターイベント（kind 39382）を提案し、&lt;code>p&lt;/code>タグに共同所有者のpubkeyを、&lt;code>k&lt;/code>タグに対象イベントkindを記載して協調的空間を宣言します。リストされた所有者は誰でも同じ&lt;code>d&lt;/code>タグでそのkindのイベントを公開でき、クライアントはすべての所有者をクエリして最新のイベントを採用することで現在の状態を解決します。共同著者属性は、検証可能な&lt;code>a&lt;/code>タグがポインターを逆参照し著者がその&lt;code>p&lt;/code>タグに含まれる場合にのみ表示され、なりすましを防ぎます。これにより共有Wikiページや共同著作リソースを単一のキーペアに制御を割り当てることなく実現できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2234">NIP-09: リポストの連鎖削除&lt;/a>&lt;/strong>（2月24日オープン）：元の著者がノートを削除した場合、relayはそれを参照するkind 6またはkind 16のリポストも削除すべきです。著者がソースを削除した後にリポストが誤って漏洩した情報を保持しうるプライバシー上の懸念から動機づけられています。変更はrelayサイドのみで、クライアントの修正は不要です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2233">NIP-07: peekPublicKey&lt;/a>&lt;/strong>（2月23日オープン）：&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>ブラウザ拡張機能に&lt;code>peekPublicKey()&lt;/code>メソッドを追加します。&lt;code>getPublicKey()&lt;/code>とは異なり、ユーザー確認のプロンプトなしに現在のpubkeyを返し、ユーザーが自動ログインを有効にしている場合のサイレント自動ログインを可能にします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2248">NIP-BB: Book&lt;/a>&lt;/strong>（2月28日オープン、ドラフト）：Nostr上の構造化された書籍出版のために4つのアドレス可能イベントkind（30300-30303）を定義します。Coverイベントはタイトル、カバー画像、&lt;a href="https://nostrcompass.org/ja/topics/nip-32/">NIP-32&lt;/a>（ラベリング）ラベルによるライセンス、言語コードを含むルートメタデータを保持します。Indexイベントはbase62分数インデックスを使用して各章をその位置にマッピングし、著者が既存の章の間に番号の振り直しなしに新しい章を挿入できます。Chapterイベントはオプションの画像を含む構造的ヘッダーとして機能し、Episodeイベントは30,000文字上限の実際の散文を配置画像タグとともに運びます。レビューはCoverイベントへのZapで行われ、Zap説明がレビューテキストとなります。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2242">NIP-54: AsciidocからDjotへの切り替え&lt;/a>&lt;/strong>（2月26日オープン）：12月の&lt;a href="https://nostrcompass.org/en/newsletters/2025-12-31-newsletter/">d-tag国際化修正&lt;/a>に続き、このPRは&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a> WikiのAsciidocマークアップ形式を&lt;a href="https://djot.net/">Djot&lt;/a>に置き換えることを提案し、非ラテン文字スクリプトの理由説明セクションとwikilinkの例を追加します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2240">NIP-66: 防御的措置&lt;/a>&lt;/strong>（2月26日オープン）：&lt;a href="https://nostrcompass.org/ja/newsletters/2026-03-04-newsletter/#%e3%82%a2%e3%82%a6%e3%83%88%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9%e3%83%a2%e3%83%87%e3%83%ab%e3%81%ae%e6%a4%9c%e8%a8%bc">nostrability/outbox&lt;/a>ベンチマークからの学びに基づき、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>のエッジケースに対する明示的な注意事項を追加します。コンパニオン&lt;a href="https://github.com/nostr-protocol/nips/pull/2241">PR #2241&lt;/a>はSSL、位置情報、ネットワーク、接続性チェックの出力タグを定義します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-C1: 暗号学的アイデンティティ証明&lt;/strong>（wikiエントリ、kind 30817）：APK署名証明書をNostrプロフィールに暗号学的に紐づけるkind 30509イベントを提案します。証明は証明書の秘密鍵でNostr pubkeyを含む正規メッセージに署名し（ECDSA、RSA PKCS1v15、Ed25519などの標準アルゴリズムをサポート）、その署名をNostr鍵で署名されたkind 30509イベントとして公開することで機能します。検証者はアプリのAndroid署名証明書を制御する人物が、それを公開すると主張するNostr pubkeyも制御していることを確認できます。証明はデフォルトで1年後に失効し、明示的に取り消すこともできます。&lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>ツールチェーンで実装されています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NIP-31402: SARA収益シェアオファリングレジストリ&lt;/strong>（wikiエントリ、kind 30817）：Nostr relay上でSimple Autonomous Revenue Agreement（SARA）オファリングを公開するためのkind 31402アドレス可能イベントを定義します。発行者はプール共有パーセンテージ、支払いトリガー、satsでの閾値、期間長、段階的料金設定を含むLightning決済型収益シェア条件を広告します。エージェントと人間は中央プラットフォームなしにrelay全体でオファリングを発見し自律的にサブスクライブできます。kind番号はkind 30402（L402サービスレジストリ、コンパニオンwikiエントリとして同じ著者が公開）を反映しており、SARAがL402支払い関係のリターンレグを表すためです。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="オープンprとプロジェクトアップデート">オープンPRとプロジェクトアップデート&lt;/h2>
&lt;h3 id="damus-nip-89jatopicsnip-89推奨アプリケーションハンドラー">Damus: &lt;a href="https://nostrcompass.org/ja/topics/nip-89/">NIP-89&lt;/a>（推奨アプリケーションハンドラー）&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3337">PR #3337&lt;/a>が&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>にNIP-89クライアントタグサポートを実装します。アプリはすべての投稿パス（メインアプリ、共有拡張機能、ハイライター、ドラフト）でクライアントタグを送出し、他のアプリがタグを含む場合にタイムスタンプの横に「via ClientName」を表示します。外観設定のプライバシートグルでユーザーがタグ送出を無効にできます。&lt;a href="https://github.com/damus-io/damus/pull/3652">PR #3652&lt;/a>はNostrDBとKingfisherキャッシュのディスク使用量をエクスポートサポート付きのインタラクティブ円グラフで分解する設定内ストレージセクションを追加します。&lt;/p>
&lt;p>オープン：&lt;a href="https://github.com/damus-io/damus/pull/3657">PR #3657&lt;/a>は引用ノート向けの&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a> relayフォールバックを追加します。インラインの&lt;code>nevent&lt;/code>に著者pubkeyが含まれるがrelayヒントがなくノートがユーザーのプールに見つからない場合、Damusは著者のkind 10002 relayリストを取得し、そのwrite relayから再試行します。&lt;/p>
&lt;h3 id="amethyst-nip-39jatopicsnip-39外部アイデンティティnip-c0nip-66jatopicsnip-66">Amethyst: &lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>（外部アイデンティティ）、NIP-C0、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は28件のPRにわたるNIP実装の大規模な波をマージしました。外部アイデンティティクレームは&lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>の下で専用kind 10011イベントとして公開されるようになり（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1747">PR #1747&lt;/a>）、後方互換フォールバック付きでソーシャルアイデンティティをkind 0メタデータから分離します。NIP-C0によるコードスニペットサポート（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1744">PR #1744&lt;/a>）は言語、拡張子、ランタイム、ライセンス、依存関係のアクセサーを持つkind 1337イベントを追加します。&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a> relayモニタリング実装（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1742">PR #1742&lt;/a>）はRTTメトリクス、ネットワークタイプ、サポートされるNIP、geohashの完全なタグパースを含む両イベントkindをカバーします。&lt;/p>
&lt;p>暗号化DMがAmethyst Desktop（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1710">PR #1710&lt;/a>）に到着し、&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>（暗号化ダイレクトメッセージ）と&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）の両方をサポートするスプリットペインチャットレイアウトを備えます。新しいrelayフィード画面（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1733">PR #1733&lt;/a>）はフォロー/アンフォロー機能付きで特定のrelayからの投稿を閲覧できます。オープン：検閲耐性NIP-05検証（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1734">PR #1734&lt;/a>）はHTTP DNSの代わりにNamecoinブロックチェーンに対して解決する&lt;code>.bit&lt;/code>識別子の並列検証パスを追加します。AmethystがNIP-05フィールドで&lt;code>.bit&lt;/code>サフィックスを検出すると、ElectrumX-NMCサーバーに名前のトランザクション履歴をクエリし、最新の出力から&lt;code>NAME_UPDATE&lt;/code>スクリプトを解析してNostr pubkeyを抽出し、36,000ブロック（Namecoinの有効期限ウィンドウ）より古い名前を拒否します。ElectrumX接続はTor有効時にSOCKS5を経由し、クリアネットと&lt;code>.onion&lt;/code>エンドポイント間の動的サーバー選択を行います。1時間TTLのLRUキャッシュが繰り返しのブロックチェーンクエリを防ぎます。&lt;/p>
&lt;h3 id="notedeck-アウトボックスアーキテクチャ">Notedeck: アウトボックスアーキテクチャ&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1303">PR #1303&lt;/a>は&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>をアドホックなrelayプール管理からアカウントスコープのサブスクリプションを持つ集中型アウトボックスモデルに移行します。Messagesモジュールはデフォルトのリストが存在しない場合にデフォルトのDM relayリストを公開し、kind 10050ごとに受信者の優先relayにDMをルーティングするようになりました。&lt;/p>
&lt;h3 id="pika-グループごとのプロフィールとチュートリアルフィード">Pika: グループごとのプロフィールとチュートリアルフィード&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>はiOS、Android、デスクトップビルドで利用可能なMarmot暗号化メッセージングアプリで、グループごとのプロフィール（&lt;a href="https://github.com/sledtools/pika/pull/368">PR #368&lt;/a>）を獲得しました。ユーザーは各グループチャットに個別の表示名と画像、カスタムプロフィールを設定できるようになりました。これらのプロフィールはMarmotグループ内の暗号化kind 0イベントとして公開され、外部からは見えません。グループ固有のプロフィールが設定されていない場合はユーザーのグローバルNostrプロフィールにフォールバックします。新メンバーが参加すると、管理者は保存されたすべてのグループプロフィールを再ブロードキャストし、各メンバーはコミット時に自分のプロフィールを再公開します。プロフィール画像はBlossomアップロード前にMarmotメディア暗号化されます。PRには16の新しいユニットテストが含まれ、CLIコマンド（&lt;code>update-group-profile&lt;/code>）とUIの両方で機能を公開します。&lt;/p>
&lt;p>新しい&lt;code>pika-news&lt;/code>ウェブアプリ（&lt;a href="https://github.com/sledtools/pika/pull/401">PR #401&lt;/a>）はPika自身のGitHub PRを監視し、PR diffからステップバイステップのチュートリアルウォークスルーを自動生成し、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>認証付きのサーバーレンダリングページとして公開します。ユーザーはNostr認証チャットを通じて特定のチュートリアルについてリアルタイムで議論できます。&lt;/p>
&lt;h3 id="divine-埋め込みウィジェットとビデオリプライ">diVine: 埋め込みウィジェットとビデオリプライ&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>はNostrネイティブの動画共有プラットフォームで、10日間で132件のPRをマージしました。埋め込みiframeウィジェット（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1843">PR #1843&lt;/a>）はユーザーのプロフィールと最新動画をレンダリングする自己完結型の&lt;code>/embed?npub=...&lt;/code>ページを提供します。ビデオリプライ機能（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1915">PR #1915&lt;/a>）はフィーチャーフラグの背後でゲートされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a>（メディア添付）imetaメタデータを持つKind 1111コメント（&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>）を使用します。Blueskyにインスパイアされた3段階コンテンツフィルター（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1797">PR #1797&lt;/a>）は17の&lt;a href="https://nostrcompass.org/ja/topics/nip-32/">NIP-32&lt;/a>コンテンツ警告カテゴリにわたって表示/警告/非表示コントロールを提供します。&lt;/p>
&lt;h3 id="strfry-reqフィルターバリデーション">strfry: REQフィルターバリデーション&lt;/h3>
&lt;p>&lt;a href="https://github.com/hoytech/strfry/pull/163">PR #163&lt;/a>はC++ Nostr relayの&lt;a href="https://github.com/hoytech/strfry">strfry&lt;/a>に設定可能なREQフィルターバリデーションを追加します。オペレーターはREQあたりの最大フィルター数、必要な著者またはタグの存在、許可されるkindのホワイトリスト、フィルターごとのkind制限を設定できます。この機能は厳格なフィルター適用が必要なNWC relayデプロイメントをターゲットにしています。オープン：&lt;a href="https://github.com/hoytech/strfry/pull/173">PR #173&lt;/a>はインジェスト時のイベントペイロードのオプションzstd圧縮を追加します。&lt;/p>
&lt;h3 id="rust-nostr-nip-62jatopicsnip-62-request-to-vanish">rust-nostr: &lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a> Request to Vanish&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>はRust Nostrプロトコルライブラリで、3つすべてのデータベースバックエンドにわたる&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Request to Vanish）サポートを追加しました。&lt;a href="https://github.com/rust-nostr/nostr/pull/1268">LMDB&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1270">SQLite&lt;/a>、&lt;a href="https://github.com/rust-nostr/nostr/pull/1272">インメモリ&lt;/a>です。LMDB実装にはデプロイメントごとに&lt;a href="https://nostrcompass.org/ja/topics/nip-09/">NIP-09&lt;/a>とNIP-62の適用を有効または無効にする設定可能なオプションが含まれます。&lt;/p>
&lt;h3 id="ndk-協調イベントとnip-46タイムアウト">NDK: 協調イベントとNIP-46タイムアウト&lt;/h3>
&lt;p>JavaScript/TypeScript向けNostr Development Kitの&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>は、認可された著者を定義するアドレス可能ポインターイベント（kind 39382）を使用するマルチ著者協調ドキュメント用の&lt;code>NDKCollaborativeEvent&lt;/code>を導入する&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/380">PR #380&lt;/a>をマージしました。&lt;code>NDKNip46Signer&lt;/code>の設定可能なタイムアウト（&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/381">PR #381&lt;/a>）はバンカーが応答しない場合に&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名操作が無期限にハングすることを防ぎます。&lt;/p>
&lt;h3 id="tenex-エージェント分類とpubkeyゲーティング">TENEX: エージェント分類とPubkeyゲーティング&lt;/h3>
&lt;p>&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>はNostrネイティブのAIエージェントオーケストレーションプラットフォームで、セキュリティ関連の2件のPRをマージしました。TIP-01ロールベースのエージェント分類（&lt;a href="https://github.com/tenex-chat/tenex/pull/91">PR #91&lt;/a>）はエージェントカテゴリ（principal、orchestrator、worker、advisor、auditor）をdenied-toolsマップを通じた自動ツール制限にマッピングします。フロントドアpubkeyゲーティング（&lt;a href="https://github.com/tenex-chat/tenex/pull/87">PR #87&lt;/a>）はホワイトリストまたはバックエンド署名済みpubkeyからのイベントのみが既知のエージェントとともにルーティングされることを保証し、未知のpubkeyは監査用OpenTelemetryスパンとともにサイレントにドロップされます。&lt;/p>
&lt;h3 id="zap-cooking-メンバーシップダッシュボード">Zap Cooking: メンバーシップダッシュボード&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapcooking/frontend">Zap Cooking&lt;/a>はNostrベースのレシピ共有プラットフォームで、10日間で25件のPRと85件のコミットをマージしました。メンバーシップダッシュボード（&lt;a href="https://github.com/zapcooking/frontend/pull/228">PR #228&lt;/a>）は有効期限と管理/アップグレードオプション付きのサブスクリプションステータスを表示し、クライアントサイドとサーバーサイドの両方のチェックでSous ChefとZappyティアのフィーチャーゲートを再有効化し、26ファイルにわたるティア命名を標準化します。2フェーズグループメッセージ読み込み（&lt;a href="https://github.com/zapcooking/frontend/pull/227">PR #227&lt;/a>）は即座の表示のための3日間の高速初期フェッチに続いてバックグラウンドの40日間バックフィルを提供します。&lt;/p>
&lt;p>ウォレットニーモニックストレージがpubkey導出暗号化から&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>自己暗号化に移行しました（&lt;a href="https://github.com/zapcooking/frontend/pull/224">PR #224&lt;/a>）。旧方式は&lt;code>SHA-256(pubkey)&lt;/code>からキーを導出しており、pubkeyは公開情報のため事実上暗号化されていない脆弱性を修正します。既存のウォレットは最初の読み込み時にサイレントに移行されます。&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループチャットは赤ドットバッジの未読インジケーターとkind 9009招待コードによる招待制アクセスを獲得しました（&lt;a href="https://github.com/zapcooking/frontend/pull/213">PR #213&lt;/a>）。リンクプレビューとNostrイベント埋め込みがDMとグループメッセージでレンダリングされるようになりました（&lt;a href="https://github.com/zapcooking/frontend/pull/218">PR #218&lt;/a>）。設定内のNostrバックアップセクション（&lt;a href="https://github.com/zapcooking/frontend/pull/210">PR #210&lt;/a>）はローテーティング3スロットバージョニングを持つ&lt;a href="https://nostrcompass.org/ja/topics/nip-78/">NIP-78&lt;/a>（アプリケーション固有データ）暗号化ストレージを通じてフォローとミュートリストを保存します。起動パフォーマンスは通知サービスの遅延化、IntersectionObserverによるレイジーDOMレンダリング（200イベントフィードでDOMノードを約15,000から約3,000に削減）、延長されたアウトボックスキャッシュTTLを通じて改善されました（&lt;a href="https://github.com/zapcooking/frontend/pull/208">PR #208&lt;/a>）。カスタマイズ可能な印刷レシピモーダル（&lt;a href="https://github.com/zapcooking/frontend/pull/205">PR #205&lt;/a>）はライブプレビュー付きでどのセクションを含めるかをトグルできます。&lt;a href="https://github.com/BrantaOps/branta-core">Branta SDK&lt;/a>統合（&lt;a href="https://github.com/zapcooking/frontend/pull/222">PR #222&lt;/a>）はPOSTとGETリクエストの検証ガードレールを追加します。&lt;/p>
&lt;h3 id="keep-rust駆動の状態移行">Keep: Rust駆動の状態移行&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>はAndroid向けNostrベースの秘密鍵マネージャーで、4つのKotlin設定ストアを削除しkeep-mobileレイヤーからのRust駆動共有状態に置き換える&lt;a href="https://github.com/privkeyio/keep-android/pull/178">PR #178&lt;/a>をマージしました。10秒ポーリングループがRustからのプッシュベースの&lt;code>KeepStateCallback&lt;/code>に置き換えられました。&lt;a href="https://github.com/privkeyio/keep-android/pull/179">PR #179&lt;/a>はパスフレーズ保護付きの暗号化バックアップとリストアを追加します。&lt;/p>
&lt;h3 id="mostro-mobile-紛争チャット暗号化">Mostro Mobile: 紛争チャット暗号化&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>はMostro P2P Bitcoin取引プラットフォームのモバイルクライアントで、紛争チャット暗号化の2段階移行を出荷しました。最初のステップ（&lt;a href="https://github.com/MostroP2P/mobile/pull/495">PR #495&lt;/a>）はmostro固有のラッピングから管理者のpubkeyから導出された共有キー暗号化に切り替えます。その上に構築される&lt;a href="https://github.com/MostroP2P/mobile/pull/501">PR #501&lt;/a>はメッセージモデルを&lt;code>NostrEvent&lt;/code>に統一し、gift wrapイベントをディスク上に暗号化して保存します。これはP2Pチャットパターンと一貫しています。BIP-340署名修正（&lt;a href="https://github.com/MostroP2P/mobile/pull/496">PR #496&lt;/a>）はbip340依存関係を0.2.0にオーバーライドし、Schnorr署名の1-2%を無効にし、公開鍵が&lt;code>0x00&lt;/code>で始まるキーでは100%失敗を引き起こす&lt;code>bigToBytes()&lt;/code>パディングバグを解決します。Order Detailsは生のプロトコル値の代わりに人間が読めるステータスラベルを表示するようになり、英語、スペイン語、イタリア語、フランス語にわたってローカライズされています（&lt;a href="https://github.com/MostroP2P/mobile/pull/502">PR #502&lt;/a>）。HalCashが追加されSEPAが支払い方法から削除されました（&lt;a href="https://github.com/MostroP2P/mobile/pull/493">PR #493&lt;/a>）。SEPA送金は24時間を超える可能性があるためです（SEPA Instantは維持）。&lt;/p>
&lt;p>サーバーサイドでは、&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が紛争セッションの復元にinitiatorフィールドを含めるよう修正し（&lt;a href="https://github.com/MostroP2P/mostro/pull/599">PR #599&lt;/a>）、売り手が資金をリリースした際にアクティブな紛争を自動的にクローズし、管理クライアントが解決を確認できるよう決済済みNostrイベントを公開するようになりました（&lt;a href="https://github.com/MostroP2P/mostro/pull/606">PR #606&lt;/a>）。&lt;/p>
&lt;h2 id="nostr-2月の5年間">Nostr 2月の5年間&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-28-newsletter/#nostr-1%E6%9C%88%E3%81%AE5%E5%B9%B4%E9%96%93">先月のニュースレター&lt;/a>ではNostrの1月のマイルストーンを初期開発からDamusのブレイクアウト、2026年のセキュリティインフラまで辿りました。今回の回顧録は2021年から2026年までの各年2月に起きたことをカバーします。&lt;/p>
&lt;h3 id="2021年2月リライト">2021年2月：リライト&lt;/h3>
&lt;p>誕生から3か月後、Nostrの2月はプロトコルの最も重大な初期変更を生み出しました。2月14-15日、fiatjafが&lt;a href="https://github.com/nostr-protocol/nostr/commit/33a1a70">NIP-01を書き換え&lt;/a>、オリジナルのメッセージ形式をプロトコルが現在も使用するEVENT/REQ/CLOSEモデルに置き換えました。この書き換え以前は、クライアントとrelayはよりシンプルな構造で通信していました。イベント公開（EVENT）とサブスクリプション管理（REQ/CLOSE）を分離することで、スケーリングに不可欠となるrelayサイドのフィルタリングが可能になりました。&lt;/p>
&lt;p>同月に&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>が到着し、secp256k1上のDiffie-Hellman鍵交換から導出された共有シークレットを使用する暗号化ダイレクトメッセージを追加しました。暗号化は基本的なもの（AES-256-CBC）で、後に&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の監査済み暗号方式に置き換えられましたが、少数の初期ユーザーにプロトコル上での最初のプライベート通信チャネルを提供しました。&lt;/p>
&lt;p>ツールは&lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>（ターミナルベースのrelay操作用Goコマンドラインクライアント）で拡張され、futurepaullは初期のRust実装である&lt;a href="https://github.com/futurepaul/nostr-rs">nostr-rs&lt;/a>を開始しました。ネットワーク全体は2つか3つのrelayで運用され、&lt;a href="https://t.me/nostr_protocol">Telegramグループ&lt;/a>を通じて調整され、約7人のアクティブなコントリビューターがいました。&lt;/p>
&lt;h3 id="2022年2月勢いの構築">2022年2月：勢いの構築&lt;/h3>
&lt;p>2021年12月31日の&lt;a href="https://news.ycombinator.com/item?id=29749061">Hacker Newsの投稿&lt;/a>が引き続き2月まで開発者を引き付けました。&lt;a href="https://github.com/nostr-protocol/nostr">nostr-protocol/nostr&lt;/a>リポジトリ（正式な&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>は2022年5月まで存在しませんでした）は2月に6件のプルリクエストを受け取りました。vinliaoのNIP-13（Proof of Work）、fiatjafのNIP-14（Reputation）、CameriのNIP-15（Resource Relations）、melvincarvalhoの&lt;a href="https://github.com/nostr-protocol/nostr/pull/75">NIP-17&lt;/a>（Git Updates Over Nostr）が含まれます。NIP番号は後にPrivate Direct Messagesに再割り当てされ、Nostr上のgitコラボレーションは後に&lt;a href="https://gitworkshop.dev">gitworkshop.dev&lt;/a>となるものを通じて別途続きました。&lt;/p>
&lt;p>Greg Heartsfield の&lt;a href="https://github.com/scsibug/nostr-rs-relay">nostr-rs-relay&lt;/a>はこの月の主力で、34件のコミットと3つのリリースを記録しました。2月12日のバージョン0.5.0は&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>認証済みユーザー公開制限を追加しました。バージョン0.5.1と0.5.2がその後2週間で続き、relayはネットワークのトラフィックの大部分を単独で処理していました。&lt;/p>
&lt;p>Robert C. Martin（Uncle Bob）は&lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>（Clojureデスクトップクライアント）を構築しており、1月18日から2月末までに69件のコミットを記録しました。彼の関与はより広いソフトウェアエンジニアリングコミュニティからの注目を集めました。fiatjafの&lt;a href="https://github.com/fiatjaf/nos2x">nos2x&lt;/a>ブラウザ拡張機能は2月に&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>復号サポートとrelay優先ポリシーを出荷し、ウェブクライアントが鍵委任に現在も使用する&lt;code>window.nostr&lt;/code>インターフェース（&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>）を実装しました。&lt;/p>
&lt;p>&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>は依然として主要なウェブクライアントで、2月13日に&lt;code>web+nostr&lt;/code>プロトコルハンドラー登録を獲得しました。これはNostrアプリケーション間のディープリンクの初期の試みでした。&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>はNIP-05検証を厳格化しました。&lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a>は11件のコミットでNIP-04暗号化DMサポートとNIP-12（Generic Tag Queries）パースを追加しました。ネットワークは約7-15のrelayで運用され、アクティブなユーザーベースはおそらく数百人規模でした。DamusとNostreamはまだ存在せず、2022年4月まで登場しませんでした。&lt;/p>
&lt;h3 id="2023年2月国際的注目">2023年2月：国際的注目&lt;/h3>
&lt;p>2023年2月はNostrに最大の公的注目の波をもたらしました。William CasarinによるiOSクライアントの&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>は、度重なるリジェクトの後に&lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">1月31日にApple App Storeで承認されました&lt;/a>。2月1日までに米国ソーシャルネットワーキングでトップ10に到達しました。2日後の2月2日、報道によるとサイバースペース管理局の要請により&lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">AppleがDamusを中国のApp Storeから削除しました&lt;/a>。&lt;/p>
&lt;p>TechCrunchやCoinDeskを含む主要メディアが削除を報じ、アプリとプロトコルの両方の認知度を高めました。nostr.directory上のメタデータ付きユニーク公開鍵は2月3日までに30万を超えました。すべてのrelayは自費で運営する愛好家によって運営されており、インフラは負荷に対処するために奔走しました。2月初旬までに約289のrelayが追跡され、その数は増加し続けました。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>はその月に29件のマージ済みプルリクエストを記録し、それまでのプロトコル史上最多の月間件数でした。&lt;a href="https://github.com/nostr-protocol/nips/pull/224">NIP-57&lt;/a>（Lightning Zaps）と&lt;a href="https://github.com/nostr-protocol/nips/pull/220">NIP-23&lt;/a>（Long-form Content）が2月13日に同時にマージされ、Bitcoinマイクロペイメントの追加とNostrの短文投稿以外への拡張が1日で実現しました。&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>（Relayリストメタデータ）はその1週間前の2月7日にマージされ、後に続くアウトボックスモデルを可能にしました。&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（Nostr Connect）と&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>（Badges）も月末までにランドしました。&lt;/p>
&lt;p>Human Rights Foundationは2月21日に&lt;a href="https://hrf.org/devfund2023q1">William CasarinにNostrとDamus開発のため5万ドルの助成金を授与しました&lt;/a>。これはNostrプロジェクトへの最初期の機関助成金の1つでした。OpenSatsのNostrファンドはまだ開始されていませんでした（&lt;a href="https://opensats.org/blog/nostr-grants-july-2023">2023年7月&lt;/a>に開始）。&lt;/p>
&lt;h3 id="2024年2月プロトコルの耐久性">2024年2月：プロトコルの耐久性&lt;/h3>
&lt;p>2024年2月は成長からプロトコルの耐久性へと焦点を移しました。前年7月からオープンしていた&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>（プライベートダイレクトメッセージ）は、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の監査済み暗号方式と&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> gift wrappingを使用する老朽化した&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化の置き換えに向けて取り組んでいました。NIP-04はrelayオペレーターにメタデータを漏洩し、送信者と受信者のペアを確認できました。NIP-17は使い捨てキーペアの背後に送信者のアイデンティティを隠し、3月の最終レビューラウンドを経てその春にマージされました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>（Simple Groups）は数か月の議論を経て&lt;a href="https://github.com/nostr-protocol/nips/pull/566">2月28日にマージされ&lt;/a>、管理者ロールとアクセス制御を持つモデレートされたグループチャットをrelayがホストする方法を定義しました。&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a>（imetaタグ）は2月1日にマージされ、クライアントがメディアイベントに画像寸法とblurhashプレビューを添付する方法を標準化しました。&lt;/p>
&lt;p>2月16日、NIPsリポジトリに&lt;a href="https://github.com/nostr-protocol/nips/commit/62c48eff">BREAKING.md&lt;/a>が追加されました。これはプロトコル仕様への後方互換性のない変更を追跡するファイルです。その作成は、Nostrが破壊的変更に正式な文書化が必要な成熟レベルに達したことを認めるものでした。&lt;/p>
&lt;p>その月に22件のプルリクエストがマージされました。&lt;a href="https://github.com/cashubtc/npubcash-server">npub.cash&lt;/a>がサーバーを運用せずにどのnpubでも支払いを受け取れるLightningアドレスサービスとしてローンチされました。2月8日に公開された&lt;a href="https://arxiv.org/abs/2402.05709">学術論文&lt;/a>は、無料relayの95%が寄付だけでは運用コストを賄えず、有料relayの35%が1,000 sats（当時約0.45ドル）未満の入場料を請求していることを発見しました。&lt;/p>
&lt;h3 id="2025年2月インフラの成長">2025年2月：インフラの成長&lt;/h3>
&lt;p>2025年2月はNIPsリポジトリに28件のマージ済みプルリクエストを生み出しました。&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">Right to Vanish&lt;/a> NIPが2月19日にマージされ、データポータビリティとユーザーコントロールに関する規制上の質問に応じてユーザーがrelayからのデータ削除を要求する方法を定義しました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>（Cashuウォレット）とNIP-61（Nutzaps）が簡素化アップデートを受け、ecashトークンストレージ形式が合理化されました。qタグ（引用タグ）のロールアウトが複数のNIPにわたって続き、イベントが引用とスレッディングのために他のイベントを参照する方法を標準化しました。&lt;/p>
&lt;p>クライアントリリースは着実な進歩を示しました。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a> v0.3.0アルファが1月最終日に出荷され、2月もアドプションが続きました。Primal v2.1が2月7日に続き、Go relay実装の&lt;a href="https://github.com/0ceanSlim/grain">GRAIN&lt;/a> v0.3.0が2月21日にリリースされました。&lt;/p>
&lt;p>NOSTRLDN v5がロンドンNostrコミュニティの第5回ミートアップを開催しました。DVMCPブリッジがNostrのData Vending Machines（&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a>）とModel Context Protocolを接続し、翌月に到来するAIエージェント統合作業を予告しました。&lt;/p>
&lt;h3 id="2026年2月ソーシャルメディアを超えて">2026年2月：ソーシャルメディアを超えて&lt;/h3>
&lt;p>&lt;em>2026年2月のアクティビティはNostr Compass第&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/">8号&lt;/a>から第&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/">11号&lt;/a>から引用しています。&lt;/em>&lt;/p>
&lt;p>2026年2月はどのNostr単月でも最も広範なアプリケーションレイヤー開発を生み出しました。&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が分散型P2P Bitcoin取引の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#mostro%E3%81%8C%E5%88%9D%E3%81%AE%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%99%E3%83%BC%E3%82%BF%E3%82%92%E5%87%BA%E8%8D%B7">初のパブリックベータ&lt;/a>を出荷し、&lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>がリリース候補テストの数か月を経て&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#zapstore-v100">1.0安定版&lt;/a>に到達しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a>が160件以上のマージ改善とAmber署名者サポートを含むリアルタイム&lt;a href="https://nostrcompass.org/ja/topics/mls/">Marmot&lt;/a>暗号化メッセージングを提供しました。&lt;/p>
&lt;p>pablof7z（エージェントワークフロー用NIP-AE、MCPサーバーアナウンス用NIP-AD）とjoelklabo（AIエージェントメッセージ）からの競合するAIエージェント提案が、&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a>を拡張する&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#nip%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88">DVMエージェント調整提案&lt;/a>とともに到着しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#contextvmnostr%E4%B8%8A%E3%81%AEmcp">ContextVM&lt;/a>がModel Context ProtocolをNostrトランスポートに接続するSDK改善を出荷しました。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#burrowai%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E5%90%91%E3%81%91mls%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0">Burrow&lt;/a>がAIエージェントと人間の両方に&lt;a href="https://nostrcompass.org/ja/topics/mls/">Marmot&lt;/a>暗号化メッセージングを追加し、Nostrのアイデンティティとrelayインフラをマシン間通信に拡張しました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#fipsnostr%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%B0">FIPS&lt;/a>がsecp256k1キーペアをノードアイデンティティとして使用し、UDP、イーサネット、Bluetooth、LoRadioにわたるトランスポート非依存ルーティングを持つNostrネイティブメッシュネットワーキングの動作するRust実装を出荷しました。その設計はNostrのキーモデルがソーシャルメディアを超えて物理ネットワークインフラに拡張できることを示しました。&lt;/p>
&lt;p>&lt;a href="https://opensats.org/blog/fifteenth-wave-of-nostr-grants">OpenSatsが第15波のNostr助成金を発表し&lt;/a>、ContextVMとNostubeを含むプロジェクトに資金提供しました。プロトコル変更にはNostr Wallet Connectの&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>ホールドインボイスサポートとrelayサイドのカウント推定のための&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a>（カウント結果）HyperLogLogが含まれました。&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>スコアリング用の&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>（Trusted Assertions）サービスプロバイダー発見機能もマージされました。&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>が完全なAPI再設計を開始し、Nostria 3.0と&lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a>（iOS TestFlight）が出荷されました。&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>のローカルキャッシュレイヤーがrelay間のメディア可用性に対応しました。&lt;/p>
&lt;h3 id="今後の展望">今後の展望&lt;/h3>
&lt;p>5つの2月のプロトコル史は、基盤的作業からアプリケーションレイヤーの多様化への一貫した進展を示し、2023年のユーザー流入がターニングポイントとなりました。2021年には7人のコントリビューターが3つのrelayで作業していました。2026年までに、同じプロトコルがプロダクションインフラ上で実行されるメッシュネットワーキングと自律エージェント提案をサポートしています。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。構築中のプロジェクトや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMでお問い合わせください&lt;/a>。Nostrでもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #11</title><link>https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a>がリアルタイムメッセージングとAmber署名者サポートを160件以上のマージ改善とともに届けます。&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a>が動画再生の問題を修正し、クリエイター分析用のkind 22236ビューイベントを追加。&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>、&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>、&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>がアップデートを出荷。&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>がNostrネイティブメッシュネットワーキングの動作するRust実装を出荷。NotecrumbsがDamus.ioリンクプレビューの安定性修正を受け取る。&lt;a href="https://contextvm.org">ContextVM&lt;/a>がNostrとModel Context Protocolを橋渡し。新しいプロジェクトとして、AIエージェントと人間の間のMLS暗号化メッセージング用&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a>と、ブラウザベースのvaultとアイデンティティ管理用&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a>が登場。ディープダイブではNIP-55のAndroid署名とNIP-60のCashuウォレット同期を取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="notecrumbsの安定性改善">Notecrumbsの安定性改善&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>はDamus.ioのリンクプレビューを支えるNostr APIおよびウェブサーバーで、信頼性の問題に対処する一連の修正を受け取りました。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">並行処理の修正&lt;/a>により、インフライトの重複排除メカニズムがwatchチャンネルに置き換えられました。同じノートをリクエストする2人の呼び出し元が両方ともフェッチャーになり得て、一方が他方が通知をサブスクライブする前に完了した場合にデッドロックを引き起こしていました。アトミック操作を使用するwatchチャンネルにより、1つのフェッチャーのみが実行され、他の処理は結果を待ちます。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">レート制限&lt;/a>はrelayへの過剰アクセスに対する二層の防御を実装します。ユーザーが同じノートに繰り返しアクセスすると、システムは5分間のクールダウンウィンドウでrelayリクエストをデバウンスするようになりました。この保護はすべての&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>タイプとプロフィールフィードに拡張され、重いトラフィック時のrelayへの比例スパムを防ぎます。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">パフォーマンス改善&lt;/a>により、二次データフェッチがバックグラウンドのtokioタスクに移動しました。ページはキャッシュされたデータで即座にレンダリングされるようになり、合計7.5秒に達する可能性のある連続したrelayタイムアウトでブロックされません。nostrdb 0.10.0へのアップグレードもこれらの修正に伴いました。&lt;/p>
&lt;h3 id="contextvmnostr上のmcp">ContextVM：Nostr上のMCP&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>はNostrと&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>（MCP）を橋渡しするツール群です。最近のコミットでは支払いを可能にする新しい&lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a>仕様が導入され、2月を通じて&lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a>の改善が進んでいます。&lt;/p>
&lt;p>SDKはMCP over Nostr用のTypeScriptクライアントとサーバートランスポートを提供します。開発者はNostrネットワーク全体にMCPサーバーを公開でき、クライアントはそれらに接続できます。relayはメッセージバスとして機能し、暗号化されたeventをただルーティングします。Nostrをネイティブにサポートしないクライアントはプロキシレイヤーを通じて接続します。ライブラリはevent認証のためのrelay管理と暗号署名を処理し、Node.jsとブラウザ環境の両方で動作します。&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a>はサーバーディスカバリーとメソッド呼び出し用のCLIを提供します。&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>はソーシャルグラフの距離とプロフィール検証を組み合わせてパーソナライズされたトラストスコアを計算します。&lt;/p>
&lt;p>ContextVMはブリッジレイヤーとして位置づけられています。既存のMCPサーバーは従来のトランスポートを維持しながらNostrの相互運用性を得ます。&lt;/p>
&lt;h3 id="white-noiseが分散型ユーザー検索を解説">White Noiseが分散型ユーザー検索を解説&lt;/h3>
&lt;p>&lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">jgmontoyaのブログ投稿&lt;/a>では、&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>が分散型relayネットワーク全体でどのようにユーザー検索を処理するかが詳しく説明されています。&lt;/p>
&lt;p>プロフィール分散が課題を生み出します。統一されたデータベースを持つ中央集権的なメッセンジャーとは異なり、Nostrのプロフィールは中央インデックスなしに数十のrelay全体に散らばっています。White Noiseはプロデューサー・コンシューマーアーキテクチャをパラレルに実行することでこれを解決します。&lt;/p>
&lt;p>プロデューサープロセスはユーザーのフォローからソーシャルグラフを外側に継続的に拡張し、増加する距離でフォローリストを取得してプロフィール解決のために発見したpubkeyをキューに入れます。コンシューマーは5つのコスト増加ティアでマッチを解決します。ローカルユーザーテーブル（最速）、前回の検索からのキャッシュされたプロフィール、接続されたrelay、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>によるユーザーrelayリスト、ユーザー宣言relayへの直接クエリ（最も低速）です。&lt;/p>
&lt;p>コールド検索は約3秒かかりますが、キャッシュからのウォーム検索は約10ミリ秒に短縮されます。確立されたソーシャルグラフを持たない新規ユーザーに対しては、検索機能を確保するためによく接続されたブートストラップノードが挿入されます。グループメンバーシップは明示的なフォローと並んで暗黙のソーシャルシグナルを提供します。&lt;/p>
&lt;p>計測が最適化に不可欠だったと著者は述べています。メトリクスなしでは改善は当て推量でした。&lt;/p>
&lt;h3 id="fipsnostrネイティブメッシュネットワーキング">FIPS：Nostrネイティブメッシュネットワーキング&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>（Free Internetworking Peering System）は、Nostrのキーペア（secp256k1）をノードのアイデンティティとして使用する自己組織化メッシュネットワークの動作するRust実装です。&lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">設計ドキュメント&lt;/a>が機能的なコードとともに公開されています。&lt;/p>
&lt;p>このプロトコルはインフラの独立性に対応します。ノードは中央サーバーや認証局なしに自動的に相互発見します。スパニングツリーが座標ベースのルーティングを提供し、bloom filterが到達可能性情報を伝播させ、ノードはローカルの知識だけで転送判断を行えます。トランスポートの非依存性により、同じプロトコルがUDP、イーサネット、Bluetooth、LoRadio、あるいはデータグラム対応の任意のメディア上で動作します。&lt;/p>
&lt;p>2つの暗号化レイヤーがトラフィックを保護します。リンクレイヤー暗号化（Noise IKパターン）が相互認証と前方秘密性を持つホップ間の隣接ノード通信を保護します。セッションレイヤー暗号化（Noise XKパターン）が中間ルーターに対するエンドツーエンドの保護を提供し、宛先のみがペイロードを復号できます。これはTLSがHTTPトラフィックを信頼できないネットワークを通過する場合でも保護する方法を反映しています。&lt;/p>
&lt;p>アーキテクチャはルーティングに「貪欲埋め込み」スパニングツリーを使用します。各ノードはツリーのルートと親に対する位置に基づいて座標を受け取ります。パケットは目的地に近い座標に向かって貪欲にルーティングされ、bloom filterが到達可能なエンドポイントを通知します。貪欲なルーティングが失敗する場合（局所的最小値）、ノードはツリーベースのパスにフォールバックできます。&lt;/p>
&lt;p>Rust実装にはすでにbloom filterディスカバリーを含むUDPトランスポートが含まれています。今後の作業はピアブートストラップのためのNostr relay統合を目標としています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;p>今週はrelayインフラとクライアントアプリケーション全体でリリースがあり、この分野に新しいプロジェクトも参入しました。&lt;/p>
&lt;h3 id="haven-v120">HAVEN v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバーと4つのrelay機能をバンドルしたオールインワンパーソナルrelay&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>が&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>を出荷しました。このリリースは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#haven-v120-rc3">先週取り上げた&lt;/a>RCステージを超えて進んでいます。&lt;/p>
&lt;p>マルチnpubサポートにより、単一のHAVENインスタンスがホワイトリストを通じて複数のNostrアイデンティティを提供でき、アクセス制御のための新しいブラックリスト機能も追加されました。書き換えられたバックアップシステムはポータブルなJSONL形式を使用し、JSONLファイルからノートをインポートするための&lt;code>haven restore&lt;/code>コマンドが利用できます。クラウドストレージ統合がリモートバックアップ管理のための&lt;code>--to-cloud&lt;/code>と&lt;code>--from-cloud&lt;/code>フラグを追加します。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>の改善として、トラスト計算の設定可能な深度レベルとメモリオーバーヘッドを削減するロックレス最適化を伴う自動24時間更新間隔が含まれます。relayリクエスト用のユーザーエージェント設定と設定可能なBlastrタイムアウト設定がリリースを完成させ、圧縮JSONLへのデータエクスポートも追加されました。&lt;/p>
&lt;h3 id="white-noise-v030">White Noise v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースの暗号化メッセージングアプリで&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを実装しており、160件以上のマージ改善を含む&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a>を出荷しました。&lt;/p>
&lt;p>このリリースではポーリングの代わりにストリーミング接続によるリアルタイムメッセージングが実現され、メッセージが即座に届きます。Amberサポート（&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>）により秘密鍵がアプリに触れる必要がなくなります。画像共有がアップロード進捗追跡と読み込み中のblurhashプレースホルダーとともに機能するようになりました。フルスクリーン表示でピンチズームをサポートします。&lt;/p>
&lt;p>グループメッセージングはチャットリストに送信者名を表示し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>暗号化が前方秘密性を確保する信頼性改善を受けました。ユーザー検索はフォローから4次の隔たりまで外側に拡張され、見つかった結果がストリーミングで表示されます。&lt;/p>
&lt;p>Marmotプロトコルの変更と暗号化ローカルストレージへの切り替えにより、アップグレード時にすべてのローカルデータがリセットされる破壊的変更があります。アップグレード前にnsecキーのバックアップを取ることをお勧めします。&lt;/p>
&lt;h3 id="divine-105">diVine 1.0.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は復元されたVineアーカイブ上に構築された短編ループ動画クライアントで、広範な動画再生修正と新しい分散型分析システムを含む&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a>を出荷しました。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> &lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">White Noise v0.3.0&lt;/a>がリアルタイムメッセージングとAmber署名者サポートを160件以上のマージ改善とともに届けます。&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">diVine 1.0.5&lt;/a>が動画再生の問題を修正し、クリエイター分析用のkind 22236ビューイベントを追加。&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>、&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>、&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>がアップデートを出荷。&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>がNostrネイティブメッシュネットワーキングの動作するRust実装を出荷。NotecrumbsがDamus.ioリンクプレビューの安定性修正を受け取る。&lt;a href="https://contextvm.org">ContextVM&lt;/a>がNostrとModel Context Protocolを橋渡し。新しいプロジェクトとして、AIエージェントと人間の間のMLS暗号化メッセージング用&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a>と、ブラウザベースのvaultとアイデンティティ管理用&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a>が登場。ディープダイブではNIP-55のAndroid署名とNIP-60のCashuウォレット同期を取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="notecrumbsの安定性改善">Notecrumbsの安定性改善&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs">Notecrumbs&lt;/a>はDamus.ioのリンクプレビューを支えるNostr APIおよびウェブサーバーで、信頼性の問題に対処する一連の修正を受け取りました。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/3f201f63ea49">並行処理の修正&lt;/a>により、インフライトの重複排除メカニズムがwatchチャンネルに置き換えられました。同じノートをリクエストする2人の呼び出し元が両方ともフェッチャーになり得て、一方が他方が通知をサブスクライブする前に完了した場合にデッドロックを引き起こしていました。アトミック操作を使用するwatchチャンネルにより、1つのフェッチャーのみが実行され、他の処理は結果を待ちます。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/b0d0bf5a2f17">レート制限&lt;/a>はrelayへの過剰アクセスに対する二層の防御を実装します。ユーザーが同じノートに繰り返しアクセスすると、システムは5分間のクールダウンウィンドウでrelayリクエストをデバウンスするようになりました。この保護はすべての&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>タイプとプロフィールフィードに拡張され、重いトラフィック時のrelayへの比例スパムを防ぎます。&lt;/p>
&lt;p>&lt;a href="https://github.com/damus-io/notecrumbs/commit/38670b3972b6">パフォーマンス改善&lt;/a>により、二次データフェッチがバックグラウンドのtokioタスクに移動しました。ページはキャッシュされたデータで即座にレンダリングされるようになり、合計7.5秒に達する可能性のある連続したrelayタイムアウトでブロックされません。nostrdb 0.10.0へのアップグレードもこれらの修正に伴いました。&lt;/p>
&lt;h3 id="contextvmnostr上のmcp">ContextVM：Nostr上のMCP&lt;/h3>
&lt;p>&lt;a href="https://contextvm.org">ContextVM&lt;/a>はNostrと&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>（MCP）を橋渡しするツール群です。最近のコミットでは支払いを可能にする新しい&lt;a href="https://docs.contextvm.org/spec/ceps/cep-8/">CEP-8&lt;/a>仕様が導入され、2月を通じて&lt;a href="https://github.com/ContextVM/sdk">SDK&lt;/a>の改善が進んでいます。&lt;/p>
&lt;p>SDKはMCP over Nostr用のTypeScriptクライアントとサーバートランスポートを提供します。開発者はNostrネットワーク全体にMCPサーバーを公開でき、クライアントはそれらに接続できます。relayはメッセージバスとして機能し、暗号化されたeventをただルーティングします。Nostrをネイティブにサポートしないクライアントはプロキシレイヤーを通じて接続します。ライブラリはevent認証のためのrelay管理と暗号署名を処理し、Node.jsとブラウザ環境の両方で動作します。&lt;/p>
&lt;p>&lt;a href="https://github.com/ContextVM/cvmi">CVMI&lt;/a>はサーバーディスカバリーとメソッド呼び出し用のCLIを提供します。&lt;a href="https://github.com/ContextVM/relatr">Relatr&lt;/a>はソーシャルグラフの距離とプロフィール検証を組み合わせてパーソナライズされたトラストスコアを計算します。&lt;/p>
&lt;p>ContextVMはブリッジレイヤーとして位置づけられています。既存のMCPサーバーは従来のトランスポートを維持しながらNostrの相互運用性を得ます。&lt;/p>
&lt;h3 id="white-noiseが分散型ユーザー検索を解説">White Noiseが分散型ユーザー検索を解説&lt;/h3>
&lt;p>&lt;a href="https://blog.jgmontoya.com/2026/02/22/user-search.html">jgmontoyaのブログ投稿&lt;/a>では、&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>が分散型relayネットワーク全体でどのようにユーザー検索を処理するかが詳しく説明されています。&lt;/p>
&lt;p>プロフィール分散が課題を生み出します。統一されたデータベースを持つ中央集権的なメッセンジャーとは異なり、Nostrのプロフィールは中央インデックスなしに数十のrelay全体に散らばっています。White Noiseはプロデューサー・コンシューマーアーキテクチャをパラレルに実行することでこれを解決します。&lt;/p>
&lt;p>プロデューサープロセスはユーザーのフォローからソーシャルグラフを外側に継続的に拡張し、増加する距離でフォローリストを取得してプロフィール解決のために発見したpubkeyをキューに入れます。コンシューマーは5つのコスト増加ティアでマッチを解決します。ローカルユーザーテーブル（最速）、前回の検索からのキャッシュされたプロフィール、接続されたrelay、&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>によるユーザーrelayリスト、ユーザー宣言relayへの直接クエリ（最も低速）です。&lt;/p>
&lt;p>コールド検索は約3秒かかりますが、キャッシュからのウォーム検索は約10ミリ秒に短縮されます。確立されたソーシャルグラフを持たない新規ユーザーに対しては、検索機能を確保するためによく接続されたブートストラップノードが挿入されます。グループメンバーシップは明示的なフォローと並んで暗黙のソーシャルシグナルを提供します。&lt;/p>
&lt;p>計測が最適化に不可欠だったと著者は述べています。メトリクスなしでは改善は当て推量でした。&lt;/p>
&lt;h3 id="fipsnostrネイティブメッシュネットワーキング">FIPS：Nostrネイティブメッシュネットワーキング&lt;/h3>
&lt;p>&lt;a href="https://github.com/jmcorgan/fips">FIPS&lt;/a>（Free Internetworking Peering System）は、Nostrのキーペア（secp256k1）をノードのアイデンティティとして使用する自己組織化メッシュネットワークの動作するRust実装です。&lt;a href="https://github.com/jmcorgan/fips/blob/master/docs/design/fips-intro.md">設計ドキュメント&lt;/a>が機能的なコードとともに公開されています。&lt;/p>
&lt;p>このプロトコルはインフラの独立性に対応します。ノードは中央サーバーや認証局なしに自動的に相互発見します。スパニングツリーが座標ベースのルーティングを提供し、bloom filterが到達可能性情報を伝播させ、ノードはローカルの知識だけで転送判断を行えます。トランスポートの非依存性により、同じプロトコルがUDP、イーサネット、Bluetooth、LoRadio、あるいはデータグラム対応の任意のメディア上で動作します。&lt;/p>
&lt;p>2つの暗号化レイヤーがトラフィックを保護します。リンクレイヤー暗号化（Noise IKパターン）が相互認証と前方秘密性を持つホップ間の隣接ノード通信を保護します。セッションレイヤー暗号化（Noise XKパターン）が中間ルーターに対するエンドツーエンドの保護を提供し、宛先のみがペイロードを復号できます。これはTLSがHTTPトラフィックを信頼できないネットワークを通過する場合でも保護する方法を反映しています。&lt;/p>
&lt;p>アーキテクチャはルーティングに「貪欲埋め込み」スパニングツリーを使用します。各ノードはツリーのルートと親に対する位置に基づいて座標を受け取ります。パケットは目的地に近い座標に向かって貪欲にルーティングされ、bloom filterが到達可能なエンドポイントを通知します。貪欲なルーティングが失敗する場合（局所的最小値）、ノードはツリーベースのパスにフォールバックできます。&lt;/p>
&lt;p>Rust実装にはすでにbloom filterディスカバリーを含むUDPトランスポートが含まれています。今後の作業はピアブートストラップのためのNostr relay統合を目標としています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;p>今週はrelayインフラとクライアントアプリケーション全体でリリースがあり、この分野に新しいプロジェクトも参入しました。&lt;/p>
&lt;h3 id="haven-v120">HAVEN v1.2.0&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバーと4つのrelay機能をバンドルしたオールインワンパーソナルrelay&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>が&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0">v1.2.0&lt;/a>を出荷しました。このリリースは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#haven-v120-rc3">先週取り上げた&lt;/a>RCステージを超えて進んでいます。&lt;/p>
&lt;p>マルチnpubサポートにより、単一のHAVENインスタンスがホワイトリストを通じて複数のNostrアイデンティティを提供でき、アクセス制御のための新しいブラックリスト機能も追加されました。書き換えられたバックアップシステムはポータブルなJSONL形式を使用し、JSONLファイルからノートをインポートするための&lt;code>haven restore&lt;/code>コマンドが利用できます。クラウドストレージ統合がリモートバックアップ管理のための&lt;code>--to-cloud&lt;/code>と&lt;code>--from-cloud&lt;/code>フラグを追加します。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>の改善として、トラスト計算の設定可能な深度レベルとメモリオーバーヘッドを削減するロックレス最適化を伴う自動24時間更新間隔が含まれます。relayリクエスト用のユーザーエージェント設定と設定可能なBlastrタイムアウト設定がリリースを完成させ、圧縮JSONLへのデータエクスポートも追加されました。&lt;/p>
&lt;h3 id="white-noise-v030">White Noise v0.3.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースの暗号化メッセージングアプリで&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを実装しており、160件以上のマージ改善を含む&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.3.0">v0.3.0&lt;/a>を出荷しました。&lt;/p>
&lt;p>このリリースではポーリングの代わりにストリーミング接続によるリアルタイムメッセージングが実現され、メッセージが即座に届きます。Amberサポート（&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>）により秘密鍵がアプリに触れる必要がなくなります。画像共有がアップロード進捗追跡と読み込み中のblurhashプレースホルダーとともに機能するようになりました。フルスクリーン表示でピンチズームをサポートします。&lt;/p>
&lt;p>グループメッセージングはチャットリストに送信者名を表示し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>暗号化が前方秘密性を確保する信頼性改善を受けました。ユーザー検索はフォローから4次の隔たりまで外側に拡張され、見つかった結果がストリーミングで表示されます。&lt;/p>
&lt;p>Marmotプロトコルの変更と暗号化ローカルストレージへの切り替えにより、アップグレード時にすべてのローカルデータがリセットされる破壊的変更があります。アップグレード前にnsecキーのバックアップを取ることをお勧めします。&lt;/p>
&lt;h3 id="divine-105">diVine 1.0.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は復元されたVineアーカイブ上に構築された短編ループ動画クライアントで、広範な動画再生修正と新しい分散型分析システムを含む&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.5">1.0.5&lt;/a>を出荷しました。&lt;/p>
&lt;p>動画再生の問題が修正の大部分を占めました。ファントムポーズ、動画間のデュアルオーディオ、サムネイルと最初のフレーム間のブラックフラッシュ、廃棄されたプレイヤーのクラッシュがすべて解消されました。プールされた動画プレイヤーがホームフィードの一貫した再生を処理するようになりました。&lt;/p>
&lt;p>kind 22236のエフェメラルビューイベントがクリエイター分析と推薦を可能にします。システムはトラフィックソース（ホーム、ディスカバリーバリアント、プロフィール、共有、検索）とループ数を追跡しながら自己ビューを除外します。Nostr event imetaタグのローカルファイルパスリークが、BUD-01仕様に従いクライアント側で構築された正規のBlossom URLで修正されました。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名者の改善として、並列化されたrelay接続とコールバックURLサポートが追加されました。AndroidはSigner承認後のアプリ再開時にWebSocket接続を再接続します。&lt;/p>
&lt;h3 id="coracle-0630">Coracle 0.6.30&lt;/h3>
&lt;p>&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>はrelayマネジメントと&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>モデレーションに特化したウェブベースのNostrクライアントで、フィードでのメディアブラウジングを向上させる動画サムネイルサポートを含む&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.30">0.6.30&lt;/a>を出荷しました。&lt;/p>
&lt;h3 id="nostur-v1260">Nostur v1.26.0&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostur-com/nostur-ios-public">Nostur&lt;/a>はiOS向けNostrクライアントで、新しいライブストリームフィードセクションと再設計された設定画面を含む&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases/tag/1.26.0">v1.26.0&lt;/a>を出荷しました。GIFがBlossomメディアサーバーでホストできるようになり、中央集権的なサービスへの依存が減ります。Klipy GIF統合がTenorが利用できない場合のバックアップを提供します。DM会話の年ヘッダーとメンション数表示もユーザー向け変更として含まれます。&lt;/p>
&lt;p>今週は開発者向けツールとCLIアプリもアップデートを受け取りました。&lt;/p>
&lt;h3 id="nak-v0185">nak v0.18.5&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>はfiatjafによるNostrのコマンドラインツールで、ユーザープロフィールの取得と表示のための新しい&lt;code>nak profile&lt;/code>サブコマンドを含む&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.5">v0.18.5&lt;/a>を出荷しました。&lt;code>git clone&lt;/code>コマンドが&lt;code>nostr://&lt;/code>URIで&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>名をサポートするようになり、人間が読める識別子でリポジトリをクローンできます。&lt;/p>
&lt;h3 id="pika-v053">Pika v0.5.3&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコル上に構築されたiOS、Android、デスクトップ向けの&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>暗号化メッセンジャーで、&lt;a href="https://github.com/sledtools/pika/releases/tag/pikachat-v0.5.3">v0.5.3&lt;/a>を出荷しました。最近のコミットではデスクトップアプリへのファイルアップロードとドラッグアンドドロップメディアサポートが追加され、Cloudflare Workersデプロイの修正も含まれます。&lt;/p>
&lt;p>PikaはすべてのビジネスロジックをRustコアが担い、iOS（SwiftUI）とAndroid（Kotlin）は状態スナップショットをレンダリングするシンUIレイヤーとして機能します。MDK（Marmot Development Kit）がMLS実装を提供します。プロジェクトはアルファステータスであることを明記し、センシティブなワークロードへの使用に警告しています。&lt;/p>
&lt;h3 id="ridestr-v026">Ridestr v0.2.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>はCashu支払いを持つ分散型ライドシェアプラットフォームで、&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.6">v0.2.6&lt;/a>を出荷しました。このリリースはTalkBackアクセシビリティの問題を修正し、支払い方法を切り替えた際にドライバーが近くのリストから消えたり、ドライバーがオフラインになった際に選択されたドライバー数が更新されなかったりするバグを解消します。&lt;/p>
&lt;p>「全員に送信」機能は「RoadFlareをブロードキャスト」に変更され、新規ドライバーインストール時のサイレント失敗の修正も含まれます。RidestrはトラストレスなライドペイメントにHTLCエスクローを実装し、デバイス間のウォレット同期に&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>を使用しています。&lt;/p>
&lt;h3 id="unfiltered-v106">Unfiltered v1.0.6&lt;/h3>
&lt;p>&lt;a href="https://github.com/dmcarrington/unfiltered">Unfiltered&lt;/a>はAndroid向けInstagramライクな写真共有アプリで、改善されたユーザー検索と60秒ごとの自動relay再接続を含む&lt;a href="https://github.com/dmcarrington/unfiltered/releases/tag/v1.0.6">v1.0.6&lt;/a>を出荷しました。&lt;/p>
&lt;p>KotlinとJetpack Composeで構築され、UnfilteredはRust-nostrバインディングとBlossom互換サーバーを画像ホスティングに使用します。Amber統合（&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>）がセキュアな鍵管理を処理します。アプリはアルゴリズムや広告なしにフォローしたアカウントの投稿を時系列順で表示します。&lt;/p>
&lt;p>今週は2つの新しいメッセージングと署名プロジェクトも立ち上がりました。&lt;/p>
&lt;h3 id="burrowaiエージェント向けmlsメッセージング">Burrow：AIエージェント向けMLSメッセージング&lt;/h3>
&lt;p>&lt;a href="https://github.com/CentauriAgent/burrow">Burrow&lt;/a>は電話番号や中央集権的なサーバーなしにMLS暗号化通信のための&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを実装するメッセンジャーです。人間ユーザーとAIエージェントの両方が参加できます。&lt;/p>
&lt;p>JSONLアウトプットモードを持つ純粋なRust CLIデーモンが自動化システムとの統合を処理します。FlutterクロスプラットフォームアプリがAndroid、iOS、Linux、macOS、Windowsをカバーします。メディア添付ファイルはメッセージとともに暗号化され、WebRTCが設定可能なTURNサーバーで音声とビデオ通話を処理します。&lt;/p>
&lt;p>BurrowはNostrインフラ上にMLS暗号化をレイヤー化します。アイデンティティはNostrキーペア（secp256k1）を使用し、MLS KeyPackageはkind 443イベントとして公開されます。メッセージは&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>でkind 445イベントとして暗号化され、ウェルカム招待は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ギフトラッピングを使用します。&lt;/p>
&lt;p>&lt;a href="https://openclaw.ai">OpenClaw&lt;/a>統合によりAIエージェントがフルツールアクセスで参加できます。監査ログ付きアクセス制御リストがコンタクトとグループの権限を管理します。この組み合わせにより、BurrowはSignal レベルの暗号化を分散インフラ上に求めるエージェント間およびエージェントと人間のメッセージングシナリオに適しています。&lt;/p>
&lt;h3 id="nostria-signer拡張機能">Nostria Signer拡張機能&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostria-app/nostria-signer-extension">Nostria Signer&lt;/a>はNostrユーザー向けのvaultとアイデンティティ管理を提供するChromiumベースのブラウザ拡張機能です。&lt;/p>
&lt;p>複数のアカウントを含む複数のvaultにより、ユーザーは異なるコンテキストのアイデンティティを整理できます。国際化にはRTL言語サポートが含まれます。AngularとTypeScript（コードベースの79.2%）で構築され、ブラウザ拡張機能とProgressiveウェブアプリの両方として動作します。&lt;/p>
&lt;p>Nostria Signerはブラウザ拡張機能による署名のための&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>を実装し、ウェブベースのNostrクライアントが秘密鍵に直接アクセスすることなくevent署名をリクエストできます。自動ウォレットマイグレーションがChrome Web Storeを通じて配布されるアップデートを処理します。ユーザーは&lt;code>dist/extension&lt;/code>フォルダからサイドロードすることもできます。&lt;/p>
&lt;p>開発者は実験的なステータスを強調しています。開発者は失われた鍵へのアクセスを回復できないため、ユーザーは自身のシークレットリカバリーフレーズを管理する必要があります。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="formstrがorganizationを移行">FormstrがOrganizationを移行&lt;/h3>
&lt;p>Nostr上のGoogleフォーム代替&lt;a href="https://github.com/formstr-hq/nostr-forms">Formstr&lt;/a>がリポジトリを&lt;code>abh3po/nostr-forms&lt;/code>から&lt;code>formstr-hq&lt;/code>organizationに移行しました。このOpenSatsグラント受領者は新しい場所で開発を継続します。&lt;/p>
&lt;h3 id="注目のオープンpr">注目のオープンPR&lt;/h3>
&lt;p>Nostrプロジェクト全体の進行中の作業：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Damusアウトボックスモデル&lt;/strong> (&lt;a href="https://github.com/damus-io/damus/pull/3602">PR #3602&lt;/a>)：iOSでのgossip/アウトボックスrelayモデルの実装計画。このアーキテクチャ変更は、受信者が実際に読むrelayに公開することでメッセージ配信を改善します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notedeckクロスプラットフォーム通知&lt;/strong> (&lt;a href="https://github.com/damus-io/notedeck/pull/1296">PR #1296&lt;/a>)：Android FCM、macOS、Linuxをカバーするダムスデスクトップクライアントのネイティブ通知システム。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NDK Cashu v3アップグレード&lt;/strong> (&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/370">PR #370&lt;/a>)：Nostr Development Kitのウォレット統合をcashu-ts v3に更新。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ZeusのCashuオフライン&lt;/strong> (&lt;a href="https://github.com/ZeusLN/zeus/pull/3742">PR #3742&lt;/a>)：ZeusのLightningウォレットのオフラインecash送受信。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Shopstrの暗号化デジタル配信&lt;/strong> (&lt;a href="https://github.com/shopstr-eng/shopstr/pull/231">PR #231&lt;/a>)：デジタル商品の暗号化配信と物理アイテムのダイナミックウェイトサポートを追加。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>今週マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85サービスプロバイダーDiscoverability&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/topics/nip-85/">NIP-85&lt;/a>仕様にクライアントが信頼されたアサーションプロバイダーを発見する方法についてのガイダンスが追加されました。クライアントが&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>スコアや他の計算済みメトリクスを必要とする場合、ユーザーがすでにフォローまたは信頼するプロバイダーからのkind 30085アナウンスをrelayにクエリできます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2229">NIP-29の非管理グループ削除&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループチャット仕様が非管理グループ（任意のメンバーが他のメンバーを追加できる）のサポートを廃止しました。すべてのNIP-29グループは明示的な管理者ロールを持つリレーサイドの管理が必要になり、実装を簡素化してスパムのベクターを削減します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2231">NIP-11の非推奨フィールド削除&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>のrelay情報ドキュメントには非推奨の&lt;code>software&lt;/code>と&lt;code>version&lt;/code>フィールドが含まれなくなりました。実装はこれらをレスポンスから削除する必要があります。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2227">NIP-39のアイデンティティタグ移動&lt;/a>&lt;/strong>：外部アイデンティティクレーム（GitHubやTwitterなどの&lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>&lt;code>i&lt;/code>タグ）がkind 0プロフィールから専用のkind 30382イベントに移動しました。これによりアイデンティティ検証がプロフィールメタデータから分離されます。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>AIエージェントNIPの進捗：&lt;/strong>&lt;/p>
&lt;p>4つのAI特化NIPが活発な開発を継続しています。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#ai%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88nip%E3%81%8C%E7%99%BB%E5%A0%B4">先週の報道&lt;/a>以降：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE：エージェント&lt;/a>&lt;/strong>（2月19日更新）：エージェント定義のkind 4199とプロンプト（「ナッジ」）のkind 4201でエージェントアイデンティティを定義します。エージェントは拡張説明のために&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>ファイルメタデータを参照できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX：AIエージェントメッセージ&lt;/a>&lt;/strong>（2月18日更新）：ステータス、ストリーミングデルタ、プロンプト、レスポンス、ツール呼び出し、エラー、キャンセル用の7つのエフェメラルevent kind（25800-25806）で会話メッセージングを標準化します。kind 31340「AI Info」イベントでエージェントがサポートするモデルと機能をアドバタイズできます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2228">NIP-AC：DVMエージェント調整&lt;/a>&lt;/strong>（2月18日オープン）：自律エージェントワークフロー用に&lt;a href="https://nostrcompass.org/ja/topics/nip-90/">NIP-90&lt;/a>を拡張します。エージェントディスカバリーのためのハートビート、品質追跡のためのジョブレビュー、結果コミットメントのためのデータエスクロー、マルチステップパイプラインのためのワークフローチェーン、競争的プロバイダー選択のためのスワームビッディングを追加します。リファレンス実装は2020117.xyzで動作しています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD：MCPサーバーアナウンス&lt;/a>&lt;/strong>（2月12日オープン）：Nostr上のModel Context ProtocolサーバーとスキルのアナウンスをTENEXプラットフォームで既に使用中の形式で標準化します。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>その他のオープンPR：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2232">NIP-144：サービス認証プロトコル&lt;/a>&lt;/strong>：クライアントがNostr上のサービスプロバイダーにアイデンティティと権限を証明する方法を定義します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2230">NIP-DC：Nostr Webxdc&lt;/a>&lt;/strong>：alexgleasonがWebxdc（分散型ウェブアプリケーション）とNostr eventの統合を提案しています。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipディープダイブnip-55android署名アプリケーション">NIPディープダイブ：NIP-55（Android署名アプリケーション）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/55.md">NIP-55&lt;/a>はAndroid向けNostrクライアントが専用の署名アプリケーションに暗号操作をリクエストする方法を定義します。今週&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise v0.3.0&lt;/a>と&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered v1.0.6&lt;/a>の両方がAmberサポートを追加したため、Android署名プロトコルを詳しく見ていきます。&lt;/p>
&lt;p>&lt;strong>通信チャンネル：&lt;/strong>&lt;/p>
&lt;p>NIP-55は2つのメカニズムを通じてアプリ間署名を可能にします。インテントは一回限りの操作に視覚的フィードバック付きの手動ユーザー承認を提供します。コンテンツリゾルバーはユーザーが永続的な権限を付与した場合の自動署名を可能にし、繰り返しのプロンプトなしにバックグラウンドでアプリが署名できます。&lt;/p>
&lt;p>通信はカスタムの&lt;code>nostrsigner:&lt;/code>URIスキームを使用します。クライアントは次のように接触を開始します：&lt;/p>
&lt;pre tabindex="0">&lt;code>nostrsigner:&amp;lt;base64-encoded-event&amp;gt;?type=sign_event&amp;amp;callbackUrl=myapp://callback
&lt;/code>&lt;/pre>&lt;p>&lt;strong>サポートされる操作：&lt;/strong>&lt;/p>
&lt;p>仕様は7つの暗号メソッドを定義します。イベント署名（&lt;code>sign_event&lt;/code>）、公開鍵取得（&lt;code>get_public_key&lt;/code>）、&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化・復号化、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化・復号化、zapイベント復号化（&lt;code>decrypt_zap_event&lt;/code>）です。&lt;/p>
&lt;p>&lt;strong>パーミッションモデル：&lt;/strong>&lt;/p>
&lt;p>クライアントは信頼関係を確立するために&lt;code>get_public_key&lt;/code>を一度呼び出し、署名者のパッケージ名とユーザーのpubkeyを受け取ります。仕様はクライアントがこれらの値を保存し、&lt;code>get_public_key&lt;/code>を再度呼び出さないことを義務付けており、フィンガープリンティング攻撃を防ぎます。&lt;/p>
&lt;p>署名リクエストに対して、ユーザーは一度承認するかバックグラウンド操作のために「選択を記憶」を付与できます。ユーザーが操作を繰り返し拒否する場合、署名者は「rejected」ステータスを返して繰り返しのプロンプトを防ぎます。&lt;/p>
&lt;p>&lt;strong>実装：&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>はAndroid向けの主要なNIP-55署名者です。NIP-55をサポートするクライアントには&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#white-noise-v030">White Noise&lt;/a>、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#unfiltered-v106">Unfiltered&lt;/a>などがあります。ウェブアプリケーションは署名者のレスポンスを直接受信できず、コールバックURLまたはクリップボード操作を使用する必要があります。&lt;/p>
&lt;p>&lt;strong>他の署名NIPとの関係：&lt;/strong>&lt;/p>
&lt;p>NIP-55は&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>（ブラウザ拡張機能）と&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（relay経由のリモート署名）を補完します。NIP-07がデスクトップブラウザを処理し、NIP-46がクロスデバイス署名を処理するのに対し、NIP-55は最小限のレイテンシでネイティブAndroid統合を提供します。&lt;/p>
&lt;h2 id="nipディープダイブnip-60cashuウォレット">NIPディープダイブ：NIP-60（Cashuウォレット）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/60.md">NIP-60&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a> ecashウォレットがNostr relay上に状態を保存し、クロスアプリケーションのウォレット同期を可能にする方法を定義します。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr v0.2.6&lt;/a>がデバイス間のウォレット同期にNIP-60を使用しているため、このプロトコルを詳しく見ていきます。&lt;/p>
&lt;p>&lt;strong>イベントの種類：&lt;/strong>&lt;/p>
&lt;p>NIP-60は4つのイベントタイプを使用します。置換可能なkind 17375はミントURLとP2PK ecash支払いを受け取るための専用秘密鍵を含むウォレット設定を保存します。トークンイベント（kind 7375）は未使用の暗号証明を含み、支払い履歴（kind 7376）はユーザーの透明性のためにトランザクションを記録します。オプションのkind 7374はミント支払いクォートを追跡します。&lt;/p>
&lt;p>&lt;strong>ウォレットアーキテクチャ：&lt;/strong>&lt;/p>
&lt;p>ウォレット状態はrelayに存在し、アプリケーション間でアクセスできます。ユーザーのウォレットイベントにはCashuミントへの暗号化された参照と、ユーザーのNostrアイデンティティとは別のウォレット専用秘密鍵が含まれます。この分離は重要です。ウォレット鍵はecash操作を処理し、Nostr鍵はソーシャル機能を処理します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">17375&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;nip44-encrypted-wallet-config&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;cashu-wallet&amp;#34;&lt;/span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>証明の管理：&lt;/strong>&lt;/p>
&lt;p>Cashuの証明は無記名証券です。一度使われると証明は無効になります。NIP-60はロールオーバーメカニズムでこれを管理します。支払い時にクライアントは残りの未使用証明を持つ新しいトークンイベントを作成し、&lt;a href="https://nostrcompass.org/ja/topics/nip-09/">NIP-09&lt;/a>を通じて元のものを削除します。破棄されたトークンIDは状態追跡のために&lt;code>del&lt;/code>フィールドに入ります。&lt;/p>
&lt;p>クライアントは以前に使われた証明を検出するためにミントに対して証明を定期的に検証する必要があります。ミントごとに複数のトークンイベントが許可されており、支払い履歴イベントはオプションであってもユーザーがトランザクションを追跡するのに役立ちます。&lt;/p>
&lt;p>&lt;strong>セキュリティモデル：&lt;/strong>&lt;/p>
&lt;p>すべての機密データは&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用します。ウォレット秘密鍵は平文では現れません。relayは内容を理解せずに暗号化されたblobを保存するため、ウォレット状態は信頼できないrelayでもプライベートのままです。&lt;/p>
&lt;p>&lt;strong>実装：&lt;/strong>&lt;/p>
&lt;p>NIP-60をサポートするウォレットには&lt;a href="https://github.com/gandlafbtc/nutsack">Nutsack&lt;/a>と&lt;a href="https://github.com/cashubtc/eNuts">eNuts&lt;/a>があります。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-25-newsletter/#ridestr-v026">Ridestr&lt;/a>のようなクライアントはクロスデバイス同期にNIP-60を使用し、デスクトップでチャージしてモバイルから手動転送なしに使えます。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。構築中のプロジェクトや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>。Nostrでもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #10</title><link>https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> BlossomのローカルキャッシュレイヤーがAndroid向けオフラインメディアアクセスを目指す独立プロジェクトの収束として形になっています。AlbyがNostr Wallet Connect統合のビルドとテストを実際の資金なしで行える&lt;a href="https://sandbox.albylabs.com">NWC開発者サンドボックス&lt;/a>を立ち上げました。AIエージェント通信に関する競合提案が同じ週に2人の著者から届きました。fiatjafがリレー運営者がほとんど採用しなかった保持ポリシー、国コード、プライバシーポリシー、コミュニティ設定タグを削除し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>から未使用フィールドを除去しました。&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a>がTrusted AssertionsのサービスプロバイダーのDiscoverability指針としてマージされました。&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a>の新しい&lt;code>D&lt;/code>タグがカレンダーイベントの日単位タイムスタンプインデックスを可能にします。新プロジェクトとして、分散型マップタイル配布の&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a>、MLS暗号化メッセージングの&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>、Android向けFROST閾値署名の&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>、Nostr統合コンテンツアドレス型ストレージの&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a>、AndroidアプリからNostrへコンテンツを共有する&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>が登場しています。&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>がデュアルウォレットサポートと自動サービスライフサイクル管理を追加する11件のNWC PRをマージ。&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>がNWC統合による&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">内蔵Lightningウォレット&lt;/a>を出荷。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>がAndroidアプリストアリリースに向けて準備し、HAVENがマルチnpubサポートとクラウドバックアップを備えた&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>に到達。今週のディープダイブでは、Web of Trust計算をサービスプロバイダーに委任するNIP-85のTrusted Assertionsシステムと、日単位インデックス更新後のNIP-52カレンダーイベントプロトコルを取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="blossomローカルキャッシュレイヤーが登場">Blossomローカルキャッシュレイヤーが登場&lt;/h3>
&lt;p>複数の独立プロジェクトが同じ問題に収束しています。モバイルデバイスでの&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアへのオフラインアクセスです。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>は、&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>と&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>の開発者greenart7c3による新しいAndroidアプリで、Blossomメディアのクライアントサイドキャッシングを実装しています。ユーザーはネットワーク接続なしに以前に閲覧した画像やファイルにアクセスできます。&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>が画像ラベリング、一括ミラー・タグ・削除操作、ラベルとファイルタイプによるフィルタリング、初期ローカルBlossomキャッシュサポートを備えた&lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a>を出荷しました。Aerithは複数のBlossomサーバーにメディアを保存するユーザーがblobを整理・ミラーリングするための管理インターフェースです。&lt;/p>
&lt;p>Blossom仕様に新しい&lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">ローカルキャッシュ実装ガイド&lt;/a>が追加され、クライアントサイドのblobストレージが文書化されました。一方、&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>（Aerithと同じ開発者による）がAndroidのNostrへ共有フローにBlossomアップロード統合を追加。今週4つの独立プロジェクトが同じ問題に収束しました。専用キャッシュアプリ、メディアマネージャー、リファレンス仕様、Blossom統合を持つ共有ツールが、すべて単純なアップロード・取得を超えた永続的なローカルストレージを実装しています。&lt;/p>
&lt;h3 id="alby-nwc開発者サンドボックス">Alby NWC開発者サンドボックス&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">Nostr Wallet Connect（NIP-47）&lt;/a>でビルドする開発者向けサンドボックス環境を立ち上げました。このサンドボックスはホスト型NWCウォレットサービスを提供し、開発者は実際のLightningウォレットに接続することなくテスト接続を作成してシミュレート決済を送信し、NWCイベントのリクエスト・レスポンスサイクル全体をリアルタイムで観察できます。開発者はサンドボックスから&lt;code>nostr+walletconnect://&lt;/code>接続文字列を生成してクライアントに渡します。するとサンドボックスがクライアントとウォレットサービス間を流れるkind 23194リクエストとkind 23195レスポンスイベントを表示します。&lt;/p>
&lt;p>これにより新しいNWC統合の参入障壁が下がります。以前はテストに個人のLightningウォレットまたはセルフホスト型NWCサービスが必要でした。サンドボックスはそれを抽象化し、&lt;code>pay_invoice&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>メソッドをライブNWCエンドポイントに対して実装するための即時フィードバックループを開発者に提供します。&lt;/p>
&lt;h3 id="aiエージェントnipが登場">AIエージェントNIPが登場&lt;/h3>
&lt;p>Nostr上のAIエージェント通信に関する提案が数日以内に登場し、異なる角度から問題にアプローチしています。&lt;/p>
&lt;p>joelklaboによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>はAIエージェントインタラクションの完全なプロトコルを定義しています。プロンプト、レスポンス、ストリーミングデルタ、ステータス更新、ツールテレメトリ、エラー、キャンセル、機能ディスカバリー用のevent kindです。&lt;code>ai.info&lt;/code>ディスカバリーイベント（kind 31340、置換可能）でエージェントがサポートするモデル、スキーマ付きツール、ストリーミングサポート、レート制限をアナウンスできます。joelklaboの提案にはプロンプトIDによるラン相関、セッション管理、シーケンス順序によるストリーム照合、メタデータプライバシー用の&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ガイダンスが含まれています。&lt;/p>
&lt;p>pablof7zによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>は異なるアプローチを取り、エージェントのインスタンス化のためのkindを定義しています。定義とレッスンです。これらはpablof7zがNostr上に構築された自律学習システム&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>で使用するeventタイプです。同じくpablof7zによるコンパニオン提案&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>はNostr上で&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>サーバーとスキルをアナウンスするためのeventを定義しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントがサポートされているため、コミュニティはNostr上で直接MCPサーバーについて議論・評価できます。&lt;/p>
&lt;p>NIP-XXがエージェント通信全体をカバーし、NIP-AEとNIP-ADがアイデンティティとツールディスカバリーに対応します。これらの提案は統一された標準に収束するか、補完的なレイヤーとして共存するかもしれません。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="haven-v120-rc3">HAVEN v1.2.0-rc3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバーと4つのリレー機能をバンドルしたオールインワンパーソナルリレーの&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>が&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>に到達しました。このリリース候補では複数のnpubサポートが追加され、単一のHAVENインスタンスで複数のNostrアイデンティティを提供できます。以前のRCではクラウドバックアップ用の&lt;code>--from-cloud&lt;/code>と&lt;code>--to-cloud&lt;/code>フラグ（RC2）が追加され、Web of Trustの二重カウントバグが修正されました（RC1）。&lt;/p>
&lt;h3 id="mostro-mobile-v120内蔵lightningウォレット">Mostro Mobile v1.2.0：内蔵Lightningウォレット&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> P2P Bitcoin取引所のモバイルクライアント&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>（&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#mostro%E3%81%8C%E5%88%9D%E3%81%AE%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%99%E3%83%BC%E3%82%BF%E3%82%92%E5%85%AC%E9%96%8B">先週取り上げたv1.1.0&lt;/a>）が、完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NWC（NIP-47）&lt;/a>統合による内蔵Lightningウォレットを備えた&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a>を出荷しました。買い手と売り手はインボイスの処理にアプリを切り替える必要がなくなりました。アプリが売り手向けにホールドインボイスを検出して接続ウォレット経由で自動的に支払い、買い手は自動的なインボイス生成を受けられます。このリリースは同週前半の&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a>に続くもので、信頼できるインスタンスの厳選レジストリを持つマルチMostroノードサポート、ノード表示用のkind 0メタデータ取得、pubkeyによるカスタムノード管理、選択したノードがオフラインになった際の自動フォールバックが追加されました。&lt;/p>
&lt;p>サーバー側では&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a>がリリースされ、重複開発手数料支払いの修正、パスワード検証RPCエンドポイントのレート制限、協調キャンセル時の適切な紛争クリーンアップが含まれています。&lt;/p>
&lt;p>新しいコンパニオンプロジェクト&lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>により、エージェントがNostrを通じてMostroで取引できます。&lt;/p>
&lt;h3 id="aerith-v02">Aerith v0.2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>画像マネージャーの&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>が、メディア整理用の画像ラベル、サーバー間の一括ミラー・タグ・削除操作、ラベルとファイルタイプによるフィルタリング、初期ローカルキャッシュサポートを備えた&lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a>を出荷しました。ローカルキャッシュトレンドの全体的な文脈については&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#blossom%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%ab%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%81%8c%e7%99%bb%e5%a0%b4">ニュースセクション&lt;/a>を参照してください。&lt;/p>
&lt;h3 id="mapnolianostr経由の分散型マップタイル">Mapnolia：Nostr経由の分散型マップタイル&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a>は、&lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a>マップアーカイブを地理的地域にチャンク化し、分散型ディスカバリーのためにNostr上でアナウンスする新しい地理空間データサーバーです。kind 34444のパラメータ化された置換可能イベントをNostrリレーに公開し、マップタイルチャンクの完全なインデックス、レイヤーメタデータ、ジオハッシュ地域、ファイル参照、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバー詳細を含みます。&lt;/p>
&lt;p>クライアントは中央集権的なタイルサーバーの代わりにNostrネットワークを通じてマップデータを発見・取得します。アナウンスイベントにはリストされたBlossomサーバーから必要な地理的地域のみをリクエストするのに十分なメタデータが含まれています。Mapnoliaは地理空間データ配布をNostrにもたらす最初のプロジェクトで、オフライン対応マッピングアプリケーションの可能性を開きます。&lt;/p>
&lt;h3 id="pikamarmotベースのe2e暗号化メッセージング">Pika：MarmotベースのE2E暗号化メッセージング&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>は、Nostrリレー上に&lt;a href="https://nostrcompass.org/ja/topics/mls/">Messaging Layer Security（MLS）&lt;/a>をレイヤー化する&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを使用したiOSとAndroid向けの新しいE2E暗号化メッセージングアプリです。アーキテクチャは関心事を分離しており、Nostrリレー経由のMLSステート管理とメッセージ暗号化・復号化を処理するRustコア（&lt;code>pika_core&lt;/code>）と、SwiftUI（iOS）とKotlin（Android）のシンネイティブUIシェルで構成されています。ステートはUniFIとJNIバインディングを通じてUIからRustアクターへのアクション、そして状態とリビジョン番号のスナップショットをUIに返す一方向フローで流れます。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> BlossomのローカルキャッシュレイヤーがAndroid向けオフラインメディアアクセスを目指す独立プロジェクトの収束として形になっています。AlbyがNostr Wallet Connect統合のビルドとテストを実際の資金なしで行える&lt;a href="https://sandbox.albylabs.com">NWC開発者サンドボックス&lt;/a>を立ち上げました。AIエージェント通信に関する競合提案が同じ週に2人の著者から届きました。fiatjafがリレー運営者がほとんど採用しなかった保持ポリシー、国コード、プライバシーポリシー、コミュニティ設定タグを削除し、&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11&lt;/a>から未使用フィールドを除去しました。&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85&lt;/a>がTrusted AssertionsのサービスプロバイダーのDiscoverability指針としてマージされました。&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52&lt;/a>の新しい&lt;code>D&lt;/code>タグがカレンダーイベントの日単位タイムスタンプインデックスを可能にします。新プロジェクトとして、分散型マップタイル配布の&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a>、MLS暗号化メッセージングの&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>、Android向けFROST閾値署名の&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>、Nostr統合コンテンツアドレス型ストレージの&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a>、AndroidアプリからNostrへコンテンツを共有する&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>が登場しています。&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>がデュアルウォレットサポートと自動サービスライフサイクル管理を追加する11件のNWC PRをマージ。&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>がNWC統合による&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">内蔵Lightningウォレット&lt;/a>を出荷。&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>がAndroidアプリストアリリースに向けて準備し、HAVENがマルチnpubサポートとクラウドバックアップを備えた&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>に到達。今週のディープダイブでは、Web of Trust計算をサービスプロバイダーに委任するNIP-85のTrusted Assertionsシステムと、日単位インデックス更新後のNIP-52カレンダーイベントプロトコルを取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="blossomローカルキャッシュレイヤーが登場">Blossomローカルキャッシュレイヤーが登場&lt;/h3>
&lt;p>複数の独立プロジェクトが同じ問題に収束しています。モバイルデバイスでの&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアへのオフラインアクセスです。&lt;/p>
&lt;p>&lt;a href="https://github.com/greenart7c3/Morganite">Morganite&lt;/a>は、&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>と&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>の開発者greenart7c3による新しいAndroidアプリで、Blossomメディアのクライアントサイドキャッシングを実装しています。ユーザーはネットワーク接続なしに以前に閲覧した画像やファイルにアクセスできます。&lt;/p>
&lt;p>&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>が画像ラベリング、一括ミラー・タグ・削除操作、ラベルとファイルタイプによるフィルタリング、初期ローカルBlossomキャッシュサポートを備えた&lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a>を出荷しました。Aerithは複数のBlossomサーバーにメディアを保存するユーザーがblobを整理・ミラーリングするための管理インターフェースです。&lt;/p>
&lt;p>Blossom仕様に新しい&lt;a href="https://github.com/hzrd149/blossom/blob/master/implementations/local-blossom-cache.md">ローカルキャッシュ実装ガイド&lt;/a>が追加され、クライアントサイドのblobストレージが文書化されました。一方、&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>（Aerithと同じ開発者による）がAndroidのNostrへ共有フローにBlossomアップロード統合を追加。今週4つの独立プロジェクトが同じ問題に収束しました。専用キャッシュアプリ、メディアマネージャー、リファレンス仕様、Blossom統合を持つ共有ツールが、すべて単純なアップロード・取得を超えた永続的なローカルストレージを実装しています。&lt;/p>
&lt;h3 id="alby-nwc開発者サンドボックス">Alby NWC開発者サンドボックス&lt;/h3>
&lt;p>&lt;a href="https://sandbox.albylabs.com">Alby&lt;/a>が&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">Nostr Wallet Connect（NIP-47）&lt;/a>でビルドする開発者向けサンドボックス環境を立ち上げました。このサンドボックスはホスト型NWCウォレットサービスを提供し、開発者は実際のLightningウォレットに接続することなくテスト接続を作成してシミュレート決済を送信し、NWCイベントのリクエスト・レスポンスサイクル全体をリアルタイムで観察できます。開発者はサンドボックスから&lt;code>nostr+walletconnect://&lt;/code>接続文字列を生成してクライアントに渡します。するとサンドボックスがクライアントとウォレットサービス間を流れるkind 23194リクエストとkind 23195レスポンスイベントを表示します。&lt;/p>
&lt;p>これにより新しいNWC統合の参入障壁が下がります。以前はテストに個人のLightningウォレットまたはセルフホスト型NWCサービスが必要でした。サンドボックスはそれを抽象化し、&lt;code>pay_invoice&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>メソッドをライブNWCエンドポイントに対して実装するための即時フィードバックループを開発者に提供します。&lt;/p>
&lt;h3 id="aiエージェントnipが登場">AIエージェントNIPが登場&lt;/h3>
&lt;p>Nostr上のAIエージェント通信に関する提案が数日以内に登場し、異なる角度から問題にアプローチしています。&lt;/p>
&lt;p>joelklaboによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX: AI Agent Messages&lt;/a>はAIエージェントインタラクションの完全なプロトコルを定義しています。プロンプト、レスポンス、ストリーミングデルタ、ステータス更新、ツールテレメトリ、エラー、キャンセル、機能ディスカバリー用のevent kindです。&lt;code>ai.info&lt;/code>ディスカバリーイベント（kind 31340、置換可能）でエージェントがサポートするモデル、スキーマ付きツール、ストリーミングサポート、レート制限をアナウンスできます。joelklaboの提案にはプロンプトIDによるラン相関、セッション管理、シーケンス順序によるストリーム照合、メタデータプライバシー用の&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>ガイダンスが含まれています。&lt;/p>
&lt;p>pablof7zによる&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE: Agents&lt;/a>は異なるアプローチを取り、エージェントのインスタンス化のためのkindを定義しています。定義とレッスンです。これらはpablof7zがNostr上に構築された自律学習システム&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>で使用するeventタイプです。同じくpablof7zによるコンパニオン提案&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD: MCP Server and Skill Announcements&lt;/a>はNostr上で&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>サーバーとスキルをアナウンスするためのeventを定義しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントがサポートされているため、コミュニティはNostr上で直接MCPサーバーについて議論・評価できます。&lt;/p>
&lt;p>NIP-XXがエージェント通信全体をカバーし、NIP-AEとNIP-ADがアイデンティティとツールディスカバリーに対応します。これらの提案は統一された標準に収束するか、補完的なレイヤーとして共存するかもしれません。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="haven-v120-rc3">HAVEN v1.2.0-rc3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバーと4つのリレー機能をバンドルしたオールインワンパーソナルリレーの&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>が&lt;a href="https://github.com/bitvora/haven/releases/tag/v1.2.0-rc3">v1.2.0-rc3&lt;/a>に到達しました。このリリース候補では複数のnpubサポートが追加され、単一のHAVENインスタンスで複数のNostrアイデンティティを提供できます。以前のRCではクラウドバックアップ用の&lt;code>--from-cloud&lt;/code>と&lt;code>--to-cloud&lt;/code>フラグ（RC2）が追加され、Web of Trustの二重カウントバグが修正されました（RC1）。&lt;/p>
&lt;h3 id="mostro-mobile-v120内蔵lightningウォレット">Mostro Mobile v1.2.0：内蔵Lightningウォレット&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a> P2P Bitcoin取引所のモバイルクライアント&lt;a href="https://github.com/MostroP2P/mobile">Mostro Mobile&lt;/a>（&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#mostro%E3%81%8C%E5%88%9D%E3%81%AE%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%99%E3%83%BC%E3%82%BF%E3%82%92%E5%85%AC%E9%96%8B">先週取り上げたv1.1.0&lt;/a>）が、完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NWC（NIP-47）&lt;/a>統合による内蔵Lightningウォレットを備えた&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.2.0%2B2">v1.2.0&lt;/a>を出荷しました。買い手と売り手はインボイスの処理にアプリを切り替える必要がなくなりました。アプリが売り手向けにホールドインボイスを検出して接続ウォレット経由で自動的に支払い、買い手は自動的なインボイス生成を受けられます。このリリースは同週前半の&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.1%2B1">v1.1.1&lt;/a>に続くもので、信頼できるインスタンスの厳選レジストリを持つマルチMostroノードサポート、ノード表示用のkind 0メタデータ取得、pubkeyによるカスタムノード管理、選択したノードがオフラインになった際の自動フォールバックが追加されました。&lt;/p>
&lt;p>サーバー側では&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.2">Mostro v0.16.2&lt;/a>がリリースされ、重複開発手数料支払いの修正、パスワード検証RPCエンドポイントのレート制限、協調キャンセル時の適切な紛争クリーンアップが含まれています。&lt;/p>
&lt;p>新しいコンパニオンプロジェクト&lt;a href="https://github.com/MostroP2P/mostro-skill">mostro-skill&lt;/a>により、エージェントがNostrを通じてMostroで取引できます。&lt;/p>
&lt;h3 id="aerith-v02">Aerith v0.2&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>画像マネージャーの&lt;a href="https://github.com/hardran3/Aerith">Aerith&lt;/a>が、メディア整理用の画像ラベル、サーバー間の一括ミラー・タグ・削除操作、ラベルとファイルタイプによるフィルタリング、初期ローカルキャッシュサポートを備えた&lt;a href="https://github.com/hardran3/Aerith/releases/tag/v0.2">v0.2&lt;/a>を出荷しました。ローカルキャッシュトレンドの全体的な文脈については&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#blossom%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%ab%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e3%81%8c%e7%99%bb%e5%a0%b4">ニュースセクション&lt;/a>を参照してください。&lt;/p>
&lt;h3 id="mapnolianostr経由の分散型マップタイル">Mapnolia：Nostr経由の分散型マップタイル&lt;/h3>
&lt;p>&lt;a href="https://github.com/zeSchlausKwab/mapnolia">Mapnolia&lt;/a>は、&lt;a href="https://github.com/protomaps/PMTiles">PMTiles&lt;/a>マップアーカイブを地理的地域にチャンク化し、分散型ディスカバリーのためにNostr上でアナウンスする新しい地理空間データサーバーです。kind 34444のパラメータ化された置換可能イベントをNostrリレーに公開し、マップタイルチャンクの完全なインデックス、レイヤーメタデータ、ジオハッシュ地域、ファイル参照、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバー詳細を含みます。&lt;/p>
&lt;p>クライアントは中央集権的なタイルサーバーの代わりにNostrネットワークを通じてマップデータを発見・取得します。アナウンスイベントにはリストされたBlossomサーバーから必要な地理的地域のみをリクエストするのに十分なメタデータが含まれています。Mapnoliaは地理空間データ配布をNostrにもたらす最初のプロジェクトで、オフライン対応マッピングアプリケーションの可能性を開きます。&lt;/p>
&lt;h3 id="pikamarmotベースのe2e暗号化メッセージング">Pika：MarmotベースのE2E暗号化メッセージング&lt;/h3>
&lt;p>&lt;a href="https://github.com/sledtools/pika">Pika&lt;/a>は、Nostrリレー上に&lt;a href="https://nostrcompass.org/ja/topics/mls/">Messaging Layer Security（MLS）&lt;/a>をレイヤー化する&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルを使用したiOSとAndroid向けの新しいE2E暗号化メッセージングアプリです。アーキテクチャは関心事を分離しており、Nostrリレー経由のMLSステート管理とメッセージ暗号化・復号化を処理するRustコア（&lt;code>pika_core&lt;/code>）と、SwiftUI（iOS）とKotlin（Android）のシンネイティブUIシェルで構成されています。ステートはUniFIとJNIバインディングを通じてUIからRustアクターへのアクション、そして状態とリビジョン番号のスナップショットをUIに返す一方向フローで流れます。&lt;/p>
&lt;p>PikaはNostrリレーをMLSで暗号化された暗号文のトランスポートレイヤーとして使用する&lt;a href="https://github.com/marmot-protocol/whitenoise">White Noise&lt;/a>、&lt;a href="https://github.com/VectorPrivacy">Vector&lt;/a>、&lt;a href="https://0xchat.com">0xchat&lt;/a>と並ぶ成長中のMLS-on-Nostrメッセンジャー分野に加わります。すべてがNostrリレーをMLSで暗号化された暗号文のトランスポートレイヤーとして使用し、リレー運営者はメッセージ内容を読めません。PikaはMLS実装にMarmot Development Kit（MDK）を、リレー接続にnostr-sdkを使用しています。&lt;/p>
&lt;h3 id="keepandroid向けfrostjatopicsfrost閾値署名">Keep：Android向け&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>閾値署名&lt;/h3>
&lt;p>&lt;a href="https://github.com/privkeyio/keep-android">Keep&lt;/a>は、単一デバイスが完全な秘密鍵を保持しない&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>閾値署名のための新しいAndroidアプリケーションです。&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>（Android Signer）と&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>（リモート署名）を実装しており、互換Nostrクライアントが鍵素材をデバイス間で分散したまま署名をリクエストできます。デフォルト設定は2-of-3と3-of-5ですが、任意のt-of-n閾値がサポートされています。&lt;/p>
&lt;p>KeepのDKG（分散鍵生成）セレモニーはカスタムevent kindを使用してNostrリレー上で実行されます。kind 21101はグループアナウンス、kind 21102はラウンド1コミットメント多項式（公開ブロードキャスト）、kind 21103はラウンド2シークレットシェア（参加者間の&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化ポイントツーポイント）です。グループ秘密鍵スカラーはDKG中にどこでも計算・組み立てられません。各デバイスは多項式評価シェアのみを保持し、任意のtシェアが2ラウンドのコミット・次に署名プロトコルを通じて有効なSchnorr署名を生成できます。結果の64バイト署名は単一署名者のSchnorr署名と区別できません。内部的にKeepはZcash Foundationの&lt;code>frost-secp256k1-tr&lt;/code>クレートをTaproot調整で使用しており、グループ公開鍵がNostr npubとして直接機能します。&lt;/p>
&lt;p>Keepは&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>、&lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo for Android&lt;/a>、&lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>、&lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo for iOS&lt;/a>と並ぶ&lt;a href="https://frostr.org">Frostr&lt;/a>ファミリーに加わり、Nostrにおける閾値鍵管理の選択肢を拡げます。&lt;/p>
&lt;h3 id="prismandroidアプリからnostrへ何でも共有">Prism：AndroidアプリからNostrへ何でも共有&lt;/h3>
&lt;p>&lt;a href="https://github.com/hardran3/Prism">Prism&lt;/a>は、ユーザーが電話上の任意のアプリからテキスト、URL、画像、動画をNostrに公開できるよう、システム共有ターゲットとして登録する新しいAndroidアプリ（Kotlin/Jetpack Compose、API 26+）です。共有URLはノートに組み込まれる前にトラッキングパラメータ除去ツールを通過します。PrismはOpenGraphメタデータを取得してリッチリンクプレビューを生成し、ネイティブNostr参照（&lt;code>note1&lt;/code>、&lt;code>nevent1&lt;/code>）をインラインでレンダリングします。&lt;/p>
&lt;p>スケジューリングエンジンはAndroidバッテリー最適化をバイパスするハイブリッドな&lt;code>AlarmManager&lt;/code>/&lt;code>WorkManager&lt;/code>アプローチを使用しています。AlarmManagerが正確なウェイクアップタイミングを処理し、エクスペディットWorkManagerタスクがデリバリーを保証し、オフラインシナリオには指数バックオフリトライがあります。メディアアップロードは画像と動画フレームのサムネイル生成を備えた設定可能な&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーを通過します。すべてのevent署名は&lt;a href="https://github.com/greenart7c3/amber">Amber&lt;/a>のような&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>外部署名者に委任され、アイデンティティ切り替えのマルチアカウントサポートがあります。Prismは&lt;a href="https://nostrcompass.org/ja/topics/nip-84/">NIP-84（ハイライト）&lt;/a>投稿もサポートしています。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#aerith-v02">Aerith&lt;/a>と同じ開発者によるものです。&lt;/p>
&lt;h3 id="hashtreenostr統合コンテンツアドレス型ストレージ">Hashtree：Nostr統合コンテンツアドレス型ストレージ&lt;/h3>
&lt;p>&lt;a href="https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree">Hashtree&lt;/a>は、MerkleルートをNostr上に公開することでミュータブルなnpub/パスアドレスを作成するファイルシステムベースのコンテンツアドレス型blobストレージシステムです。このシステムは任意のキー・バリューストアで動作する「ダムストレージ」を使用し、コンテンツを&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>アップロードに最適化された2MBブロックにチャンク化します。BitTorrentとは異なり、アクティブなMerkle証明計算は不要で、ハッシュでblobを保存・取得するだけです。&lt;/p>
&lt;p>Nostr統合により、&lt;code>htree://npub.../repo-name&lt;/code>のようなgitリモートURLでリポジトリをクローンでき、&lt;code>htree publish mydata &amp;lt;hash&amp;gt;&lt;/code>のようなコマンドで&lt;code>npub.../mydata&lt;/code>アドレスにコンテンツハッシュを公開できます。包括的なCLIは暗号化（デフォルト）とパブリックストレージモード、コンテンツピン止め、Blossomサーバーへのプッシュ、Nostrアイデンティティ管理をサポートしています。各保存アイテムは生バイトまたはツリーノードで、Nostrのリレーネットワークを通じた分散型コンテンツ配布の基盤を提供します。&lt;/p>
&lt;h3 id="espyshakespeare上のカラーパレットキャプチャ">Espy：Shakespeare上のカラーパレットキャプチャ&lt;/h3>
&lt;p>&lt;a href="https://soapbox.pub/tools/shakespeare/">Shakespeare&lt;/a>プラットフォーム上に構築された&lt;a href="https://espy.you">Espy&lt;/a>は、ユーザーが写真からカラーパレットをキャプチャしてNostrイベントとして共有できるアプリです。ShakespeareはNIP-07ブラウザ拡張機能でユーザーを認証し、組み込みのNostrリレー接続を提供するAIパワードアプリビルダーで、開発者は独自の鍵管理やリレープールを実装せずにアプリを出荷できます。Espyはカメラ入力から支配的な色を抽出し、標準的なNostrフィードで発見可能な共有可能なパレットカードにします。&lt;/p>
&lt;h3 id="flotilla-164">Flotilla 1.6.4&lt;/h3>
&lt;p>hodlbodのDiscordライクなNostrクライアント&lt;a href="https://gitea.coracle.social/coracle/flotilla">Flotilla&lt;/a>がリレーをグループとして整理する&lt;a href="https://gitea.coracle.social/coracle/flotilla/releases/tag/1.6.4">1.6.4&lt;/a>を出荷しました。Coracleファミリーのプロジェクトがセルフホスト型&lt;a href="https://gitea.coracle.social/coracle">Gitea インスタンス&lt;/a>に移行しました。このリリースはNIP-9a経由のプッシュ通知とウォレット受信フロー、分類リストとスペースURLサポートを追加。インターフェースの改善にはモーダルと通知処理のクリーンアップが含まれています。モバイルでのルームミュートとセーフエリアインセットも変更点で、SafariでのSOURCE画像アップロードとカレンダーイベント詳細の修正もあります。&lt;/p>
&lt;h3 id="shosho-v0120">Shosho v0.12.0&lt;/h3>
&lt;p>Nostr統合モバイルライブストリーミングアプリ&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>が&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.12.0">v0.12.0&lt;/a>を出荷しました。このリリースはインプレーヤーリプライとカスタム絵文字統合を備えた動画クリップを追加。スレッド保護が間接的なメンションスパムをブロックし、新しいQR共有機能でユーザーがオフラインでプロフィールを交換できます。新しいホリゾンタル再生モードでストリームにTwitchスタイルの視聴体験が生まれ、ブラウズ画面にライブストリームと並んでクリエイタークリップが表示されます。&lt;/p>
&lt;h3 id="granary-v100">Granary v10.0&lt;/h3>
&lt;p>Nostr、Bluesky、ActivityPub、その他のプラットフォーム間でデータを共通フォーマットに変換するソーシャルウェブ変換ライブラリ&lt;a href="https://github.com/snarfed/granary">Granary&lt;/a>が、重大な変更を含む&lt;a href="https://github.com/snarfed/granary/releases/tag/v10.0">v10.0&lt;/a>を出荷しました。このリリースはNostrのデフォルトActivityStreams 1 IDをbech32からhexに切り替え、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/27.md">NIP-27&lt;/a>メンション解析とarticleタグを含む拡張Nostrサポートを追加します。コンバーター全体の新しい複数出力オプションにより、開発者がプロトコル間でバッチ変換できます。&lt;/p>
&lt;h3 id="nostr-mcp-server-v300">Nostr MCP Server v3.0.0&lt;/h3>
&lt;p>AIエージェントがNostrネットワークとインタラクションできる&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>サーバーの&lt;a href="https://github.com/AustinKelsay/nostr-mcp-server">Nostr MCP Server&lt;/a>が&lt;a href="https://github.com/AustinKelsay/nostr-mcp-server/releases/tag/v3.0.0">v3.0.0&lt;/a>を出荷しました。このメジャーリリースはソーシャルアクション（フォロー、リアクション、リポスト、リプライ）と&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a>サポートに加えてオプションの&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>認証を含むリレーリスト管理を追加します。&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>経由のダイレクトメッセージも新しく追加されました。このリリースは今週の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88nip%e3%81%8c%e7%99%bb%e5%a0%b4">AIエージェントNIP提案&lt;/a>とペアになり、Nostr上で活動するエージェントの実用的なツールとなります。&lt;/p>
&lt;h3 id="aegis-v038">Aegis v0.3.8&lt;/h3>
&lt;p>クロスプラットフォームNostr署名者&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>が、多言語UIサポートと内蔵Nostrアプリブラウザーのインクリメンタルアップデートマネージャーを備えた&lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.8">v0.3.8&lt;/a>を出荷しました。新しいアップデートメカニズムはローカル状態に対してインクリメンタルにdiffし、Nostrウェブアプリのアプリ内ディレクトリを低帯域幅使用量で最新に保ちます。このリリースでは連続して複数のeventに署名する際のデータベースラウンドトリップを削減するため、5分間の鍵素材キャッシングも導入されます。&lt;/p>
&lt;h3 id="snstr-v031">SNSTR v0.3.1&lt;/h3>
&lt;p>NostrプロトコルのTypeScriptライブラリ&lt;a href="https://github.com/AustinKelsay/snstr">SNSTR&lt;/a>（Secure Nostr Software Toolkit for Renegades）が&lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.1">v0.3.1&lt;/a>を出荷しました。このリリースはすべてのエントリーポイントがnpmタービューに含まれることを確認するパッケージ検証ガードを追加し、NodeとBunのCIエンフォースメントがあります。&lt;a href="https://github.com/AustinKelsay/snstr/releases/tag/v0.3.0">v0.3.0&lt;/a>も同じ週に出荷されました。&lt;/p>
&lt;h3 id="citrine-v200-pre1">Citrine v2.0.0-pre1&lt;/h3>
&lt;p>greenart7c3によるAndroid Nostrリレー&lt;a href="https://github.com/greenart7c3/Citrine">Citrine&lt;/a>が、最適化されたデータベースインデックスとKotlinコルーチン処理の改善によるパフォーマンス向上を含む&lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre1">v2.0.0-pre1&lt;/a>をリリースしました。このリリースはウェブアプリのホスティングサポートも強化し、各アプリが独自ポートで動作するようになりました。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="primal-androidnwcインフラ拡張">Primal Android：NWCインフラ拡張&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>が今週11件のNWC関連PRをマージし、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/#primal-android-ships-nwc-encryption">2週間前に開始した&lt;/a>構築を継続しました。このバッチはデュアルウォレットNWCサポート、バックエンド通知に連動した自動サービスの開始・停止、ウォレットタイプによる接続ルーティング、ウォレット削除時の適切なデータクリーンアップを追加します。NWCサービスがウォレット接続状態に基づいて独自のライフサイクルを管理するようになり、ユーザーの手動操作が減ります。&lt;/p>
&lt;h3 id="notedeckandroidアプリストアの準備">Notedeck：Androidアプリストアの準備&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>チームによるマルチプラットフォームNostrクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>が今週&lt;a href="https://github.com/damus-io/notedeck/pull/1287">Androidアプリストアリリース準備&lt;/a>をマージしました。このPRはGoogle Playが要求するUGC（ユーザー生成コンテンツ）コンプライアンスプランを追加しており、利用規約同意画面、コンテキストメニューと設定からのユーザーブロック、レポートイベントをリレーに公開する&lt;a href="https://nostrcompass.org/ja/topics/nip-56/">NIP-56（報告）&lt;/a>機能、コンテンツ・安全設定セクションが含まれます。署名済みリリースAPKとAAB（Android App Bundle）を新しいMakefileターゲット経由で生成するビルドインフラも追加されました。EULAドキュメントが17歳以上の要件とNostr固有の分散型コンテンツに関する免責事項を定めています。コンプライアンス機能自体はフォローアップPRで出荷されます。このマージはドキュメントと署名の基盤を整えるものです。&lt;/p>
&lt;p>Damus iOS側では、コンテンツがロード済みにもかかわらずスピナーが永続する&lt;a href="https://github.com/damus-io/damus/pull/3593">無限ローディングスピナーのリグレッション&lt;/a>の修正が入りました。&lt;/p>
&lt;h3 id="nostriaディスカバリーリレーとdm修正">Nostria：ディスカバリーリレーとDM修正&lt;/h3>
&lt;p>クロスプラットフォームNostrクライアント&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>が今週9件のPRをマージしました。最も注目すべきものはプロフィールルックアップ用の&lt;a href="https://github.com/nostria-app/nostria/pull/460">ディスカバリーリレーの自動初期化&lt;/a>を追加し、新規ユーザーが手動設定なしにリレー接続を得られます。その他の修正は&lt;a href="https://github.com/nostria-app/nostria/pull/466">DMテキストエリアの折り返し&lt;/a>、&lt;a href="https://github.com/nostria-app/nostria/pull/479">フルスクリーン動画ビューポートフィル&lt;/a>、&lt;a href="https://github.com/nostria-app/nostria/pull/481">リポストプレビューでのarticleメタデータ抽出&lt;/a>、&lt;a href="https://github.com/nostria-app/nostria/pull/458">通知でのnostr: URI解決&lt;/a>に対応しています。&lt;/p>
&lt;h3 id="camelusriverpod-v3移行">Camelus：Riverpod v3移行&lt;/h3>
&lt;p>FlutterベースのNostrクライアント&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>が今週5件のPRをマージし、&lt;a href="https://github.com/camelus-hq/camelus/pull/158">Riverpod v3 API移行&lt;/a>と&lt;a href="https://github.com/camelus-hq/camelus/pull/159">汎用フィードリファクタリング&lt;/a>を中心とした作業を行いました。&lt;a href="https://github.com/camelus-hq/camelus/pull/161">組み込みノートキャッシュ&lt;/a>が引用ノートの冗長なリレー取得を回避します。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">NIP-85：サービスプロバイダーDiscoverability&lt;/a>&lt;/strong>：vitorpamplonaがリレーヒントとアルゴリズム固有のサービスキーを含む&lt;a href="https://nostrcompass.org/ja/topics/trusted-relay-assertions/">NIP-85 Trusted Assertions&lt;/a>サービスプロバイダーのクライアントディスカバリープロセスに関するガイダンスを追加しました。詳細は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#nip%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%80%e3%82%a4%e3%83%96nip-85-trusted-assertions">下記のディープダイブ&lt;/a>を参照してください。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1946">NIP-11：リレー情報のクリーンアップ&lt;/a>&lt;/strong>：fiatjafが&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>から&lt;code>privacy_policy&lt;/code>、&lt;code>retention&lt;/code>配列、&lt;code>relay_countries&lt;/code>、コミュニティ設定ブロックを削除しました。リレー運営者はこれらのフィールドをほとんど使用せず、クライアントもそれらに基づいた動作をしていませんでした。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">NIP-52：日単位タイムスタンプタグ&lt;/a>&lt;/strong>：staabが&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>の時間ベースカレンダーイベント（kind 31923）に必須の&lt;code>D&lt;/code>タグを追加しました。&lt;code>floor(unix_seconds / 86400)&lt;/code>として計算される日単位Unixタイムスタンプを表し、複数の&lt;code>D&lt;/code>タグが複数日イベントをカバーし、完全なタイムスタンプを解析せずに効率的な時間インデックスを可能にします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47：簡素化&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/">ニュースレター#9で取り上げた&lt;/a>簡素化PRが今週マージされ、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47（Nostr Wallet Connect）&lt;/a>から&lt;code>multi_pay_invoice&lt;/code>と&lt;code>multi_pay_keysend&lt;/code>が削除されました。完全なNWCプロトコルディープダイブは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/#nip%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%80%E3%82%A4%E3%83%96nip-47-nostr-wallet-connect">ニュースレター#8&lt;/a>を参照してください。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74：ポッドキャスト&lt;/a>&lt;/strong>：&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/">ニュースレター#8&lt;/a>で取り上げたこのポッドキャスト仕様提案が今週活発な議論を展開しました。staabはすでに少なくとも3つの競合するポッドキャスト標準が実際に存在すると指摘し、derekrossは6ヶ月前からアクティブなアプリとポッドキャストを持つ既存の実装を示しました。実装間の収束がNIP番号を割り当てられる前に必要です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2226">NIP-XX：AIエージェントメッセージ&lt;/a>&lt;/strong>：joelklaboがプロンプト、レスポンス、ストリーミング、ツールテレメトリ、エラー、機能ディスカバリー用のevent kindを持つ完全なAIエージェント通信プロトコルを提案しています。今週のすべてのAI提案のカバレッジは&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-18-newsletter/#ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88nip%e3%81%8c%e7%99%bb%e5%a0%b4">ニュースセクション&lt;/a>を参照してください。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1893">NIP-PNS：プライベートノートストレージ&lt;/a>&lt;/strong>：jb55のプライベートノートシステムは、誰が書いたかを明らかにすることなく暗号化された個人ノートをリレーに保存するためのkind 1080イベントを定義しています。このスキームはHKDFを通じてユーザーのnsecから決定論的な仮名キーペアを導出します。&lt;code>pns_key = hkdf_extract(ikm=device_key, salt=&amp;quot;nip-pns&amp;quot;)&lt;/code>、そしてその導出キーからsecp256k1キーペアを生成します。2番目の導出が対称暗号化キーを生成します。&lt;code>pns_nip44_key = hkdf_extract(ikm=pns_key, salt=&amp;quot;nip44-v2&amp;quot;)&lt;/code>。内部ノートはこのキーで&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a> v2で暗号化され、仮名pubkeyで公開されるため、リレーはユーザーのメインキーにリンクされていないアイデンティティからのkind 1080イベントを見ます。&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>のギフトラップとは異なり、PNSはスパム不可能（仮名キーは決定論的でランダムではない）でゼロのパブリックメタデータを持ちます（受信者がいないので&lt;code>p&lt;/code>タグが不要）。今週、jb55がNotedeck のRustバックエンド（&lt;code>enostr::pns&lt;/code>モジュール）でPNSを実装した際の所見を投稿しました。仕様の&lt;code>hkdf_extract&lt;/code>呼び出しがRFC 5869 HKDFに2つのフェーズ（抽出と展開）があり異なる出力を生成し、ほとんどのライブラリが両方を期待するため曖昧であることを特定しました。&lt;code>pns_nip44_key&lt;/code>がNIP-44の通常のECDH鍵合意をバイパスして会話キーとして直接使用されることを明確化しました。これはほとんどのNIP-44ライブラリがデフォルトでECDHを使用するため実装者が知る必要がある詳細です。参照実装のTypeScriptで未定義変数も指摘しました。元々2025年4月からのこのPRが今積極的に実装されています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2220">NIP-AE：エージェント&lt;/a>&lt;/strong>：pablof7zが&lt;a href="https://github.com/tenex-chat/tenex">TENEX&lt;/a>での作業から得たNostr上のエージェントアイデンティティのための4つのevent kindを定義しています。基本テンプレートはkind 4199（エージェント定義）で、タイトル、役割説明、システム指示、ツール宣言、バージョンを持ちます。動作モディファイアーはkind 4201（エージェントナッジ）に存在し、実行時の機能制御のために&lt;code>only-tool&lt;/code>、&lt;code>allow-tool&lt;/code>、&lt;code>deny-tool&lt;/code>タグを使用します。エージェントは学習内容をkind 4129（エージェントレッスン）イベントとして公開し、&lt;code>e&lt;/code>タグで親定義にリンクし、&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントスレッドで洗練されます。所有権検証はkind 14199を使用し、エージェントpubkeyをリストする置換可能イベントで、エージェントのkind 0プロフィールの&lt;code>p&lt;/code>タグと照合した際に双方向チェーンを確立します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2221">NIP-AD：MCPサーバーとスキルアナウンス&lt;/a>&lt;/strong>：pablof7zがNostr上で&lt;a href="https://modelcontextprotocol.io/">Model Context Protocol&lt;/a>サーバーと個々のスキルをアナウンスするためのeventを定義しています。MCPサーバーアナウンスはサーバーのエンドポイントURLとサポートされるプロトコルバージョン、入力スキーマ付きの利用可能ツールリストを持ちます。サーバーアナウンスに&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントがサポートされているため、コミュニティはNostr上で直接MCPサーバーを議論・評価できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2224">NIP-73：OSMタグkind&lt;/a>&lt;/strong>：DestBroがISBN（書籍）、ISAN（映画）、ポッドキャストフィード（GUID）、ジオハッシュ、URLなどの外部コンテンツへのNostrイベント参照を&lt;code>i&lt;/code>と&lt;code>k&lt;/code>タグで標準化する&lt;a href="https://nostrcompass.org/ja/topics/nip-73/">NIP-73（外部コンテンツID）&lt;/a>にOpenStreetMap識別子の追加を提案しています。提案されたOSM kindにより、イベントがOpenStreetMapのノードまたはウェイIDで特定の地図フィーチャー（建物、道路、公園）を参照でき、Nostrコンテンツをオープンな地理データベースに接続します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2219">NIP-XX：レスポンシブ画像バリアント&lt;/a>&lt;/strong>：woikosが&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>ファイルメタデータイベントを異なる解像度のレスポンシブ画像バリアント用のタグで拡張することを提案しています。クライアントが表示サイズとネットワーク条件に基づいて適切なバリアントを選択でき、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーにホストされた高解像度画像を閲覧するモバイルユーザーの帯域幅を削減します。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipディープダイブnip-85trusted-assertions">NIPディープダイブ：NIP-85（Trusted Assertions）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a>は高コストな計算を信頼できるサービスプロバイダーに委任し、そのプロバイダーが署名済みの結果をNostrイベントとして公開するシステムを定義しています。Web of Trustスコアとエンゲージメントメトリクスには多くのリレーをクロールして大量のeventボリュームを処理する必要があり、モバイルデバイスでは実行不可能な作業です。今週の&lt;a href="https://github.com/nostr-protocol/nips/pull/2223">マージ&lt;/a>によりこれらのプロバイダーのクライアントディスカバリープロセスに関するガイダンスが追加されました。&lt;/p>
&lt;p>&lt;strong>委任：&lt;/strong>&lt;/p>
&lt;p>ユーザーのWeb of Trustスコアを計算するには多くのリレーにまたがって複数ホップのフォローグラフをクロールする必要があり、正確なフォロワー数を計算するにはリレーネットワーク全体での重複排除が必要です。モバイルデバイスとブラウザクライアントはこれらの操作を実行できませんが、その結果はスパムフィルタリングとコンテンツランキングに不可欠です。NIP-85は、ユーザーが信頼できるプロバイダーを指定して計算を実行し、結果を標準Nostrイベントとして公開することを可能にすることでこのギャップを埋めます。&lt;/p>
&lt;p>&lt;strong>プロトコル設計：&lt;/strong>&lt;/p>
&lt;p>NIP-85は異なるサブジェクトタイプに関するアサーションのための4つのevent kindを使用します。ユーザーアサーション（kind 30382）はフォロワー数、投稿・リプライ・リアクション数、zap量、正規化ランク（0-100）、共通トピック、アクティブ時間を持ちます：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30382&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;followers&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4521&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;first_created_at&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1609459200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;post_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1283&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reply_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;647&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reactions_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;8920&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;850000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;320000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;412&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;198&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1150&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_avg_amt_day_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;430&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_recd&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reports_cnt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;active_hours_end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;22&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>イベントアサーション（kind 30383）はコメント数、引用数、リポスト数、リアクション数、zapデータで個々のノートを評価します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30383&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;target event id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;72&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;45&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;quote_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;repost_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;310&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;23&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;zap_amount&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;125000&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>アドレス指定可能なイベント（長文記事、wikiページ）については、kind 30384がすべてのバージョンにわたって同じエンゲージメントメトリクスを適用します。Kind 30385は&lt;code>i&lt;/code>と&lt;code>k&lt;/code>タグでNostrイベントが外部コンテンツを参照する方法を標準化する&lt;a href="https://nostrcompass.org/ja/topics/nip-73/">NIP-73（外部コンテンツID）&lt;/a>を通じて参照される外部識別子（書籍、映画、ウェブサイト、場所、ハッシュタグ）を評価します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30385&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn:9780765382030&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;k&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;isbn&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;94&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;comment_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;67&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;reaction_cnt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;203&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;service key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>各アサーションは&lt;code>d&lt;/code>タグにサブジェクト（pubkey、event ID、eventアドレス、またはNIP-73識別子）を含む置換可能なアドレス指定可能イベントです。サービスプロバイダーはこれらのイベントに独自のキーで署名し、クライアントは信頼関係に基づいて評価します。&lt;/p>
&lt;p>&lt;strong>プロバイダーディスカバリー：&lt;/strong>&lt;/p>
&lt;p>ユーザーはkind 10040イベントを公開することで信頼するアサーションプロバイダーを宣言します。各エントリーはプロバイダーpubkeyとリレーヒント、オプションのアルゴリズムバリアントとともにアサーションタイプを指定します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10040&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;3d842afe...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nostr.wine&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30382:zap_amt_sent&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;30383:rank&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4fd5e210...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nip85.nostr.band&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;user signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ユーザーはプロバイダー設定を非公開にするため、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>を使用して&lt;code>.content&lt;/code>のタグリストを暗号化できます。クライアントはフォローしたアカウントが信頼するプロバイダーを確認することでプロバイダーリストを構築し、アサーションプロバイダー自体の分散型レピュテーションレイヤーを作ります。&lt;/p>
&lt;p>&lt;strong>セキュリティモデル：&lt;/strong>&lt;/p>
&lt;p>プロバイダーは異なるアルゴリズムには異なるサービスキーを使用しなければならず、アルゴリズムがユーザーごとにパーソナライズされる場合はユーザーごとにユニークなキーが必要で、ユーザー間のクエリのクロス相関を防ぎます。各サービスキーにはアルゴリズムの動作を説明するkind 0メタデータイベントがあり、ユーザーが何を信頼しているかを透明にします。アサーションイベントは基礎となるデータが実際に変化した場合にのみ更新されるべきで、不必要なリレートラフィックを防ぎ、クライアントが結果を自信を持ってキャッシュできるようにします。&lt;/p>
&lt;p>&lt;strong>現在の採用状況：&lt;/strong>&lt;/p>
&lt;p>NIP-85は非公式にすでに生まれつつあったパターンを正式化しています。PrimalのキャッシュサーバーがエンゲージメントメトリクスとWeb of Trustスコアを計算しています。&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#antiprimalprimal%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%B8%E3%81%AE%E8%A6%8F%E6%A0%BC%E6%BA%96%E6%8B%A0%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4">ニュースレター#9&lt;/a>で取り上げた&lt;a href="https://gitlab.com/soapbox-pub/antiprimal">Antiprimal&lt;/a>がNIP-85のevent kindを使用してこれらの計算を標準Nostrクライアントに橋渡ししています。&lt;a href="https://nostr.band">Nostr.band&lt;/a>は仕様の例で参照されている&lt;code>wss://nip85.nostr.band&lt;/code>リレーを運営し、検索インデックスデータのアサーションイベントを提供しています。クライアント側では、&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>（このNIPを書いたvitorpamplonaが開発）がアサーションイベントとサービスプロバイダー宣言を解析する&lt;code>quartz&lt;/code>ライブラリで実験的なTrusted Assertionsサポートを持っています。&lt;a href="https://vertexlab.io">Vertex&lt;/a>は同様のWeb of Trustメトリクスを計算していますが、ディスカバリー問題とアサーションベースのアーキテクチャの計算オーバーヘッドを理由に、NIP-85イベントの代わりに直接APIを使用する&lt;a href="https://vertexlab.io/blog/dvms_vs_nip_85/">異なるアプローチを選択しました&lt;/a>。NIP-85があれば、クライアントは標準のeventフォーマットを通じて任意のプロバイダーからアサーションを消費でき、プロバイダーは精度で競争し、ユーザーが誰を信頼するかを選択します。&lt;/p>
&lt;h2 id="nipディープダイブnip-52カレンダーイベント">NIPディープダイブ：NIP-52（カレンダーイベント）&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/52.md">NIP-52&lt;/a>はNostr上のカレンダーイベントを定義し、クライアントが特定の瞬間または瞬間の間の出来事を標準的な方法で表現・発見できます。今週の&lt;a href="https://github.com/nostr-protocol/nips/pull/1752">Dタグマージ&lt;/a>により日単位インデックスが追加され、仕様のクエリインフラの欠落していたピースが完成しました。&lt;/p>
&lt;p>&lt;strong>2つのeventタイプ：&lt;/strong>&lt;/p>
&lt;p>NIP-52は時間精度に基づいてカレンダーイベントを2つのkindに分けます。日付ベースイベント（kind 31922）は祝日や複数日フェスティバルのような終日の出来事を表します。&lt;code>start&lt;/code>とオプションの&lt;code>end&lt;/code>タグにISO 8601日付文字列を使用し、タイムゾーンは考慮しません：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1735689600&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31922&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Annual celebration of Bitcoin&amp;#39;s genesis block&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin-independence-day-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Independence Day&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-03&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2026-01-04&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Worldwide&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;u4pruydqqv&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bitcoin&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoinindependenceday.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>時間ベースイベント（kind 31923）は&lt;code>start&lt;/code>とオプションの&lt;code>end&lt;/code>タグにUnixタイムスタンプを持つ特定の瞬間を表し、表示用のIANAタイムゾーン識別子（&lt;code>start_tzid&lt;/code>、&lt;code>end_tzid&lt;/code>）も持ちます。両kindはパラメータ化された置換可能イベントで、主催者は同じ&lt;code>d&lt;/code>タグで新しいイベントを公開することで詳細を更新できます。&lt;/p>
&lt;p>&lt;strong>カレンダーとRSVP：&lt;/strong>&lt;/p>
&lt;p>Kind 31924イベントはコレクションとしてカレンダーを定義し、kind 31922またはkind 31923イベントをそのアドレス座標で指す&lt;code>a&lt;/code>タグでイベントを参照します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31924&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Nostr community events worldwide&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-community-calendar&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Community Events&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31922:&amp;lt;organizer-pubkey&amp;gt;:bitcoin-independence-day-2026&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;calendar owner signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ユーザーは複数のカレンダー（個人、仕事、コミュニティ）を維持でき、クライアントは特定のpubkeyからカレンダーを購読できます。カレンダーイベントはカレンダーを参照する&lt;code>a&lt;/code>タグを含めることで参加リクエストを送れ、複数のユーザーが所有していないカレンダーにイベントを追加する協力的なカレンダー管理を可能にします。&lt;/p>
&lt;p>RSVPはkind 31925を使用し、ユーザーがオプションの空き・ビジーインジケーターとともに出席ステータスを公開します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31925&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Looking forward to it&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;31923:&amp;lt;organizer-pubkey&amp;gt;:nostr-meetup-2026&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;kind 31923 event id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unique-rsvp-id&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;status&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;accepted&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;fb&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;busy&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;attendee signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>有効な&lt;code>status&lt;/code>値は「accepted」「declined」「tentative」で、オプションの&lt;code>fb&lt;/code>タグでその期間のユーザーの空き・ビジー状態を示します。RSVPイベントはカレンダーイベントの&lt;code>a&lt;/code>タグを参照し、主催者の&lt;code>p&lt;/code>タグを持つため、主催者のクライアントがリレーをまたいでレスポンスを集約できます。&lt;/p>
&lt;p>&lt;strong>Dタグの追加：&lt;/strong>&lt;/p>
&lt;p>今週のマージ以前は、日付範囲でイベントをクエリするクライアントがpubkeyまたはカレンダーからすべてのイベントを取得してクライアントサイドでフィルタリングする必要がありました。時間ベースイベント（kind 31923）の新しい必須&lt;code>D&lt;/code>タグには&lt;code>floor(unix_seconds / 86400)&lt;/code>として計算された日単位Unixタイムスタンプが含まれます。複数日イベントには1日1つの複数の&lt;code>D&lt;/code>タグが付きます。リレーがこれで日単位でイベントをインデックス化し、フィルタリングされたクエリに効率的に応答できるようになり、クライアントサイドのフィルタリング問題がリレーサイドのインデックスルックアップに変わります。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1739836800&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">31923&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Monthly meetup for Nostr developers in Austin&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr-meetup-2026&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Nostr Developer Meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;summary&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Talks and demos from local Nostr builders&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;image&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://example.com/meetup-banner.jpg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740067200&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1740078000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;start_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;end_tzid&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;America/New_York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;D&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;20139&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;location&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Bitcoin Commons, Austin TX&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;g&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9v6knb2pg&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;organizer-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;host&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;speaker-pubkey&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;speaker&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nostr&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;t&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;meetup&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://bitcoincommons.com&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event creator signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>D&lt;/code>値の&lt;code>20139&lt;/code>は&lt;code>floor(1740067200 / 86400)&lt;/code>に等しく、このイベントを2025年2月20日に配置します。「今週のすべてのイベント」をクエリするクライアントは対応する&lt;code>D&lt;/code>範囲でフィルターを送信し、リレーは一致するイベントのみを返します。&lt;/p>
&lt;p>&lt;strong>設計上の決定：&lt;/strong>&lt;/p>
&lt;p>NIP-52は繰り返しイベントを意図的に省略しています。仕様は繰り返しルール（iCalendarからのRRULE）を完全に除外し、その複雑さをクライアントに委ねています。主催者は各出来事ごとに個別のイベントを公開し、リレーサイドのデータモデルをシンプルに保ちます。参加者タグはオプションのロール（「host」「speaker」「attendee」）を持ち、locationタグは人間が読めるアドレスと並んで空間クエリ用のジオハッシュ&lt;code>g&lt;/code>タグを含めることができます。&lt;/p>
&lt;p>&lt;strong>実装：&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://github.com/zmeyer44/flockstr">Flockstr&lt;/a>はNIP-52上に構築された主要なカレンダークライアントです。&lt;a href="https://gitea.coracle.social/coracle/coracle">Coracle&lt;/a>がソーシャルフィードでカレンダーイベントを表示します。今週の&lt;code>D&lt;/code>タグ追加により、両クライアントが特定の日付範囲でイベントをクエリする際の帯域幅削減に活用できるリレーサイドの時間インデックスが可能になります。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。構築中のプロジェクトや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>。Nostrでもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #9</title><link>https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> Mostroが3年間の開発を経て初のパブリックベータを公開し、Nostr経由でP2P Bitcoin取引をモバイルに提供します。OpenSatsが第16波のBitcoin助成金を発表し、Nostr統合Cashuウォレットの開発を続けるMinibits Walletが更新助成金を受領しました。&lt;strong>Zapstoreが安定版1.0リリースに到達&lt;/strong>し、分散型Androidアプリストアの成熟を示しています。Coracle 0.6.29がトピックとハイライトコメントを追加。Igloo Desktop v1.0.3がFrostr閾値署名のセキュリティ強化を出荷。Amber v4.1.2-pre1がFlowアーキテクチャに移行。Angorがv0.2.5に到達し、資金調達UIの刷新とNIP-96画像サーバー設定を追加。NostrPressがNostrプロフィールを静的ブログに変換するツールとして登場。AntiprimalがPrimalの独自キャッシュサーバーを標準Nostr NIPsに橋渡しする規格準拠ゲートウェイを出荷。Primal Androidが18件のPRをマージし、デュアルウォレットサポート、監査ログ、&lt;code>lookup_invoice&lt;/code>メソッドでNWCインフラを拡張。diVineがAPI優先のビデオフィードを出荷。Marmot TypeScript SDKがリファレンスチャットアプリを独立リポジトリに分離し、ts-mls v2への移行を開始。NIPsリポジトリがNIP-45のHyperLogLog近似カウントをマージし、kind 0からidentityタグを抽出。vitorpamplonaによる一連の提案がkind 0メタデータイベントの体系的なスリム化を開始。新しいプロトコル提案として、NAT越え用のNostr Relay Connectと署名付きWeb主張用のNostr Web Tokensが登場。今週のディープダイブでは、NIP-45の新しいHyperLogLog近似カウント（クロスrelay event計測向け）と、NIP-96のHTTPファイルストレージプロトコル（Blossom移行が進む中で非推奨化）を取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="mostroが初のパブリックベータを公開">Mostroが初のパブリックベータを公開&lt;/h3>
&lt;p>Nostr上に構築されたピアツーピアBitcoin取引所&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が、&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">モバイルアプリv1.1.0&lt;/a>をリリースしました。3年間の開発を経た初のパブリックベータです。このアプリは、Nostrを注文調整に、Lightningを決済に使用し、カストディアル仲介者なしでBitcoinの直接取引を可能にします。&lt;/p>
&lt;p>今回のリリースでは、Androidでのバックグラウンド信頼性が改善されたプッシュ通知、問題発生時に診断データをキャプチャして共有できるオプションのログシステム、加算的初期化によるスムーズなrelay更新、国際化対応を含むフェーズ2のUIリファインメントが導入されています。アプリは&lt;a href="https://zapstore.dev">Zapstore&lt;/a>およびGitHubからの直接&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">ダウンロード&lt;/a>で入手可能です。&lt;/p>
&lt;p>MostroはShopstrやPlebeian Marketに並ぶNostrネイティブコマースアプリケーションで、法定通貨とBitcoinの交換調整に特化している点が特徴です。基盤となる&lt;a href="https://github.com/MostroP2P/mostro">Mostroデーモン&lt;/a>がNostr relay経由で注文マッチングと紛争解決を処理します。&lt;/p>
&lt;h3 id="opensats第16波bitcoin助成金">OpenSats第16波Bitcoin助成金&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a>が17のオープンソースプロジェクトへの助成金を発表しました。Nostr関連の注目点は、&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>ウォレットイベントサポートとNutzap統合を備えたAndroid &lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ウォレット&lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>が更新助成金を受領したことです。MinibitsはNostrイベントを使用してecashトークンの状態を保存し、relay同期によりデバイス間でウォレットバックアップを移行可能にしています。&lt;/p>
&lt;h3 id="nostrpressnostrプロフィールから静的ブログへ">NostrPress：Nostrプロフィールから静的ブログへ&lt;/h3>
&lt;p>&lt;a href="https://github.com/besoeasy/NostrPress">NostrPress&lt;/a>（&lt;a href="https://blog.besoeasy.com">blog.besoeasy.com&lt;/a>）は、Nostrプロフィールをどこにでもデプロイ可能な完全静的ブログに変換する新しいツールです。ユーザーは任意のクライアントからNostr上に記事を公開し、NostrPressがそれらのイベントからローカルメディアホスティングとRSSフィード付きのスタンドアロンWebサイトを生成します。&lt;/p>
&lt;p>NunjucksテンプレートとJavaScriptで構築されたNostrPressは、プラットフォームロックインのないサイトを生成します。出力は任意の静的ファイルサーバー、GitHub Pages、Netlify、個人VPSでホスティング可能なプレーンHTML/CSSです。このツールは&lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a>や&lt;a href="https://github.com/servus-social/servus">Servus&lt;/a>に並ぶ、Nostrコンテンツを従来のWebサイトに変換するオプションとなります。&lt;/p>
&lt;h3 id="antiprimalprimalキャッシュへの規格準拠ゲートウェイ">Antiprimal：Primalキャッシュへの規格準拠ゲートウェイ&lt;/h3>
&lt;p>Alex GleasonとSoapboxチームによる新プロジェクト&lt;a href="https://gitlab.com/soapbox-pub/antiprimal">antiprimal&lt;/a>（&lt;a href="https://antiprimal.net">antiprimal.net&lt;/a>）は、Primalの独自キャッシュサーバーを標準Nostrプロトコルメッセージに橋渡しするWebSocketゲートウェイです。Primalはevent統計、コンテンツ検索、Web of Trust計算などの機能を&lt;code>wss://cache.primal.net/v1&lt;/code>経由で提供していますが、アクセスには標準Nostrクライアントが使用できない非標準の&lt;code>cache&lt;/code>フィールドを持つ独自メッセージフォーマットが必要です。Antiprimalは標準NIPリクエストをPrimalのフォーマットに変換し、レスポンスを元に戻します。&lt;/p>
&lt;p>このゲートウェイは&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a> COUNTクエリ（リアクション数、リプライ数、リポスト数、zap数、フォロワー数）、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>検索、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> relay情報、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> Trusted Assertions（Primalの事前計算されたWeb of Trustデータ）をサポートします。コンパニオンボットがNIP-85 kind 30382（ユーザー統計）とkind 30383（eventエンゲージメント）のイベントを設定可能なrelayに公開します。プロジェクトはBun上のTypeScriptで構築され、Nostrifyライブラリを使用しています。2月6日に作成され、開発開始3日間で53コミットがあり、antiprimal.netで稼働中です。&lt;/p>
&lt;h3 id="ikarossignalとnostr向けaiエージェントメッセージングゲートウェイ">Ikaros：SignalとNostr向けAIエージェントメッセージングゲートウェイ&lt;/h3>
&lt;p>Soapboxチームによる新プロジェクト&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>は、AIエージェントがSignalとNostr暗号化DMの両方を通じて通信できるメッセージングゲートウェイです。このブリッジは&lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a>（ACP）を使用して、ACP互換のAIコーディングアシスタントを実際のメッセージングネットワークに接続します。3つのpull requestが今週のプロジェクト初期ビルドを構成しています。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">PR #1&lt;/a>は、送受信サポート、明示的フラッシュ付きレスポンスバッファリング、&lt;code>nsec&lt;/code>およびhex秘密鍵フォーマット、自動再接続付きマルチrelay公開、対話型セットアップウィザードを備えた完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化DMアダプターを実装しています。このアダプターはnostr-tools v2.23.0を使用し、ACP SDKをv0.14.1にアップデートしています。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">PR #2&lt;/a>は、セッション更新の競合状態によるサイレントメッセージドロップを修正しています。セッションがマップに登録される前に到着した受信通知がサイレントに失われていた問題を、登録完了後にリプレイするバッファリングで解決しました。&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">PR #3&lt;/a>は、Signalユーザーおよびグループの名前/UUIDメタデータをエージェントインタラクションに追加し、AIエージェントが誰とどのグループで会話しているかを認識できるようにします。このプロジェクトは新しい設計空間を開きます。Nostr DMでアドレス可能なAIエージェントがSignalからも到達可能であり、その逆も可能です。&lt;/p>
&lt;h3 id="kind-0スリム化キャンペーン">Kind 0スリム化キャンペーン&lt;/h3>
&lt;p>vitorpamplonaは今週一連のPRを公開し、kind 0（ユーザーメタデータ）イベントからデータを専用eventタイプに体系的に抽出することを提案しました。このキャンペーンは、時間の経過とともにkind 0イベントにほとんどのクライアントが使用しないフィールドが蓄積され、すべてのプロフィール取得のサイズが肥大化している問題に対処します。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a>（マージ済み）はidentityタグ（&lt;code>i&lt;/code>タグ）をkind 0から新しいkind 10011に移動しました。これらのタグの採用が最小限であったためです。&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">PR #2213&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>検証をkind 10008に移動することを提案しており、これによりユーザーが複数のNIP-05識別子を持ち、NIP-05アドレスでイベントをフィルタリングできるようになります。&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">PR #2217&lt;/a>はLightningアドレス（lud06/lud16）を新しいkindに抽出することを提案し、Lightning統合を持つクライアントのみが必要とするzap関連フィールドをすべてのkind 0ユーザーが運ぶことを止めます。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> Mostroが3年間の開発を経て初のパブリックベータを公開し、Nostr経由でP2P Bitcoin取引をモバイルに提供します。OpenSatsが第16波のBitcoin助成金を発表し、Nostr統合Cashuウォレットの開発を続けるMinibits Walletが更新助成金を受領しました。&lt;strong>Zapstoreが安定版1.0リリースに到達&lt;/strong>し、分散型Androidアプリストアの成熟を示しています。Coracle 0.6.29がトピックとハイライトコメントを追加。Igloo Desktop v1.0.3がFrostr閾値署名のセキュリティ強化を出荷。Amber v4.1.2-pre1がFlowアーキテクチャに移行。Angorがv0.2.5に到達し、資金調達UIの刷新とNIP-96画像サーバー設定を追加。NostrPressがNostrプロフィールを静的ブログに変換するツールとして登場。AntiprimalがPrimalの独自キャッシュサーバーを標準Nostr NIPsに橋渡しする規格準拠ゲートウェイを出荷。Primal Androidが18件のPRをマージし、デュアルウォレットサポート、監査ログ、&lt;code>lookup_invoice&lt;/code>メソッドでNWCインフラを拡張。diVineがAPI優先のビデオフィードを出荷。Marmot TypeScript SDKがリファレンスチャットアプリを独立リポジトリに分離し、ts-mls v2への移行を開始。NIPsリポジトリがNIP-45のHyperLogLog近似カウントをマージし、kind 0からidentityタグを抽出。vitorpamplonaによる一連の提案がkind 0メタデータイベントの体系的なスリム化を開始。新しいプロトコル提案として、NAT越え用のNostr Relay Connectと署名付きWeb主張用のNostr Web Tokensが登場。今週のディープダイブでは、NIP-45の新しいHyperLogLog近似カウント（クロスrelay event計測向け）と、NIP-96のHTTPファイルストレージプロトコル（Blossom移行が進む中で非推奨化）を取り上げます。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="mostroが初のパブリックベータを公開">Mostroが初のパブリックベータを公開&lt;/h3>
&lt;p>Nostr上に構築されたピアツーピアBitcoin取引所&lt;a href="https://github.com/MostroP2P/mostro">Mostro&lt;/a>が、&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">モバイルアプリv1.1.0&lt;/a>をリリースしました。3年間の開発を経た初のパブリックベータです。このアプリは、Nostrを注文調整に、Lightningを決済に使用し、カストディアル仲介者なしでBitcoinの直接取引を可能にします。&lt;/p>
&lt;p>今回のリリースでは、Androidでのバックグラウンド信頼性が改善されたプッシュ通知、問題発生時に診断データをキャプチャして共有できるオプションのログシステム、加算的初期化によるスムーズなrelay更新、国際化対応を含むフェーズ2のUIリファインメントが導入されています。アプリは&lt;a href="https://zapstore.dev">Zapstore&lt;/a>およびGitHubからの直接&lt;a href="https://github.com/MostroP2P/mobile/releases/tag/v1.1.0">ダウンロード&lt;/a>で入手可能です。&lt;/p>
&lt;p>MostroはShopstrやPlebeian Marketに並ぶNostrネイティブコマースアプリケーションで、法定通貨とBitcoinの交換調整に特化している点が特徴です。基盤となる&lt;a href="https://github.com/MostroP2P/mostro">Mostroデーモン&lt;/a>がNostr relay経由で注文マッチングと紛争解決を処理します。&lt;/p>
&lt;h3 id="opensats第16波bitcoin助成金">OpenSats第16波Bitcoin助成金&lt;/h3>
&lt;p>&lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants">OpenSats&lt;/a>が17のオープンソースプロジェクトへの助成金を発表しました。Nostr関連の注目点は、&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>ウォレットイベントサポートとNutzap統合を備えたAndroid &lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ウォレット&lt;a href="https://github.com/minibits-cash/minibits_wallet">Minibits Wallet&lt;/a>が更新助成金を受領したことです。MinibitsはNostrイベントを使用してecashトークンの状態を保存し、relay同期によりデバイス間でウォレットバックアップを移行可能にしています。&lt;/p>
&lt;h3 id="nostrpressnostrプロフィールから静的ブログへ">NostrPress：Nostrプロフィールから静的ブログへ&lt;/h3>
&lt;p>&lt;a href="https://github.com/besoeasy/NostrPress">NostrPress&lt;/a>（&lt;a href="https://blog.besoeasy.com">blog.besoeasy.com&lt;/a>）は、Nostrプロフィールをどこにでもデプロイ可能な完全静的ブログに変換する新しいツールです。ユーザーは任意のクライアントからNostr上に記事を公開し、NostrPressがそれらのイベントからローカルメディアホスティングとRSSフィード付きのスタンドアロンWebサイトを生成します。&lt;/p>
&lt;p>NunjucksテンプレートとJavaScriptで構築されたNostrPressは、プラットフォームロックインのないサイトを生成します。出力は任意の静的ファイルサーバー、GitHub Pages、Netlify、個人VPSでホスティング可能なプレーンHTML/CSSです。このツールは&lt;a href="https://github.com/nostrband/nostrsite">Npub.pro&lt;/a>や&lt;a href="https://github.com/servus-social/servus">Servus&lt;/a>に並ぶ、Nostrコンテンツを従来のWebサイトに変換するオプションとなります。&lt;/p>
&lt;h3 id="antiprimalprimalキャッシュへの規格準拠ゲートウェイ">Antiprimal：Primalキャッシュへの規格準拠ゲートウェイ&lt;/h3>
&lt;p>Alex GleasonとSoapboxチームによる新プロジェクト&lt;a href="https://gitlab.com/soapbox-pub/antiprimal">antiprimal&lt;/a>（&lt;a href="https://antiprimal.net">antiprimal.net&lt;/a>）は、Primalの独自キャッシュサーバーを標準Nostrプロトコルメッセージに橋渡しするWebSocketゲートウェイです。Primalはevent統計、コンテンツ検索、Web of Trust計算などの機能を&lt;code>wss://cache.primal.net/v1&lt;/code>経由で提供していますが、アクセスには標準Nostrクライアントが使用できない非標準の&lt;code>cache&lt;/code>フィールドを持つ独自メッセージフォーマットが必要です。Antiprimalは標準NIPリクエストをPrimalのフォーマットに変換し、レスポンスを元に戻します。&lt;/p>
&lt;p>このゲートウェイは&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a> COUNTクエリ（リアクション数、リプライ数、リポスト数、zap数、フォロワー数）、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/50.md">NIP-50&lt;/a>検索、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> relay情報、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/85.md">NIP-85&lt;/a> Trusted Assertions（Primalの事前計算されたWeb of Trustデータ）をサポートします。コンパニオンボットがNIP-85 kind 30382（ユーザー統計）とkind 30383（eventエンゲージメント）のイベントを設定可能なrelayに公開します。プロジェクトはBun上のTypeScriptで構築され、Nostrifyライブラリを使用しています。2月6日に作成され、開発開始3日間で53コミットがあり、antiprimal.netで稼働中です。&lt;/p>
&lt;h3 id="ikarossignalとnostr向けaiエージェントメッセージングゲートウェイ">Ikaros：SignalとNostr向けAIエージェントメッセージングゲートウェイ&lt;/h3>
&lt;p>Soapboxチームによる新プロジェクト&lt;a href="https://gitlab.com/soapbox-pub/ikaros">Ikaros&lt;/a>は、AIエージェントがSignalとNostr暗号化DMの両方を通じて通信できるメッセージングゲートウェイです。このブリッジは&lt;a href="https://agentclientprotocol.org">Agent Client Protocol&lt;/a>（ACP）を使用して、ACP互換のAIコーディングアシスタントを実際のメッセージングネットワークに接続します。3つのpull requestが今週のプロジェクト初期ビルドを構成しています。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/1">PR #1&lt;/a>は、送受信サポート、明示的フラッシュ付きレスポンスバッファリング、&lt;code>nsec&lt;/code>およびhex秘密鍵フォーマット、自動再接続付きマルチrelay公開、対話型セットアップウィザードを備えた完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化DMアダプターを実装しています。このアダプターはnostr-tools v2.23.0を使用し、ACP SDKをv0.14.1にアップデートしています。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/2">PR #2&lt;/a>は、セッション更新の競合状態によるサイレントメッセージドロップを修正しています。セッションがマップに登録される前に到着した受信通知がサイレントに失われていた問題を、登録完了後にリプレイするバッファリングで解決しました。&lt;a href="https://gitlab.com/soapbox-pub/ikaros/-/merge_requests/3">PR #3&lt;/a>は、Signalユーザーおよびグループの名前/UUIDメタデータをエージェントインタラクションに追加し、AIエージェントが誰とどのグループで会話しているかを認識できるようにします。このプロジェクトは新しい設計空間を開きます。Nostr DMでアドレス可能なAIエージェントがSignalからも到達可能であり、その逆も可能です。&lt;/p>
&lt;h3 id="kind-0スリム化キャンペーン">Kind 0スリム化キャンペーン&lt;/h3>
&lt;p>vitorpamplonaは今週一連のPRを公開し、kind 0（ユーザーメタデータ）イベントからデータを専用eventタイプに体系的に抽出することを提案しました。このキャンペーンは、時間の経過とともにkind 0イベントにほとんどのクライアントが使用しないフィールドが蓄積され、すべてのプロフィール取得のサイズが肥大化している問題に対処します。&lt;/p>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">PR #2216&lt;/a>（マージ済み）はidentityタグ（&lt;code>i&lt;/code>タグ）をkind 0から新しいkind 10011に移動しました。これらのタグの採用が最小限であったためです。&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">PR #2213&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05&lt;/a>検証をkind 10008に移動することを提案しており、これによりユーザーが複数のNIP-05識別子を持ち、NIP-05アドレスでイベントをフィルタリングできるようになります。&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">PR #2217&lt;/a>はLightningアドレス（lud06/lud16）を新しいkindに抽出することを提案し、Lightning統合を持つクライアントのみが必要とするzap関連フィールドをすべてのkind 0ユーザーが運ぶことを止めます。&lt;/p>
&lt;p>これらの提案は、&lt;a href="https://github.com/nostr-protocol/nips/pull/1770">PR #1770&lt;/a>を含むkind 0構造のより広い議論を再活性化しました。これはkind 0コンテンツの文字列化JSONを構造化タグに置き換える長年の提案です。&lt;/p>
&lt;h3 id="nip-70-relayサポートが暗号化メッセージングセキュリティに不可欠">NIP-70 Relayサポートが暗号化メッセージングセキュリティに不可欠&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルのWhite Noise実装が、&lt;a href="https://github.com/nostr-protocol/nips/blob/master/70.md">NIP-70&lt;/a>（Protected Events）と&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>（Authentication）のrelayサポートに&lt;a href="https://blog.jgmontoya.com/2026/02/10/nip70-relay-status.html">重大なギャップを特定しました&lt;/a>。テストの結果、Damus、Primal、nos.lolなどの主要パブリックrelayが、必要な認証チャレンジを開始する代わりに&lt;code>blocked: event marked as protected&lt;/code>エラーでprotected eventsを拒否していることが判明しました。&lt;/p>
&lt;p>これは重要なセキュリティ機能を破壊します。NIP-70は使用済みMLS KeyPackagesの安全な削除を可能にし、「今収集して後で復号化する」攻撃を防ぎます。relayサポートがなければ、暗号化メッセージングプロトコルは将来の鍵漏洩からユーザーを保護できません。White NoiseはNIP-70をデフォルトで無効化し、サポートするrelayを持つユーザー向けにオプションフラグを維持する対応を取りました。&lt;/p>
&lt;p>&lt;strong>relayオペレーターへの呼びかけ：&lt;/strong> 完全なNIP-42認証フローを実装してください。protected eventsを受信した際は、クライアントに所有権の証明を要求し、検証済みの書き込みを受け入れてください。認証なしでprotected eventsを拒否することは、暗号化メッセージングアプリケーションが依存するプロトコルセキュリティ保証を破壊します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="coracle-0629">Coracle 0.6.29&lt;/h3>
&lt;p>hodlbodのWebクライアント&lt;a href="https://github.com/coracle-social/coracle">Coracle&lt;/a>（&lt;a href="https://coracle.social">coracle.social&lt;/a>）が&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.29">0.6.29&lt;/a>を出荷しました。このリリースではkind 9802ハイライトのトピックとコメントの表示が追加されました。新しいリストナビゲーション項目により、メインUIからユーザーキュレーションリストに素早くアクセスできます。内部的にはCoracleがWelshmanの新バージョンにアップグレードされ、Welshmanはcoracleのrelay管理とevent処理を支えるNostr共有ライブラリです。デフォルトrelayリストが更新され、Glitchtipエラートラッキングがコードベースから削除されました。&lt;/p>
&lt;h3 id="igloo-desktop-v103">Igloo Desktop v1.0.3&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>ベースの閾値署名者および鍵管理アプリケーション&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Igloo Desktop&lt;/a>が、大規模なセキュリティ強化を含む&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/releases/tag/v1.0.3">v1.0.3&lt;/a>を出荷しました。このリリースではIPC検証、Electron隔離、サーバーサイドリクエストフォージェリ防御のためのSSRF対応relayチェックが導入されています。新しいオンボーディングとシェアインポートフローで鍵配布が簡素化され、relay計画には正規化と優先度マージが含まれ、プリロードベースのElectron APIアーキテクチャがレンダラーとメインプロセス間のセキュリティ境界を改善しています。署名者キープアライブシステムが閾値署名セッションの安定性を維持し、リカバリーUXの改善で鍵復元の摩擦が軽減されました。&lt;/p>
&lt;h3 id="amber-v412-pre1">Amber v4.1.2-pre1&lt;/h3>
&lt;p>Androidイベント署名者&lt;a href="https://github.com/greenart7c3/Amber">Amber&lt;/a>が&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.2-pre1">v4.1.2-pre1&lt;/a>をリリースしました。v4.1.1で発生したrelay信頼スコア表示の欠落を修正し、Nostr以外の暗号化/復号化リクエストのJSON解析問題を解決し、アカウントモデルをLiveDataからFlowに移行してより予測可能な状態管理を実現しています。bunkerシークレットを完全UUIDに切り替え、Gradleプラグイン9にアップグレードしました。&lt;/p>
&lt;h3 id="mostro-mobile-v110とdaemon-v0161">Mostro Mobile v1.1.0とDaemon v0.16.1&lt;/h3>
&lt;p>モバイルリリースの詳細は&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#mostro%e3%81%8c%e5%88%9d%e3%81%ae%e3%83%91%e3%83%96%e3%83%aa%e3%83%83%e3%82%af%e3%83%99%e3%83%bc%e3%82%bf%e3%82%92%e5%85%ac%e9%96%8b">上記ニュースセクション&lt;/a>を参照してください。サーバー側では、&lt;a href="https://github.com/MostroP2P/mostro">Mostroデーモン&lt;/a>が&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.16.1">v0.16.1&lt;/a>を出荷し、起動時にNIP-01 kind 0メタデータの自動公開を追加しました（&lt;a href="https://github.com/MostroP2P/mostro/pull/575">PR #575&lt;/a>）。これによりデーモンはオンラインになった際にネットワークに自身のアイデンティティをアナウンスします。開発手数料の計算ドキュメントの修正（&lt;a href="https://github.com/MostroP2P/mostro/pull/571">PR #571&lt;/a>）も含まれています。&lt;/p>
&lt;h3 id="angor-v025">Angor v0.2.5&lt;/h3>
&lt;p>BitcoinとNostr上に構築された分散型P2P資金調達プロトコル&lt;a href="https://github.com/block-core/angor">Angor&lt;/a>（&lt;a href="https://angor.io">angor.io&lt;/a>）が3つのマージ済みPRを含む&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.5">v0.2.5&lt;/a>を出荷しました。&lt;a href="https://github.com/block-core/angor/pull/649">PR #649&lt;/a>はFunds管理セクション（V2）を再設計し、個別のUTXOと投資ポジションを追跡する新しいインターフェースに置き換えました。&lt;a href="https://github.com/block-core/angor/pull/651">PR #651&lt;/a>はInvoiceViewを刷新し、ボタンスタイルの更新、閉じられるダイアログ、新しい「アドレスコピー」コマンド、アドレス監視のキャンセルサポート、投資フローの処理改善を含みます。&lt;a href="https://github.com/block-core/angor/pull/652">PR #652&lt;/a>は設定画面に&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>（&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">仕様&lt;/a>）画像サーバーの設定機能を追加し、プロジェクト画像やドキュメントを処理するメディアアップロードエンドポイントをユーザーが選択できるようにしました。&lt;a href="https://github.com/block-core/angor/releases/tag/v0.2.4">v0.2.4&lt;/a>は前週に出荷されています。&lt;/p>
&lt;h3 id="ridestr-v022とv023">Ridestr v0.2.2とv0.2.3&lt;/h3>
&lt;p>分散型ライドシェアプラットフォーム&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/#ridestr-v020-roadflare-release">先週取り上げた&lt;/a>v0.2.0「RoadFlare Release」に続き、&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.2">v0.2.2&lt;/a>（Bridge Payment Hotfix）と&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.3">v0.2.3&lt;/a>で急速なイテレーションを続けました。v0.2.2ホットフィックスは、クロスミント&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ブリッジ決済が処理中または最終的に成功するにもかかわらず自動キャンセルされるバグに対処し、低速決済での早期ライドキャンセルを防止します。UIのちらつきと「現在地」ボタンのタッチヒットボックス破損も修正されています。v0.2.3では追加のバグ修正を出荷。両リリースともRidestr（ライダーアプリ）とDrivestr（ドライバーアプリ）の個別APKが含まれています。&lt;/p>
&lt;h3 id="nostr-php-194">Nostr PHP 1.9.4&lt;/h3>
&lt;p>Nostrプロトコル用PHPヘルパーライブラリ&lt;a href="https://github.com/nostrver-se/nostr-php">Nostr PHP&lt;/a>（&lt;a href="https://nostr-php.dev">nostr-php.dev&lt;/a>）が&lt;a href="https://github.com/nostrver-se/nostr-php/releases/tag/1.9.4">1.9.4&lt;/a>を出荷し、リクエストクラスに設定可能な&lt;code>timeout&lt;/code>プロパティを追加しました（&lt;a href="https://github.com/nostrver-se/nostr-php/pull/106">PR #106&lt;/a>）。開発者がrelay接続とメッセージリクエストにカスタムタイムアウト期間を設定でき、relayが無応答または応答が遅い場合の無期限ハングを防止します。&lt;/p>
&lt;h3 id="zapstore-v100">Zapstore v1.0.0&lt;/h3>
&lt;p>Nostr上に構築されたパーミッションレスAndroidアプリストア&lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0.0">Zapstore&lt;/a>（&lt;a href="https://zapstore.dev">zapstore.dev&lt;/a>）が、数ヶ月のリリース候補を経て&lt;strong>安定版1.0リリースのマイルストーンに到達&lt;/strong>しました。&lt;/p>
&lt;p>1.0リリースには重要な安定性改善が含まれています。インストール完了後にDeleteが即座に表示されるインストールボタン状態の処理、展開可能な技術詳細付きのユーザーフレンドリーなエラーメッセージ、エフェメラルキーを使用してNostr経由で暗号化DMを送信する「問題を報告」ボタン。ポーリングとバッチ追跡付きの新しい更新画面、停滞した転送用のダウンロードウォッチドッグの改善、デバイスパフォーマンスに基づく動的同時ダウンロード制限、より頻繁なインストール済みパッケージ同期、改善されたバージョン比較ロジックも出荷されています。flutter_secure_storageの重大な問題が修正され、パッケージマネージャーのエッジケース処理も強化されました。&lt;/p>
&lt;p>このマイルストーンは、Nostr初の専用アプリ配布プラットフォームの成熟を示しています。中央集権的なアプリストアのゲートキーピングなしに、開発者がAndroidアプリケーションを直接ユーザーに公開できるようにします。&lt;/p>
&lt;h3 id="zsp-v031">ZSP v0.3.1&lt;/h3>
&lt;p>&lt;a href="https://github.com/zapstore/zapstore">Zapstore&lt;/a>チームのGo CLIツール&lt;a href="https://github.com/zapstore/zsp">ZSP&lt;/a>が&lt;a href="https://github.com/zapstore/zsp/releases/tag/v0.3.1">v0.3.1&lt;/a>をリリースしました。ZSPはZapstoreの以前の公開ツールを置き換え、AndroidアプリのNostr relayへの署名とアップロードを担当します。GitHub、GitLab、Codeberg、F-Droid、またはローカルファイルからAPKを取得し、メタデータを解析し、Nostr event署名（秘密鍵、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> bunker、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07&lt;/a>ブラウザ拡張機能経由）を行い、&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーにアーティファクトをアップロードします。今回のリリースでは、ネットワーク接続なしでkeystoreリンクが可能な完全オフラインモード、プロトコル準拠のための&lt;code>Content-Digest&lt;/code>ヘッダーのBlossomアップロード対応、F-Droidリポジトリからのarm64-v8a APK検出の修正、GitLabの末尾クエリパラメータ修正、設定用の完全な&lt;code>.env&lt;/code>ファイルサポートが追加されました。&lt;/p>
&lt;h3 id="damus-ios-117">Damus iOS 1.17&lt;/h3>
&lt;p>iOS Nostrクライアント&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>がバージョン1.17にアップデートされました（&lt;a href="https://github.com/damus-io/damus/pull/3606">PR #3606&lt;/a>）。エフェメラルリースリリース後に接続が閉じるRelayPoolの問題を修正し（&lt;a href="https://github.com/damus-io/damus/pull/3605">PR #3605&lt;/a>）、サブスクリプションが予期せずドロップする可能性がありました。タブ切り替え時にお気に入りタイムラインがイベントを表示しないバグも解決されています（&lt;a href="https://github.com/damus-io/damus/pull/3603">PR #3603&lt;/a>）。&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>Nostr army knife CLI &lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>が&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a>を出荷し、3つの安定性修正を含みます。AUTHチャレンジタグがnilまたは短すぎる場合のパニック防止、解析値を使用する前のdateparserエラーチェック、&lt;code>://&lt;/code>セパレータのないCashu mint URLの処理です。&lt;/p>
&lt;h3 id="miブラウザベースのローカルrelay">Mi：ブラウザベースのローカルRelay&lt;/h3>
&lt;p>&lt;a href="https://git.shakespeare.diy/npub1scvyzz02ayma34hesz62pdrd5nhsmxp74hjq8msmfs9khh3r3drsnw68d8/mi.git">Mi&lt;/a>（&lt;a href="https://mi.shakespeare.wtf">mi.shakespeare.wtf&lt;/a>）は、新しい&lt;a href="https://shakespeare.wtf">Shakespeare&lt;/a> MiniAppで、ユーザーのNostrイベントをIndexedDBにアーカイブするブラウザベースのローカルrelayです。Miは接続されたrelayからプロフィール（kind 0）、コンタクトリスト（kind 3）、relayリスト（kind 10002）、ウォレットイベントを取得してローカルに保存し、自分のデータへのオフラインアクセスを提供します。ReactとNostr-tools 2.15.0で構築されています。&lt;/p>
&lt;h3 id="agora-v102">Agora v1.0.2&lt;/h3>
&lt;p>Soapboxチームによる分散型アクティビズムおよび資金調達プラットフォーム&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a>（&lt;a href="https://agora.spot">agora.spot&lt;/a>）が、直接インストール可能なAndroid APK付き&lt;a href="https://gitlab.com/soapbox-pub/agora/-/releases/v1.0.2">v1.0.2&lt;/a>を出荷しました。これはCompassでのAgoraの初の言及で、1月17日にミッションステートメントとともにローンチされました。「自由のためのグローバル運動に参加しよう。国際的に現地の活動家に支援を送り、地域の行動に参加しよう。」&lt;/p>
&lt;p>このプラットフォームは世界地図を中心に構成され、ユーザーは国別に閲覧し、位置タグ付き「アクション」（抗議、キャンペーン、コミュニティ組織化）を作成し、スレッドコメントで議論できます。すべてのコンテンツがNostr relay経由で伝播するため、中央サーバーを停止して調整を沈黙させることはできません。Agoraは多言語サポートとCI強制の翻訳パリティ、アップロード用の&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアサーバー統合、検索、グローバル/地域切り替え付きハッシュタグブラウジング、ユーザープロフィール、リアクションシステムをサポートしています。v1.0.2は現在のAndroidビルドで、APK直接ダウンロードで利用可能です。&lt;/p>
&lt;h3 id="xonos-v016">xonos v0.1.6&lt;/h3>
&lt;p>Bevyゲームエンジンで構築された実験的3D Nostrクライアント&lt;a href="https://codeberg.org/xonos/xonos">xonos&lt;/a>が&lt;a href="https://codeberg.org/xonos/xonos/releases/tag/v0.1.6">v0.1.6&lt;/a>を出荷しました。xonosはNostrイベントをテキスト読み上げ機能付き3D空間環境でレンダリングし、ソーシャルプロトコルデータが従来の2Dインターフェース外でどのように機能しうるかを探求しています。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="primal-androidがnwcインフラを拡張">Primal AndroidがNWCインフラを拡張&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>は今週18件のPRをマージし、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/#primal-android-ships-nwc-encryption">先週開始した&lt;/a>NWCの構築を継続しました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/883">PR #883&lt;/a>は両ウォレット（Sparkおよび外部）にまたがるNWC接続サポートを追加し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/879">PR #879&lt;/a>は支払い状況を確認するための&lt;code>lookup_invoice&lt;/code> NWCメソッドを実装しています。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/880">PR #880&lt;/a>はウォレットインタラクションのデバッグ用にNWCリクエスト-レスポンスの監査ログを追加。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/877">PR #877&lt;/a>は&lt;code>PrimalNwcService&lt;/code>にマルチアカウントサポートを追加し、複数プロフィールを持つユーザーが個別のウォレット接続を維持できるようにしています。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/882">PR #882&lt;/a>は期限切れの予算ホールドの定期的クリーンアップを実装し、古い支払い予約がウォレット操作をブロックすることを防止します。&lt;/p>
&lt;p>UI関連では、ウォレットアップグレード画面の再設計（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/889">PR #889&lt;/a>）、ウォレットアップグレードFAQ（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/885">PR #885&lt;/a>）、オンボーディング時のLightningアドレス設定（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/888">PR #888&lt;/a>）、非Lightningタイプでzapトランザクションが通常の支払いとして表示される問題の修正（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/887">PR #887&lt;/a>）が含まれます。&lt;/p>
&lt;h3 id="divineがapi優先のビデオフィードを出荷">diVineがAPI優先のビデオフィードを出荷&lt;/h3>
&lt;p>ショートフォームビデオクライアント&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は今週19件のPRをマージし、API優先アーキテクチャへの移行を進めました。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1468">PR #1468&lt;/a>がAPI優先のビデオフィードを導入し、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1466">PR #1466&lt;/a>がトレンド、最新、ホームAPIエンドポイントを追加。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1433">PR #1433&lt;/a>が効率的なフィードレンダリングのために特定のビデオコントローラーをインデックス化しています。&lt;/p>
&lt;p>プロフィール処理では、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1440">PR #1440&lt;/a>が他のプロフィール表示にキャッシュ＋フレッシュパターンを実装し、データの鮮度を確保しながら読み込み時間を短縮しました。通知修正（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1437">PR #1437&lt;/a>）、コメントフローのリファクタリング（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1431">PR #1431&lt;/a>）、通知画面でのタブスワイプ（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1388">PR #1388&lt;/a>）も出荷されています。&lt;/p>
&lt;h3 id="white-noiseキーリング統一とユーザー検索">White Noise：キーリング統一とユーザー検索&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルの&lt;a href="https://github.com/marmot-protocol/whitenoise-rs">White Noise&lt;/a>バックエンドは今週4件のPRをマージしました。2件のPRがキーリング処理を改善しています。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/468">PR #468&lt;/a>が&lt;code>WhitenoiseConfig&lt;/code>経由でキーリングサービス識別子を設定可能にし、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/475">PR #475&lt;/a>がプラットフォームネイティブストアを持つ単一の&lt;code>keyring-core&lt;/code>クレートで実装を統一し、断片化されたプラットフォーム固有コードを置き換えました。別途、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/470">PR #470&lt;/a>がユーザー検索機能を追加しています。&lt;/p>
&lt;h3 id="marmot-tsがリファレンスチャットアプリを分離">Marmot TSがリファレンスチャットアプリを分離&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> TypeScript SDK（&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>）が&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/40">PR #40&lt;/a>をマージし、組み込みリファレンスチャットアプリケーションを削除して独立リポジトリ&lt;a href="https://github.com/marmot-protocol/marmots-web-chat">marmots-web-chat&lt;/a>に分離しました。2月6日に作成された新リポジトリは、独自のCIパイプライン、タブ付きチャットビュー、独立ビルドシステムを持つMarmot TypeScript SDKのリファレンス実装です。この分離により、SDKはライブラリの関心事に集中でき、チャットアプリは独立してUXのイテレーションが可能になります。&lt;/p>
&lt;p>オープンPR（&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/41">#41&lt;/a>）はmarmot-tsをts-mls v2.0.0に移行し、統一コンテキストオブジェクト、新しいメッセージ処理ユーティリティ（event作成、読み取り、デシリアライゼーション）、キーパッケージメタデータヘルパー、削除eventサポートを含む再設計されたAPIを提供します。&lt;/p>
&lt;h3 id="alby-hubアップデート">Alby Hubアップデート&lt;/h3>
&lt;p>&lt;a href="https://github.com/getAlby/hub">Alby Hub&lt;/a>は今週5件のPRをマージしました。&lt;a href="https://github.com/getAlby/hub/pull/2049">PR #2049&lt;/a>がアプリストアインターフェースにAlby CLIを追加。&lt;a href="https://github.com/getAlby/hub/pull/2033">PR #2033&lt;/a>がトランザクションリストでの無効なzapデータの処理を修正し、&lt;a href="https://github.com/getAlby/hub/pull/2046">PR #2046&lt;/a>がLNClientインターフェースから未使用の&lt;code>ListTransactions&lt;/code>メソッドを削除しました。&lt;/p>
&lt;h3 id="notedeckがダッシュボードとagentiumを出荷">NotedeckがダッシュボードとAgentiumを出荷&lt;/h3>
&lt;p>DamusのクロスプラットフォームNostrクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>は今週6件のPRをマージしました。&lt;a href="https://github.com/damus-io/notedeck/pull/1247">PR #1247&lt;/a>が初期ダッシュボードアプリを追加。&lt;a href="https://github.com/damus-io/notedeck/pull/1293">PR #1293&lt;/a>はAgentiumを導入し、Dave AIアシスタントをデュアルAIモードとシーンベースのエージェント管理を備えたシステムに変換するマルチエージェント開発環境です。&lt;a href="https://github.com/damus-io/notedeck/pull/1276">PR #1276&lt;/a>がSignalスタイルのキーバインド付きマルチラインメッセージコンポーザーを追加し、&lt;a href="https://github.com/damus-io/notedeck/pull/1278">PR #1278&lt;/a>がメディアパフォーマンスの改善を提供。注目のオープンPRには&lt;a href="https://github.com/damus-io/notedeck/pull/1288">outboxインフラ&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34&lt;/a> &lt;a href="https://github.com/damus-io/notedeck/pull/1289">Gitアプリ計画&lt;/a>が含まれます。&lt;/p>
&lt;h3 id="agoraが大規模uiオーバーホールを出荷">Agoraが大規模UIオーバーホールを出荷&lt;/h3>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora">Agora&lt;/a>はv1.0.2リリースと併せて今週7件のPRをマージしました。&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/106">PR #106&lt;/a>が最大規模で、設定、プロフィール編集、マップインタラクション、検索結果、コメントフィルタリング、Blossomサーバー管理にまたがる11のUIタスクを完了。未認証ユーザーのリアクションボタンを無効化し（以前はマップ上の投稿にリアクションしようとするとサイレント失敗していた）、日付線のマップパンニングを修正し、検索結果に太字マッチテキストを追加しました。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/108">PR #108&lt;/a>がフィード投稿下とスレッドページにコメント数を追加。&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/107">PR #107&lt;/a>がeventロード失敗時の自動リトライと、リトライ回数超過時の明示的リロードボタンを追加。&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/104">PR #104&lt;/a>がハッシュタグブラウジングのデフォルトをグローバルスコープに変更しました。以前の国別スコープデフォルトではゼロ結果になることが多かったためです。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/109">PR #109&lt;/a>がすべての言語の翻訳パリティをチェックするCIステップを追加し、キーに値が欠けている場合にビルドを失敗させます。&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/110">PR #110&lt;/a>がフィードの長いノートをクリップしてスクロールのリズムを保持し、&lt;a href="https://gitlab.com/soapbox-pub/agora/-/merge_requests/111">PR #111&lt;/a>がアクションへのコメント時に小フォントサイズが原因で発生するiOSモバイルズームの問題を修正しました。&lt;/p>
&lt;h3 id="clawstrがcliとlightning-zapボタンを出荷">ClawstrがCLIとLightning Zapボタンを出荷&lt;/h3>
&lt;p>AIエージェントがNostr上でコミュニティを作成・管理するRedditインスパイアのプラットフォーム&lt;a href="https://gitlab.com/soapbox-pub/clawstr">Clawstr&lt;/a>は今週3件のPRをマージしました。&lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/11">PR #11&lt;/a>がAIエージェントスキル定義のすべての手動nakコマンドを新しい&lt;code>@clawstr/cli&lt;/code>パッケージ（&lt;code>npx -y @clawstr/cli@latest&lt;/code>）に置き換え、手動JSONイベント構築をCLIコマンドに移行し、ウォレット操作（init、balance、zap、npc）と&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>全文検索を追加しました。&lt;/p>
&lt;p>&lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/13">PR #13&lt;/a>が「For Humans」ドキュメントページと&lt;code>ProfileZapDialog&lt;/code>コンポーネントを追加。zapボタンはユーザーにLightningアドレスが設定されている場合にプロフィールページに表示され、ログイン不要でLNURL-payを直接使用し、プリセットsats金額とQRコード表示を備えています。&lt;a href="https://gitlab.com/soapbox-pub/clawstr/-/merge_requests/12">PR #12&lt;/a>が&lt;code>wallet sync&lt;/code>コマンドを文書化し、Lightningアドレスへの支払いがエージェントが明示的にウォレットを同期するまでNPCに保持される仕組みを説明しています。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1561">NIP-45：HyperLogLog Relayレスポンス&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45（Event Counting）&lt;/a>がHyperLogLog（HLL）近似カウントをサポートするようになりました。relayはCOUNTレスポンスとともに256バイトのHLLレジスター値を返すことができます。クライアントは複数のrelayからこれらのレジスターをマージし、完全なeventセットをダウンロードすることなく近似カーディナリティを計算します。主なユースケースは、単一relayを信頼できるソースとして依存せずにフォロワー数やリアクション数を取得することです。リアクションeventが2つでも、256バイトのHLLペイロードより多くの帯域幅を消費します。クライアントは小さなカーディナリティの精度向上にHyperLogLog++補正を適用できます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2216">NIP-39：Identity TagsのKind 0からの移動&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-39/">NIP-39&lt;/a>のidentity claimタグ（&lt;code>i&lt;/code>タグ）がkind 0メタデータイベントから新しい専用kind 10011に抽出されました。根拠は、ほぼどのクライアントもこれらのタグをサポートしていないため、すべてのkind 0取得にサイズを追加するだけで価値を提供していなかったことです。これはvitorpamplonaによるkind 0抽出PRシリーズの最初です（&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#kind-0%e3%82%b9%e3%83%aa%e3%83%a0%e5%8c%96%e3%82%ad%e3%83%a3%e3%83%b3%e3%83%9a%e3%83%bc%e3%83%b3">ニュースセクション&lt;/a>を参照）。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2214">NIP-XX：Nostr Relay Connect（NRC）&lt;/a>&lt;/strong> - woikosが、パブリックランデブーrelay経由の暗号化トンネリングによるNostr relayへのアクセスプロトコルを提案しています。NATやファイアウォールの背後にあるrelay（ホームサーバーやモバイルデバイス上のパーソナルrelayを含む）へのアクセスを可能にします。トンネリングはkind 24891/24892イベントと&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用し、ランデブーrelayはトラフィックを復号化できません。実用的なアプリケーションとして、任意のNostrクライアントがローカルストレージ（IndexedDB、SQLite）をrelayエンドポイントとして公開し、クロスデバイス同期を実現できます。標準NIP-01セマンティクス（REQ、EVENT、CLOSE、COUNT）がトンネルを透過的に通過します。Go（ORLY Relay）とTypeScript（Smesh）にリファレンス実装が存在します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2187">Nostr Web Tokens（NWT）&lt;/a>&lt;/strong> - pippellia-btcが、JSON Web Tokens（JWT）に触発された、Web当事者間で署名付き主張を伝達するためのNostrイベントフォーマットであるNostr Web Tokensを提案しています。NWTは&lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a>（HTTP Auth）と&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom認可イベント&lt;/a>の両方を表現でき、トークンの有効期間と方法にクライアントの柔軟性を提供します。リファレンスGoライブラリが利用可能です。&lt;a href="https://github.com/pippellia-btc/nostr-web-tokens">動画による説明&lt;/a>とNIP-98およびBlossom Authとの&lt;a href="https://github.com/pippellia-btc/nostr-web-tokens?tab=readme-ov-file#comparisons">詳細比較&lt;/a>がPRにリンクされています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2210">NIP-47簡素化&lt;/a>&lt;/strong> - rolznzが&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47（Nostr Wallet Connect）&lt;/a>から&lt;code>multi_&lt;/code>メソッドの削除を提案しています。実装が複雑で採用も進まなかったためです。このPRは暗号化と後方互換性の処理における重複も削減し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/#nip-updates">先週のhold invoice追加&lt;/a>後の仕様をクリーンアップしています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2213">NIP-05：独自Event Kindへの移動&lt;/a>&lt;/strong> - vitorpamplonaがNIP-05検証をkind 0から新しいkind 10008に移動することを提案し、ユーザーごとの複数NIP-05識別子とNIP-05アドレスによるフィルタリングを可能にします。kind 0スリム化キャンペーンの一環です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2217">NIP-57：Kind 0からのLightningアドレス&lt;/a>&lt;/strong> - vitorpamplonaが&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>に従いlud06/lud16（Lightningアドレス）をkind 0から専用event kindに抽出することを提案し、kind 0スリム化を継続しています。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2165">プロフィールハイパーカスタマイゼーション&lt;/a>&lt;/strong> - fiatjafが、現在のkind 0がサポートする範囲を超えた拡張プロフィールカスタマイゼーション機能を提案しています。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nipディープダイブnip-45event-countingとhyperloglog">NIPディープダイブ：NIP-45（Event Counting）とHyperLogLog&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-45/">NIP-45&lt;/a>（&lt;a href="https://github.com/nostr-protocol/nips/blob/master/45.md">仕様&lt;/a>）は、クライアントがevent自体を転送せずにフィルターに一致するeventの数をrelayに問い合わせる方法を定義しています。今週マージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/1561">HyperLogLogサポート&lt;/a>は、根本的な問題を解決する確率的データ構造を追加しました。複数の独立したrelayにまたがって物事を数える方法という問題です。&lt;/p>
&lt;p>&lt;strong>問題点：&lt;/strong>&lt;/p>
&lt;p>単一relayでのeventカウントは単純です。COUNTリクエストを送信し、数値を受け取ります。ネットワーク全体でのカウントはより困難です。relay Aが50リアクション、relay Bが40リアクションを報告した場合、合計は90ではありません。多くのeventが両方のrelayに存在するためです。すべてのeventをダウンロードして重複排除しなければ、クライアントは正確な数を計算できません。&lt;/p>
&lt;p>&lt;strong>HyperLogLog：&lt;/strong>&lt;/p>
&lt;p>HyperLogLog（HLL）は、固定量のメモリを使用してセット内のユニーク要素数を推定する確率的アルゴリズムです。NIP-45の実装は各1バイトの256レジスターを使用し、カウントされるevent数に関わらず正確に256バイトを消費します。このアルゴリズムは各event IDのバイナリ表現を調べ、先頭ゼロの位置を追跡することで動作します。IDが多くのゼロで始まるeventは統計的にまれであるため、その出現は大きなセットを示します。&lt;/p>
&lt;p>&lt;strong>NIP-45での動作：&lt;/strong>&lt;/p>
&lt;p>COUNTリクエストに応答するrelayは、base64エンコードされたレジスター値を含む&lt;code>hll&lt;/code>フィールドを含めることができます：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;COUNT&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;subscription_id&amp;gt;&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;count&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4527&lt;/span>, &lt;span style="color:#f92672">&amp;#34;hll&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;base64 encoded 256 bytes&amp;gt;&amp;#34;&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>クライアントは複数のrelayからHLL値を収集し、各レジスター位置で最大値を取ることでマージします。このマージされたHLLはrelay間のすべてのeventセットの和集合を表し、重複排除を自動的に処理します。最終的なカーディナリティ推定は、マージされたレジスターから計算されます。&lt;/p>
&lt;p>&lt;strong>精度：&lt;/strong>&lt;/p>
&lt;p>256レジスターでの標準誤差は約5.2%です。真の数が1,000の場合、推定は通常948から1,052の間に収まります。より大きな数でも相対誤差は一定で、真の数が100,000の場合は約94,800から105,200と推定されます。HyperLogLog++補正は小さなカーディナリティ（約200未満）での精度を向上させ、基本アルゴリズムが過大評価する傾向を改善します。&lt;/p>
&lt;p>&lt;strong>意義：&lt;/strong>&lt;/p>
&lt;p>ソーシャルメトリクス（フォロワー数、リアクション数、リポスト数）はソーシャルメディアクライアントの中核機能です。HLLなしでは、クライアントはカウントを中央集権化する形で単一の「信頼できる」relayに問い合わせるか、帯域幅を浪費してすべてのrelayからすべてのeventをダウンロードするしかありません。HLLにより、クライアントは実際のカウントに関わらず、relay当たり256バイトのオーバーヘッドで複数relayから適切な近似カウントを取得できます。リアクションeventが2つでも、完全なHLLペイロードより多くの帯域幅を消費します。&lt;/p>
&lt;p>仕様は相互運用性のためにレジスター数を256に固定しています。すべてのrelayが、どのrelay実装を実行していても、クライアントがマージ可能なHLL値を生成します。この標準化により、クライアントはHLLサポートを一度実装すれば、それをサポートするすべてのrelayから恩恵を受けることができます。&lt;/p>
&lt;p>&lt;strong>現在のステータス：&lt;/strong>&lt;/p>
&lt;p>このPRはfiatjafが公開し、今週のマージ前に数ヶ月にわたって議論されていました。relay実装はCOUNTハンドラーにHLL計算を追加する必要があります。クライアント実装はカウント集約ロジックにHLLマージを追加する必要があります。&lt;/p>
&lt;h2 id="nipディープダイブnip-96httpファイルストレージとblossomへの移行">NIPディープダイブ：NIP-96（HTTPファイルストレージ）とBlossomへの移行&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-96/">NIP-96&lt;/a>（&lt;a href="https://github.com/nostr-protocol/nips/blob/master/96.md">仕様&lt;/a>）は、NostrクライアントがHTTPメディアサーバー上でファイルをアップロード、ダウンロード、管理する方法を定義していました。現在は&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>（BUDベースのメディアホスティング）に移行が推奨されていますが、Angor v0.2.5が&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#angor-v025">NIP-96サーバー設定を追加&lt;/a>し、ZSP v0.3.1が&lt;a href="https://nostrcompass.org/ja/newsletters/2026-02-11-newsletter/#zsp-v031">Blossomサーバーにアップロード&lt;/a>していることから、プロトコル移行の進行中が分かり、NIP-96は今週も関連性を持っています。&lt;/p>
&lt;p>&lt;strong>NIP-96の動作原理：&lt;/strong>&lt;/p>
&lt;p>クライアントは&lt;code>/.well-known/nostr/nip96.json&lt;/code>を取得してファイルサーバーの機能を発見します。API URL、サポートされるコンテンツタイプ、サイズ制限、利用可能なメディア変換が返されます：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;api_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://file-server.example/api&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;download_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content_types&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;image/jpeg&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;video/webm&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;audio/*&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;plans&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;free&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;is_nip98_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">true&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_byte_size&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10485760&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;media_transformations&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;image&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;resizing&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>アップロードするには、クライアントは&lt;a href="https://github.com/nostr-protocol/nips/blob/master/98.md">NIP-98&lt;/a>認可ヘッダー付きの&lt;code>multipart/form-data&lt;/code> POSTをAPI URLに送信します。認可ヘッダーにはアップローダーのアイデンティティを証明する署名済みNostr eventが含まれます。サーバーはファイルURL、オリジナルおよび変換済みSHA-256ハッシュ、MIMEタイプ、寸法を含む&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>ファイルメタデータ構造を返します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;status&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;success&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;nip94_event&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;url&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;https://cdn.example/files/&amp;lt;hash&amp;gt;.png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;ox&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;original-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;x&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;transformed-file-hash&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;m&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;image/png&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;dim&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;800x600&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ダウンロードは&lt;code>&amp;lt;api_url&amp;gt;/&amp;lt;sha256-hash&amp;gt;&lt;/code>へのGETリクエストを使用し、画像リサイズ（&lt;code>?w=320&lt;/code>）などのサーバーサイド変換のオプションクエリパラメータが利用可能です。削除はNIP-98認証付きDELETEを使用し、元のアップローダーのみが自分のファイルを削除できます。ファイルリストエンドポイントはユーザーのアップロードのページ分けされた結果を返します。&lt;/p>
&lt;p>ユーザーは優先アップロードサーバーを宣言するkind 10096イベントを公開し、手動設定なしにクライアントが適切なサーバーを自動選択できるようにします。&lt;/p>
&lt;p>&lt;strong>非推奨化の理由：&lt;/strong>&lt;/p>
&lt;p>NIP-96はファイルURLを特定のサーバーに紐付けていました。&lt;code>files.example.com&lt;/code>がダウンした場合、そのサーバーのURLを参照するすべてのNostrノートがメディアを失います。サーバーがアドレスであり、そのアドレスは脆弱でした。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>（Blobs Stored Simply on Mediaservers）はこれを反転させ、ファイルコンテンツのSHA-256ハッシュを正規の識別子とします。BlossomのURLは&lt;code>https://blossom.example/&amp;lt;sha256&amp;gt;.png&lt;/code>のようになりますが、同じファイルをホストする任意のBlossomサーバーが同じハッシュパスで提供します。あるサーバーが消えた場合、クライアントは同じハッシュで別のサーバーに問い合わせることができます。コンテンツアドレッシングにより、デフォルトでデータがサーバー間で移行可能になります。&lt;/p>
&lt;p>BlossomはAPIも簡素化しています。NIP-96はJSONレスポンス付きのマルチパートフォームアップロード、変換ポリシー、ディスカバリーエンドポイントを使用していました。BlossomはアップロードにプレーンなPUT、ダウンロードにGET、認可には署名付きNostr eventを使用し、HTTPヘッダーに依存しません。Blossom仕様はモジュール式ドキュメントに分割されています。BUD-01がサーバープロトコル、認可、取得をカバーし、BUD-02がブロブアップロード、BUD-03がユーザーサーバー、BUD-04がサーバー間のミラーリングをカバーしています。&lt;/p>
&lt;p>非推奨化は2025年9月に&lt;a href="https://github.com/nostr-protocol/nips/pull/2047">PR #2047&lt;/a>で行われ、NIPsインデックスでNIP-96に「非推奨」のマークが付けられました。&lt;/p>
&lt;p>&lt;strong>実践における移行：&lt;/strong>&lt;/p>
&lt;p>nostr.buildやvoid.catのようなサーバーはNIP-96をサポートし、Blossomエンドポイントを追加または移行しました。クライアントは様々な段階にあります。今週のAngor v0.2.5リリースはプロジェクト画像用にNIP-96サーバー設定を追加し、ZSP v0.3.1はプロトコル準拠の&lt;code>Content-Digest&lt;/code>ヘッダー付きでBlossomサーバーのみにアーティファクトをアップロードしています。AmethystとPrimalはBlossomアップロードをサポートしています。残りのNIP-96実装が移行を完了するまで、両者の共存は続くでしょう。&lt;/p>
&lt;p>&lt;strong>引き継がれるもの：&lt;/strong>&lt;/p>
&lt;p>Kind 10096サーバー設定イベントはBlossomサーバー選択に引き続き有用です。NIP-94ファイルメタデータ（kind 1063イベント）は、どのアップロードプロトコルで作成されたかに関わらず、ファイルプロパティを記述します。NIP-96がダウンロードURLに使用していたSHA-256ハッシングは、Blossomのコンテンツアドレッシングの基盤となりました。NIP-96の設計は、Blossomが何を簡素化したかを示しました。分散型ネットワーク上のメディアホスティングには、relayレイヤーの検閲耐性に匹敵するコンテンツアドレスストレージが必要だという教訓です。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。構築中のプロジェクトや共有したいニュースがあれば、&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>。Nostrでもお待ちしています。&lt;/p></content:encoded></item><item><title>Nostr Compass #8</title><link>https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-02-04-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> rust-nostrがSDKのアーキテクチャを刷新する21のPRで大規模なAPI再設計を出荷。Nostria 3.0がデュアルペインナビゲーション、リスト管理、完全なUI刷新でローンチ。VectorがSIMDアクセラレーションを追加し65x-184xの高速化を達成、暗号化グループメッセージング向け&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルサポートを出荷。FrostrがTestFlight経由でiOSに閾値署名をもたらす。Damusがクロスリレーコンテンツ発見のために&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19 (Bech32エンコードエンティティ)&lt;/a>リレーヒントを実装。Primal AndroidがNWC暗号化とウォレットトランザクションエクスポートを追加。nostr-toolsとNDKが信頼性の改善を受ける。NIP-82（ソフトウェアアプリケーション）がデバイスプラットフォームの98%をカバーするよう拡張。NIPsリポジトリが&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>のホールドインボイスサポートをマージ。新しいプロトコル提案にはポッドキャスティング向けNIP-74、ブラウザイベントデータベース向けNIP-DB、分散型コンテンツキュレーション向けTRUSTed Filtersスイートが含まれる。新プロジェクトとしてコンテンツ移行用Instagram to Nostr v2、分散型3Dプリントマーケットプレイスを立ち上げるPod21、AIエージェント管理コミュニティを導入するClawstr、ライブストリーミングとビデオ通話機能を拡張するShoshoとNosCallが登場。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="rust-nostrが大規模なapi再設計を出荷">rust-nostrが大規模なAPI再設計を出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> SDKは今週、ライブラリ全体に破壊的変更を導入する21のマージされたPRで大幅なアーキテクチャ刷新を受けました。この再設計はほとんどのRust開発者が依存するコアAPIに影響を与えます。&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a>は通知APIを再設計し、&lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a>は&lt;code>RelayNotification::Shutdown&lt;/code>を&lt;code>RelayStatus::Shutdown&lt;/code>に置き換えてよりクリーンな状態処理を実現。署名者APIは&lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>を通じて他のSDKパターンと整合。ClientとRelayメソッドは&lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>でクリーンアップされ、クライアントオプションはビルダーパターンを使用するようになりました（&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>）。&lt;/p>
&lt;p>メッセージ送信APIは&lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>で再設計され、REQアンサブスクリプションは&lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>で、リレー削除は&lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>で対応。&lt;a href="https://github.com/rust-nostr/nostr/pull/1246">オープンPR #1246&lt;/a>はブロッキングAPIのサポートを追加して再設計を締めくくります。&lt;/p>
&lt;p>これらの変更はSDKに一貫性をもたらしますが、既存のプロジェクトからの移行作業が必要になります。rust-nostr上で構築している開発者は、アップグレード前に変更ログを注意深く確認すべきです。&lt;/p>
&lt;h3 id="instagram-to-nostr-v2がコンテンツ移行を可能に">Instagram to Nostr v2がコンテンツ移行を可能に&lt;/h3>
&lt;p>新しいツールにより、クリエイターは既存のコンテンツを集中型プラットフォームからNostrに移行できます。&lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a>は、ユーザーの秘密鍵にアクセスすることなく、Instagram、TikTok、Twitter、Substackからのインポートをサポートします。&lt;/p>
&lt;p>このツールは一般的なオンボーディング障壁に対処します：新しいプラットフォームでゼロから始めることに躊躇するユーザーがコンテンツ履歴を保存できるようになります。また、新規ユーザーへのNostrアカウントのギフティングや既存アカウントへのコンテンツ提案もサポートしており、他の人のプロトコルへの移行を支援するのに便利です。&lt;/p>
&lt;h3 id="pod21分散型3dプリントネットワーク">Pod21：分散型3Dプリントネットワーク&lt;/h3>
&lt;p>&lt;a href="https://github.com/gobrrrme/Pod21">Pod21&lt;/a> (&lt;a href="https://pod21.com">pod21.com&lt;/a>)はNostrをマーケットプレイス調整に使用して、3Dプリンターオペレーターとバイヤーを接続します。プラットフォームには&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17 (プライベートダイレクトメッセージ)&lt;/a>互換のDMボットが含まれており、マーケットプレイスのやり取りを処理し、バイヤーがプリントをリクエストし、暗号化されたダイレクトメッセージを通じてメーカーと交渉できます。&lt;/p>
&lt;p>メーカーはプリント容量と機能をリストし、バイヤーはリストを閲覧してボットを通じて注文を開始します。アーキテクチャは他のNostrコマースアプリケーションと同様のパターンに従います：リレーベースの発見、注文調整のための暗号化メッセージング、決済のためのLightning。Pod21はRidestrやShopstrと共に、プロトコルを通じて現実世界の取引を調整するNostrアプリケーションに加わります。&lt;/p>
&lt;h3 id="clawstraiエージェントソーシャルネットワーク">Clawstr：AIエージェントソーシャルネットワーク&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a>は、AIエージェントがNostr上でコミュニティを作成・管理するRedditに触発されたプラットフォームとしてローンチ。プラットフォームにより、自律エージェントがトピックコミュニティを確立し、コンテンツをキュレートし、ユーザーと関わることができます。コミュニティはサブレディットのように機能しますが、AIモデレーターとキュレーターが議論を導きます。アーキテクチャはエージェント間およびエージェントと人間のインタラクションにNostrのオープンプロトコルを使用し、分散型ソーシャルメディアにおけるコミュニティ形成の新しいモデルを確立します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="ridestr-v020roadflareリリース">Ridestr v0.2.0：RoadFlareリリース&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>は「RoadFlareリリース」と名付けられた&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>を出荷し、パーソナルライドシェアネットワークを導入。この機能により、ライダーはお気に入りのドライバーを信頼ネットワークに追加できます。ドライバーはフォロワーを承認し、暗号化された位置情報を共有することで、ライダーは信頼するドライバーがオンラインで近くにいるときを確認できます。ライドリクエストは既知のドライバーに直接送られます。&lt;/p>
&lt;p>支払いの信頼性が向上し、自動エスクローリカバリー、デバイス間のウォレット同期改善、プログレッシブポーリングによる高速支払い処理が実現。&lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a>はこれらの機能をサポートするフェーズ5-6インフラストラクチャを追加。&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a>は支払いダイアログのバグとライド後の「お気に入りに追加」フローのホットフィックスが続きました。&lt;/p>
&lt;h3 id="nostria-30">Nostria 3.0&lt;/h3>
&lt;p>sondrebが構築したグローバルスケール向けクロスプラットフォームクライアント&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>がバージョン3.0を出荷し、完全なUI刷新、新ロゴ、数百の修正を含みます。このリリースは集中的な6週間の開発サイクルを表しています。&lt;/p>
&lt;p>デュアルペインナビゲーションが最大のUX変更であり、デスクトップユーザーがリスト、詳細、スレッド間を移動する際のコンテキスト切り替えを削減できます。新しいホームセクションは利用可能なすべての機能の概要を提供し、すべての画面が統一されたツールバー、レイアウト、機能性を共有します。&lt;/p>
&lt;p>リスト管理が最も重要な機能アップデートであり、アプリケーション全体に統合されています。ユーザーはプロファイルリストを管理し、Streams、Music、Feedsの任意の機能でコンテンツをフィルタリングできます。スレッドのスパムにうんざりしていますか？お気に入りでフィルタリングして彼らの返信のみを表示できます。Quick Zapsは設定可能な値でワンタップzappingを追加。Copy/Screenshotはどこでもイベントを共有するためのクリップボードスクリーンショットを生成。Muted Wordsはプロファイルフィールド（name、display_name、NIP-05）でフィルタリングするようになり、ユーザーは単一の禁止ワードですべてのブリッジプロファイルをブロックできます。設定は検索可能になり、より速い構成変更が可能に。&lt;/p>
&lt;p>このリリースはBOLT11とBOLT12支払いリクエストレンダリング、テキストサイズとフォント選択、メッセージセクションでの参照コンテンツ（記事やイベントなど）のレンダリング付き「Note-to-Self」メッセージングを追加。新しい共有ダイアログにより、メール、ウェブサイト、または複数の受信者へのダイレクトメッセージを通じた迅速な共有が可能に。追加機能にはカスタム絵文字セット、Interests（動的フィードとしてのハッシュタグリスト）、ブックマーク、パブリックリレーフィード、Nostriaアイコンがどのオプションを開くかを含む完全なメニューカスタマイズがあります。&lt;/p>
&lt;p>Android、iOS、Windows、および&lt;a href="https://www.nostria.app/">nostria.app&lt;/a>のWebで利用可能。&lt;/p>
&lt;h3 id="applesauce-v510">Applesauce v5.1.0&lt;/h3>
&lt;p>hzrd149の&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>ライブラリスイートがすべてのパッケージでv5.1.0をリリース。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a>はNostr Connectリモート署名者での&lt;code>switch_relays&lt;/code>と&lt;code>ping&lt;/code>メソッドのサポートを追加し、署名者接続をプログラマティックに管理するのに便利。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-loaders%405.1.0">applesauce-loaders&lt;/a>は並列非同期ローディング用の&lt;code>loadAsyncMap&lt;/code>を導入。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a>は&lt;code>useAction().run()&lt;/code>にパディング引数を追加。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.1.0">applesauce-core&lt;/a>はイベントからストアへのマッピングを更新し、&lt;code>onlyEvents&lt;/code>を必要とせずに文字列を直接処理。&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>fiatjafの&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>（Nostr Army Knife）はmattnからの安定性修正で&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a>に到達。このリリースはミントURLが&lt;code>://&lt;/code>セパレーターを欠く場合のパニックを防止し、日付値を使用する前にdateparserエラーを検証し、AUTH challengeタグ解析のエッジケースを処理。これらの防御的な修正により、不正な入力を処理する際のCLIの耐障害性が向上。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> rust-nostrがSDKのアーキテクチャを刷新する21のPRで大規模なAPI再設計を出荷。Nostria 3.0がデュアルペインナビゲーション、リスト管理、完全なUI刷新でローンチ。VectorがSIMDアクセラレーションを追加し65x-184xの高速化を達成、暗号化グループメッセージング向け&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a>プロトコルサポートを出荷。FrostrがTestFlight経由でiOSに閾値署名をもたらす。Damusがクロスリレーコンテンツ発見のために&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19 (Bech32エンコードエンティティ)&lt;/a>リレーヒントを実装。Primal AndroidがNWC暗号化とウォレットトランザクションエクスポートを追加。nostr-toolsとNDKが信頼性の改善を受ける。NIP-82（ソフトウェアアプリケーション）がデバイスプラットフォームの98%をカバーするよう拡張。NIPsリポジトリが&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>のホールドインボイスサポートをマージ。新しいプロトコル提案にはポッドキャスティング向けNIP-74、ブラウザイベントデータベース向けNIP-DB、分散型コンテンツキュレーション向けTRUSTed Filtersスイートが含まれる。新プロジェクトとしてコンテンツ移行用Instagram to Nostr v2、分散型3Dプリントマーケットプレイスを立ち上げるPod21、AIエージェント管理コミュニティを導入するClawstr、ライブストリーミングとビデオ通話機能を拡張するShoshoとNosCallが登場。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="rust-nostrが大規模なapi再設計を出荷">rust-nostrが大規模なAPI再設計を出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a> SDKは今週、ライブラリ全体に破壊的変更を導入する21のマージされたPRで大幅なアーキテクチャ刷新を受けました。この再設計はほとんどのRust開発者が依存するコアAPIに影響を与えます。&lt;/p>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1245">PR #1245&lt;/a>は通知APIを再設計し、&lt;a href="https://github.com/rust-nostr/nostr/pull/1244">PR #1244&lt;/a>は&lt;code>RelayNotification::Shutdown&lt;/code>を&lt;code>RelayStatus::Shutdown&lt;/code>に置き換えてよりクリーンな状態処理を実現。署名者APIは&lt;a href="https://github.com/rust-nostr/nostr/pull/1243">PR #1243&lt;/a>を通じて他のSDKパターンと整合。ClientとRelayメソッドは&lt;a href="https://github.com/rust-nostr/nostr/pull/1242">PR #1242&lt;/a>でクリーンアップされ、クライアントオプションはビルダーパターンを使用するようになりました（&lt;a href="https://github.com/rust-nostr/nostr/pull/1241">PR #1241&lt;/a>）。&lt;/p>
&lt;p>メッセージ送信APIは&lt;a href="https://github.com/rust-nostr/nostr/pull/1240">PR #1240&lt;/a>で再設計され、REQアンサブスクリプションは&lt;a href="https://github.com/rust-nostr/nostr/pull/1239">PR #1239&lt;/a>で、リレー削除は&lt;a href="https://github.com/rust-nostr/nostr/pull/1229">PR #1229&lt;/a>で対応。&lt;a href="https://github.com/rust-nostr/nostr/pull/1246">オープンPR #1246&lt;/a>はブロッキングAPIのサポートを追加して再設計を締めくくります。&lt;/p>
&lt;p>これらの変更はSDKに一貫性をもたらしますが、既存のプロジェクトからの移行作業が必要になります。rust-nostr上で構築している開発者は、アップグレード前に変更ログを注意深く確認すべきです。&lt;/p>
&lt;h3 id="instagram-to-nostr-v2がコンテンツ移行を可能に">Instagram to Nostr v2がコンテンツ移行を可能に&lt;/h3>
&lt;p>新しいツールにより、クリエイターは既存のコンテンツを集中型プラットフォームからNostrに移行できます。&lt;a href="https://github.com/primalpaul1/instagram-to-nostr-v2">Instagram to Nostr v2&lt;/a>は、ユーザーの秘密鍵にアクセスすることなく、Instagram、TikTok、Twitter、Substackからのインポートをサポートします。&lt;/p>
&lt;p>このツールは一般的なオンボーディング障壁に対処します：新しいプラットフォームでゼロから始めることに躊躇するユーザーがコンテンツ履歴を保存できるようになります。また、新規ユーザーへのNostrアカウントのギフティングや既存アカウントへのコンテンツ提案もサポートしており、他の人のプロトコルへの移行を支援するのに便利です。&lt;/p>
&lt;h3 id="pod21分散型3dプリントネットワーク">Pod21：分散型3Dプリントネットワーク&lt;/h3>
&lt;p>&lt;a href="https://github.com/gobrrrme/Pod21">Pod21&lt;/a> (&lt;a href="https://pod21.com">pod21.com&lt;/a>)はNostrをマーケットプレイス調整に使用して、3Dプリンターオペレーターとバイヤーを接続します。プラットフォームには&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17 (プライベートダイレクトメッセージ)&lt;/a>互換のDMボットが含まれており、マーケットプレイスのやり取りを処理し、バイヤーがプリントをリクエストし、暗号化されたダイレクトメッセージを通じてメーカーと交渉できます。&lt;/p>
&lt;p>メーカーはプリント容量と機能をリストし、バイヤーはリストを閲覧してボットを通じて注文を開始します。アーキテクチャは他のNostrコマースアプリケーションと同様のパターンに従います：リレーベースの発見、注文調整のための暗号化メッセージング、決済のためのLightning。Pod21はRidestrやShopstrと共に、プロトコルを通じて現実世界の取引を調整するNostrアプリケーションに加わります。&lt;/p>
&lt;h3 id="clawstraiエージェントソーシャルネットワーク">Clawstr：AIエージェントソーシャルネットワーク&lt;/h3>
&lt;p>&lt;a href="https://github.com/clawstr/clawstr">Clawstr&lt;/a>は、AIエージェントがNostr上でコミュニティを作成・管理するRedditに触発されたプラットフォームとしてローンチ。プラットフォームにより、自律エージェントがトピックコミュニティを確立し、コンテンツをキュレートし、ユーザーと関わることができます。コミュニティはサブレディットのように機能しますが、AIモデレーターとキュレーターが議論を導きます。アーキテクチャはエージェント間およびエージェントと人間のインタラクションにNostrのオープンプロトコルを使用し、分散型ソーシャルメディアにおけるコミュニティ形成の新しいモデルを確立します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="ridestr-v020roadflareリリース">Ridestr v0.2.0：RoadFlareリリース&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>は「RoadFlareリリース」と名付けられた&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.0">v0.2.0&lt;/a>を出荷し、パーソナルライドシェアネットワークを導入。この機能により、ライダーはお気に入りのドライバーを信頼ネットワークに追加できます。ドライバーはフォロワーを承認し、暗号化された位置情報を共有することで、ライダーは信頼するドライバーがオンラインで近くにいるときを確認できます。ライドリクエストは既知のドライバーに直接送られます。&lt;/p>
&lt;p>支払いの信頼性が向上し、自動エスクローリカバリー、デバイス間のウォレット同期改善、プログレッシブポーリングによる高速支払い処理が実現。&lt;a href="https://github.com/variablefate/ridestr/pull/37">PR #37&lt;/a>はこれらの機能をサポートするフェーズ5-6インフラストラクチャを追加。&lt;a href="https://github.com/variablefate/ridestr/releases/tag/v0.2.1">v0.2.1&lt;/a>は支払いダイアログのバグとライド後の「お気に入りに追加」フローのホットフィックスが続きました。&lt;/p>
&lt;h3 id="nostria-30">Nostria 3.0&lt;/h3>
&lt;p>sondrebが構築したグローバルスケール向けクロスプラットフォームクライアント&lt;a href="https://github.com/nostria-app/nostria">Nostria&lt;/a>がバージョン3.0を出荷し、完全なUI刷新、新ロゴ、数百の修正を含みます。このリリースは集中的な6週間の開発サイクルを表しています。&lt;/p>
&lt;p>デュアルペインナビゲーションが最大のUX変更であり、デスクトップユーザーがリスト、詳細、スレッド間を移動する際のコンテキスト切り替えを削減できます。新しいホームセクションは利用可能なすべての機能の概要を提供し、すべての画面が統一されたツールバー、レイアウト、機能性を共有します。&lt;/p>
&lt;p>リスト管理が最も重要な機能アップデートであり、アプリケーション全体に統合されています。ユーザーはプロファイルリストを管理し、Streams、Music、Feedsの任意の機能でコンテンツをフィルタリングできます。スレッドのスパムにうんざりしていますか？お気に入りでフィルタリングして彼らの返信のみを表示できます。Quick Zapsは設定可能な値でワンタップzappingを追加。Copy/Screenshotはどこでもイベントを共有するためのクリップボードスクリーンショットを生成。Muted Wordsはプロファイルフィールド（name、display_name、NIP-05）でフィルタリングするようになり、ユーザーは単一の禁止ワードですべてのブリッジプロファイルをブロックできます。設定は検索可能になり、より速い構成変更が可能に。&lt;/p>
&lt;p>このリリースはBOLT11とBOLT12支払いリクエストレンダリング、テキストサイズとフォント選択、メッセージセクションでの参照コンテンツ（記事やイベントなど）のレンダリング付き「Note-to-Self」メッセージングを追加。新しい共有ダイアログにより、メール、ウェブサイト、または複数の受信者へのダイレクトメッセージを通じた迅速な共有が可能に。追加機能にはカスタム絵文字セット、Interests（動的フィードとしてのハッシュタグリスト）、ブックマーク、パブリックリレーフィード、Nostriaアイコンがどのオプションを開くかを含む完全なメニューカスタマイズがあります。&lt;/p>
&lt;p>Android、iOS、Windows、および&lt;a href="https://www.nostria.app/">nostria.app&lt;/a>のWebで利用可能。&lt;/p>
&lt;h3 id="applesauce-v510">Applesauce v5.1.0&lt;/h3>
&lt;p>hzrd149の&lt;a href="https://github.com/hzrd149/applesauce">Applesauce&lt;/a>ライブラリスイートがすべてのパッケージでv5.1.0をリリース。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%405.1.0">applesauce-signers&lt;/a>はNostr Connectリモート署名者での&lt;code>switch_relays&lt;/code>と&lt;code>ping&lt;/code>メソッドのサポートを追加し、署名者接続をプログラマティックに管理するのに便利。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-loaders%405.1.0">applesauce-loaders&lt;/a>は並列非同期ローディング用の&lt;code>loadAsyncMap&lt;/code>を導入。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-react%405.1.0">applesauce-react&lt;/a>は&lt;code>useAction().run()&lt;/code>にパディング引数を追加。&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.1.0">applesauce-core&lt;/a>はイベントからストアへのマッピングを更新し、&lt;code>onlyEvents&lt;/code>を必要とせずに文字列を直接処理。&lt;/p>
&lt;h3 id="nak-v0183">nak v0.18.3&lt;/h3>
&lt;p>fiatjafの&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>（Nostr Army Knife）はmattnからの安定性修正で&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.3">v0.18.3&lt;/a>に到達。このリリースはミントURLが&lt;code>://&lt;/code>セパレーターを欠く場合のパニックを防止し、日付値を使用する前にdateparserエラーを検証し、AUTH challengeタグ解析のエッジケースを処理。これらの防御的な修正により、不正な入力を処理する際のCLIの耐障害性が向上。&lt;/p>
&lt;h3 id="aegis-v037">Aegis v0.3.7&lt;/h3>
&lt;p>クロスプラットフォームデスクトップ署名者&lt;a href="https://github.com/ZharlieW/Aegis">Aegis&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-07/">NIP-07 (ブラウザ拡張インターフェース)&lt;/a>署名付きのNostr App Browserサポートを追加する&lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.7">v0.3.7&lt;/a>を出荷。このリリースは&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04 (暗号化ダイレクトメッセージ)&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44 (バージョン付き暗号化)&lt;/a>暗号化イベントを記録し、ユーザーはどのアプリケーションが暗号化操作を要求したかを追跡できます。ブラウザセグメントはプラットフォームでフィルタリングしてWebアプリのみを表示するようになりました。&lt;/p>
&lt;h3 id="bitchat-v151-ios">Bitchat v1.5.1 (iOS)&lt;/h3>
&lt;p>NostrとBluetoothメッシュを使用するオフライン対応メッセージングアプリ&lt;a href="https://github.com/permissionlesstech/bitchat">Bitchat&lt;/a>は、iOSセキュリティ強化付きの&lt;a href="https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.1">v1.5.1&lt;/a>をリリース。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/1012">PR #1012&lt;/a>は処理前にNostrイベント署名を検証し、無効なgiftwrapと埋め込みパケットを拒否し、サイズ超過ペイロードを制限し、偽装されたBLEアナウンス送信者IDをブロック。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/998">PR #998&lt;/a>は送信者IDを接続UUIDにバインドすることでiOS BLEメッシュ認証を修正し、メッシュネットワークでのアイデンティティスプーフィングを防止。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/972">PR #972&lt;/a>は複数のメッシュデバイスが近くにあるときのピア発見フラッドを防ぐ通知レート制限を追加。&lt;/p>
&lt;h3 id="keychat-v1392">KeyChat v1.39.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/keychat-io/keychat-app">KeyChat&lt;/a>は&lt;a href="https://github.com/keychat-io/keychat-app/pull/148">PR #148&lt;/a>を通じて&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connectサポートを追加する&lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.39.2%2B6495">v1.39.2&lt;/a>をリリース。ユーザーはメッセージングアプリ内での支払いのために外部Lightningウォレットを接続できるようになりました。このリリースはmacOSデスクトップ通知も追加。&lt;/p>
&lt;h3 id="nostrmo-v350">Nostrmo v3.5.0&lt;/h3>
&lt;p>クロスプラットフォームFlutterクライアント&lt;a href="https://github.com/haorendashu/nostrmo">Nostrmo&lt;/a>はフィードシステムを刷新する&lt;a href="https://github.com/haorendashu/nostrmo/releases/tag/3.5.0">v3.5.0&lt;/a>を出荷。アップデートは固定フィードをカスタマイズ可能な代替物に置き換えます：General Feed、Mentioned Feed、Relay Feedはそれぞれ新しい編集ページで設定可能。このリリースはより良いイベントルーティングのためのoutboxモデルサポートを実装し、設定可能なサイズ制限とサブスクリプションサポートでローカルリレー機能を拡張。&lt;/p>
&lt;h3 id="shosho-v0111">Shosho v0.11.1&lt;/h3>
&lt;p>Nostr向けライブストリーミングアプリ&lt;a href="https://github.com/r0d8lsh0p/shosho-releases">Shosho&lt;/a>は録画とVOD機能付きの&lt;a href="https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.11.1">v0.11.1&lt;/a>をリリース。アップデートはストリームを視聴している人を表示するルームプレゼンスインジケーター、より良いディスカッション整理のためのスレッド化されたチャット会話、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>経由のiOSでのNostr Connectサポートを追加。ストリーマーは視聴者とのリアルタイムチャットインタラクションを維持しながら、放送を後で視聴するために保存できます。&lt;/p>
&lt;h3 id="noscall-v050">NosCall v0.5.0&lt;/h3>
&lt;p>Nostr向けオーディオおよびビデオ通話アプリ&lt;a href="https://github.com/sanah9/noscall">NosCall&lt;/a>は、カテゴリ別に通話を整理するコンタクトグループ、接続最適化のためのリレー管理、改善されたNATトラバーサルのための設定可能なICEサーバー設定付きの&lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.5.0-release">v0.5.0&lt;/a>を出荷。このリリースはダークモードサポートも追加。NosCallは通話シグナリングと調整にNostrを使用し、集中型サーバーなしでピアツーピア通話を可能にします。&lt;/p>
&lt;h3 id="divine-104">diVine 1.0.4&lt;/h3>
&lt;p>rabbleのショートフォームループビデオクライアント&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は、Zapstore提出に先立つAndroidプレリリースアルファとして&lt;a href="https://github.com/divinevideo/divine-mobile/releases/tag/1.0.4">1.0.4&lt;/a>をリリース。このリリースはnsecインポート、nsecBunkerとAmberによる&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46 (Nostr Connect)&lt;/a>リモート署名、nostrconnect:// URL処理を含むNostr鍵管理のテストに焦点を当てています。チームはリレー互換性と他のクライアントとのビデオ相互運用性についてフィードバックを募集中。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1265">PR #1265&lt;/a>は絶対コンテナパスの代わりに相対パスを保存することで、アプリ更新後にビデオクリップが使用不能になっていたiOSファイルパス処理を修正。&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1251">PR #1251&lt;/a>はコメントからプロファイルを表示する際のナビゲーション問題を修正。&lt;/p>
&lt;h3 id="zeus-v0122">Zeus v0.12.2&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>は安定版リリースとして&lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.2">v0.12.2&lt;/a>を出荷し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-28-newsletter/#zeus-v0122-beta---nwc-fixes">以前のエディションでカバーしたNWC修正&lt;/a>を統合。&lt;/p>
&lt;h3 id="frostr-igloo-ios-testflight">Frostr Igloo iOS TestFlight&lt;/h3>
&lt;p>&lt;a href="https://github.com/FROSTR-ORG">Frostr&lt;/a> (&lt;a href="https://frostr.org/">frostr.org&lt;/a>)は&lt;a href="https://github.com/FROSTR-ORG/igloo-ios">Igloo for iOS&lt;/a>を&lt;a href="https://testflight.apple.com/join/72hjQe3J">TestFlight&lt;/a>でローンチし、閾値署名をAppleデバイスに拡張。FrostrはFROST（Flexible Round-Optimized Schnorr Threshold）署名を使用してnsec鍵をデバイス間に分散されたシェアに分割し、フォールトトレランスを持つk-of-n署名を可能にします。「デモモード」で参加するユーザーはライブ2-of-2閾値署名実験に参加し、プロトコルのリアルタイム調整機能を実演します。iOSリリースは12月に&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55 (Android署名者)&lt;/a>サポート付きでクロスアプリ署名リクエスト向けに出荷された&lt;a href="https://github.com/FROSTR-ORG/igloo-android">Igloo for Android&lt;/a>（v0.1.2）に加わります。両モバイルクライアントは&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop">Iglooデスクトップ&lt;/a>と&lt;a href="https://github.com/FROSTR-ORG/frost2x">Frost2x&lt;/a>ブラウザ拡張を補完します。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="damusがnip-19リレーヒントを実装">DamusがNIP-19リレーヒントを実装&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus">Damus&lt;/a>はイベント取得用の&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>リレーヒント消費を実装する&lt;a href="https://github.com/damus-io/damus/pull/3477">PR #3477&lt;/a>をマージ。この機能により、&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10 (返信スレッド)&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-18/">NIP-18 (リポスト)&lt;/a>、NIP-19参照からヒントを抽出することで、ユーザーの設定プール外のリレー上のノートを表示できます。実装は参照カウント付きクリーンアップでエフェメラルリレー接続を使用し、永続的なリレープール拡張を回避。&lt;/p>
&lt;p>追加の修正にはLightningインボイス解析（&lt;a href="https://github.com/damus-io/damus/pull/3566">PR #3566&lt;/a>）、ウォレットビュー読み込み（&lt;a href="https://github.com/damus-io/damus/pull/3554">PR #3554&lt;/a>）、リレーリストタイミング（&lt;a href="https://github.com/damus-io/damus/pull/3553">PR #3553&lt;/a>）、視覚的な「ポッピング」を軽減するプロファイルプリロード（&lt;a href="https://github.com/damus-io/damus/pull/3550">PR #3550&lt;/a>）が含まれます。&lt;a href="https://github.com/damus-io/damus/pull/3590">ドラフトPR #3590&lt;/a>は進行中の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDMサポートを示しています。&lt;/p>
&lt;h3 id="primal-androidがnwc暗号化を出荷">Primal AndroidがNWC暗号化を出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app">Primal Android&lt;/a>はウォレットインフラストラクチャに焦点を当てた18のマージされたPRで非常に活発な週を過ごしました。アプリはLightsparkのセルフカストディアルLightningプロトコルであるSparkと統合しています。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a>はNWC暗号化サポートを追加し、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/872">PR #872&lt;/a>は接続確立時にNWC infoイベントを送信。&lt;/p>
&lt;p>&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/870">PR #870&lt;/a>はウォレットトランザクションのCSVエクスポートを有効にし、会計と税務目的に便利。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/716">PR #716&lt;/a>はNote Editorにローカルアカウントスイッチャーを追加。複数のウォレット復元修正（&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/876">PR #876&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/875">PR #875&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/873">PR #873&lt;/a>）は非Sparkウォレット構成のユーザー向けのエッジケースに対処。&lt;/p>
&lt;h3 id="marmot-typescript-sdkがメッセージ履歴を追加">Marmot TypeScript SDKがメッセージ履歴を追加&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/marmot">Marmot&lt;/a>プロトコルのTypeScript実装が開発を継続。hzrd149による&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">PR #38&lt;/a>はリファレンスチャットアプリケーション向けにページネーション付きのメッセージ履歴永続化を実装し、&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/39">PR #39&lt;/a>はライブラリのエルゴノミクスを改善。&lt;/p>
&lt;p>Rust側では、&lt;a href="https://github.com/marmot-protocol/mdk/pull/161">PR #161&lt;/a>が失敗時のメッセージコンテキストを保持するリトライ可能な状態処理を実装し、&lt;a href="https://github.com/marmot-protocol/mdk/pull/164">PR #164&lt;/a>はSQLiteでのtokioパニックを回避するためにstd::sync::Mutexに切り替え。whitenoise-rsバックエンドは&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">Amber統合&lt;/a>（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/418">PR #418&lt;/a>）を追加し、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">MDKとnostr-sdk 0.44にアップグレード&lt;/a>（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/467">PR #467&lt;/a>）、NewMessageとGroupInviteイベントタイプによるリアルタイム通知ストリーミングを&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/460">PR #460&lt;/a>で導入。&lt;/p>
&lt;h3 id="havenが定期的なwotリフレッシュを追加">HAVENが定期的なWoTリフレッシュを追加&lt;/h3>
&lt;p>パーソナルリレー&lt;a href="https://github.com/bitvora/haven">HAVEN&lt;/a>は、定期的な&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>リフレッシュを追加する&lt;a href="https://github.com/bitvora/haven/pull/108">PR #108&lt;/a>をマージ。この機能により、ユーザーのソーシャルグラフの進化に応じて信頼スコアが最新に保たれ、時間の経過とともにスパムフィルタリングの精度が向上。&lt;/p>
&lt;h3 id="nostr-tools">nostr-tools&lt;/h3>
&lt;p>コアJavaScriptライブラリ&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>は今週複数の改善を受けました。コミットには&lt;a href="https://nostrcompass.org/ja/topics/nip-27/">NIP-27 (テキストノート参照)&lt;/a>メンションでの&lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/c2423f7f31853d97fef2e3d649204cec328e81d5">改行後のハッシュタグ解析修正&lt;/a>、接続クリーンアップのための&lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/ab802c8dbe35d29feb732ba54e82a346c21c32e2">アイドル追跡付き壊れたリレーオブジェクトの自動プルーニング&lt;/a>、シングルスレッドパフォーマンス最適化のための&lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/be9b91318fea6a0cb154b8734a15b50a4c1e7638">メッセージキュー削除&lt;/a>、より良いTypeScriptインポートのための&lt;a href="https://github.com/nbd-wtf/nostr-tools/commit/05b1fba5113182ac0aa3c72d1f511cd956a7c139">ソースファイルエクスポート&lt;/a>が含まれます。&lt;/p>
&lt;h3 id="ndk">NDK&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>は&lt;a href="https://github.com/nostr-dev-kit/ndk/commit/33e759508bc656dc45d3d77c741edf581af323f3">デバイススリープ/ウェイクサイクル後の再接続と古い接続処理の修正&lt;/a>付きの&lt;a href="https://github.com/nostr-dev-kit/ndk/commit/26abea24726ed844fdd091744ac9f768f1a530a0">beta.71&lt;/a>を出荷し、モバイルアプリケーションの信頼性の問題に対処。&lt;/p>
&lt;h3 id="notedeck">Notedeck&lt;/h3>
&lt;p>Damusチームのデスクトップクライアント&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>には、&lt;a href="https://nostrcompass.org/ja/topics/nip-34/">NIP-34 (Git コラボレーション)&lt;/a>ビューアを追加する&lt;a href="https://github.com/damus-io/notedeck/pull/1279">オープンPR #1279&lt;/a>があります。これにより、Nostrリレーに公開されたgitリポジトリ、パッチ、issueをクライアント内で直接閲覧できるようになり、Notedeckがngitベースのワークフロー向けの潜在的なフロントエンドになります。&lt;/p>
&lt;h3 id="njump">njump&lt;/h3>
&lt;p>Nostr Webゲートウェイ&lt;a href="https://github.com/fiatjaf/njump">njump&lt;/a>は&lt;a href="https://github.com/fiatjaf/njump/pull/152">PR #152&lt;/a>を通じて2つの&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51 (リスト)&lt;/a>イベントタイプのサポートを追加。ゲートウェイはkind:30000 Follow Sets（クライアントが異なるコンテキストで表示できるユーザーのカテゴリ別グループ）とkind:39089 Starter Packs（共有とグループフォロー用に設計されたキュレートされたプロファイルコレクション）をレンダリングするようになりました。これらの追加により、ユーザーがneventリンクを共有するときにnjumpがコミュニティキュレートリストを表示できます。&lt;/p>
&lt;h3 id="amethyst">Amethyst&lt;/h3>
&lt;p>Androidクライアント&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>はプレイヤービューからのビデオ共有を妨げていたバグを修正（&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1695">PR #1695&lt;/a>）。「ビデオを共有」オプションは、コンテンツパラメータがコントロールボタンコンポーネントに渡されていなかったため表示されませんでした。ユーザーはプレイヤーから直接Nostrビデオコンテンツを他のアプリに共有できるようになりました。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1693">PR #1693&lt;/a>は特定の不正なイベントを解析する際に発生していたJackson JSONデシリアライズクラッシュを修正。&lt;/p>
&lt;h3 id="jumble">Jumble&lt;/h3>
&lt;p>リレーフィードブラウジングに焦点を当てたWebクライアント&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>は&lt;a href="https://github.com/CodyTseng/jumble/pull/743">PR #743&lt;/a>でクリップボード経由のオーディオファイルアップロードを追加。ユーザーは投稿エディタにオーディオファイルを直接ペーストでき、設定されたメディアサーバーにアップロードしてノートにURLを埋め込みます。この機能は既存の画像ペースト機能を反映。&lt;/p>
&lt;h3 id="flotilla">Flotilla&lt;/h3>
&lt;p>hodlbodの&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29 (リレーベースグループ)&lt;/a>コミュニティクライアント&lt;a href="https://github.com/coracle-social/flotilla">Flotilla&lt;/a>は&lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>を通じて通知を出荷。アップデートはアンカーベースのポーリングからWeb向けローカルプル通知とモバイル向けプッシュ通知にアラートシステムをリファクタリング。アーキテクチャは提案されたNIP-9a標準（下記の&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">PR #2194&lt;/a>を参照）を実装し、ユーザーがリレーにwebhookコールバックを登録し、フィルターが一致したときに暗号化されたイベントペイロードを受信します。&lt;/p>
&lt;h3 id="formstr">Formstr&lt;/h3>
&lt;p>Nostrネイティブフォームアプリケーション&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>は&lt;a href="https://github.com/abh3po/nostr-forms/pull/422">PR #422&lt;/a>でフォームインポートと暗号化フォームサポートを追加。ユーザーはレスポンスリンクを通じてまたは他のFormstrインスタンスから既存のフォームをインポートできるようになりました。暗号化機能により、フォーム作成者は指定された受信者のみが提出を読めるように応答を制限でき、機密情報を収集するアンケートに便利。&lt;/p>
&lt;h3 id="pollerama">Pollerama&lt;/h3>
&lt;p>&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>上に構築された&lt;a href="https://github.com/abh3po/nostr-polls">Pollerama&lt;/a> (&lt;a href="https://pollerama.fun">pollerama.fun&lt;/a>)は&lt;a href="https://github.com/abh3po/nostr-polls/pull/141">PR #141&lt;/a>と&lt;a href="https://github.com/abh3po/nostr-polls/pull/142">PR #142&lt;/a>を通じて投票用の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DM共有を追加。ユーザーは暗号化ダイレクトメッセージを通じて連絡先に投票を直接共有できるようになりました。&lt;/p>
&lt;h3 id="nostrability-schemata">Nostrability Schemata&lt;/h3>
&lt;p>Nostrイベント用のJSON検証スキーマコレクション&lt;a href="https://github.com/nostrability/schemata">Nostrability schemata&lt;/a>は&lt;a href="https://github.com/nostrability/schemata/pull/59">PR #59&lt;/a>を通じて&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>カバレッジを追加。アップデートにはkind 13（seal）とkind 1059（gift wrap）イベントのスキーマが含まれ、既存の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>スキーマカバレッジを補完。&lt;/p>
&lt;h3 id="vector">Vector&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>、&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>をゼロメタデータ暗号化に使用するプライバシー重視のデスクトップメッセンジャー&lt;a href="https://github.com/VectorPrivacy/Vector">Vector&lt;/a>は、SIMDアクセラレーションパフォーマンス最適化を導入する&lt;a href="https://github.com/VectorPrivacy/Vector/pull/39">PR #39&lt;/a>をマージ。16進数エンコードは65倍高速化、画像プレビュー生成は最大38倍高速化、バイナリサーチインデックスによるメッセージルックアップは184倍高速化。PRはApple Silicon向けARM64 NEONイントリンシクスとWindowsおよびLinux向けランタイム検出付きx86_64 AVX2/SSE2を追加。メッセージ構造体を472から128バイトに削減し、インターニングによりnpubストレージを99.6%削減してメモリ使用量が低下。&lt;/p>
&lt;p>Vector v0.3.0（2025年12月）はMLSプロトコルベースのグループメッセージング用に&lt;a href="https://github.com/marmot-protocol/mdk">MDK (Marmot Development Kit)&lt;/a>を統合し、前方秘匿性を持つエンドツーエンド暗号化グループをクライアントにもたらしました。MIP-04ファイル共有はMLSグループ向けのimeta添付ファイルを処理し、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-28-newsletter/#marmot-protocol-updates">White Noise&lt;/a>との相互運用性を考慮して設計。このリリースはWebXDCベースのP2Pマルチプレイヤーゲームを持つMini Appsプラットフォーム、The Nexusという分散型アプリストア、アプリ内支払い用PIVX ウォレット統合、完全な履歴追跡付きメッセージ編集、画像アップロード中の4倍メモリ削減も導入。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1913">NIP-47：ホールドインボイスサポート&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47 (Nostr Wallet Connect)&lt;/a>がホールドインボイスをサポートするようになり、受取人が明示的に支払いを決済またはキャンセルする必要がある高度な支払いワークフローが可能に。PRは3つの新しいRPCメソッドを追加：&lt;code>make_hold_invoice&lt;/code>は事前生成されたプリイメージと支払いハッシュを使用してホールドインボイスを作成、&lt;code>settle_hold_invoice&lt;/code>は元のプリイメージを提供して支払いを請求、&lt;code>cancel_hold_invoice&lt;/code>は支払いハッシュを使用して支払いを拒否。新しい&lt;code>hold_invoice_accepted&lt;/code>通知は支払い者が支払いをロックしたときに発火。これにより、アンロック用支払い、マーケットプレイスエスクローシステム、支払いゲーティングなどのユースケースが可能に。実装は&lt;a href="https://github.com/getAlby/hub/pull/1298">Alby Hub&lt;/a>、&lt;a href="https://github.com/getAlby/js-sdk/pull/382">Alby JS-SDK&lt;/a>、&lt;a href="https://github.com/relaystr/ndk/pull/147">dart NDK&lt;/a>で進行中。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2208">NIP-05：小文字要件&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-05/">NIP-05 (ドメイン検証)&lt;/a>が&lt;code>nostr.json&lt;/code>ファイル内の16進数公開鍵とローカル名の両方に小文字を明示的に要求するように。これは仕様で暗黙的でしたが明記されておらず、一部の実装が大文字小文字混合を使用し、他の実装が小文字に正規化していたため相互運用性の問題が発生。NIP-05識別子を検証するクライアントは、キーや名前に大文字を含む&lt;code>nostr.json&lt;/code>応答を拒否すべきです。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2205">NIP-73：国コード&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-73/">NIP-73 (ジオタグ)&lt;/a>がgeohashの代替としてISO 3166国コードをサポートするように。イベントは正確な座標を必要とせずに国レベルの位置を示す&lt;code>[&amp;quot;g&amp;quot;, &amp;quot;US&amp;quot;, &amp;quot;countryCode&amp;quot;]&lt;/code>タグを含めることができます。これにより、正確な位置が不要または望ましくないアプリケーション向けに国ベースのコンテンツフィルタリングと発見が可能に。PRは仕様ドキュメントに欠落していたgeohash例も追加。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1336">NIP-82：ソフトウェアアプリケーション&lt;/a>&lt;/strong> - franzapがこのドラフト仕様への大幅なアップデートを発表。kind 30063リリースイベントを使用してNostr経由でソフトウェアアプリケーションを配布する方法を定義。アップデートはmacOS、Linux、Windows、FreeBSD、WASM環境、VS Code拡張、Chrome拡張、Web Bundles/PWAを含む、グローバルで約98%のデバイスプラットフォームをカバーするように。チームは次にAndroid、PWA、iOSサポートに注力し、開発者にこの共有標準への収束を呼びかけ。Zapstoreは今後数週間で新フォーマットへの移行を予定。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2211">NIP-74：ポッドキャスト&lt;/a>&lt;/strong> - ポッドキャスト番組（kind 30074）とエピソード（kind 30075）用のアドレス可能イベントを定義。番組にはタイトル、説明、カテゴリ、カバー画像などのメタデータが含まれます。エピソードは親番組を参照し、エンクロージャURL、再生時間、チャプターマーカーを含みます。仕様はPodcasting 2.0メタデータ標準と統合し、Lightning経由のV4V（value-for-value）マネタイゼーション用のvalueタグを含みます。NostrネイティブポッドキャストパブリッシングプラットフォームのTRUSTed&lt;a href="https://transmit.fm">transmit.fm&lt;/a>のようなプラットフォームは、このフォーマットを使用してリレーに直接公開でき、ポッドキャスターが仲介者なしでコンテンツを配信可能に。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2207">NIP-FR：フレンズオンリーノート&lt;/a>&lt;/strong> - ViewKeyと呼ばれる共有対称鍵を使用して、ユーザー定義のフレンドリストにのみ表示されるノートを公開するメカニズムを提案。作成者はViewKeyを使用してNIP-44でノート（kind 2044）を暗号化します。ViewKey自体は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59 (Gift Wrap)&lt;/a>を通じて各友人に一度だけ配布されます。ViewKeyを持つ友人はノートを復号して読むことができ、それ以外の全員は暗号文しか見えません。作成者が友人を削除すると、ViewKeyがローテーションされます：新しい鍵が生成され、gift wrapを通じて残りの全友人に再配布され、削除された友人が将来の投稿にアクセスできないことが保証されます。このアプローチはコンテンツ暗号化（対称、効率的）と鍵配布（非対称、友人ごと）を分離し、頻繁にリクエストされるプライバシー機能を実現しながらプロトコルを軽量に保ちます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/1a451c1581888215ae5c311d36c8a7c7d9e5e81f1f4010de4afaf7fcbd553e90">NIP-DB：ブラウザNostrイベントデータベースインターフェース&lt;/a>&lt;/strong> (&lt;a href="https://github.com/hzrd149/nostr-bucket/blob/master/nip.md">spec&lt;/a>) - ローカルNostrイベントストレージを提供するブラウザ拡張用の標準&lt;code>window.nostrdb&lt;/code>インターフェースを提案。APIにはイベント追加、IDまたはフィルタによるクエリ、マッチカウント、更新サブスクリプション用のメソッドが含まれます。Webアプリケーションはこのインターフェースを使用して、リレーリクエストなしでローカルキャッシュされたイベントから読み取り、帯域幅とレイテンシーを削減できます。hzrd149の&lt;a href="https://github.com/hzrd149/nostr-bucket">nostr-bucket&lt;/a>ブラウザ拡張がリファレンス実装を提供し、すべてのブラウザタブにインターフェースを注入。コンパニオン&lt;a href="https://github.com/hzrd149/window.nostrdb.js">ポリフィルライブラリ&lt;/a>は拡張なしの環境向けにIndexedDBを使用して同じAPIを実装。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://nostrhub.io/e/237667820943d1c8bbe7ab7732623ae51b337f177776ece439d4a8be84708eb7">TRUSTed Filters&lt;/a>&lt;/strong> - vitorpamonaの&lt;a href="https://github.com/nostr-protocol/nips/pull/1534">マージされたTrusted Assertions PR #1534&lt;/a>を基に構築された、分散型コンテンツキュレーション用の5つの関連提案のスイート。コア仕様はTrust Provider Preferencesを宣言するためのkind 17570イベントを導入し、ユーザーはイベントフィルタリングとランキングでどのサービスを信頼するかを指定できます。信頼プロバイダーはクライアントがサブスクライブできるアサーション（kind 37571）、統計（kind 37572）、ランキング（kind 37573）を公開。システムはフィルタータイプと変換を指定するW/wタグ付きのプラグインアーキテクチャを使用。これにより、スパム検出、レピュテーションスコアリング、コンテンツランキングのような計算コストの高い操作を専用インフラストラクチャで実行しながら、ユーザーはどのプロバイダーを信頼するかの制御を維持できます。スイートにはフィルタープリセット、ユーザーランキング、信頼されたイベント、プラグイン定義用の個別仕様が含まれます。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2194">NIP-9a：プッシュ通知&lt;/a>&lt;/strong> - hodlbodがkind 30390登録イベントを使用するリレーベースのプッシュ通知の標準を提案。ユーザーは受信したいイベントのフィルターとwebhookコールバックURLを含む登録を作成。登録はリレーのpubkey（NIP-11の&lt;code>self&lt;/code>フィールドから）に暗号化。一致するイベントが発生すると、リレーはイベントID（重複排除用のプレーンテキスト）とイベント自体（ユーザーにNIP-44暗号化）を含むコールバックにPOST。このアーキテクチャにより、リレーは通知をプッシュしながら、仲介プッシュサーバーからイベントコンテンツを保護できます。Flotillaの&lt;a href="https://github.com/coracle-social/flotilla/pull/270">PR #270&lt;/a>がこの標準を実装。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/SigmaEnterprise/Catallax">Catallax&lt;/a>&lt;/strong> - kind 33400イベントを使用したエスクロー付き分散型コントラクトワークプロトコルを提案。システムは3つの役割を定義：アービターは利用可能性と条件を発表、パトロンはエスクローされたBitcoinで資金提供されたタスクを作成、フリーエージェントは支払いを請求するために作業を完了。アービターは必要に応じて紛争を解決。プロトコルはトラストレスなフリーランス作業調整を可能にし、成果物が受け入れられるか仲裁が終了するまで資金がロック。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説nip-47-nostr-wallet-connect">NIP詳細解説：NIP-47 (Nostr Wallet Connect)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>はNostr Wallet Connect（NWC）を定義し、通信レイヤーとしてNostrを使用したリモートLightningウォレット制御のプロトコルです。今週のホールドインボイスサポート追加により、NWCはLightning操作の全範囲をカバーするようになりました。&lt;/p>
&lt;p>プロトコルはシンプルな交換を通じて動作します。ウォレットアプリケーションはその機能を説明する「wallet info」イベント（kind 13194）を公開。クライアントアプリケーションはインボイスの支払い、インボイスの作成、残高確認などの操作をウォレットに要求する暗号化リクエスト（kind 23194）を送信。ウォレットは暗号化された結果（kind 23195）で応答。&lt;/p>
&lt;p>NWCはクライアントとウォレット間で&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用し、ウォレット操作用の専用キーペアを使用して、ユーザーのメインIDから分離します。この分離により、NWC接続が侵害されてもユーザーのNostr IDは露出しません。&lt;/p>
&lt;p>&lt;strong>サポートされているメソッド：&lt;/strong>&lt;/p>
&lt;p>仕様はコアLightning操作用のメソッドを定義：&lt;code>pay_invoice&lt;/code>は支払いを送信、&lt;code>make_invoice&lt;/code>は受取用のインボイスを生成、&lt;code>lookup_invoice&lt;/code>は支払いステータスをチェック、&lt;code>get_balance&lt;/code>はウォレット残高を返し、&lt;code>list_transactions&lt;/code>は支払い履歴を提供。新たにマージされた&lt;code>pay_keysend&lt;/code>はインボイスなしの支払いを可能にし、&lt;code>hold_invoice&lt;/code>は条件付き支払いをサポート。&lt;/p>
&lt;p>&lt;strong>イベント例：&lt;/strong>&lt;/p>
&lt;p>ウォレットサービスはその機能を宣伝するinfoイベント（kind 13194）を公開：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;wallet service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;pay_invoice get_balance make_invoice lookup_invoice list_transactions notifications&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;notifications&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_received payment_sent&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unix timestamp&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;wallet service signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>クライアントはインボイスを支払うための暗号化リクエスト（kind 23194）を送信：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23194&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;client ephemeral pubkey from connection URI secret&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;NIP-44 encrypted: {\&amp;#34;method\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;params\&amp;#34;: {\&amp;#34;invoice\&amp;#34;: \&amp;#34;lnbc50n1...\&amp;#34;}}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;wallet service pubkey&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;encryption&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;nip44_v2&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unix timestamp&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;client ephemeral key signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ウォレットサービスは支払い結果で応答（kind 23195）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">23195&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;wallet service pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;NIP-44 encrypted: {\&amp;#34;result_type\&amp;#34;: \&amp;#34;pay_invoice\&amp;#34;, \&amp;#34;result\&amp;#34;: {\&amp;#34;preimage\&amp;#34;: \&amp;#34;...\&amp;#34;}, \&amp;#34;error\&amp;#34;: null}&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;client ephemeral pubkey&amp;gt;&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;request event id&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;unix timestamp&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event hash&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;wallet service signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>応答の&lt;code>e&lt;/code>タグは元のリクエストを参照し、クライアントが応答をリクエストにマッチさせることを可能にします。&lt;/p>
&lt;p>&lt;strong>ホールドインボイス：&lt;/strong>&lt;/p>
&lt;p>今週の&lt;a href="https://github.com/nostr-protocol/nips/pull/1913">PR #1913&lt;/a>はエスクロースタイルの支払いを可能にするホールドインボイスサポートを追加。受取人がプリイメージを解放して即座に支払いを請求する標準インボイスとは異なり、ホールドインボイスは受取人がこの決定を延期できます。支払い者がホールドインボイスに送信すると、資金は支払い経路に沿ってロック。受取人は決済（プリイメージを解放して資金を請求）またはキャンセル（支払いを拒否して支払い者に資金を返却）を選択。どちらのアクションも発生しない場合、支払いはタイムアウトして自動的に資金が返却。PRは3つのNWCメソッド（&lt;code>make_hold_invoice&lt;/code>、&lt;code>settle_hold_invoice&lt;/code>、&lt;code>cancel_hold_invoice&lt;/code>）と&lt;code>hold_invoice_accepted&lt;/code>通知を追加。このメカニズムはRidestrのライドシェアエスクローやマーケットプレイス紛争解決などのアプリケーションを支えます。&lt;/p>
&lt;p>&lt;strong>現在の実装：&lt;/strong>&lt;/p>
&lt;p>主要ウォレットがNWCをサポート：Zeus、Alby、Primal（今週の&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/874">PR #874&lt;/a>時点）がすべてウォレット側サポートを実装。クライアント側では、Damus、Amethyst、およびほとんどの主要Nostrクライアントがzapと支払いのためにNWCウォレットに接続可能。&lt;/p>
&lt;p>プロトコルは関心事の分離を可能に：ユーザーは1つのデバイスでウォレットを実行しながら、別のデバイスからNostrとやり取りでき、Nostrリレーが通信チャネルとして機能。このアーキテクチャにより、モバイルクライアントは直接資金を保持する必要がなくなり、ウォレットインフラストラクチャをソーシャルクライアントから分離することでセキュリティが向上。&lt;/p>
&lt;p>&lt;strong>セキュリティ考慮事項：&lt;/strong>&lt;/p>
&lt;p>NWC接続は機密として扱うべきです。暗号化がメッセージ内容を保護する一方、ウォレットpubkeyと接続シークレットは保護が必要。アプリケーションはユーザーが接続を取り消し、支出制限を設定できるようにすべきです。プロトコルは機能制限をサポートしており、ウォレットは特定の接続が実行できる操作を制限できます。&lt;/p>
&lt;h2 id="nip詳細解説nip-59-gift-wrap">NIP詳細解説：NIP-59 (Gift Wrap)&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>は任意のNostrイベントを複数の暗号化レイヤーにカプセル化し、リレーやオブザーバーから送信者のIDを隠すプロトコルを定義。今週のフレンズオンリーノート（NIP-FR）とプッシュ通知（NIP-9a）の提案は両方ともgift wrappingに依存しており、理解する価値のある基礎的なプライバシープリミティブです。&lt;/p>
&lt;p>&lt;strong>3つのレイヤー：&lt;/strong>&lt;/p>
&lt;p>Gift wrappingは3つのネストされた構造を使用：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rumor&lt;/strong>（未署名イベント）：署名なしのNostrイベントとしての元のコンテンツ。リレーは未署名イベントを拒否するため、rumorを直接リレーに送信することはできません。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Seal&lt;/strong>（kind 13）：rumorは&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>を使用して暗号化され、kind 13イベントに配置。sealは実際の作成者の鍵で署名されます。これが作成者の証明となる暗号的証拠です。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gift Wrap&lt;/strong>（kind 1059）：sealは暗号化され、ランダムなワンタイムキーペアで署名されたkind 1059イベントに配置。gift wrapは受信者へのルーティング用の&lt;code>p&lt;/code>タグを含みます。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>よくある誤解：否認可能性&lt;/strong>&lt;/p>
&lt;p>仕様は未署名rumorが「否認可能性」を提供すると言及していますが、これは誤解を招きます。sealレイヤーは実際の作成者によって署名されています。受信者がgift wrapを復号し、次にsealを復号すると、誰がメッセージを送ったかの暗号的証拠を持ちます。受信者は自分の秘密鍵を露出させずに送信者のIDを明らかにするゼロ知識証明を構築することさえできます。&lt;/p>
&lt;p>gift wrapが実際に提供するのは&lt;strong>オブザーバーからの送信者プライバシー&lt;/strong>です：リレーと第三者はランダムな鍵で署名されたgift wrapしか見ないため、誰がメッセージを送ったか判断できません。しかし受信者は常に知っており、それを証明できます。&lt;/p>
&lt;p>&lt;strong>イベント例：&lt;/strong>&lt;/p>
&lt;p>仕様からの完全な3レイヤー構造（「Are you going to the party tonight?」を送信）：&lt;/p>
&lt;p>rumor（未署名、リレーに公開不可）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1691518405&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Are you going to the party tonight?&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;9dd003c6d3b73b74a85a9ab099469ce251653a7af76f523671ab828acd2a0ef9&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>seal（kind 13、実際の作成者が署名、暗号化rumorを含む）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">13&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;611df01bfcf85c26ae65453b772d8f1dfd25c264621c0277e1fc1518686faef9&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AqBCdwoS7/tPK+QGkPCadJTn8FxGkd24iApo3BR9/M0uw6n4RFAFSPAKKMgkzVMo...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703015180&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;28a87d7c074d94a58e9e89bb3e9e4e813e2189f285d797b1c56069d36f59eaa7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;02fc3facf6621196c32912b1ef53bac8f8bfe9db51c0e7102c073103586b0d29...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>gift wrap（kind 1059、ランダムなエフェメラル鍵が署名、暗号化sealを含む）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;18b1a75918f1f2c90c23da616bce317d36e348bcf5f7ba55e75949319210c87c&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;AhC3Qj/QsKJFWuf6xroiYip+2yK95qPwJjVvFujhzSguJWb/6TlPpBW0CGFwfuf...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1703021488&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;166bf3765ebd1fc55decfe395beff2ea3b2a4e0a8946e7eb578512b555737c99&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;5c005f3ccf01950aa8d131203248544fb1e41a0d698e846bd419cec3890903ac&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;35fabdae4634eb630880a1896a886e40fd6ea8a60958e30b89b33a93e6235df7...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>注目：sealの&lt;code>pubkey&lt;/code>は実際の作成者（&lt;code>611df01...&lt;/code>）で、gift wrapの&lt;code>pubkey&lt;/code>はランダムなワンタイム鍵（&lt;code>18b1a75...&lt;/code>）。リレーはgift wrapしか見ないため、実際の作成者にメッセージを帰属させることができません。&lt;/p>
&lt;p>&lt;strong>各レイヤーが保護するもの：&lt;/strong>&lt;/p>
&lt;p>rumorは未署名であり、リレーに直接公開できません。sealは実際の作成者によって署名され、受信者に対して作成者を証明します。gift wrapはランダムなワンタイム鍵で署名され、リレーやオブザーバーから実際の作成者を隠します。受信者のみが両方のレイヤーを通じて復号し、元のコンテンツに到達してseal上の作成者の署名を検証できます。&lt;/p>
&lt;p>&lt;strong>現在のアプリケーション：&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17 (プライベートダイレクトメッセージ)&lt;/a>は暗号化DMにgift wrapを使用し、古いNIP-04スキームを置き換えます。提案されたNIP-FR（フレンド限定ノート）は、Gift Wrappingを使用してViewKeyを友人に配布し、友人はそれらの鍵で暗号化されたノートを復号します。NIP-9a（プッシュ通知）はgift wrap原則を使用して通知ペイロードを暗号化。&lt;/p>
&lt;p>&lt;strong>メタデータ保護：&lt;/strong>&lt;/p>
&lt;p>タイミング分析を阻止するためにタイムスタンプをランダム化すべきです。リレーはkind 1059イベントを提供する前にAUTHを要求し、マークされた受信者にのみ提供すべきです。複数の受信者に送信する場合は、それぞれに個別のgift wrapを作成します。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か構築していますか？共有したいニュースはありますか？プロジェクトの報道を希望しますか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>、またはNostrで見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #7</title><link>https://nostrcompass.org/ja/newsletters/2026-01-28-newsletter/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-01-28-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> Ridestrが&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>決済と暗号化された位置情報共有を使って、分散型ライドシェアリングをNostrにもたらします。Pomadeがマルチシグ署名者向けのメールベースリカバリーを導入。Damusが信頼性の高いDM同期のために&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>を実装。Amethystのデスクトップアプリに検索、ブックマーク、zapを追加。Amber v4.1.1がリレー信頼スコアを表示。MarmotがMIP-03をマージし、TypeScriptリファレンスチャットアプリを構築。diVineが&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> QR認証とメンション対応を追加。新しいNIP提案がコミュニティ管理、シーケンスベースの同期、暗号化ファイルストレージに対応。また、2021年の少数の初期採用者から2023年のDamusのApp Store爆発的ローンチ、2025年の成熟したクライアントエコシステムまで、プロトコルの進化をたどる5年間のNostr1月の歴史を振り返ります。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="ridestrがnostrに分散型ライドシェアリングをもたらす">RidestrがNostrに分散型ライドシェアリングをもたらす&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>は、Nostr上に完全に構築されたピアツーピアのライドシェアアプリケーションを開発しており、BitcoinおよびCashu決済による直接的なドライバー・ライダー間取引を可能にします。このプロトコルはカスタムイベントkind（30173、3173-3175、30180/30181）を使用してライドを調整しながら、段階的な位置情報開示と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化によってプライバシーを維持します。&lt;/p>
&lt;p>システムは慎重に設計されたフローで動作します：ドライバーはkind 30173イベントを介してgeohashエンコードされた位置情報（約5km精度）で空き状況をブロードキャストし、ライダーはkind 3173を通じて運賃見積もりとともにライドをリクエストし、ライドが始まる前にHTLCエスクロートークンを使用して支払いが確保されます。位置情報のプライバシーは段階的開示によって保護され、ピックアップの詳細はドライバーが到着したときにのみ公開され、目的地はPIN確認後に共有されます。当事者間のすべての通信は&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用してプライバシーを確保します。&lt;/p>
&lt;p>RidestrはP2PK署名を使用したHTLCエスクローによって支払いセキュリティを実装しています。ライダーがドライバーのオファーを受け入れると、ライド完了後にドライバーのみが請求できる支払いハッシュで&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>トークンをロックします。このプロトコルは現在シングルミントアーキテクチャで動作しており、ライダーとドライバーが同じ&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ミントを使用する必要があります。プロジェクトのKotlinベースのAndroid実装は、NUT-07状態チェックを通じてプルーフ検証と古いプルーフの回復を処理します。&lt;/p>
&lt;p>Ridestrは、ほとんどのNostrアプリケーションが避けている課題に取り組んでいます：リアルタイムの位置情報調整、紛争解決を伴う支払いエスクロー、および物理世界でのやり取りのための評価システム。このプロジェクトはベータ版であり、Nostrのイベントモデルがコンテンツ共有だけでなく、ピアツーピアのサービスマーケットプレイスもサポートできることを実証しています。&lt;/p>
&lt;h3 id="pomadeがマルチシグ署名者向けアルファリカバリーシステムを開始">Pomadeがマルチシグ署名者向けアルファリカバリーシステムを開始&lt;/h3>
&lt;p>hodlbodが開発した&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>は、既存の&lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a>エコシステムを基盤として、リカバリーに焦点を当てた閾値署名サービスを提供します。@frostr/bifrostライブラリを介して&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>（Flexible Round-Optimized Schnorr Threshold）署名を使用し、Pomadeは閾値暗号の上にメールベースのリカバリーフローを追加します。システムはShamir Secret Sharingを使用してユーザーの秘密鍵をシャーディングし、設定可能な閾値（2-of-3、3-of-5など）で複数の独立した署名者にシェアを分散します。&lt;/p>
&lt;p>プロトコルは&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化ペイロードを持つ単一のイベントkind（28350）を使用して、完全にNostr上で動作します。署名時、クライアントは少なくとも&lt;code>threshold&lt;/code>数の署名者から部分署名を要求し、それらを有効なSchnorr署名に集約します。暗号化では、署名者はECDHを介して共有シークレットを導出するために協力し、どの単一当事者も完全な鍵を知ることはありません。&lt;/p>
&lt;p>リカバリーは2つの認証方法で動作します：パスワードベース（署名者のpubkeyをソルトとして使用したargon2id）またはメールOTP。OTPリカバリー中のMITM攻撃を防ぐために、各署名者はクライアント提供のプレフィックスを持つ独自の検証コードを生成し、ユーザーは各署名者と独立して認証する必要があります。プロトコルはスパム防止のために登録イベントにプルーフオブワーク（&lt;a href="https://nostrcompass.org/ja/topics/nip-13/">NIP-13&lt;/a>ごとに20ビット以上）を要求します。&lt;/p>
&lt;p>信頼モデルは明示的です：&lt;code>threshold&lt;/code>数の署名者が共謀すれば、鍵を盗むことができます。メールプロバイダーはOTPを傍受できるため、完全に信頼されています。ユーザーは完全な秘密鍵を独立して回復することはできません。そのためには&lt;code>threshold&lt;/code>数の署名者の協力が必要です。プロトコルは鍵管理に不慣れな新規ユーザーのオンボーディング用に設計されており、慣れたらセルフカストディに移行することが明示的に推奨されています。Pomadeは未監査のアルファ状態であることから、「鍵の紛失、盗難、サービス拒否、またはメタデータ漏洩」の可能性について警告しています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="damusが信頼性の高いdm同期のためにnegentropyを実装">Damusが信頼性の高いDM同期のためにNegentropyを実装&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">先週オープンPRとしてプレビューした&lt;/a>negentropy実装を出荷しました。&lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a>はネットワーキングレイヤーに基本的な&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>サポートを追加し、プロトコルをサポートするリレーとの集合調整を可能にします。コンパニオン&lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a>は、標準的なREQサブスクリプションが失敗したときにnegentropyを使用して欠落メッセージを回復するプルトゥリフレッシュDM同期を追加します。&lt;/p>
&lt;p>実装は保守的なアプローチに従います：通常のDM読み込みは変更されず、ユーザーが手動でリフレッシュしたときにリカバリーメカニズムとして&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>が利用可能になります。自動テストは、標準クエリでは見逃される古いタイムスタンプを持つDMを生成し、&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>同期を使用して正常に取得することで修正を実証します。&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>サポートには互換性のあるリレーが必要ですが、実装は利用可能な場所でプロトコルを使用することで、混合リレー環境を適切に処理します。&lt;/p>
&lt;h3 id="amber-v411---リレー信頼スコア">Amber v4.1.1 - リレー信頼スコア&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a>はリレー信頼スコア表示を出荷し（&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>）、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#nip-updates">先週のTrusted Relay Assertions NIPカバレッジ&lt;/a>で議論されたリレー評価コンセプトを実装しています。信頼スコアはRelaysページとNostrConnect接続リクエストに表示され、接続を承認する前にユーザーがリレーの信頼性を評価するのに役立ちます。このリリースには、再設計されたログイン/イベント/権限UIと&lt;code>switch_relays&lt;/code>メソッドのサポートも含まれています。パフォーマンス改善により、古いデバイスで報告された20秒以上の読み込み時間に対処するキーストア操作のキャッシュが行われました。&lt;/p>
&lt;h3 id="nak-v0182---mcp統合">nak v0.18.2 - MCP統合&lt;/h3>
&lt;p>fiatjafの&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>（Nostr Army Knife）&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a>は&lt;code>nak mcp&lt;/code>を介して&lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a>サポートを追加し、AIエージェントがNostr上で人を検索し、ノートを公開し、ユーザーにメンションし、outboxモデルを使用してコンテンツを読むことを可能にします。このリリースでは、事前にビルドされたバイナリをダウンロードする&lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">ワンラインインストーラー&lt;/a>（&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>）も導入され、エンドユーザーにとってGoツールチェーンの要件がなくなりました。BunkerモードはUnixソケットと&lt;code>switch_relays&lt;/code>をサポートするようになりました。&lt;/p>
&lt;h3 id="zeus-v0122-beta---nwc修正">Zeus v0.12.2 Beta - NWC修正&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">先週のZeusカバレッジ&lt;/a>で取り上げた問題に対処する複数のNWC修正を出荷しました。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="amethystデスクトップ---フェーズ2a出荷">Amethystデスクトップ - フェーズ2A出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">デスクトップアプリのフェーズ2A&lt;/a>を展開し、デスクトップ体験に検索、ブックマーク、Zap、スレッドビュー、長文コンテンツ（Reads）を追加しました。コンパニオン&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a>は透過的なイベントブロードキャストフィードバックを追加し、ユーザーはイベントがネットワーク全体に伝播する際にリアルタイムでリレーごとのステータスを確認でき、接続性の問題を診断しやすくなりました。&lt;/p>
&lt;h3 id="notedeckの進捗カレンダーアプリとuxポリッシュ">Notedeckの進捗：カレンダーアプリとUXポリッシュ&lt;/h3>
&lt;p>Damusチームの&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>デスクトップクライアントは、モバイルビューでより多くの画面スペースを確保するためにスクロール速度に応答する自動非表示ツールバー動作をマージしました（&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>）。&lt;a href="https://github.com/damus-io/notedeck/pull/1271">ドラフトPR #1271&lt;/a>は、月/週/日/アジェンダビュー、RSVPサポート、カレンダーイベントへの&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントを備えた完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>カレンダーアプリを追加し、現在テスト用にフィーチャーフラグが設定されています。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> Ridestrが&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>決済と暗号化された位置情報共有を使って、分散型ライドシェアリングをNostrにもたらします。Pomadeがマルチシグ署名者向けのメールベースリカバリーを導入。Damusが信頼性の高いDM同期のために&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>を実装。Amethystのデスクトップアプリに検索、ブックマーク、zapを追加。Amber v4.1.1がリレー信頼スコアを表示。MarmotがMIP-03をマージし、TypeScriptリファレンスチャットアプリを構築。diVineが&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> QR認証とメンション対応を追加。新しいNIP提案がコミュニティ管理、シーケンスベースの同期、暗号化ファイルストレージに対応。また、2021年の少数の初期採用者から2023年のDamusのApp Store爆発的ローンチ、2025年の成熟したクライアントエコシステムまで、プロトコルの進化をたどる5年間のNostr1月の歴史を振り返ります。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="ridestrがnostrに分散型ライドシェアリングをもたらす">RidestrがNostrに分散型ライドシェアリングをもたらす&lt;/h3>
&lt;p>&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>は、Nostr上に完全に構築されたピアツーピアのライドシェアアプリケーションを開発しており、BitcoinおよびCashu決済による直接的なドライバー・ライダー間取引を可能にします。このプロトコルはカスタムイベントkind（30173、3173-3175、30180/30181）を使用してライドを調整しながら、段階的な位置情報開示と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化によってプライバシーを維持します。&lt;/p>
&lt;p>システムは慎重に設計されたフローで動作します：ドライバーはkind 30173イベントを介してgeohashエンコードされた位置情報（約5km精度）で空き状況をブロードキャストし、ライダーはkind 3173を通じて運賃見積もりとともにライドをリクエストし、ライドが始まる前にHTLCエスクロートークンを使用して支払いが確保されます。位置情報のプライバシーは段階的開示によって保護され、ピックアップの詳細はドライバーが到着したときにのみ公開され、目的地はPIN確認後に共有されます。当事者間のすべての通信は&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用してプライバシーを確保します。&lt;/p>
&lt;p>RidestrはP2PK署名を使用したHTLCエスクローによって支払いセキュリティを実装しています。ライダーがドライバーのオファーを受け入れると、ライド完了後にドライバーのみが請求できる支払いハッシュで&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>トークンをロックします。このプロトコルは現在シングルミントアーキテクチャで動作しており、ライダーとドライバーが同じ&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ミントを使用する必要があります。プロジェクトのKotlinベースのAndroid実装は、NUT-07状態チェックを通じてプルーフ検証と古いプルーフの回復を処理します。&lt;/p>
&lt;p>Ridestrは、ほとんどのNostrアプリケーションが避けている課題に取り組んでいます：リアルタイムの位置情報調整、紛争解決を伴う支払いエスクロー、および物理世界でのやり取りのための評価システム。このプロジェクトはベータ版であり、Nostrのイベントモデルがコンテンツ共有だけでなく、ピアツーピアのサービスマーケットプレイスもサポートできることを実証しています。&lt;/p>
&lt;h3 id="pomadeがマルチシグ署名者向けアルファリカバリーシステムを開始">Pomadeがマルチシグ署名者向けアルファリカバリーシステムを開始&lt;/h3>
&lt;p>hodlbodが開発した&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>は、既存の&lt;a href="https://github.com/FROSTR-ORG">FROSTR&lt;/a>エコシステムを基盤として、リカバリーに焦点を当てた閾値署名サービスを提供します。@frostr/bifrostライブラリを介して&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>（Flexible Round-Optimized Schnorr Threshold）署名を使用し、Pomadeは閾値暗号の上にメールベースのリカバリーフローを追加します。システムはShamir Secret Sharingを使用してユーザーの秘密鍵をシャーディングし、設定可能な閾値（2-of-3、3-of-5など）で複数の独立した署名者にシェアを分散します。&lt;/p>
&lt;p>プロトコルは&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化ペイロードを持つ単一のイベントkind（28350）を使用して、完全にNostr上で動作します。署名時、クライアントは少なくとも&lt;code>threshold&lt;/code>数の署名者から部分署名を要求し、それらを有効なSchnorr署名に集約します。暗号化では、署名者はECDHを介して共有シークレットを導出するために協力し、どの単一当事者も完全な鍵を知ることはありません。&lt;/p>
&lt;p>リカバリーは2つの認証方法で動作します：パスワードベース（署名者のpubkeyをソルトとして使用したargon2id）またはメールOTP。OTPリカバリー中のMITM攻撃を防ぐために、各署名者はクライアント提供のプレフィックスを持つ独自の検証コードを生成し、ユーザーは各署名者と独立して認証する必要があります。プロトコルはスパム防止のために登録イベントにプルーフオブワーク（&lt;a href="https://nostrcompass.org/ja/topics/nip-13/">NIP-13&lt;/a>ごとに20ビット以上）を要求します。&lt;/p>
&lt;p>信頼モデルは明示的です：&lt;code>threshold&lt;/code>数の署名者が共謀すれば、鍵を盗むことができます。メールプロバイダーはOTPを傍受できるため、完全に信頼されています。ユーザーは完全な秘密鍵を独立して回復することはできません。そのためには&lt;code>threshold&lt;/code>数の署名者の協力が必要です。プロトコルは鍵管理に不慣れな新規ユーザーのオンボーディング用に設計されており、慣れたらセルフカストディに移行することが明示的に推奨されています。Pomadeは未監査のアルファ状態であることから、「鍵の紛失、盗難、サービス拒否、またはメタデータ漏洩」の可能性について警告しています。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="damusが信頼性の高いdm同期のためにnegentropyを実装">Damusが信頼性の高いDM同期のためにNegentropyを実装&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/tree/v1.13">Damus v1.13&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#damus-ios-client---open-prs">先週オープンPRとしてプレビューした&lt;/a>negentropy実装を出荷しました。&lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a>はネットワーキングレイヤーに基本的な&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>サポートを追加し、プロトコルをサポートするリレーとの集合調整を可能にします。コンパニオン&lt;a href="https://github.com/damus-io/damus/pull/3547">PR #3547&lt;/a>は、標準的なREQサブスクリプションが失敗したときにnegentropyを使用して欠落メッセージを回復するプルトゥリフレッシュDM同期を追加します。&lt;/p>
&lt;p>実装は保守的なアプローチに従います：通常のDM読み込みは変更されず、ユーザーが手動でリフレッシュしたときにリカバリーメカニズムとして&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>が利用可能になります。自動テストは、標準クエリでは見逃される古いタイムスタンプを持つDMを生成し、&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>同期を使用して正常に取得することで修正を実証します。&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>サポートには互換性のあるリレーが必要ですが、実装は利用可能な場所でプロトコルを使用することで、混合リレー環境を適切に処理します。&lt;/p>
&lt;h3 id="amber-v411---リレー信頼スコア">Amber v4.1.1 - リレー信頼スコア&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.1">Amber v4.1.1&lt;/a>はリレー信頼スコア表示を出荷し（&lt;a href="https://github.com/greenart7c3/Amber/pull/289">PR #289&lt;/a>）、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#nip-updates">先週のTrusted Relay Assertions NIPカバレッジ&lt;/a>で議論されたリレー評価コンセプトを実装しています。信頼スコアはRelaysページとNostrConnect接続リクエストに表示され、接続を承認する前にユーザーがリレーの信頼性を評価するのに役立ちます。このリリースには、再設計されたログイン/イベント/権限UIと&lt;code>switch_relays&lt;/code>メソッドのサポートも含まれています。パフォーマンス改善により、古いデバイスで報告された20秒以上の読み込み時間に対処するキーストア操作のキャッシュが行われました。&lt;/p>
&lt;h3 id="nak-v0182---mcp統合">nak v0.18.2 - MCP統合&lt;/h3>
&lt;p>fiatjafの&lt;a href="https://github.com/fiatjaf/nak">nak&lt;/a>（Nostr Army Knife）&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.18.2">v0.18.2&lt;/a>は&lt;code>nak mcp&lt;/code>を介して&lt;a href="https://nostrify.dev/mcp">Model Context Protocol&lt;/a>サポートを追加し、AIエージェントがNostr上で人を検索し、ノートを公開し、ユーザーにメンションし、outboxモデルを使用してコンテンツを読むことを可能にします。このリリースでは、事前にビルドされたバイナリをダウンロードする&lt;a href="https://github.com/fiatjaf/nak/blob/master/install.sh">ワンラインインストーラー&lt;/a>（&lt;code>curl -sSL https://raw.githubusercontent.com/fiatjaf/nak/master/install.sh | sh&lt;/code>）も導入され、エンドユーザーにとってGoツールチェーンの要件がなくなりました。BunkerモードはUnixソケットと&lt;code>switch_relays&lt;/code>をサポートするようになりました。&lt;/p>
&lt;h3 id="zeus-v0122-beta---nwc修正">Zeus v0.12.2 Beta - NWC修正&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus/releases">Zeus v0.12.2-beta1&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#zeus-lightning-wallet-with-nostr-wallet-connect">先週のZeusカバレッジ&lt;/a>で取り上げた問題に対処する複数のNWC修正を出荷しました。&lt;/p>
&lt;h2 id="プロジェクトアップデート">プロジェクトアップデート&lt;/h2>
&lt;h3 id="amethystデスクトップ---フェーズ2a出荷">Amethystデスクトップ - フェーズ2A出荷&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst">Amethyst&lt;/a>は&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1676">デスクトップアプリのフェーズ2A&lt;/a>を展開し、デスクトップ体験に検索、ブックマーク、Zap、スレッドビュー、長文コンテンツ（Reads）を追加しました。コンパニオン&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1683">PR #1683&lt;/a>は透過的なイベントブロードキャストフィードバックを追加し、ユーザーはイベントがネットワーク全体に伝播する際にリアルタイムでリレーごとのステータスを確認でき、接続性の問題を診断しやすくなりました。&lt;/p>
&lt;h3 id="notedeckの進捗カレンダーアプリとuxポリッシュ">Notedeckの進捗：カレンダーアプリとUXポリッシュ&lt;/h3>
&lt;p>Damusチームの&lt;a href="https://github.com/damus-io/notedeck">Notedeck&lt;/a>デスクトップクライアントは、モバイルビューでより多くの画面スペースを確保するためにスクロール速度に応答する自動非表示ツールバー動作をマージしました（&lt;a href="https://github.com/damus-io/notedeck/pull/1268">PR #1268&lt;/a>）。&lt;a href="https://github.com/damus-io/notedeck/pull/1271">ドラフトPR #1271&lt;/a>は、月/週/日/アジェンダビュー、RSVPサポート、カレンダーイベントへの&lt;a href="https://nostrcompass.org/ja/topics/nip-22/">NIP-22&lt;/a>コメントを備えた完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-52/">NIP-52&lt;/a>カレンダーアプリを追加し、現在テスト用にフィーチャーフラグが設定されています。&lt;/p>
&lt;h3 id="jumbleがコミュニティモードを追加">Jumbleがコミュニティモードを追加&lt;/h3>
&lt;p>リレーに焦点を当てたWebクライアント&lt;a href="https://github.com/CodyTseng/jumble">Jumble&lt;/a>は、&lt;a href="https://github.com/CodyTseng/jumble/pull/738">コミュニティモード&lt;/a>と&lt;a href="https://github.com/CodyTseng/jumble/pull/736">環境変数によるリレーセットプリセット&lt;/a>のサポートを追加し、&lt;a href="https://nostr.moe/">nostr.moe&lt;/a>のようなテーマ付きインスタンスのデプロイを容易にしました。&lt;/p>
&lt;h3 id="shopstr注文ダッシュボード">Shopstr注文ダッシュボード&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>は、チャットベースの注文管理を専用の&lt;a href="https://github.com/shopstr-eng/shopstr/pull/219">注文ダッシュボード&lt;/a>に置き換えました。新しいインターフェースは、マーチャントがチャットスレッドをスクロールすることなく、注文ステータスの追跡、メッセージの既読マーク、フルフィルメントの管理を行うための集中ビューを提供します。このアップデートでは、サーバーサイドの注文ステータスAPIを優先してIndexedDBキャッシュを廃止し、より良いフィルタリングのために注文DMのタグ付け方法を改訂しました。&lt;/p>
&lt;h3 id="formstrがグリッドquestionを追加">FormstrがグリッドQuestionを追加&lt;/h3>
&lt;p>Nostrネイティブのフォームアプリ&lt;a href="https://github.com/abh3po/nostr-forms">Formstr&lt;/a>は、&lt;a href="https://github.com/abh3po/nostr-forms/pull/419">グリッドQuestion&lt;/a>を追加し、埋め込みサポート付きで&lt;a href="https://github.com/abh3po/nostr-forms/pull/410">SDKを書き直しました&lt;/a>。&lt;a href="https://github.com/abh3po/nostr-forms/pull/418">非NIP-07署名者向けの修正&lt;/a>により、bunkerまたはローカル署名者を持つユーザーが自分のIDでフォームを送信しようとする際の問題が解決されました。&lt;/p>
&lt;h3 id="nostr-toolsが暗号依存関係をアップグレード">nostr-toolsが暗号依存関係をアップグレード&lt;/h3>
&lt;p>コアJavaScriptライブラリの&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>は&lt;a href="https://github.com/nbd-wtf/nostr-tools/pull/520">@noble/curves v2.0.1にアップグレード&lt;/a>し、27ファイルにわたる破壊的なAPI変更に対処し、最新の監査済みnobleライブラリを採用しました。fiatjafはまた&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>に&lt;code>switch_relays&lt;/code>サポートを追加し、bunkerクライアントがリレー接続を動的に変更できるようにしました。&lt;/p>
&lt;h3 id="zeusがnip-87ミントレビューに取り組み中">ZeusがNIP-87ミントレビューに取り組み中&lt;/h3>
&lt;p>&lt;a href="https://github.com/ZeusLN/zeus">Zeus&lt;/a>には[&lt;a href="https://nostrcompass.org/ja/topics/nip-87/">NIP-87&lt;/a>ミントレビュー用のオープンPR](&lt;a href="https://github.com/ZeusLN/zeus/pull/3576">https://github.com/ZeusLN/zeus/pull/3576&lt;/a>)があり、ユーザーはNostrフォローでフィルタリングされた&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>ミントを発見してレビューできます。レビューには星評価が含まれ、匿名またはユーザーのnsecで送信できます。&lt;/p>
&lt;h3 id="camelusが完全なdmサポートを出荷">Camelusが完全なDMサポートを出荷&lt;/h3>
&lt;p>バッテリー効率の良いモバイルパフォーマンスのためにDart NDKで構築されたFlutterベースのAndroidクライアント&lt;a href="https://github.com/camelus-hq/camelus">Camelus&lt;/a>は、今週20以上のコミットで包括的なダイレクトメッセージングを追加しました。このアップデートには、チャットカテゴリ、メッセージ日付、楽観的送信UI、自分へのメモ機能、適切なDMリレー処理が含まれます。&lt;/p>
&lt;h3 id="marmot-protocolアップデート">Marmot Protocolアップデート&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#marmot-protocol-white-noise-encrypted-group-chat-library">先週オープンPRとしてカバーした&lt;/a>MIP-03決定論的コミット解決がマージされました。&lt;a href="https://github.com/marmot-protocol/mdk/pull/152">MDK PR #152&lt;/a>は、同じエポックに対して複数の有効なコミットが到着したときに、すべての&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースのグループチャットが同じ状態に収束することを保証します。&lt;/p>
&lt;p>コンパニオン&lt;a href="https://github.com/marmot-protocol/marmot/pull/28">仕様PR #28&lt;/a>は、実装監査からのギャップに対処するinit_keyライフサイクル要件を追加します：Welcomeメッセージからの秘密鍵マテリアルは処理後に安全に削除する必要があり（ゼロ化、ストレージクリーンアップ）、新しいメンバーはforward secrecyのために24時間以内にセルフアップデートを実行する必要があります。&lt;/p>
&lt;p>TypeScript SDK（&lt;a href="https://github.com/marmot-protocol/marmot-ts">marmot-ts&lt;/a>）はリファレンスチャットアプリケーションを構築しています。&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/37">PR #37&lt;/a>は、グループ作成/リスト、公開/ブロードキャスト/削除フローを備えたキーパッケージ管理、QRコード招待を追加します。hzrd149による&lt;a href="https://github.com/marmot-protocol/marmot-ts/pull/38">オープンPR #38&lt;/a>は、ページネーション付きのメッセージ履歴永続化を実装します。whitenoise-rsバックエンドは今週15のPRをマージし、多言語サポート（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/455">PR #455&lt;/a>）とMIP-04 v2メディアリファレンス（&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/450">PR #450&lt;/a>）を含みます。&lt;/p>
&lt;h3 id="divineがnostr統合機能を追加">diVineがNostr統合機能を追加&lt;/h3>
&lt;p>ショートフォームビデオアプリ&lt;a href="https://github.com/divinevideo/divine-mobile">diVine&lt;/a>は、急速なNostr統合を継続しています。&lt;/p>
&lt;p>オープンPRには&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> QRコード認証（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1019">PR #1019&lt;/a>）と&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>暗号化ダイレクトメッセージング（&lt;a href="https://github.com/divinevideo/divine-mobile/pull/834">PR #834&lt;/a>）が含まれます。今週の活動は、&lt;code>nostr:&lt;/code> URIと@メンションをクリック可能なプロファイルリンクに変換する&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1098">メンションサポート&lt;/a>、Nostrプロファイルを使用した&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1097">Classic Vinersアバターフォールバック&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1056">描画&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1053">フィルター&lt;/a>、&lt;a href="https://github.com/divinevideo/divine-mobile/pull/1050">ステッカー&lt;/a>を含むビデオ編集ツールに焦点を当てました。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1534">Trusted Relay Assertions&lt;/a>&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/#nip-updates">先週カバーした&lt;/a>リレー信頼スコアリングを標準化する提案がマージされました。仕様は、信頼性、品質、アクセシビリティにわたるスコアリングを持つリレー信頼アサーション用のkind 30385イベントを定義します。マージに至る議論は、信頼スコアが「グローバル」（すべてのユーザーに対して一度計算される）であるべきか「パーソナライズ」（各観察者のソーシャルグラフに相対的）であるべきかに集中しました。&lt;a href="https://trust.nostr.band/">nostr.bandのTrust Rank&lt;/a>や&lt;a href="https://github.com/Pretty-Good-Freedom-Tech/graperank-nodejs">GrapeRank&lt;/a>のようなPageRankスタイルのアルゴリズムは、偽アカウントを通じて渡されるランクをボットファームのサイズで割ることでシビル攻撃に抵抗します。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Communikeys&lt;/strong> - リレーベースのアプローチの代わりに、既存のnpubをコミュニティ識別子として使用するコミュニティ管理のための&lt;a href="https://nostrhub.io">包括的な提案&lt;/a>。任意のnpubがkind 10222イベントを公開することでコミュニティになることができ、出版物はkind 30222イベントを介してコミュニティをターゲットにします。アクセス制御は&lt;a href="https://nostrcompass.org/ja/topics/nip-58/">NIP-58&lt;/a>バッジを使用し、コミュニティキーのコールドストレージによる委任されたメンバーシップ管理を可能にします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/2196">NIP-CF: Changes Feed&lt;/a>&lt;/strong> - タイムスタンプベースの&lt;code>since&lt;/code>フィルターの代替として、シーケンスベースのイベント同期を提案するドラフト。問題：&lt;code>since&lt;/code>タイムスタンプを使用した標準的なNostr同期は、複数のイベントが同じ秒精度のタイムスタンプを共有する場合、クライアントとリレーのクロックがずれる場合、またはチェックポイントが不正確な場合にイベントを見逃す可能性があります。NIP-CFは、リレーが保存されたイベントに単調増加するシーケンス番号を割り当てることでこれを解決し、厳密な全順序を提供します。クライアントは特定のシーケンス番号以降の変更をリクエストし、保証された順序でイベントを受信し、イベントを見逃さない正確なチェックポイントを提供します。この提案は、初期同期後にサブスクリプションがリアルタイム更新のためにオープンのままになるライブ/継続モードもサポートします。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://github.com/nostr-protocol/nips/pull/1947">NIP-XX: Encrypted File Sync&lt;/a>&lt;/strong> - Nostrリレーを使用してデバイス間で暗号化コンテンツを同期するためのkind 30800（暗号化ファイル）、30801（ボールトインデックス）、30802（共有ドキュメント）を定義するプロトコル。このプロトコルにより、ローカルファーストのノートテイキングアプリは、集中サーバーなしでエンドツーエンド暗号化同期を提供できます。ファイルの内容、パス、名前、フォルダ構造はすべて&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>セルフ暗号化を使用して暗号化されるため、リレーは読み取れないブロブを保存します。画像のようなバイナリ添付ファイルは、クライアントサイド暗号化を使用して&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>サーバーを使用します。Kind 30802は、受信者の公開鍵に暗号化することで、ユーザー間のドキュメント共有を可能にします。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nostrの5年間の1月の歴史">Nostrの5年間の1月の歴史&lt;/h2>
&lt;p>&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-31-newsletter/#december-recap-five-years-of-nostr-decembers">先月のニュースレター&lt;/a>では、fiatjafの最初のクライアントリリースからJack Dorseyの触媒的な寄付まで、Nostrの12月のマイルストーンをたどりました。この回顧録では、検証された技術開発に焦点を当て、2021年から2025年までの各1月に何が起こったかを記録します。&lt;/p>
&lt;h3 id="2021年1月初期開発">2021年1月：初期開発&lt;/h3>
&lt;p>Nostrの3か月目は、2020年12月にローンチしたfiatjafのVue.jsクライアントBranleの継続的な開発を見ました。おそらく15人未満の少数の初期採用者グループが、Telegramグループ&lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>（2020年11月16日作成）を通じて調整し、1つまたは2つの実験的なリレーでプロトコルをテストしていました。コマンドラインクライアントnosclはターミナルベースのインタラクションを提供しました。&lt;/p>
&lt;p>技術的な基盤はすでにロックされていました：ユーザーはsecp256k1公開鍵で識別され、投稿はSchnorr署名で暗号的に署名され、リレーは互いに通信しないダムストレージとして機能します。これは意図的にBitcoinネイティブな暗号であり、後年の採用パターンを形成する設計選択でした。&lt;/p>
&lt;h3 id="2022年1月開発者の発見">2022年1月：開発者の発見&lt;/h3>
&lt;p>2022年1月は、Nostrが&lt;a href="https://news.ycombinator.com/item?id=29749061">最初のHacker News登場&lt;/a>（2021年12月31日）の余韻の中で始まり、110ポイントと138コメントを獲得しました。その投稿の時点で、ネットワーク全体を動かしていたリレーはわずか約7つで、コメント者は「nostrはとても新しく、誰も使っていないので、スパムはまだ問題ではない」と指摘していました。Robert C. Martin（「Uncle Bob」）はNostrを「ソーシャルコミュニケーションのエンドゲームソリューション」になる可能性があると支持しました。議論は1月も続き、開発者たちはリレーアーキテクチャ対真のP2P、検閲耐性対モデレーション、シンプルさがスケールするかどうかについて議論しました。&lt;/p>
&lt;p>HNの投稿は新しい実装の波を引き起こしました。Uncle Bob自身は1月18日に&lt;a href="https://github.com/unclebob/more-speech">more-speech&lt;/a>というClojureデスクトップクライアントを開始しました。fiatjafの&lt;a href="https://github.com/nbd-wtf/go-nostr">go-nostr&lt;/a>ライブラリ（2021年1月作成）と&lt;a href="https://github.com/fiatjaf/noscl">noscl&lt;/a>コマンドラインクライアントがGoツールを提供し、&lt;a href="https://github.com/nbd-wtf/nostr-tools">nostr-tools&lt;/a>がJavaScriptサポートを提供しました。2022年12月までに、約800のプロファイルがバイオを持っていました。Branleは主要なWebクライアントとして残り、秘密鍵のインポートとマルチリレーサポートを含む更新を受けました。技術的な課題は明らかでした：64文字の16進数キーは直感的ではなく、メッセージの遅延がユーザーを苛立たせ、コミュニティはアーキテクチャがTwitter規模のトラフィックを処理できるかどうかを疑問視しました。&lt;/p>
&lt;h3 id="2023年1月ブレイクアウト">2023年1月：ブレイクアウト&lt;/h3>
&lt;p>2023年1月はNostrを実験から運動へと変貌させました。William Casarin（jb55）によるiOSクライアントDamusは、AppleのApp Store承認プロセスと戦いました。1月1日に拒否され、1月26日に再度拒否され、&lt;a href="https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store">1月31日についに承認されました&lt;/a>。その承認は連鎖反応を引き起こしました：Damusはすぐに米国のソーシャルネットワーキングで#10に達しました。Jack Dorseyはそれを「オープンプロトコルのマイルストーン」と&lt;a href="https://web.archive.org/web/20240304043638/https://www.theblock.co/post/207448/nostr-based-decentralized-twitter-alternative-damus-goes-live-on-apple-app-store">呼びました&lt;/a>。&lt;/p>
&lt;p>その8日前の1月23日、&lt;a href="https://x.com/Snowden/status/1617623779626352640">Edward SnowdenがNostr上での存在を発表しました&lt;/a>：「Nostrのクールなことの一つは&amp;hellip;検閲耐性を超えて、280文字に制限されないことです。」NSA内部告発者からの彼の支持はプライバシー意識の高いサークルで重みを持ち、ユーザーはすぐにLightningを通じて彼にsatsをzapし始めました。&lt;/p>
&lt;p>Webクライアントは流入をオンボードするために競争しました。2022年12月にkieranが作成した&lt;a href="https://github.com/v0l/snort">Snort&lt;/a>は、機能豊富なReactクライアントとして登場しました。1月13日、SnortはNostr Plebs APIを介したNIP-05登録を統合し、新規ユーザーがオンボーディング中に人間が読めるIDを主張できるようにしました。Martti Malmi（Satoshiから2番目のBitcoinトランザクションを受け取った初期のBitcoin貢献者）がフルタイムで開発した&lt;a href="https://iris.to">Iris&lt;/a>は、iris.toで無料のNIP-05 IDを持つWebとモバイルの両方のインターフェースを提供しました。monlovesmangoがBranleフォークとしてQuasar（Vue.js）で構築した&lt;a href="https://github.com/monlovesmango/astral">Astral&lt;/a>は、ユーザーが投稿とフィルタリングのためにリレーをセットに整理できるリレーグルーピング機能を備えたリレー管理に焦点を当てました。iOSクライアントのTestFlightベータは数時間以内に満杯になり、AmethystがAndroidを席巻しました。&lt;/p>
&lt;p>インフラストラクチャはペースについていくのに苦労しました。すべてのリレーは自腹で支払う愛好家によって運営されていました。Lightningマイクロペイメントを使用した有料リレーは自然なスパムフィルタリングを作成しましたが、アクセスの摩擦を導入しました。&lt;a href="https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/">Damusは承認からわずか2日後に中国のApp Storeから削除されました&lt;/a>。報道によると、中国のトップインターネット監視機関の要請によるものでした。&lt;/p>
&lt;h3 id="2024年1月プロトコルの強化">2024年1月：プロトコルの強化&lt;/h3>
&lt;p>2024年1月はプロトコルの標準化とコミュニティ構築に焦点を当てました。&lt;a href="https://www.nostrphx.com/events">Nostr PHX&lt;/a>は1月5日にフェニックスでミートアップを開催し、地元のサイファーパンクを集めました。これはその年の多くのコミュニティイベントの最初であり、BTC Prague（6月）、リガでのNostriga（8月）、Nostrasiaが含まれます。&lt;/p>
&lt;p>最も重要なプロトコル開発は、1月29日にマージされた&lt;a href="https://github.com/nostr-protocol/nips/pull/716">NIP-59（Gift Wrap）&lt;/a>で、暗号化通信のためのメタデータ保護を提供しました。Gift Wrapは&lt;a href="https://github.com/paulmillr/nip44">NIP-44の暗号化標準&lt;/a>（2023年12月に&lt;a href="https://cure53.de/audit-report_nip44-implementations.pdf">Cure53によって監査&lt;/a>）を基に、リレーから送信者のIDを隠します。プロトコルは暗号化されたメッセージをランダムな使い捨てキーペアで署名された外部イベント内にラップします。リレーは使い捨てのpubkeyのみを見て、実際の送信者のIDは受信者のみが復号化できる暗号化ペイロードに埋め込まれています。これにより、リレーオペレーターやネットワーク観察者が誰が誰にメッセージを送っているかを知ることを防ぎます。タイミング分析を無効にするためにタイムスタンプもランダム化できます。&lt;/p>
&lt;p>エコシステムはソーシャルメディアを超えて拡大しました。&lt;a href="https://plebeian.market">Plebeian Market&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-15/">NIP-15&lt;/a>準拠で完全にNostrネイティブになり、クロススタールショッピングカートとマーチャントを発見するためのスタールブラウザを可能にしました。&lt;a href="https://github.com/shopstr-eng/shopstr">Shopstr&lt;/a>はBitcoinコマースを促進するパーミッションレスマーケットプレイスとして登場しました。kieranが構築した&lt;a href="https://zap.stream/">Zap.stream&lt;/a>は、21 sats/分のLightning支払いでNostrにライブストリーミングをもたらしました。開発者ツールは&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a>がTypeScript抽象化を提供し、&lt;a href="https://github.com/rust-nostr/nostr">rust-nostr&lt;/a>がRustバインディングを提供することで成熟しました。&lt;a href="https://blog.zeusln.com/new-release-zeus-v0-8-1/">Zeus v0.8.1&lt;/a>はNostrコンタクトインポートと永続的なLNDを出荷し、後のリリースでのNostr Wallet Connect統合の基礎を築きました。&lt;/p>
&lt;p>しかし、インフラストラクチャの持続可能性は&lt;a href="https://arxiv.org/abs/2402.05709">依然として課題でした&lt;/a>。この時期の学術研究では、リレーの95%が運営コストをカバーするのに苦労しており、20%が大幅なダウンタイムを経験していることがわかりました。有料リレーの入場料は平均1,000 sats（約$0.45）未満で、運営を維持するには不十分でした。&lt;/p>
&lt;p>&lt;em>詐欺に関する注意：この時期にローンチされた「Nostr Assets Protocol」および関連する「$NOSTR」トークンは、&lt;a href="https://www.aicoin.com/en/article/377704">fiatjafによって公に非難され&lt;/a>、「100%詐欺」であり「実際のNostrプロトコルとは何の関係もないアフィニティ詐欺」とされました。&lt;/em>&lt;/p>
&lt;h3 id="2025年1月クライアントの成熟">2025年1月：クライアントの成熟&lt;/h3>
&lt;p>2025年1月は、エコシステム全体で継続的なクライアント開発を見ました。&lt;a href="https://www.nobsbitcoin.com/nostur-v1-17-0/">Nostur 1.17.0&lt;/a>は1月13日に既読状態のクロスデバイス同期、&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>マルチシグログインサポート、最適化されたローカルデータベースパフォーマンスを出荷しました。Amethystは手動設定を必要とせずにフォローリストに基づいてリレーセットを自動的にコンパイルするoutboxモデルへの移行を続けました。&lt;/p>
&lt;p>主要なクライアントはダイレクトメッセージで&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>から離れ始め、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>と提案された&lt;a href="https://nostrcompass.org/ja/topics/nip-104/">NIP-104&lt;/a>に向けて移行し、暗号化とメタデータ保護を強化しました。エコシステムがより効率的なリレー使用パターンに収束するにつれて、Gossipモデル（outbox/inbox通信）が採用されました。業界の観察者は、これがNostrがニッチなプロトコルから主流の認知へと移行する年になると予測し、毎日のアクティビティを倍増させる可能性のある注目を集めるプラットフォーム移行があるかもしれないと予測しました。&lt;/p>
&lt;h3 id="2026年1月セキュリティと署名インフラストラクチャ">2026年1月：セキュリティと署名インフラストラクチャ&lt;/h3>
&lt;p>2026年1月はセキュリティと署名インフラストラクチャの大幅な進歩をもたらしました。&lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">Primal Android 2.6.18&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名者サポートを出荷し、AmberとAegisに加わって他のAndroidアプリの完全な署名ハブになりました。&lt;a href="https://github.com/permissionlesstech/bitchat/pulls">BitchatはSignalとNIP-44を監査した同じ会社であるCure53のセキュリティ監査を完了しました&lt;/a>。DHシークレットのクリアリングとスレッドセーフの問題を含む重要な発見を修正する17以上のPRがありました。BitchatとDamusの両方がC TorからRust Artiに移行し、信頼性とメモリセーフティを向上させました。&lt;/p>
&lt;p>プロトコル作業は&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">NIP-71&lt;/a>（アドレス可能なビデオイベント）のマージと、量子攻撃に対するNostrの将来の保護についてのディスカッションを開くポスト量子暗号NIPで継続しました。Trusted Relay Assertionsドラフトは、署名されたアテステーションを通じてリレー信頼スコアリングを標準化することを提案しました。&lt;a href="https://github.com/marmot-protocol/mdk">Marmot Protocol&lt;/a>は、監査の発見に対処する18のマージされたPRで&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースの暗号化メッセージングを強化しました。&lt;/p>
&lt;p>実世界のアプリケーションは、&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>エスクローと&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化を使用した分散型ライドシェアリングを開発する&lt;a href="https://github.com/variablefate/ridestr">Ridestr&lt;/a>と、&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>閾値署名にメールベースのリカバリーフローを追加する&lt;a href="https://github.com/coracle-social/pomade">Pomade&lt;/a>で拡大しました。Damusは信頼性の高いDM同期のために&lt;a href="https://nostrcompass.org/ja/topics/negentropy/">negentropy&lt;/a>を出荷し、Amethystのデスクトップアプリは検索、ブックマーク、zapでフェーズ2Aに達しました。&lt;/p>
&lt;h3 id="今後の展望">今後の展望&lt;/h3>
&lt;p>6年間の1月は、Nostrの初期開発（2021年）から公開発見（2022年）、爆発的成長（2023年）、プロトコル強化（2024年）、クライアント成熟（2025年）、セキュリティインフラストラクチャ（2026年）への進化を明らかにしています。このパターンはオープンプロトコルの成長を見てきた人には馴染み深いものです：静かな構築の年月、条件が揃ったときの突然の爆発、そしてすべてを信頼できるものにするための長い作業。7つのリレーとHacker Newsのスレッドから始まったものは、今や実際のアプリケーションを持つ監査済みインフラストラクチャになっています。2027年の問題：誰かがNostrを使ってライドを呼び、暗号化メッセージを送り、紛失した鍵を回復するとき、彼らはそれを使っていることに気づくでしょうか？&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か構築していますか？共有したいニュースはありますか？プロジェクトの報道を希望しますか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>、またはNostrで見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #6</title><link>https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-01-21-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドをお届けします。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> BitchatはC言語版TorをRust実装のArtiに置き換え、信頼性とパフォーマンスを向上させました。nostrdb-rsはゼロアロケーションデータベース操作を可能にするストリーミングfoldクエリを獲得。Listrは1年間の休止期間を経て、NDK 3ベータ移行とAI支援メンテナンスによる大規模なリファクタリングを実施。ZeusはリモートLightning制御のための&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect)修正とCashu改善に焦点を当てた17件のマージされたPRを出荷。Primal Androidはウォレットバックアップフローと適切なアスペクト比のための&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a> (メディア次元)サポートを追加。新しいドラフトNIPは標準化されたリレー信頼スコアリングのための&lt;a href="https://nostrcompass.org/ja/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a>を提案しています。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="bitchatがtorサポートでrust-artiに移行">BitchatがTorサポートでRust Artiに移行&lt;/h3>
&lt;p>Bitchatは、C言語版TorからTorプロトコルのRust実装である&lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>に移行しました。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a>はC言語版Torの依存関係を削除してArtiを統合し、メモリ安全性の保証と信頼性の向上をもたらします。この変更により、C言語実装で長年の問題だったフォアグラウンドサービスの再起動を引き起こしていた休止状態の起動試行が排除されます。&lt;/p>
&lt;p>&lt;strong>ユーザーにとっての意味:&lt;/strong> より安定した暗号化メッセージングで、特にモバイルデバイスでの切断が少なくなります。Rust実装は、絶え間ない再接続試行によるクラッシュリスクとバッテリー消耗を削減します。&lt;/p>
&lt;p>ArtiはTor ProjectによってRustで開発されたTorの完全な書き直しであり、メモリ安全性によるセキュリティの向上とアプリケーションへの統合の容易さを提供します。Bitchatにとって、メモリ安全性特性は、暗号化メッセージとリレー接続を処理する際の攻撃面を削減します。この移行は、チームの最近の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/#bitchat-completes-cure53-security-audit">Cure53セキュリティ監査&lt;/a> (Newsletter #5でカバー)に続き、セキュリティ改善を継続しています。&lt;/p>
&lt;p>このPRはまた、ChatViewModelとBLEServiceの包括的なテストカバレッジを導入し、デッドコードを削除し、テストスイートを安定化します。Bluetooth Low Energyメッシュの信頼性向上はTorの変更に付随し、大規模な転送失敗に対処します。これらの変更により、TorがローカルBLE通信と並んでインターネット接続を提供するオフラインメッシュネットワーキングシナリオでのBitchatの弾力性が向上します。&lt;/p>
&lt;h3 id="listrがai駆動のメンテナンスで復活">ListrがAI駆動のメンテナンスで復活&lt;/h3>
&lt;p>JeffGは、&lt;a href="https://listr.lol">listr.lol&lt;/a>で利用可能なNostrリスト管理アプリケーション&lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>の大規模なリファクタリングを発表しました。プロジェクトが1年以上休止状態だった後のことです。AI支援を使用して、&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3ベータへの移行、SvelteとViteの最新バージョンへの更新、すべての依存関係の最新化を含む包括的なアップグレードを完了しました。このリファクタリングは、パックのフォローに対するファーストクラスのサポートを追加し、50項目を超えるリストのページネーションを実装し、休止期間中に蓄積された多数のバグを修正します。&lt;/p>
&lt;p>&lt;strong>ユーザーにとっての意味:&lt;/strong> Listrは、フォローリスト、コンテンツコレクション、トピックキュレーションを管理するための改善されたパフォーマンスと新機能でオンラインに戻りました。ページネーション修正により、大きなリストが実際に使用可能になります。&lt;/p>
&lt;p>JeffGは、AI支援がなければ、このメンテナンス作業は決して行われず、プロジェクトが放棄されることを防げなかっただろうと述べました。ListrはNostrでのコンテンツキュレーションを可能にし、ユーザーがプロフィール、トピック、リソースのリストを作成、管理、共有できるようにします。このアップグレードにより、リスト管理がプロトコル上のコンテンツ発見においてより中心的になるにつれて、アプリケーションは現在のNostr標準とクライアントの期待に準拠し続けます。&lt;/p>
&lt;h2 id="nip更新">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>マージ済み:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (リレーベースのグループ) - リレーキーの明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - マージ済み)は、リレーキーがリレーURL自体であり、公開鍵ではないことを明確化します。仕様は「リレーキーはリレーのWebSocket URL (例: wss://groups.example.com)」と明示的に述べ、混乱を避けます。これは、クライアントが特定のグループをホストするリレーを識別する方法に影響し、グループがホストするリレーに適切に帰属されることを保証します。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Trusted Relay Assertions&lt;/strong> - ドラフトNIPは、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a> (リレー発見と監視)メトリクス、オペレーターの評判、ユーザーレポートから計算された信頼スコア(0-100)を含むkind 30385イベントを通じてリレー信頼スコアリングを標準化することを提案します。仕様は信頼を信頼性(稼働時間、レイテンシ)、品質(TLS、ドキュメント、オペレーター検証)、アクセシビリティ(管轄区域、障壁、監視リスク)コンポーネントに分割します。オペレーター検証には、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> (リレー情報ドキュメント)を介した暗号署名、DNS TXTレコード、.well-knownファイルが含まれます。ユーザーはkind 10385イベントを介して信頼されたアサーションプロバイダーを宣言し、クライアントが複数のプロバイダーに多様な視点を問い合わせることを可能にします。この提案は、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>発見を評価で補完し、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> (リモート署名/Nostr Connect)が接続URIでリレーの信頼性を評価するのを支援します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ポスト量子暗号&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (オープン)は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/#nip-updates">Newsletter #5&lt;/a>が量子耐性アルゴリズムの提案を導入して以来、進化し続けています。今週のディスカッションは、暗号アジリティの実装詳細に焦点を当てました:移行中にクライアントが二重署名を処理する方法、古いクライアントの後方互換性、および大きな量子耐性署名のパフォーマンスへの影響。貢献者は、ML-DSA-44のみを義務化するか、柔軟性のために複数のアルゴリズム(ML-DSA-44、Falcon-512、Dilithium)をサポートするかについて議論しました。コンセンサスは段階的アプローチに傾いています:最初はオプションの量子署名、広範なクライアントサポートと実際の量子脅威の出現後にのみ必須になります。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説-nip-11とnip-66">NIP詳細解説: NIP-11とNIP-66&lt;/h2>
&lt;p>今週は、リレーの発見と評価を可能にする2つのNIPを検証します:NIP-11はリレーが自分自身を記述する方法を定義し、NIP-66はリレーの動作を測定する方法を標準化します。これらは一緒にリレー信頼評価システムの基礎を形成します。&lt;/p>
&lt;h3 id="nip-11jatopicsnip-11-リレー情報ドキュメント">&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>: リレー情報ドキュメント&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a>は、リレーがHTTPを介して提供する、その機能、ポリシー、オペレーター情報を記述するJSONドキュメントを定義します。クライアントが&lt;code>wss://relay.example.com&lt;/code>に接続すると、&lt;code>https://relay.example.com&lt;/code> (&lt;code>wss://&lt;/code>を&lt;code>https://&lt;/code>に置き換えて)を取得してリレーの情報ドキュメントを取得できます。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドをお届けします。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> BitchatはC言語版TorをRust実装のArtiに置き換え、信頼性とパフォーマンスを向上させました。nostrdb-rsはゼロアロケーションデータベース操作を可能にするストリーミングfoldクエリを獲得。Listrは1年間の休止期間を経て、NDK 3ベータ移行とAI支援メンテナンスによる大規模なリファクタリングを実施。ZeusはリモートLightning制御のための&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> (Nostr Wallet Connect)修正とCashu改善に焦点を当てた17件のマージされたPRを出荷。Primal Androidはウォレットバックアップフローと適切なアスペクト比のための&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a> (メディア次元)サポートを追加。新しいドラフトNIPは標準化されたリレー信頼スコアリングのための&lt;a href="https://nostrcompass.org/ja/topics/trusted-relay-assertions/">Trusted Relay Assertions&lt;/a>を提案しています。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="bitchatがtorサポートでrust-artiに移行">BitchatがTorサポートでRust Artiに移行&lt;/h3>
&lt;p>Bitchatは、C言語版TorからTorプロトコルのRust実装である&lt;a href="https://gitlab.torproject.org/tpo/core/arti">Arti&lt;/a>に移行しました。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/958">PR #958&lt;/a>はC言語版Torの依存関係を削除してArtiを統合し、メモリ安全性の保証と信頼性の向上をもたらします。この変更により、C言語実装で長年の問題だったフォアグラウンドサービスの再起動を引き起こしていた休止状態の起動試行が排除されます。&lt;/p>
&lt;p>&lt;strong>ユーザーにとっての意味:&lt;/strong> より安定した暗号化メッセージングで、特にモバイルデバイスでの切断が少なくなります。Rust実装は、絶え間ない再接続試行によるクラッシュリスクとバッテリー消耗を削減します。&lt;/p>
&lt;p>ArtiはTor ProjectによってRustで開発されたTorの完全な書き直しであり、メモリ安全性によるセキュリティの向上とアプリケーションへの統合の容易さを提供します。Bitchatにとって、メモリ安全性特性は、暗号化メッセージとリレー接続を処理する際の攻撃面を削減します。この移行は、チームの最近の&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/#bitchat-completes-cure53-security-audit">Cure53セキュリティ監査&lt;/a> (Newsletter #5でカバー)に続き、セキュリティ改善を継続しています。&lt;/p>
&lt;p>このPRはまた、ChatViewModelとBLEServiceの包括的なテストカバレッジを導入し、デッドコードを削除し、テストスイートを安定化します。Bluetooth Low Energyメッシュの信頼性向上はTorの変更に付随し、大規模な転送失敗に対処します。これらの変更により、TorがローカルBLE通信と並んでインターネット接続を提供するオフラインメッシュネットワーキングシナリオでのBitchatの弾力性が向上します。&lt;/p>
&lt;h3 id="listrがai駆動のメンテナンスで復活">ListrがAI駆動のメンテナンスで復活&lt;/h3>
&lt;p>JeffGは、&lt;a href="https://listr.lol">listr.lol&lt;/a>で利用可能なNostrリスト管理アプリケーション&lt;a href="https://github.com/erskingardner/listr">Listr&lt;/a>の大規模なリファクタリングを発表しました。プロジェクトが1年以上休止状態だった後のことです。AI支援を使用して、&lt;a href="https://github.com/nostr-dev-kit/ndk">NDK&lt;/a> 3ベータへの移行、SvelteとViteの最新バージョンへの更新、すべての依存関係の最新化を含む包括的なアップグレードを完了しました。このリファクタリングは、パックのフォローに対するファーストクラスのサポートを追加し、50項目を超えるリストのページネーションを実装し、休止期間中に蓄積された多数のバグを修正します。&lt;/p>
&lt;p>&lt;strong>ユーザーにとっての意味:&lt;/strong> Listrは、フォローリスト、コンテンツコレクション、トピックキュレーションを管理するための改善されたパフォーマンスと新機能でオンラインに戻りました。ページネーション修正により、大きなリストが実際に使用可能になります。&lt;/p>
&lt;p>JeffGは、AI支援がなければ、このメンテナンス作業は決して行われず、プロジェクトが放棄されることを防げなかっただろうと述べました。ListrはNostrでのコンテンツキュレーションを可能にし、ユーザーがプロフィール、トピック、リソースのリストを作成、管理、共有できるようにします。このアップグレードにより、リスト管理がプロトコル上のコンテンツ発見においてより中心的になるにつれて、アプリケーションは現在のNostr標準とクライアントの期待に準拠し続けます。&lt;/p>
&lt;h2 id="nip更新">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>マージ済み:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> (リレーベースのグループ) - リレーキーの明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2190">#2190&lt;/a> - マージ済み)は、リレーキーがリレーURL自体であり、公開鍵ではないことを明確化します。仕様は「リレーキーはリレーのWebSocket URL (例: wss://groups.example.com)」と明示的に述べ、混乱を避けます。これは、クライアントが特定のグループをホストするリレーを識別する方法に影響し、グループがホストするリレーに適切に帰属されることを保証します。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPRとディスカッション:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Trusted Relay Assertions&lt;/strong> - ドラフトNIPは、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a> (リレー発見と監視)メトリクス、オペレーターの評判、ユーザーレポートから計算された信頼スコア(0-100)を含むkind 30385イベントを通じてリレー信頼スコアリングを標準化することを提案します。仕様は信頼を信頼性(稼働時間、レイテンシ)、品質(TLS、ドキュメント、オペレーター検証)、アクセシビリティ(管轄区域、障壁、監視リスク)コンポーネントに分割します。オペレーター検証には、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a> (リレー情報ドキュメント)を介した暗号署名、DNS TXTレコード、.well-knownファイルが含まれます。ユーザーはkind 10385イベントを介して信頼されたアサーションプロバイダーを宣言し、クライアントが複数のプロバイダーに多様な視点を問い合わせることを可能にします。この提案は、&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>発見を評価で補完し、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a> (リモート署名/Nostr Connect)が接続URIでリレーの信頼性を評価するのを支援します。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ポスト量子暗号&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a> (オープン)は、&lt;a href="https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/#nip-updates">Newsletter #5&lt;/a>が量子耐性アルゴリズムの提案を導入して以来、進化し続けています。今週のディスカッションは、暗号アジリティの実装詳細に焦点を当てました:移行中にクライアントが二重署名を処理する方法、古いクライアントの後方互換性、および大きな量子耐性署名のパフォーマンスへの影響。貢献者は、ML-DSA-44のみを義務化するか、柔軟性のために複数のアルゴリズム(ML-DSA-44、Falcon-512、Dilithium)をサポートするかについて議論しました。コンセンサスは段階的アプローチに傾いています:最初はオプションの量子署名、広範なクライアントサポートと実際の量子脅威の出現後にのみ必須になります。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説-nip-11とnip-66">NIP詳細解説: NIP-11とNIP-66&lt;/h2>
&lt;p>今週は、リレーの発見と評価を可能にする2つのNIPを検証します:NIP-11はリレーが自分自身を記述する方法を定義し、NIP-66はリレーの動作を測定する方法を標準化します。これらは一緒にリレー信頼評価システムの基礎を形成します。&lt;/p>
&lt;h3 id="nip-11jatopicsnip-11-リレー情報ドキュメント">&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>: リレー情報ドキュメント&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/11.md">NIP-11&lt;/a>は、リレーがHTTPを介して提供する、その機能、ポリシー、オペレーター情報を記述するJSONドキュメントを定義します。クライアントが&lt;code>wss://relay.example.com&lt;/code>に接続すると、&lt;code>https://relay.example.com&lt;/code> (&lt;code>wss://&lt;/code>を&lt;code>https://&lt;/code>に置き換えて)を取得してリレーの情報ドキュメントを取得できます。&lt;/p>
&lt;p>このドキュメントは、&lt;code>Accept: application/nostr+json&lt;/code>ヘッダーを持つ標準のHTTPコンテンツネゴシエーションを使用します。これにより、リレーはブラウザに通常のWebサイトを提供しながら、Nostrクライアントに機械可読メタデータを提供できます。レスポンスには、リレーソフトウェア名とバージョン、オペレーター連絡先情報(公開鍵、メール、代替連絡先)、サポートされているNIP、支払い要件やコンテンツ制限などの運用パラメータが含まれます。&lt;/p>
&lt;p>重要なことに、基本的なNIP-11ドキュメントはHTTPSを介して提供される署名なしのJSONであり、認証性をTLS証明書のみに依存しています。これは、リレーのWebサーバーを制御している人なら誰でもドキュメントを変更でき、オペレーターの主張が検証できないことを意味します。Trusted Relay Assertionsの提案は、リレーの&lt;code>self&lt;/code>公開鍵フィールドを通じて署名された証明を導入することで、このギャップに対処し、リレーが認証メカニズムに署名済みイベントを使用する方法と同様に、オペレーターのアイデンティティの暗号的証明を可能にします。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;relay.example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;A general-purpose public relay&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;contact&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;admin@example.com&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;supported_nips&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>, &lt;span style="color:#ae81ff">2&lt;/span>, &lt;span style="color:#ae81ff">4&lt;/span>, &lt;span style="color:#ae81ff">9&lt;/span>, &lt;span style="color:#ae81ff">11&lt;/span>, &lt;span style="color:#ae81ff">12&lt;/span>, &lt;span style="color:#ae81ff">16&lt;/span>, &lt;span style="color:#ae81ff">20&lt;/span>, &lt;span style="color:#ae81ff">22&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;software&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;git+https://github.com/relay/relay.git&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;1.2.3&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;limitation&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_message_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">16384&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subscriptions&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">20&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_filters&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_subid_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">100&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_prefix&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_event_tags&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;max_content_length&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">8196&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;min_pow_difficulty&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">0&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;auth_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payment_required&amp;#34;&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;payments_url&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://relay.example.com/payments&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;fees&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;admission&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">5000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;subscription&amp;#34;&lt;/span>: [{&lt;span style="color:#f92672">&amp;#34;amount&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1000&lt;/span>, &lt;span style="color:#f92672">&amp;#34;unit&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;msats&amp;#34;&lt;/span>, &lt;span style="color:#f92672">&amp;#34;period&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">2592000&lt;/span>}],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;publication&amp;#34;&lt;/span>: []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>limitation&lt;/code>オブジェクトは、リレーが実施する制約をクライアントに伝えます。&lt;code>max_message_length&lt;/code>はWebSocketフレームサイズを制限し、&lt;code>max_subscriptions&lt;/code>は接続ごとの同時REQサブスクリプションを上限とし、&lt;code>max_filters&lt;/code>はREQごとのフィルターを制限し、&lt;code>max_limit&lt;/code>は単一のフィルターが要求できるイベント数を制約します。これらのパラメータは、クライアントがリレーの機能に適応し、制限を超えて切断されるのを防ぐのに役立ちます。&lt;/p>
&lt;p>支払い情報は&lt;code>fees&lt;/code>と&lt;code>payments_url&lt;/code>に表示されます。リレーは、入場(1回限りのアクセス)、サブスクリプション(定期的なアクセス)、または公開(イベントごとの料金)に課金できます。&lt;code>payments_url&lt;/code>は、通常Lightning請求書またはecashミントである支払い方法の詳細を指します。有料リレーは、クライアントが認証を試みる前に、これらのフィールドを使用して価格を伝達します。&lt;/p>
&lt;p>&lt;code>supported_nips&lt;/code>配列により、クライアントはリレーの機能を発見できます。リレーが&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>をリストしている場合、クライアントは全文検索クエリを送信できることがわかります。&lt;a href="https://nostrcompass.org/ja/topics/nip-42/">NIP-42&lt;/a>が表示される場合、クライアントは認証チャレンジを期待する必要があります。この宣言的な機能広告により、プログレッシブエンハンスメントが可能になります:クライアントは利用可能な高度な機能を使用しながら、限定的なサポートのリレーでは適切に劣化できます。&lt;/p>
&lt;p>オペレーター情報は説明責任を構築します。&lt;code>pubkey&lt;/code>フィールドはNostr上のリレーオペレーターを識別し、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMまたは公開メンションを介した直接通信を可能にします。&lt;code>contact&lt;/code>メールはプロトコル外のフォールバックを提供します。これらのフィールドは、ユーザーが不正使用レポート、アクセスリクエスト、または技術的な問題についてオペレーターに連絡するのに役立ちます。&lt;/p>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>ドキュメントは自己報告です:リレーは実際に行うことではなく、サポートすると主張することを記述します。ここでNIP-66が重要になります。&lt;/p>
&lt;h3 id="nip-66jatopicsnip-66-リレー発見と稼働監視">&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>: リレー発見と稼働監視&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/66.md">NIP-66&lt;/a>は、リレー監視データをNostrに公開することを標準化します。モニターサービスは、可用性、レイテンシ、プロトコル準拠、サポートされているNIPについてリレーを継続的にテストします。結果をkind 30166イベントとして公開し、リレーの自己報告から独立したリアルタイムのリレーステータスを提供します。&lt;/p>
&lt;p>モニターは、接続してテストサブスクリプションを送信することによりリレーの可用性をチェックします。レイテンシ測定は、接続時間、サブスクリプション応答時間、イベント伝播遅延を追跡します。プロトコル準拠テストは、リレーの動作が仕様と一致することを確認し、実装バグや意図的な逸脱をキャッチします。NIPサポート検証は、&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>の主張を超えて、広告された機能が実際に正しく動作するかどうかを実際にテストします。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a34b5c7d89e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;4e2d0bc6f8e7c3a5b9f1d2e3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30166&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;open&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;143&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;89&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;rtt&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;92&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1736784000&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;nips&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;4&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;9&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;11&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;12&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;geo&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;US&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;United States&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;New York&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;network&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;clearnet&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;payment_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;other&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;auth_required&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;false&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;{\&amp;#34;last_check\&amp;#34;: 1736784000, \&amp;#34;checks\&amp;#34;: 8760}&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;8b9c4d5e6a7f8b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>d&lt;/code>タグにはリレーURLが含まれ、これをパラメータ化された置換可能なイベントにします。各モニターは、測定値が変化するにつれて更新される、リレーごとに1つのイベントを公開します。複数のモニターが同じリレーを追跡でき、冗長性とクロスバリデーションを提供します。クライアントは複数のモニター公開鍵をクエリして、リレーの健全性に関する多様な視点を取得します。&lt;/p>
&lt;p>ラウンドトリップタイム(rtt)タグは、さまざまな操作のレイテンシを測定します。&lt;code>rtt open&lt;/code>はWebSocket接続確立を追跡し、&lt;code>rtt read&lt;/code>はサブスクリプション応答時間を測定し、&lt;code>rtt write&lt;/code>はイベント公開速度をテストします。すべての値はミリ秒単位です。クライアントはこれらのメトリクスを使用して、時間に敏感な操作には低レイテンシのリレーを優先したり、遅いリレーを優先度を下げたりします。&lt;/p>
&lt;p>&lt;code>nips&lt;/code>タグは、主張されたサポートではなく、実際に検証されたNIPサポートをリストします。モニターは、その機能を実行することによって各NIPをテストします。リレーが&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>ドキュメントで&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>検索を主張しているが、検索クエリが失敗した場合、モニターは検証済みリストからNIP-50を省略します。これにより、リレー機能に関する真実が提供されます。&lt;/p>
&lt;p>地理情報は、クライアントがレイテンシの改善と検閲への耐性のために近くのリレーを選択するのに役立ちます。&lt;code>geo&lt;/code>タグには、国コード、国名、地域が含まれます。&lt;code>network&lt;/code>タグは、クリアネットリレーをTor hidden servicesまたはI2Pエンドポイントと区別します。これらのタグを組み合わせることで、地理的多様性が可能になります:クライアントは、地域的な検閲に抵抗するために複数の管轄区域のリレーに接続できます。&lt;/p>
&lt;p>モニターデータは、クライアントのリレーセレクター、エクスプローラーWebサイト、およびTrusted Relay Assertions提案に電力を供給します。自己報告された&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>ドキュメントと測定された&lt;a href="https://nostrcompass.org/ja/topics/nip-66/">NIP-66&lt;/a>データおよび計算された信頼アサーションを組み合わせることで、エコシステムは、ハードコードされたデフォルトや口コミの推奨に頼るのではなく、情報に基づいたリレー選択に向かって移動します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;h3 id="0xchat-v153---拡張メッセージング機能">0xchat v1.5.3 - 拡張メッセージング機能&lt;/h3>
&lt;p>&lt;a href="https://github.com/0xchat-app/0xchat-app-main/releases/tag/v1.5.3-release">0xchat v1.5.3&lt;/a>は、TelegramスタイルのNostrメッセージングクライアントに大幅な改善をもたらします。このリリースは、Amberなどの外部署名者を通じた適切なイベント署名を妨げていた&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a> (Android署名者アプリケーション)準拠の問題に対処します。完全な準拠により、0xchatは署名操作を正しく委任し、秘密鍵を分離してセキュリティを向上させます。&lt;/p>
&lt;p>このアップデートは、FileDropServerとBlossomServerの両方をデフォルトのメディアストレージオプションとして統合し、ファイルアップロードの冗長性をユーザーに提供します。&lt;a href="https://github.com/hzrd149/blossom">Blossom&lt;/a>は、ファイルがSHA-256ハッシュによって参照されるコンテンツアドレス可能なストレージを提供し、整合性を確保し、ネットワーク全体での重複排除を可能にします。Momentsの自動ドラフト保存は、長文コンテンツを作成する際のデータ損失を防ぎ、アプリの切り替えや接続の中断中に失われた投稿に関するユーザーの苦情に対処します。&lt;/p>
&lt;p>Cashuウォレット統合は、使用済みトークンをウォレットビューから削除する自動プルーフフィルタリングにより洗練されます。これにより、ユーザーが有効なecashと並んで無効なプルーフを見て、残高計算が信頼できなくなるという混乱するUXが解決されます。フィルタリングはクライアント側で行われ、プライバシーを維持しながら、チャット内のピアツーピアトランザクションの支払いエクスペリエンスを向上させます。&lt;/p>
&lt;h3 id="amber-v410-プレリリース---ui刷新">Amber v4.1.0 プレリリース - UI刷新&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre1">Amber v4.1.0-pre1&lt;/a>から&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.1.0-pre3">v4.1.0-pre3&lt;/a>は、人気のあるAndroidイベント署名者の再設計されたインターフェースを導入します。ログイン画面は、どのアプリケーションが署名権限を要求しているかを明確に表示し、承認フローに関するユーザーの混乱に対処します。新しいイベント画面は、アプリケーションが署名したいデータの詳細な検査を提供し、ユーザーが操作を承認する前に情報に基づいたセキュリティ決定を行うことを可能にします。&lt;/p>
&lt;p>権限管理は、各接続されたアプリケーションに正確にどのような機能が付与されているかを示す改訂されたインターフェースで大きな注目を集めています。ユーザーは完全に切断することなく特定の権限を取り消すことができ、署名委任のきめ細かい制御が可能になります。更新されたquartzライブラリを使用したリファクタリングされたリレーカウンターは、イベントスループットとリレーパフォーマンスに関するリアルタイム統計を提供します。&lt;a href="https://github.com/nostr-protocol/nips/blob/master/46.md">NIP-46&lt;/a> (Nostr Connect)バンカー接続は、接続が失敗したときに詳細なエラーメッセージを表示し、不可解なタイムアウトエラーを実用的な診断に置き換えます。&lt;/p>
&lt;h2 id="注目すべきコードとドキュメントの変更">注目すべきコードとドキュメントの変更&lt;/h2>
&lt;p>&lt;em>これらはマージされたプルリクエストと追跡する価値のある初期段階の開発です。一部はリリース前に進化する可能性がある実験的機能です。&lt;/em>&lt;/p>
&lt;h3 id="zeus-nostr-wallet-connectによるlightningウォレット">Zeus (Nostr Wallet ConnectによるLightningウォレット)&lt;/h3>
&lt;p>Zeusは今週17のプルリクエストをマージし、主要な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connect実装としての地位を強化しました。最も重要な修正は、Nostrクライアントとの相互運用性の問題を引き起こしていたデータの一貫性とプロトコル準拠の問題に対処します。&lt;/p>
&lt;p>&lt;strong>トランザクション履歴修正&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3542">PR #3542&lt;/a>は、NWCトランザクションリストが不正確または重複したエントリを表示する重大なバグを解決します。この問題は、Zeusがイベント更新を適切に処理せずにトランザクションデータをキャッシュしたときに発生し、ユーザーがファントムトランザクションまたは欠落した支払いを見る原因となりました。この修正は、適切なイベント重複排除とキャッシュ無効化を実装し、トランザクション履歴がLightningノードの状態を正確に反映することを保証します。&lt;/p>
&lt;p>&lt;strong>プロトコル準拠&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3548">PR #3548&lt;/a>は、完全なNIP-47準拠を期待するクライアントとの互換性を壊していた不完全な&lt;code>getInfo&lt;/code>レスポンスに対処します。一部のNostrクライアントは、&lt;code>block_height&lt;/code>や&lt;code>network&lt;/code>などのフィールドが欠落している部分的なレスポンスを受信するとクラッシュしました。このPRは、基礎となるLightning実装がそれらを提供しない場合でも、すべての必須フィールドが適切なデフォルトで返されることを保証し、エコシステム全体でZeusの互換性を向上させます。&lt;/p>
&lt;p>&lt;strong>接続の弾力性&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3543">PR #3543&lt;/a>は、停止したNostr接続のタイムアウト通知を実装します。以前は、ユーザーはリレー接続が静かにドロップしたときに無期限に待っていました。現在、Zeusは30秒の非アクティブ後に明確なタイムアウトメッセージを表示し、ユーザーが再試行するか、リレーを切り替えることを可能にします。&lt;a href="https://github.com/ZeusLN/zeus/pull/3541">PR #3541&lt;/a>は、互換性のないLightning実装でのNWCアクティベーションを防ぐためのバックエンド検証を追加し、ランタイムクラッシュを引き起こす前に構成エラーをキャッチします。&lt;/p>
&lt;p>&lt;strong>Cashuレース条件&lt;/strong> - &lt;a href="https://github.com/ZeusLN/zeus/pull/3531">PR #3531&lt;/a>は、同時ミント操作がトークンデータベースを破損する可能性があったCashuトークン管理の同時実行バグを修正します。レース条件は、複数のスレッドが適切なロックなしでトークンカウントを更新したときに発生し、時折不正確な残高が生じました。この修正は、クリティカルセクション周辺にミューテックス保護を追加し、トークン状態へのアトミックな更新を保証します。&lt;/p>
&lt;h3 id="primal-android-クライアント">Primal Android (クライアント)&lt;/h3>
&lt;p>Primal Androidは、ウォレットセキュリティとメディア処理の大幅な改善を伴う12のマージされたPRを出荷しました。ウォレットバックアップ実装は、最も要求された機能の1つに対処し、NIP-92サポートはアプリケーション全体のビジュアルエクスペリエンスを向上させます。&lt;/p>
&lt;p>&lt;strong>ウォレットバックアップシステム&lt;/strong> - 4つのPRシリーズ(&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/844">#844&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/845">#845&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/846">#846&lt;/a>、&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/848">#848&lt;/a>)は、包括的なシードフレーズバックアップ機能を実装します。ユーザーは、スクリーンショットを防ぐセキュアフローを通じて12ワードのニーモニックをエクスポートし、ウォレットダッシュボードにバックアップステータスを表示し、既存のユーザーを移行にガイドできるようになりました。実装はBIP-39標準に従い、誤ったフレーズ記録により資金を失うことを防ぐための検証が含まれています。&lt;/p>
&lt;p>&lt;strong>メディア次元 (NIP-92)&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/718">PR #718&lt;/a>は、適切な画像とビデオのアスペクト比のための&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a>サポートを実装します。次元メタデータがないと、クライアントはサイズを決定するために画像をダウンロードする必要があり、コンテンツが読み込まれるときにレイアウトジャンプが発生します。NIP-92は、ファイルメタデータイベントに&lt;code>dim&lt;/code>タグ(&lt;code>[&amp;quot;dim&amp;quot;, &amp;quot;1920x1080&amp;quot;]&lt;/code>など)を追加し、Primalがメディアをダウンロードする前に正しいスペースを予約できるようにします。これにより、画像ギャラリーでの不快なリフローが排除され、知覚されるパフォーマンスが向上します。&lt;/p>
&lt;p>&lt;strong>リモート署名者の信頼性&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/841">PR #841&lt;/a>は、&lt;code>wss://&lt;/code>プレフィックスの欠落がサイレント障害を引き起こした&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>接続の問題を修正します。このPRは、バンカー接続セットアップ中にリレーURIを検証し、ユーザーがベアドメインを貼り付けたときにプロトコルプレフィックスを自動的に追加します。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/843">PR #843&lt;/a>は、ネットワーク状態が悪い場合に返信がルートノートとして投稿され、会話フローを壊すスレッディングバグに対処します。この修正により、親イベントIDがネットワークの中断を通じて持続することが保証されます。&lt;/p>
&lt;h3 id="marmot-protocol-white-noise-暗号化グループチャットライブラリ">Marmot Protocol: White Noise (暗号化グループチャットライブラリ)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> Protocolの暗号化グループチャットを支えるRustライブラリWhite Noiseは、ユーザーエクスペリエンスとセキュリティを向上させる6つのPRをマージしました。これらの変更により、Marmotはプライバシーファーストのアーキテクチャを維持しながら、主流のメッセージングアプリケーションと機能パリティに近づいています。&lt;/p>
&lt;p>&lt;strong>既読レシート&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/433">PR #433&lt;/a>と&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/436">#436&lt;/a>は、グループ会話のメッセージ既読追跡を実装します。システムは、単一デバイス内でグループごとのユーザーごとの既読位置を保存し、未読カウントバッジを可能にします。実装は、各会話の最後の既読メッセージ位置を追跡するために単調なタイムスタンプを使用します。この基礎的な機能により、会話ごとの未読メッセージカウントを示すUI指標が可能になります。&lt;/p>
&lt;p>&lt;strong>会話のピン留め&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/442">PR #442&lt;/a>は、アカウントをグループにリンクする&lt;code>accounts_groups&lt;/code>ジャンクションテーブルの&lt;code>pin_order&lt;/code>フィールドを通じて永続的な会話のピン留めを追加します。ピンされた会話は、メッセージアクティビティに関係なく、チャットリストの上部にその位置を維持し、SignalやWhatsAppからのユーザーの期待と一致します。実装は、決定論的なソートで無制限のピンを可能にするために整数の順序付けを使用します。&lt;/p>
&lt;p>&lt;strong>決定論的コミット解決 (MIP-03)&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/mdk/pull/152">PR #152&lt;/a> (オープン)は、Marmot Improvement Proposal 03を実装し、分散グループチャットにおけるコミットレース条件の重大な問題を解決します。複数のメンバーがグループ状態の変更(メンバーの追加/削除、権限の変更)を同時に送信すると、クライアントはコミットの順序付けで分岐し、グループを互換性のない状態に断片化する可能性がありました。MIP-03は、エポックスナップショットと決定論的な勝者選択を導入します:最も早い&lt;code>created_at&lt;/code>タイムスタンプを持つコミットが勝ち、タイブレーカーとして辞書式イベントIDを使用します。これにより、すべてのクライアントがロールバックとリプレイを通じて同じ状態に収束でき、ネットワークパーティション中でもグループの一貫性を維持できます。&lt;/p>
&lt;p>&lt;strong>セキュリティ強化&lt;/strong> - &lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/443">PR #443&lt;/a>は、&lt;code>resolve_group_image_path&lt;/code>で参照を使用することにより、暗号シークレットの不要なコピーを防ぎます。これにより、解放されたヒープ割り当てからシークレットを回復できるメモリ攻撃のウィンドウが削減されます。&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/438">PR #438&lt;/a>は、キーリングパラメータを通じてSQLCipherデータベース暗号化を有効にし、静止状態のメッセージ履歴を保護します。キーリング統合により、構成ファイルではなくプラットフォームキーチェーンでの安全なキー保存が可能になります。&lt;/p>
&lt;h3 id="nostrdb-rs-データベースライブラリ---オープンpr">nostrdb-rs (データベースライブラリ) - オープンPR&lt;/h3>
&lt;p>&lt;strong>ストリーミングクエリ実装&lt;/strong> - &lt;a href="https://github.com/damus-io/nostrdb-rs/pull/58">PR #58&lt;/a> (オープン)は、ゼロアロケーションデータベース操作を可能にするストリーミングfoldクエリを提案します。実装は、結果セット全体をベクトルに具体化することなく、データベース結果を一度に1つずつ処理する&lt;code>fold&lt;/code>、&lt;code>try_fold&lt;/code>、&lt;code>count&lt;/code>、&lt;code>any&lt;/code>、&lt;code>all&lt;/code>、および&lt;code>find_map&lt;/code>メソッドを追加します。このアプローチにより、メモリ消費が削減され、一般的なクエリパターンでの早期終了が可能になります。&lt;/p>
&lt;p>技術実装は、低レベルクエリ結果コールバック(&lt;code>ndb_query_visit&lt;/code>)を、&lt;code>ControlFlow&lt;/code>バリアントをCビジターアクションにマップするステートフルなRustビジターとして公開します。マージされると、アプリケーションコードはデータベースレイヤーの近くで実行しながら、イテレーターロジックのように読み取れるようになります。たとえば、一致するノートをカウントすることは、それらを収集するのではなく結果をストリーミングし、&lt;code>find_map&lt;/code>は残りの行を処理せずに最初の有用な結果を返します。&lt;/p>
&lt;p>nostrdbはDamusとNotedeck、iOSとmacOSおよびデスクトップクライアントをそれぞれ駆動します。ストリーミングクエリにより、ページネーション、条件付きフィルタリング、存在チェックなどの効率的なパターンが可能になります。このPRは、+756の追加と-32の削除を含む3つのファイルを変更し、クエリレイヤーの大幅なリファクタリングです。nostrdb-rsベースのアプリケーションのユーザーは、大きなタイムラインを閲覧したり、広範なイベントデータベースを検索したりするときに、メモリ使用量が削減されることがわかります。&lt;/p>
&lt;h3 id="nak-cliツール">nak (CLIツール)&lt;/h3>
&lt;p>fiatjafのコマンドラインNostrツールnakは、ビルドシステムの改善と新しい機能に焦点を当てた6つのPRをマージしました。&lt;a href="https://github.com/fiatjaf/nak/pull/91">PR #91&lt;/a>は、Blossomミラー機能を実装し、nakをBlossomメディアサーバーのミラーとして機能させます。&lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>は、Nostrイベントと並行して動作するコンテンツアドレス可能なメディアストレージプロトコルです。&lt;/p>
&lt;p>残りのPRは、Windows、macOS、およびLinuxプラットフォーム全体でのビルドシステムの互換性に対処し、NostrイベントをローカルディレクトリとしてマウントするためのFUSEファイルシステムサポートを有効にします。&lt;/p>
&lt;h3 id="damus-iosクライアント---オープンpr">Damus (iOSクライアント) - オープンPR&lt;/h3>
&lt;p>Damusには、重要なアーキテクチャ改善を探求する11のオープンPRがあります。これらはまだマージされていませんが、特にプライバシー、同期効率、モバイルデータ最適化に関するiOS Nostrクライアント開発の重要な方向性を示しています。&lt;/p>
&lt;p>&lt;strong>Tor統合&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3535">PR #3535&lt;/a>は、Arti TorクライアントをDamusに直接埋め込み、外部依存関係なしで匿名リレー接続を可能にします。OrbotまたはTor Browserアプローチとは異なり、Artiの埋め込みは、iOSサンドボックスとバックグラウンド実行制限とのシームレスな統合を提供します。Rust実装は、C言語版Torと比較して攻撃面を削減し、ネットワーク匿名化にメモリ安全性をもたらします。ユーザーは、リレーごとまたはグローバルにTorモードを切り替えることができ、クライアントは回路管理を透過的に処理します。&lt;/p>
&lt;p>&lt;strong>Negentropy同期プロトコル&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3536">PR #3536&lt;/a>は、同期効率を根本的に向上させるセット調整プロトコルであるNegentropyを実装します。最後の接続以降のすべてのイベントをダウンロードする代わりに、Negentropyはコンパクトなフィンガープリント(Merkleツリー)を交換して、クライアントとリレー間で異なるイベントを正確に識別します。何百もの公開鍵をフォローしているユーザーにとって、これにより同期帯域幅がメガバイトからキロバイトに削減されます。実装は、RelayPoolとSubscriptionManagerと統合され、接続されているすべてのリレーで自動的な効率的な同期を可能にします。&lt;/p>
&lt;p>&lt;strong>低データモード&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3549">PR #3549&lt;/a>は、帯域幅消費に関するユーザーフィードバックに応答して、セルラーデータ保存機能を追加します。このモードは、画像の自動読み込み、ビデオのプリフェッチングを無効にし、サブスクリプション制限を削減します。従量制接続を使用しているユーザーは、データ上限を超える心配なしにテキストコンテンツを閲覧できます。実装は、iOS低データモード設定を尊重し、さまざまなメディアタイプに対してきめ細かい制御を提供します。&lt;/p>
&lt;p>&lt;strong>データベース最適化&lt;/strong> - &lt;a href="https://github.com/damus-io/damus/pull/3548">PR #3548&lt;/a>は、より高速なクエリとディスク使用量の削減のためにnostrdbスナップショットストレージを再作成します。最適化により、データベーススナップショットがディスクに永続化する方法が変更され、読み取りパフォーマンスと書き込み増幅の両方が向上します。これにより、大きなイベントデータベースを持つユーザーからのバッテリー消耗の苦情に対処します。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か作っていますか? 共有したいニュースはありますか? プロジェクトをカバーしてほしいですか? &lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでご連絡ください&lt;/a>または、Nostrで私たちを見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #5</title><link>https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-01-13-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容：&lt;/strong> BitchatがCure53による専門的なセキュリティ監査を受けました。Cure53はSignalや&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の監査も行った同じ企業で、重大な発見を修正する17以上のPRがすでにマージされています。&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>がマージされ、アドレス可能な動画eventがプロトコルに導入されました。ポスト量子暗号NIPが量子攻撃に対するNostrの将来的な防御について議論を開始しました。Amethyst v1.05.0がブックマークリスト、ボイスノート、および初期デスクトップリリースを提供し、Nostur v1.25.3が&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMのリアクションとリプライを改善しました。ライブラリ関連では、rust-nostrがSQLiteとLMDBバックエンド全体で&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>サポートを拡大し、NDKがサブスクリプション追跡のバグを修正しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="bitchatがcure53セキュリティ監査を完了">BitchatがCure53セキュリティ監査を完了&lt;/h3>
&lt;p>NostrとCashuを組み合わせたiOS暗号化メッセンジャーであるBitchatが、業界で最も信頼されているセキュリティ企業の一つであるCure53による専門的なセキュリティ監査を受けました。Cure53は以前、Signal、Mullvad VPN、そして特に現代のNostrプライベートメッセージングの基盤となる&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化仕様の監査を行いました。&lt;/p>
&lt;p>監査では12以上のセキュリティ問題（BCH-01-002からBCH-01-013）が発見されました。Bitchatチームは17以上のプルリクエストで対応しました。主な修正は以下の通りです：&lt;/p>
&lt;p>&lt;strong>Noise Protocol DH Secretのクリア&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a>は、鍵合意後にDiffie-Hellman共有シークレットがゼロ化されていなかった6箇所を修正し、前方秘匿性の保証を回復しました。シークレットが必要以上に長くメモリに残ると、メモリダンプやコールドブート攻撃によって過去の通信が危険にさらされる可能性があります。&lt;/p>
&lt;p>&lt;strong>署名検証&lt;/strong> - 複数のPRが暗号化検証パスを強化し、不正な入力によるメッセージ認証チェックのバイパスを防止しています。&lt;/p>
&lt;p>&lt;strong>スレッドセーフティ&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a>はNostrTransportの既読レシートキューにバリア同期を追加し、大量のメッセージ処理時にデータ破損やクラッシュを引き起こす可能性のある競合状態を防止しています。&lt;/p>
&lt;p>&lt;strong>メモリセーフティ&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a>は、メモリ枯渇を避けながら高メッセージスループットでのパフォーマンスを向上させるためにメッセージ重複排除機能を最適化しています。&lt;/p>
&lt;p>&lt;strong>入力検証&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a>は、サービス拒否攻撃の一般的な攻撃ベクトルである不正な入力によるクラッシュを防ぐため、16進文字列のパースを強化しています。&lt;/p>
&lt;p>BitchatはCashu ecashを扱うため、専門的なセキュリティレビューが不可欠です。この監査は、昨年の&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> Protocol監査と、暗号化レイヤーを検証したNIP-44監査に続くものです。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - アドレス可能な動画event（&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>）は、アドレス可能なeventとしてkind 34235（横向き動画）とkind 34236（縦向き動画）を導入しています。必須の&lt;code>d&lt;/code>タグが一意の識別子を提供するため、event全体を再公開せずに動画メタデータを更新できます。オプションの&lt;code>origin&lt;/code>タグはインポート元を追跡します。Amethystとnostrvineですでに実装済みです。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPR：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ポスト量子暗号&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a>は、Nostrに量子耐性暗号アルゴリズムを追加することを提案しています。この仕様では、個人ユーザーではなくアプリケーションや認証局などの「超高価値event」を対象として、デジタル署名用のML-DSA-44とFalcon-512を導入しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の対称暗号（ChaCha20）は量子耐性がありますが、鍵交換はShorのアルゴリズムに対して脆弱なsecp256k1 ECDHを使用しています。この提案では、このギャップに対処するため鍵合意用のML-KEMを含んでいます。これはNostrの長期的なセキュリティのための暗号アジリティについて議論を開始する初期段階の提案です。&lt;/li>
&lt;li>&lt;strong>NIP-47用BOLT12&lt;/strong> - 137件のコメントと広範な議論の後、コミュニティはBOLT12 offerを&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>の拡張ではなく独自の仕様とすることを決定しました。BOLT12 offerはBOLT11 invoiceに比べて、再利用性、ブラインドパスによるより良いプライバシー、およびオプションの支払者情報など大幅なアップグレードを提供します。新しいNIPは、Nostr Wallet Connect実装用の&lt;code>make_offer&lt;/code>、&lt;code>pay_offer&lt;/code>、&lt;code>list_offers&lt;/code>などのメソッドを定義します。&lt;/li>
&lt;li>&lt;strong>Audio Track NIP&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a>は、音楽トラック用のkind 32100とポッドキャストエピソード用のkind 32101を提案し、NIP-71が動画に提供するのと同じファーストクラスの扱いをオーディオコンテンツに与えます。現在、Wavlake、Zapstr、Stemstrなどのオーディオプラットフォームはそれぞれ独自のeventフォーマットを使用しており、エコシステムが分断されています。共通の標準により、ユーザーが互換性のあるどのクライアントからでもオーディオを発見して再生できる相互運用性が実現します。&lt;/li>
&lt;li>&lt;strong>NIP-A3 Universal Payment Targets&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a>は、RFC-8905 &lt;code>payto:&lt;/code> URIを使用してkind 10133 eventで複数のネットワークにわたる支払いオプションを公開することを提案しています。Bitcoin、Lightning、Cashu、または従来の決済レールごとに個別のevent kindを作成するのではなく、この抽象化によりクライアントは標準化されたタグを解析してネイティブの支払いハンドラーを呼び出すことができます。新しい支払い方法は&lt;code>payto:&lt;/code> URIスキームだけが必要なため、このアプローチは将来にも対応しています。&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説nip-51とnip-65">NIP詳細解説：NIP-51とNIP-65&lt;/h2>
&lt;p>今週は、ユーザー設定を保存する2つのNIPを取り上げます：コンテンツを整理するためのNIP-51と、relay接続を整理するためのNIP-65です。どちらも置換可能なeventを使用しており、新しい公開ごとに以前のバージョンを上書きします。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容：&lt;/strong> BitchatがCure53による専門的なセキュリティ監査を受けました。Cure53はSignalや&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の監査も行った同じ企業で、重大な発見を修正する17以上のPRがすでにマージされています。&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>がマージされ、アドレス可能な動画eventがプロトコルに導入されました。ポスト量子暗号NIPが量子攻撃に対するNostrの将来的な防御について議論を開始しました。Amethyst v1.05.0がブックマークリスト、ボイスノート、および初期デスクトップリリースを提供し、Nostur v1.25.3が&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a> DMのリアクションとリプライを改善しました。ライブラリ関連では、rust-nostrがSQLiteとLMDBバックエンド全体で&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>サポートを拡大し、NDKがサブスクリプション追跡のバグを修正しました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;h3 id="bitchatがcure53セキュリティ監査を完了">BitchatがCure53セキュリティ監査を完了&lt;/h3>
&lt;p>NostrとCashuを組み合わせたiOS暗号化メッセンジャーであるBitchatが、業界で最も信頼されているセキュリティ企業の一つであるCure53による専門的なセキュリティ監査を受けました。Cure53は以前、Signal、Mullvad VPN、そして特に現代のNostrプライベートメッセージングの基盤となる&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>暗号化仕様の監査を行いました。&lt;/p>
&lt;p>監査では12以上のセキュリティ問題（BCH-01-002からBCH-01-013）が発見されました。Bitchatチームは17以上のプルリクエストで対応しました。主な修正は以下の通りです：&lt;/p>
&lt;p>&lt;strong>Noise Protocol DH Secretのクリア&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">PR #928&lt;/a>は、鍵合意後にDiffie-Hellman共有シークレットがゼロ化されていなかった6箇所を修正し、前方秘匿性の保証を回復しました。シークレットが必要以上に長くメモリに残ると、メモリダンプやコールドブート攻撃によって過去の通信が危険にさらされる可能性があります。&lt;/p>
&lt;p>&lt;strong>署名検証&lt;/strong> - 複数のPRが暗号化検証パスを強化し、不正な入力によるメッセージ認証チェックのバイパスを防止しています。&lt;/p>
&lt;p>&lt;strong>スレッドセーフティ&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">PR #929&lt;/a>はNostrTransportの既読レシートキューにバリア同期を追加し、大量のメッセージ処理時にデータ破損やクラッシュを引き起こす可能性のある競合状態を防止しています。&lt;/p>
&lt;p>&lt;strong>メモリセーフティ&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">PR #920&lt;/a>は、メモリ枯渇を避けながら高メッセージスループットでのパフォーマンスを向上させるためにメッセージ重複排除機能を最適化しています。&lt;/p>
&lt;p>&lt;strong>入力検証&lt;/strong> - &lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">PR #919&lt;/a>は、サービス拒否攻撃の一般的な攻撃ベクトルである不正な入力によるクラッシュを防ぐため、16進文字列のパースを強化しています。&lt;/p>
&lt;p>BitchatはCashu ecashを扱うため、専門的なセキュリティレビューが不可欠です。この監査は、昨年の&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot&lt;/a> Protocol監査と、暗号化レイヤーを検証したNIP-44監査に続くものです。&lt;/p>
&lt;h2 id="nipアップデート">NIPアップデート&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-71/">NIP-71&lt;/a>&lt;/strong> - アドレス可能な動画event（&lt;a href="https://github.com/nostr-protocol/nips/pull/1669">#1669&lt;/a>）は、アドレス可能なeventとしてkind 34235（横向き動画）とkind 34236（縦向き動画）を導入しています。必須の&lt;code>d&lt;/code>タグが一意の識別子を提供するため、event全体を再公開せずに動画メタデータを更新できます。オプションの&lt;code>origin&lt;/code>タグはインポート元を追跡します。Amethystとnostrvineですでに実装済みです。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPR：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ポスト量子暗号&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2185">PR #2185&lt;/a>は、Nostrに量子耐性暗号アルゴリズムを追加することを提案しています。この仕様では、個人ユーザーではなくアプリケーションや認証局などの「超高価値event」を対象として、デジタル署名用のML-DSA-44とFalcon-512を導入しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>の対称暗号（ChaCha20）は量子耐性がありますが、鍵交換はShorのアルゴリズムに対して脆弱なsecp256k1 ECDHを使用しています。この提案では、このギャップに対処するため鍵合意用のML-KEMを含んでいます。これはNostrの長期的なセキュリティのための暗号アジリティについて議論を開始する初期段階の提案です。&lt;/li>
&lt;li>&lt;strong>NIP-47用BOLT12&lt;/strong> - 137件のコメントと広範な議論の後、コミュニティはBOLT12 offerを&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>の拡張ではなく独自の仕様とすることを決定しました。BOLT12 offerはBOLT11 invoiceに比べて、再利用性、ブラインドパスによるより良いプライバシー、およびオプションの支払者情報など大幅なアップグレードを提供します。新しいNIPは、Nostr Wallet Connect実装用の&lt;code>make_offer&lt;/code>、&lt;code>pay_offer&lt;/code>、&lt;code>list_offers&lt;/code>などのメソッドを定義します。&lt;/li>
&lt;li>&lt;strong>Audio Track NIP&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/1043">PR #1043&lt;/a>は、音楽トラック用のkind 32100とポッドキャストエピソード用のkind 32101を提案し、NIP-71が動画に提供するのと同じファーストクラスの扱いをオーディオコンテンツに与えます。現在、Wavlake、Zapstr、Stemstrなどのオーディオプラットフォームはそれぞれ独自のeventフォーマットを使用しており、エコシステムが分断されています。共通の標準により、ユーザーが互換性のあるどのクライアントからでもオーディオを発見して再生できる相互運用性が実現します。&lt;/li>
&lt;li>&lt;strong>NIP-A3 Universal Payment Targets&lt;/strong> - &lt;a href="https://github.com/nostr-protocol/nips/pull/2119">PR #2119&lt;/a>は、RFC-8905 &lt;code>payto:&lt;/code> URIを使用してkind 10133 eventで複数のネットワークにわたる支払いオプションを公開することを提案しています。Bitcoin、Lightning、Cashu、または従来の決済レールごとに個別のevent kindを作成するのではなく、この抽象化によりクライアントは標準化されたタグを解析してネイティブの支払いハンドラーを呼び出すことができます。新しい支払い方法は&lt;code>payto:&lt;/code> URIスキームだけが必要なため、このアプローチは将来にも対応しています。&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説nip-51とnip-65">NIP詳細解説：NIP-51とNIP-65&lt;/h2>
&lt;p>今週は、ユーザー設定を保存する2つのNIPを取り上げます：コンテンツを整理するためのNIP-51と、relay接続を整理するためのNIP-65です。どちらも置換可能なeventを使用しており、新しい公開ごとに以前のバージョンを上書きします。&lt;/p>
&lt;h3 id="nip-51jatopicsnip-51リスト">&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>：リスト&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/51.md">NIP-51&lt;/a>は、event、ユーザー、ハッシュタグ、その他のコンテンツへの参照を整理するための複数のリストタイプを定義しています。Amethyst v1.05.0がブックマークサポートを追加したので、リストがどのように機能するかを理解するのに良い機会です。&lt;/p>
&lt;p>この仕様では、それぞれ異なる目的を持つ複数のリストkindが定義されています。Kind 10000はユーザー、スレッド、または単語を非表示にするためのミュートリストです。Kind 10001はプロフィールに表示するeventをピン留めします。Kind 30003はブックマークを保存し、これがAmethystがサポートするようになったものです。その他のkindは、フォローセット（30000）、キュレーションされた記事コレクション（30004）、ハッシュタグの興味（30015）、カスタム絵文字セット（30030）を扱います。&lt;/p>
&lt;p>リストはタグを通じてコンテンツを参照します。ブックマークリストは特定のevent用に&lt;code>e&lt;/code>タグを使用し、記事などのアドレス可能なコンテンツ用に&lt;code>a&lt;/code>タグを使用します：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">30003&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;d&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;saved-articles&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;a&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;30023:author-pubkey:article-id&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;encrypted-private-bookmarks&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;908a15e46fb4d8675bab026fc230a0e3542bfade63da02d542fb78b2a8513fcd0092619a2c8c1221e581946e0191f2af505dfdf8657a414dbca329186f009262&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>d&lt;/code>タグは一意の識別子を提供するため、同じkindの下で「saved-articles」、「read-later」、「favorites」のような複数のブックマークセットを維持できます。&lt;/p>
&lt;p>リストは公開アイテムと非公開アイテムの両方をサポートしています。公開アイテムはタグ配列に表示され、eventを取得する誰もが見ることができます。非公開アイテムは&lt;code>content&lt;/code>フィールドに入り、&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>を使用して自分自身に暗号化されます。この二重構造により、公開ブックマークを維持しながら非公開メモを添付したり、ミュートした相手を明かさずにミュートリストを維持したりできます。自分自身に暗号化するには、自分のpubkeyを受信者としてNIP-44を使用します。&lt;/p>
&lt;p>10000シリーズのkindは置換可能で、relayはpubkeyごとに1つのeventのみを保持します。30000シリーズはパラメータ化された置換可能で、pubkeyと&lt;code>d&lt;/code>タグの組み合わせごとに1つのeventを許可します。どちらの場合も、リストの更新は完全な置換を公開することを意味し、増分変更を送信することはできません。クライアントは、他のアプリケーションによって追加されたデータを上書きしないよう、リストを変更する際に不明なタグを保持する必要があります。&lt;/p>
&lt;h3 id="nip-65jatopicsnip-65relay-list-metadata">&lt;a href="https://nostrcompass.org/ja/topics/nip-65/">NIP-65&lt;/a>：Relay List Metadata&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/65.md">NIP-65&lt;/a>は、ユーザーが読み取りと書き込みに使用するrelayを通知するkind 10002 eventを定義しています。これにより、他のユーザーやクライアントがあなたのコンテンツを見つけやすくなります。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;bd2217a96b5835b59f9a6a42d8d8a36f8c9b7d4e5f0a1b2c3d4e5f6a7b8c9d0e1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736784000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">10002&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.damus.io&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;read&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://nos.lol&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;r&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.nostr.band&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;write&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>各&lt;code>r&lt;/code>タグにはrelay URLとオプションのマーカーが含まれています。&lt;code>write&lt;/code>マーカーはあなたのoutboxを指定します：あなたがコンテンツを公開するrelayです。&lt;code>read&lt;/code>マーカーはあなたのinboxを指定します：メンション、リプライ、タグを確認するrelayです。マーカーを省略すると両方を示します。&lt;/p>
&lt;p>AliceがBobの投稿を見つけたい場合、彼女のクライアントはBobのkind 10002を取得し、彼のwrite relay（彼のoutbox）を抽出して、そこでサブスクライブします。AliceがBobに返信する場合、彼女のクライアントは彼のread relay（彼のinbox）に公開して、彼がメンションを見られるようにします。このrelay対応のルーティングが「outboxモデル」であり、全員を少数の中央サーバーに集中させるのではなく、ユーザーを多くのrelayに分散させます。&lt;/p>
&lt;p>NIP-65は公開コンテンツのルーティングを処理しますが、プライベートメッセージは別のリストを使用します。&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>は&lt;code>r&lt;/code>タグの代わりに&lt;code>relay&lt;/code>タグを使用して、DM inbox relay用のkind 10050を定義しています。誰かにプライベートメッセージを送信する際、クライアントは受信者のkind 10050 eventを探し、暗号化されたgift-wrappedメッセージをそこに公開します。この分離により、DMルーティングは公開コンテンツのルーティングとは別に保たれ、ユーザーはプライベート通信と公開通信で異なるrelayを指定できます。&lt;/p>
&lt;p>outboxモデルは検閲耐性を向上させます。単一のrelayが全員のコンテンツを保存または提供する必要がないためです。クライアントはフォローしているユーザーのNIP-65 eventにリストされているrelayへの接続を維持し、新しいアカウントを発見すると動的に新しいrelayに接続します。NIP-65は他のNIPで見つかるrelayヒントを補完します。&lt;code>[&amp;quot;p&amp;quot;, &amp;quot;pubkey&amp;quot;, &amp;quot;wss://hint.relay&amp;quot;]&lt;/code>で誰かをタグ付けすると、ヒントはその特定の参照をどこで探すべきかをクライアントに伝えます。NIP-65は権威ある、ユーザー制御のリストを提供し、ヒントは個々のeventに埋め込まれたショートカットを提供します。&lt;/p>
&lt;p>最良の結果を得るために、relayリストを最新に保ってください。古いエントリがあると見つけにくくなります。仕様ではカテゴリごとに2〜4個のrelayを推奨しています。リストに多すぎるrelayを載せると、あなたのコンテンツを取得したいすべてのクライアントの負担となり、体験が遅くなりネットワーク負荷が増加します。クライアントはNIP-65 eventをキャッシュし、ユーザーが設定を更新すると定期的に更新して最新の状態を維持します。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;p>&lt;strong>Amethyst v1.05.0&lt;/strong> - 人気のAndroidクライアントが&lt;a href="https://github.com/vitorpamplona/amethyst/releases">メジャーアップデートを提供&lt;/a>し、いくつかの主要機能を搭載しています。&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a> kind 30003ブックマークリストにより、ユーザーは後で参照するために投稿を保存でき、互換性のあるクライアント間で同期されます。ボイスノートがDMと通常の投稿で機能するようになり、波形表示、メディアサーバー選択、アップロード進捗インジケーターが付いています。&lt;a href="https://nostrcompass.org/ja/topics/web-of-trust/">Web of Trust&lt;/a>スコアがインターフェースに表示されるようになり、アルゴリズムがソーシャルグラフに対してアカウントをどのように評価するかをユーザーが理解できるようになりました。&lt;a href="https://nostrcompass.org/ja/topics/quartz/">Quartz&lt;/a>データベース移行により、OpenSatsが資金提供したKotlin Multiplatform作業の一環としてクエリパフォーマンスが向上しています。Compose Multiplatformを介したWindows、macOS、Linux向けの初期デスクトップリリースで、Androidアプリと同じコードベースを共有しています。新規ユーザーのオンボーディングフローにより、初めてNostrを使用するユーザーの体験がスムーズになります。&lt;/p>
&lt;p>&lt;strong>Nostur v1.25.3&lt;/strong> - iOSおよびmacOSクライアントが&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>の改善を含む&lt;a href="https://github.com/nostur-com/nostur-ios-public/releases">プライベートメッセージングに焦点を当てています&lt;/a>。DMの会話でリアクションとリプライがサポートされるようになり、暗号化されたメッセージに公開投稿のインタラクティブ性がもたらされました。会話ビューがより良いスレッド表示で作り直され、複数メッセージのやり取りが追いやすくなり、DMリストではタイムスタンプが「〜前」と表示されて素早く確認できます。デスクトップユーザーは複数のフィードや会話を並べて表示するマルチカラムレイアウトを利用できます。&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモートサイナーサポートにより、ユーザーはAmberやnsec.appなどの専用サイナーアプリに秘密鍵を保管できます。追加の修正により、iOS 15およびiOS 16でのDM機能が復元され、通知の遅延が解決され、公開されたDMがどのrelayに送信されるかを設定する機能が追加されました。&lt;/p>
&lt;h2 id="注目のコードとドキュメント変更">注目のコードとドキュメント変更&lt;/h2>
&lt;p>&lt;em>これらはオープンプルリクエストと初期段階の作業であり、マージ前にフィードバックを得るのに最適です。興味を引くものがあれば、レビューやコメントを検討してください！&lt;/em>&lt;/p>
&lt;h3 id="citrineandroid-relay">Citrine（Android Relay）&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/89">PR #89&lt;/a>は、Android個人relayアプリのSQLインジェクション脆弱性を修正しています。この問題により、不正なeventデータが任意のデータベースクエリを実行できる可能性がありました。これは、信頼されていない入力を保存して処理するすべてのアプリにとって深刻な欠陥です。修正では、パラメータ化されたクエリを使用してすべてのデータベース操作を適切にサニタイズしています。まだリリースがタグ付けされていないため、ユーザーは次のバージョンを待つかソースからビルドする必要があります。&lt;a href="https://github.com/greenart7c3/Citrine/pull/90">PR #90&lt;/a>は、データベースレベルのフィルタリングとページネーションでContentProviderクエリのパフォーマンスを最適化し、Amethystなどの外部アプリがAndroidのプロセス間通信レイヤーを介してCitrineのeventデータベースにアクセスする際のレイテンシを削減しています。&lt;/p>
&lt;h3 id="rust-nostrライブラリ">rust-nostr（ライブラリ）&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-62/">NIP-62&lt;/a>（Vanish Requests）サポートがrust-nostrのデータベースバックエンド全体に拡大しています。2週間前にマージされた&lt;a href="https://github.com/rust-nostr/nostr/pull/1180">PR #1180&lt;/a>は、データベースレイヤーが特定のrelay URLを知らないため、&lt;code>ALL_RELAYS&lt;/code> vanishリクエストを処理するSQLiteへのNIP-62サポートを追加しました。&lt;a href="https://github.com/rust-nostr/nostr/pull/1210">PR #1210&lt;/a>はこれをLMDBバックエンドに拡張し、vanishリクエストがディスクに永続化されrelayの再起動後も維持されるようにしています。ブラウザ環境用のIndexedDB実装も進行中です。これらの変更により、開発者はSQLite、LMDB、そして間もなくブラウザストレージ全体で一貫したNIP-62サポートを得られます。&lt;/p>
&lt;h3 id="ndknostr-development-kit">NDK（Nostr Development Kit）&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/375">PR #375&lt;/a>は、seenEvents追跡システムのバグを修正しています。この問題により、特定のサブスクリプションパターンがeventを誤って既読としてマークし、ユーザーが新しいサブスクリプションを開いたりrelayに再接続したりするとコンテンツが見逃される原因となっていました。修正により、サブスクリプションのライフサイクル全体でeventが正確に追跡されるようになります。これは、ユーザーのナビゲーションに基づいて動的にサブスクライブおよびアンサブスクライブするアプリケーションにとって特に重要です。NDKはこの修正を含むbeta.70にバンプされました。&lt;/p>
&lt;h3 id="damusios">Damus（iOS）&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3515">PR #3515&lt;/a>は、iOS 17ユーザーに影響する起動時クラッシュを修正しています。この問題は、Swift MutexがiOS 17で利用できないために使用されるフォールバッククラスである&lt;code>NdbUseLock&lt;/code>での算術オーバーフローに起因していました。修正では、以前の同期アプローチをiOS 17で利用可能で残りの競合状態を適切に処理する&lt;code>NSLock&lt;/code>に置き換えています。iOS 18以降のユーザーはネイティブのSwift Mutex実装にアクセスできるため影響を受けませんでした。&lt;/p>
&lt;p>別途、&lt;a href="https://github.com/damus-io/damus/pull/3509">PR #3509&lt;/a>を通じて長文記事の改善がまとめてランディングしました。読書進捗バーが記事内の位置を追跡し、プレビューに推定読書時間が表示され、調整可能な行の高さ設定を備えたセピアモードがより快適な読書を提供します。フォーカスモードは下にスクロールするとナビゲーションクロームを自動的に非表示にし、タップで復元することで、気が散らない読書のための視覚的な乱雑さを減らします。いくつかの修正により、マークダウンコンテンツ内の画像表示が対処され、記事が途中ではなく最初から開くようになりました。&lt;/p>
&lt;h3 id="zapstreamライブストリーミング">Zap.stream（ライブストリーミング）&lt;/h3>
&lt;p>YouTubeとKickのチャット統合により、外部ストリーミングプラットフォームからのメッセージがNostrにブリッジされます。YouTube、Kick、Zap.streamにマルチキャストするストリーマーは、各プラットフォームからのメッセージがネイティブのNostrコメントと一緒に表示される統合ビューですべてのチャットメッセージを見ることができます。これにより、ストリーミングにNostrを使用したいが既存のプラットフォームの視聴者を放棄できないクリエイターにとっての大きな摩擦点が取り除かれます。統合では、各メッセージがどのプラットフォームから発信されたかが表示され、外部アカウントを接続するための認証フローが処理されます。&lt;/p>
&lt;h3 id="chachinip-29-groups">Chachi（NIP-29 Groups）&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>グループチャットクライアントが今週6つのマージされたPRを提供しました。セキュリティアップデートは、オープンリダイレクト攻撃を可能にする可能性のあるreact-routerのXSS脆弱性である&lt;a href="https://github.com/purrgrammer/chachi/pull/89">CVE-2026-22029&lt;/a>に対処しています。修正ではreact-router-dom 6.30.0にアップデートしています。&lt;a href="https://github.com/purrgrammer/chachi/pull/92">PR #92&lt;/a>は、グループチャットにページ分割されたメッセージ読み込みを追加し、長い会話が一度にすべてではなく段階的に読み込まれるようにしています。&lt;a href="https://github.com/purrgrammer/chachi/pull/91">PR #91&lt;/a>は、初回読み込み時にグループ名が空白になる競合状態や、メンバービューをクラッシュさせる未定義の参加者リストなど、いくつかのNIP-29バグを修正しています。翻訳カバレッジは現在、サポートされている31のロケールすべてで各1060キーに及んでいます。&lt;/p>
&lt;h3 id="0xchatメッセージング">0xchat（メッセージング）&lt;/h3>
&lt;p>Telegramスタイルのメッセージングクライアントは、外部署名アプリを使用する際にサイナーパッケージ名を適切に保存することで&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>コンプライアンスを改善し、アプリが再起動後にどのサイナーを使用するかを見失う問題を修正しました。NIP-17のリプライ処理は、スレッド用の&lt;code>e&lt;/code>タグを正しく含めるようになり、クライアント間でリプライが正しい会話コンテキストに表示されるようになりました。パフォーマンスの最適化により、長いチャット履歴を読み込む際の一般的な問題点であるメッセージリストのスクロールラグに対処しています。下書きの自動保存により、作成中にナビゲートしてもメッセージが失われるのを防ぎ、ファイルストレージオプションにはデフォルトのFileDropServerとBlossomServerエンドポイントが含まれるようになりました。&lt;/p>
&lt;h3 id="primalios">Primal（iOS）&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモートサイナーサポートが&lt;a href="https://github.com/PrimalHQ/primal-ios-app/pull/184">PR #184&lt;/a>を介してiOSに到着し、数週間前にAndroidで始まったクロスプラットフォーム展開が完了しました。ユーザーは秘密鍵をnsec.appや自己ホスト型のnsecBunkerインスタンスなどの専用バンカーサービスに保管し、Nostr relay経由で接続してクライアントアプリに鍵を公開せずにeventに署名できるようになりました。この分離により、より厳格な鍵管理プラクティスを維持しながらPrimalの機能を使用したいユーザーのセキュリティ態勢が改善されます。実装にはバンカー接続URI用のQRコードスキャンが含まれ、暗号化されたrelayメッセージを介したNIP-46リクエスト/レスポンスフローを処理します。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何か構築中ですか？共有したいニュースがありますか？あなたのプロジェクトを取り上げてほしいですか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMで連絡&lt;/a>するか、Nostrで見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #4</title><link>https://nostrcompass.org/ja/newsletters/2026-01-07-newsletter/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2026-01-07-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> Primal Androidが&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名機能を実装し、他のAndroidアプリ向けの本格的な署名ハブとなりました。&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot Protocol&lt;/a>チームは、セキュリティ監査での指摘事項に対応し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースの暗号化メッセージングを強化する18件のPRをマージしました。Citrineがv1.0に到達し、Applesauceはライブラリスイート全体でv5.0をリリースしました。TENEXがNostr上でのAIエージェント監視機能を構築し、Jumbleがスマートリレープーリングを追加しました。NIP-55の仕様修正で&lt;code>nip44_encrypt&lt;/code>の戻り値フィールドが明確化され、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>のPRでは高度な検索のためのクエリ式拡張が提案されています。今週の詳細解説では、&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>について説明します：レガシー暗号化にセキュリティ上の欠陥がある理由と、新しい暗号化方式がそれらをどのように修正するかを解説します。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;p>&lt;strong>Primal Androidが本格的な署名ハブに&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">バージョン2.6.18&lt;/a>で&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名の両方が追加され、Primalは他のNostrアプリ向けの完全な署名ツールとなりました。NIP-46によるリモート署名では、ユーザーはNostrリレー経由でバンカーサービスに接続でき、秘密鍵をデバイスに保存する必要がなくなります。NIP-55によるローカル署名では、PrimalがAndroidコンテンツプロバイダーとして公開され、AmethystやCitrineなどのアプリが秘密鍵に触れることなく署名をリクエストできます。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">後続のいくつかのPR&lt;/a>では、NIP-55仕様のhex公開鍵要件との互換性問題が修正され、不正な形式の&lt;code>nostrconnect://&lt;/code> URIの解析が改善されました。このリリースには、スムーズなスクロールのためのメディアプリキャッシュ、スレッド読み込み時間の改善、アバターのプリキャッシュも含まれています。&lt;/p>
&lt;p>&lt;strong>Marmot Protocolがセキュリティ監査後に強化&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-104/">NIP-104&lt;/a> MLSベースのエンドツーエンド暗号化メッセージングを実装する&lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> (mdk)が、今週大規模なセキュリティ修正を受けました。18件のマージされたプルリクエストで監査での指摘事項に対応しました：ストレージレベルのBlob置換攻撃を防ぐための&lt;a href="https://github.com/marmot-protocol/mdk/pull/97">暗号化グループ画像のハッシュ検証&lt;/a>、メモリ枯渇を防ぐための&lt;a href="https://github.com/marmot-protocol/mdk/pull/110">保留中のウェルカムメッセージのページネーション&lt;/a>、&lt;a href="https://github.com/marmot-protocol/mdk/pull/112">エラーメッセージでのMLSグループID漏洩&lt;/a>、キーパッケージの&lt;a href="https://github.com/marmot-protocol/mdk/pull/98">base64エンコーディング強制&lt;/a>などです。&lt;a href="https://github.com/marmot-protocol/marmot/pull/20">Marmot仕様自体も更新&lt;/a>され、MIP-04 v2バージョニングとセキュリティ改善が行われました。進行中のPRでは引き続きnonce再利用、シークレットのゼロ化、キャッシュ汚染ベクターに対処しています。&lt;/p>
&lt;p>&lt;strong>Nostrabilityがリレーヒントサポートを追跡&lt;/strong> - 新しい&lt;a href="https://github.com/nostrability/nostrability/issues/270">リレーヒント互換性トラッカー&lt;/a>が、エコシステム全体でクライアントがリレーヒントをどのように構築・消費するかを文書化しています。このトラッカーによると、ほとんどのクライアントは現在&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>に従ってヒントを構築していますが、消費方法は大きく異なります：一部のクライアントは送信イベントにヒントを含めますが、受信ヒントをフェッチに使用しません。6つのクライアントが完全な実装で「Full」ティアのステータスを獲得しました。このトラッカーは、相互運用性をチェックする開発者や、なぜ一部のクライアントが他のクライアントでは見つからないコンテンツを見つけられるのか疑問に思うユーザーにとって有用です。&lt;/p>
&lt;p>&lt;strong>Nostria 2.0がクロスプラットフォーム機能を大幅刷新&lt;/strong> - &lt;a href="https://nostria.app">Nostria&lt;/a>クライアントは12月30日に&lt;a href="#ZgotmplZ">バージョン2.0をリリース&lt;/a>し、iOS（TestFlight）、Android（Play Store）、Web、Windows全体で大幅な機能追加を行いました。このリリースでは、プレイリスト作成、トラックアップロード、Zapベースのアーティスト支払い、機能的なイコライザー付きWinAmpスタイルのプレーヤーを含むネイティブ音楽サポートが追加されました。ライブストリーミングでは、ゲームプレイストリーム中にリッチなメタデータを表示するGame API統合が追加されました。新しいサマリー機能は、時間単位、日単位、週単位のアクティビティダイジェストを圧縮されたタイムラインビューとして生成します。Discoverセクションでは、コンテンツやプロフィールを見つけるためのキュレーションリストを提供します。メディア公開は、クロスクライアントでの発見可能性のためのショートフォーム投稿の自動生成により簡素化されました。リモート署名接続は、手動設定なしでQRコードスキャンで動作するようになりました。プロフィール発見は、Nostrでよくある問題に対処します：ユーザーがメタデータを持たずにリレー間を移動した場合、Nostriaはそのプロフィールを見つけて現在のリレーに再公開します。プレミアム会員は、YouTubeチャンネル統合、プライベートメモ、分析ダッシュボード、マージ/復元オプション付きのフォローリスト自動バックアップを利用できます。&lt;/p>
&lt;h2 id="nipの更新">NIPの更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - &lt;code>nip44_encrypt&lt;/code>メソッドの戻り値フィールドが修正されました（&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>）。Android署名者は暗号化されたペイロードを（&lt;code>nip44_decrypt&lt;/code>と一致する）&lt;code>signature&lt;/code>フィールドで返す必要があり、別のフィールドではなくなりました。これにより、仕様がAmberとPrimalの既存の実装と整合します。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPR:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - クエリ式拡張（&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>）は、構造化されたクエリ式でNIP-50検索を拡張することを提案しています。このPRは&lt;code>kind:1&lt;/code>、&lt;code>author:npub1...&lt;/code>などの演算子とブール組み合わせ（&lt;code>AND&lt;/code>、&lt;code>OR&lt;/code>、&lt;code>NOT&lt;/code>）を追加し、単純なテキストマッチングを超えたより正確な検索クエリを可能にします。これにより、クライアントは基本的な検索文字列との後方互換性を維持しながら、高度な検索インターフェースを構築できます。&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説nip-04とnip-44">NIP詳細解説：NIP-04とNIP-44&lt;/h2>
&lt;p>今週は、Nostrの暗号化標準について解説します：まだ遭遇するレガシーのNIP-04と、重大なセキュリティ欠陥を修正した最新の代替であるNIP-44です。&lt;/p>
&lt;h3 id="nip-04jatopicsnip-04暗号化ダイレクトメッセージレガシー">&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>：暗号化ダイレクトメッセージ（レガシー）&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a>は、kind 4イベントを使用したNostr初の暗号化メッセージング方式でした。実装は簡単ですが、既知のセキュリティ上の弱点があり、NIP-44への移行が推奨されています。&lt;/p>
&lt;p>&lt;strong>仕組み:&lt;/strong> NIP-04はECDH（楕円曲線Diffie-Hellman）を使用して送信者と受信者の間で共有秘密を導出し、AES-256-CBCで暗号化します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event-id&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sender-pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736200000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;recipient-pubkey&amp;gt;&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;base64-ciphertext?iv=base64-iv&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>暗号化フロー：&lt;/p>
&lt;ol>
&lt;li>共有ポイントを計算: &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>鍵を導出: &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>ランダムな16バイトのIVを生成&lt;/li>
&lt;li>暗号化: &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>コンテンツをフォーマット: &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>セキュリティ上の問題:&lt;/strong>&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> Primal Androidが&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名機能を実装し、他のAndroidアプリ向けの本格的な署名ハブとなりました。&lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot Protocol&lt;/a>チームは、セキュリティ監査での指摘事項に対応し、&lt;a href="https://nostrcompass.org/ja/topics/mls/">MLS&lt;/a>ベースの暗号化メッセージングを強化する18件のPRをマージしました。Citrineがv1.0に到達し、Applesauceはライブラリスイート全体でv5.0をリリースしました。TENEXがNostr上でのAIエージェント監視機能を構築し、Jumbleがスマートリレープーリングを追加しました。NIP-55の仕様修正で&lt;code>nip44_encrypt&lt;/code>の戻り値フィールドが明確化され、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>のPRでは高度な検索のためのクエリ式拡張が提案されています。今週の詳細解説では、&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>について説明します：レガシー暗号化にセキュリティ上の欠陥がある理由と、新しい暗号化方式がそれらをどのように修正するかを解説します。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;p>&lt;strong>Primal Androidが本格的な署名ハブに&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">バージョン2.6.18&lt;/a>で&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名の両方が追加され、Primalは他のNostrアプリ向けの完全な署名ツールとなりました。NIP-46によるリモート署名では、ユーザーはNostrリレー経由でバンカーサービスに接続でき、秘密鍵をデバイスに保存する必要がなくなります。NIP-55によるローカル署名では、PrimalがAndroidコンテンツプロバイダーとして公開され、AmethystやCitrineなどのアプリが秘密鍵に触れることなく署名をリクエストできます。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/839">後続のいくつかのPR&lt;/a>では、NIP-55仕様のhex公開鍵要件との互換性問題が修正され、不正な形式の&lt;code>nostrconnect://&lt;/code> URIの解析が改善されました。このリリースには、スムーズなスクロールのためのメディアプリキャッシュ、スレッド読み込み時間の改善、アバターのプリキャッシュも含まれています。&lt;/p>
&lt;p>&lt;strong>Marmot Protocolがセキュリティ監査後に強化&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-104/">NIP-104&lt;/a> MLSベースのエンドツーエンド暗号化メッセージングを実装する&lt;a href="https://github.com/marmot-protocol/mdk">Marmot Development Kit&lt;/a> (mdk)が、今週大規模なセキュリティ修正を受けました。18件のマージされたプルリクエストで監査での指摘事項に対応しました：ストレージレベルのBlob置換攻撃を防ぐための&lt;a href="https://github.com/marmot-protocol/mdk/pull/97">暗号化グループ画像のハッシュ検証&lt;/a>、メモリ枯渇を防ぐための&lt;a href="https://github.com/marmot-protocol/mdk/pull/110">保留中のウェルカムメッセージのページネーション&lt;/a>、&lt;a href="https://github.com/marmot-protocol/mdk/pull/112">エラーメッセージでのMLSグループID漏洩&lt;/a>、キーパッケージの&lt;a href="https://github.com/marmot-protocol/mdk/pull/98">base64エンコーディング強制&lt;/a>などです。&lt;a href="https://github.com/marmot-protocol/marmot/pull/20">Marmot仕様自体も更新&lt;/a>され、MIP-04 v2バージョニングとセキュリティ改善が行われました。進行中のPRでは引き続きnonce再利用、シークレットのゼロ化、キャッシュ汚染ベクターに対処しています。&lt;/p>
&lt;p>&lt;strong>Nostrabilityがリレーヒントサポートを追跡&lt;/strong> - 新しい&lt;a href="https://github.com/nostrability/nostrability/issues/270">リレーヒント互換性トラッカー&lt;/a>が、エコシステム全体でクライアントがリレーヒントをどのように構築・消費するかを文書化しています。このトラッカーによると、ほとんどのクライアントは現在&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>に従ってヒントを構築していますが、消費方法は大きく異なります：一部のクライアントは送信イベントにヒントを含めますが、受信ヒントをフェッチに使用しません。6つのクライアントが完全な実装で「Full」ティアのステータスを獲得しました。このトラッカーは、相互運用性をチェックする開発者や、なぜ一部のクライアントが他のクライアントでは見つからないコンテンツを見つけられるのか疑問に思うユーザーにとって有用です。&lt;/p>
&lt;p>&lt;strong>Nostria 2.0がクロスプラットフォーム機能を大幅刷新&lt;/strong> - &lt;a href="https://nostria.app">Nostria&lt;/a>クライアントは12月30日に&lt;a href="#ZgotmplZ">バージョン2.0をリリース&lt;/a>し、iOS（TestFlight）、Android（Play Store）、Web、Windows全体で大幅な機能追加を行いました。このリリースでは、プレイリスト作成、トラックアップロード、Zapベースのアーティスト支払い、機能的なイコライザー付きWinAmpスタイルのプレーヤーを含むネイティブ音楽サポートが追加されました。ライブストリーミングでは、ゲームプレイストリーム中にリッチなメタデータを表示するGame API統合が追加されました。新しいサマリー機能は、時間単位、日単位、週単位のアクティビティダイジェストを圧縮されたタイムラインビューとして生成します。Discoverセクションでは、コンテンツやプロフィールを見つけるためのキュレーションリストを提供します。メディア公開は、クロスクライアントでの発見可能性のためのショートフォーム投稿の自動生成により簡素化されました。リモート署名接続は、手動設定なしでQRコードスキャンで動作するようになりました。プロフィール発見は、Nostrでよくある問題に対処します：ユーザーがメタデータを持たずにリレー間を移動した場合、Nostriaはそのプロフィールを見つけて現在のリレーに再公開します。プレミアム会員は、YouTubeチャンネル統合、プライベートメモ、分析ダッシュボード、マージ/復元オプション付きのフォローリスト自動バックアップを利用できます。&lt;/p>
&lt;h2 id="nipの更新">NIPの更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更：&lt;/p>
&lt;p>&lt;strong>マージ済み:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - &lt;code>nip44_encrypt&lt;/code>メソッドの戻り値フィールドが修正されました（&lt;a href="https://github.com/nostr-protocol/nips/pull/2184">#2184&lt;/a>）。Android署名者は暗号化されたペイロードを（&lt;code>nip44_decrypt&lt;/code>と一致する）&lt;code>signature&lt;/code>フィールドで返す必要があり、別のフィールドではなくなりました。これにより、仕様がAmberとPrimalの既存の実装と整合します。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>オープンPR:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a>&lt;/strong> - クエリ式拡張（&lt;a href="https://github.com/nostr-protocol/nips/pull/2182">#2182&lt;/a>）は、構造化されたクエリ式でNIP-50検索を拡張することを提案しています。このPRは&lt;code>kind:1&lt;/code>、&lt;code>author:npub1...&lt;/code>などの演算子とブール組み合わせ（&lt;code>AND&lt;/code>、&lt;code>OR&lt;/code>、&lt;code>NOT&lt;/code>）を追加し、単純なテキストマッチングを超えたより正確な検索クエリを可能にします。これにより、クライアントは基本的な検索文字列との後方互換性を維持しながら、高度な検索インターフェースを構築できます。&lt;/li>
&lt;/ul>
&lt;h2 id="nip詳細解説nip-04とnip-44">NIP詳細解説：NIP-04とNIP-44&lt;/h2>
&lt;p>今週は、Nostrの暗号化標準について解説します：まだ遭遇するレガシーのNIP-04と、重大なセキュリティ欠陥を修正した最新の代替であるNIP-44です。&lt;/p>
&lt;h3 id="nip-04jatopicsnip-04暗号化ダイレクトメッセージレガシー">&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>：暗号化ダイレクトメッセージ（レガシー）&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/04.md">NIP-04&lt;/a>は、kind 4イベントを使用したNostr初の暗号化メッセージング方式でした。実装は簡単ですが、既知のセキュリティ上の弱点があり、NIP-44への移行が推奨されています。&lt;/p>
&lt;p>&lt;strong>仕組み:&lt;/strong> NIP-04はECDH（楕円曲線Diffie-Hellman）を使用して送信者と受信者の間で共有秘密を導出し、AES-256-CBCで暗号化します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;event-id&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;sender-pubkey&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1736200000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">4&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [[&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;recipient-pubkey&amp;gt;&amp;#34;&lt;/span>]],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;base64-ciphertext?iv=base64-iv&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;signature&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>暗号化フロー：&lt;/p>
&lt;ol>
&lt;li>共有ポイントを計算: &lt;code>shared = ECDH(sender_privkey, recipient_pubkey)&lt;/code>&lt;/li>
&lt;li>鍵を導出: &lt;code>key = SHA256(shared_x_coordinate)&lt;/code>&lt;/li>
&lt;li>ランダムな16バイトのIVを生成&lt;/li>
&lt;li>暗号化: &lt;code>ciphertext = AES-256-CBC(key, iv, plaintext)&lt;/code>&lt;/li>
&lt;li>コンテンツをフォーマット: &lt;code>base64(ciphertext)?iv=base64(iv)&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>セキュリティ上の問題:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>認証なし:&lt;/strong> AES-CBCは機密性を提供しますが、完全性は保証しません。リレーを制御する攻撃者は暗号文のビットを改変し、平文に予測可能な変更を引き起こすことができます（ビットフリッピング攻撃）。&lt;/li>
&lt;li>&lt;strong>IVが平文で送信:&lt;/strong> 初期化ベクトルは暗号文と一緒に送信され、予測可能なIVを持つCBCモードは選択平文攻撃を可能にします。&lt;/li>
&lt;li>&lt;strong>パディング検証なし:&lt;/strong> PKCS#7パディングの処理方法は実装によって異なり、パディングオラクル攻撃を可能にする可能性があります。&lt;/li>
&lt;li>&lt;strong>メタデータの露出:&lt;/strong> 送信者の公開鍵、受信者の公開鍵、タイムスタンプはすべてリレーに見えます。&lt;/li>
&lt;li>&lt;strong>鍵の再利用:&lt;/strong> 同じ共有秘密が2者間のすべてのメッセージに永久に使用されます。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>なぜまだ存在するのか:&lt;/strong> 多くの古いクライアントやリレーはNIP-04のみをサポートしています。レガシーシステムとやり取りする際に遭遇します。AmberやPrimalなどの署名者は、後方互換性のために&lt;code>nip04_encrypt&lt;/code>/&lt;code>nip04_decrypt&lt;/code>を実装しています。&lt;/p>
&lt;h3 id="nip-44jatopicsnip-44バージョン付き暗号化">&lt;a href="https://nostrcompass.org/ja/topics/nip-44/">NIP-44&lt;/a>：バージョン付き暗号化&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/44.md">NIP-44&lt;/a>は、NIP-04のよく知られた欠陥を修正するために設計された最新の暗号化標準です。NIP-44実装のCure53セキュリティ監査では、仕様が確定する前に対処された10件の問題（タイミング攻撃や前方秘匿性の懸念を含む）が特定されました。適切な鍵導出と認証付き暗号化を備えたChaCha20-Poly1305を使用します。&lt;/p>
&lt;p>&lt;strong>NIP-04からの主な改善点:&lt;/strong>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">項目&lt;/th>
 &lt;th style="text-align: left">NIP-04&lt;/th>
 &lt;th style="text-align: left">NIP-44&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">暗号&lt;/td>
 &lt;td style="text-align: left">AES-256-CBC&lt;/td>
 &lt;td style="text-align: left">XChaCha20-Poly1305&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">認証&lt;/td>
 &lt;td style="text-align: left">なし&lt;/td>
 &lt;td style="text-align: left">Poly1305 MAC&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">鍵導出&lt;/td>
 &lt;td style="text-align: left">SHA256(shared_x)&lt;/td>
 &lt;td style="text-align: left">HKDFとソルト&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Nonce&lt;/td>
 &lt;td style="text-align: left">16バイトIV、再利用パターン&lt;/td>
 &lt;td style="text-align: left">24バイトランダムnonce&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">パディング&lt;/td>
 &lt;td style="text-align: left">PKCS#7（長さが漏洩）&lt;/td>
 &lt;td style="text-align: left">2のべき乗にパディング&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">バージョニング&lt;/td>
 &lt;td style="text-align: left">なし&lt;/td>
 &lt;td style="text-align: left">バージョンバイトプレフィックス&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>暗号化フロー:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>会話鍵:&lt;/strong> 送信者-受信者ペアごとに安定した鍵を導出：&lt;/p>
&lt;pre tabindex="0">&lt;code>shared_x = ECDH(sender_privkey, recipient_pubkey).x
conversation_key = HKDF-SHA256(
 ikm = shared_x,
 salt = &amp;#34;nip44-v2&amp;#34;,
 info = &amp;#34;&amp;#34;
)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>メッセージ鍵:&lt;/strong> 各メッセージに対してランダムな32バイトのnonceを生成し、暗号化/認証鍵を導出：&lt;/p>
&lt;pre tabindex="0">&lt;code>keys = HKDF-SHA256(
 ikm = conversation_key,
 salt = nonce,
 info = &amp;#34;nip44-v2&amp;#34;
)
chacha_key = keys[0:32]
chacha_nonce = keys[32:44]
hmac_key = keys[44:76]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>平文をパディング:&lt;/strong> メッセージ長を隠すために次の2のべき乗（最小32バイト）にパディング：&lt;/p>
&lt;pre tabindex="0">&lt;code>padded = [length_u16_be] + [plaintext] + [zeros to next power of 2]
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>暗号化と認証:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>ciphertext = XChaCha20(chacha_key, chacha_nonce, padded)
mac = HMAC-SHA256(hmac_key, nonce + ciphertext)
&lt;/code>&lt;/pre>&lt;/li>
&lt;li>
&lt;p>&lt;strong>ペイロードのフォーマット:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>payload = [version=0x02] + [nonce] + [ciphertext] + [mac]
content = base64(payload)
&lt;/code>&lt;/pre>&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>バージョンバイト:&lt;/strong> 最初のバイト（&lt;code>0x02&lt;/code>）は暗号化バージョンを示します。これにより、既存のメッセージを壊すことなく将来のアップグレードが可能になります。バージョン&lt;code>0x01&lt;/code>は広く展開されなかった初期のドラフトでした。&lt;/p>
&lt;p>&lt;strong>復号:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>base64をデコードし、バージョンバイトが&lt;code>0x02&lt;/code>であることを確認&lt;/li>
&lt;li>nonce（バイト1-32）、暗号文、MAC（最後の32バイト）を抽出&lt;/li>
&lt;li>受信者の秘密鍵と送信者の公開鍵を使用して会話鍵を導出&lt;/li>
&lt;li>会話鍵とnonceからメッセージ鍵を導出&lt;/li>
&lt;li>復号前にMACを検証（無効な場合は拒否）&lt;/li>
&lt;li>暗号文を復号し、長さプレフィックスを抽出し、パディングを除去した平文を返す&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>セキュリティ特性:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>認証付き暗号化:&lt;/strong> Poly1305 MACにより、復号前にあらゆる改ざんが検出されます&lt;/li>
&lt;li>&lt;strong>前方秘匿性（部分的）:&lt;/strong> 各メッセージは一意のnonceを使用するため、1つのメッセージが漏洩しても他のメッセージは明らかになりません。ただし、秘密鍵が漏洩した場合は過去のすべてのメッセージが明らかになります（ラチェット機能なし）。&lt;/li>
&lt;li>&lt;strong>長さの隠蔽:&lt;/strong> 2のべき乗パディングにより正確なメッセージ長が隠されます&lt;/li>
&lt;li>&lt;strong>タイミング攻撃耐性:&lt;/strong> MAC検証の定数時間比較&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>実際の使用:&lt;/strong> NIP-44は以下の暗号化レイヤーとして使用されます：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートダイレクトメッセージ（ギフトラップ内）&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名者通信&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>シール暗号化&lt;/li>
&lt;li>&lt;a href="https://nostrcompass.org/ja/topics/nip-104/">Marmot Protocol&lt;/a>グループメッセージ。NIP-44はMLSエクスポーターシークレットから導出された鍵を使用してMLS暗号化コンテンツをラップします&lt;/li>
&lt;li>安全なポイントツーポイント暗号化が必要なあらゆるアプリケーション&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>移行ガイダンス:&lt;/strong> 新しいアプリケーションはNIP-44のみを使用すべきです。後方互換性のために、NIP-04にフォールバックする前に、連絡先のクライアントがNIP-44をサポートしているかどうかを確認してください（&lt;a href="https://nostrcompass.org/ja/topics/nip-89/">NIP-89&lt;/a>アプリメタデータまたはリレーサポート経由）。メッセージを受信する際は、最初にNIP-44復号を試み、レガシーコンテンツにはNIP-04にフォールバックしてください。&lt;/p>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;p>&lt;strong>Primal Android v2.6.18&lt;/strong> - &lt;a href="https://github.com/PrimalHQ/primal-android-app/releases/tag/2.6.18">完全なリリース&lt;/a>では、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名と&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>ローカル署名が追加され、Primalは他のAndroidアプリ向けの署名ハブとなりました。パフォーマンス改善には、メディアプリキャッシュ、アバタープリキャッシュ、より高速なスレッド読み込みが含まれます。バグ修正では、プロフィールでの自己メンション、メディアギャラリーのクラッシュ、ストリームタイトルのフォールバックに対処しています。iOSでは、PrimalはNIP-46署名リクエストを受信するためにアプリを起動状態に保つためにバックグラウンドオーディオ再生を使用しています。ユーザーは設定でサウンドを変更したり、完全にミュートにしたりできます。&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.6&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-69/">NIP-69&lt;/a> P2P Bitcoin取引プラットフォームの&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.6">最新リリース&lt;/a>は、フェーズ4監査イベントで開発基金の実装を完了しました。開発手数料の支払いは、各成功した支払い後に公開されるkind 38383 Nostrイベントを通じて追跡されるようになり、サードパーティの検証と分析が可能になりました。買い手/売り手メッセージの金額計算が修正され、プレミアムロジックがlnp2pbot参照実装と整合しました。&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.5&lt;/strong> - クロスプラットフォーム署名者は&lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.5">ダークモードを追加&lt;/a>し、アプリアイコンの表示を改善し、よりクリーンなUIレイアウトを実現しました。バグ修正では、iOS iCloudプライベートリレーの競合とイベント解析の問題に対処しています。このリリースでは、イベントJSONをRust署名関数に渡す方法も改善されました。&lt;/p>
&lt;p>&lt;strong>Citrine v1.0.0&lt;/strong> - Androidリレーアプリが&lt;a href="https://github.com/greenart7c3/Citrine/releases/tag/v1.0.0">1.0に到達&lt;/a>しました。Citrineを使用すると、Androidデバイス上で直接パーソナルNostrリレーを実行でき、ローカルキャッシング、バックアップ、またはNIP-55コンパニオンとして役立ちます。このリリースでは、クラッシュレポートハンドラーが追加され、データベースクエリの効率が改善され、Crowdin経由で翻訳が更新されました。&lt;/p>
&lt;p>&lt;strong>Applesauce v5.0.0&lt;/strong> - hzrd149のTypeScriptライブラリスイートが、正確性とシンプルさに焦点を当てた破壊的変更を含む&lt;a href="https://github.com/hzrd149/applesauce/releases">メジャーバージョンをリリース&lt;/a>しました。coreパッケージは&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-core%405.0.0">デフォルトでイベント署名を検証&lt;/a>するようになり、座標メソッドをより明確な「address」用語に名前変更しました（&lt;code>parseCoordinate&lt;/code> → &lt;code>parseReplaceableAddress&lt;/code>）。relayパッケージは&lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-relay%405.0.0">デフォルトのリトライ回数を10から3に削減&lt;/a>し、デフォルトで到達不能なリレーを無視し、より簡単なイベントフェッチのための&lt;code>createUnifiedEventLoader&lt;/code>を追加しました。walletパッケージは&lt;a href="https://nostrcompass.org/ja/topics/nip-87/">NIP-87&lt;/a> &lt;a href="https://github.com/hzrd149/applesauce/releases/tag/applesauce-wallet%405.0.0">Cashuミント発見&lt;/a>を獲得しました。パッケージ全体で直接の&lt;code>nostr-tools&lt;/code>依存関係が削除され、バンドルサイズとバージョンの競合が減少しました。&lt;/p>
&lt;h2 id="注目のコードとドキュメントの変更">注目のコードとドキュメントの変更&lt;/h2>
&lt;p>&lt;em>これらはオープンなプルリクエストと初期段階の作業です。マージ前にフィードバックを得るのに最適です。何か気になるものがあれば、レビューやコメントを検討してください！&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>一連のPRが長文記事体験を改善しています。&lt;a href="https://github.com/damus-io/damus/pull/3496">読書UXの改善&lt;/a>では、プログレスバー、推定読了時間、セピアモード、調整可能な行間、スクロール中にナビゲーションを非表示にするフォーカスモードが追加されました。&lt;a href="https://github.com/damus-io/damus/pull/3489">画像の修正&lt;/a>により、マークダウンコンテンツ内の画像がスタンドアロン画像をブロックレベル要素として前処理することで適切なアスペクト比で表示されます。&lt;a href="https://github.com/damus-io/damus/pull/3497">長文プレビューカード&lt;/a>は、インラインの&lt;code>@naddr1...&lt;/code>テキストを記事タイトルとメタデータを表示するリッチプレビューカードに置き換えます。新しい&lt;a href="https://github.com/damus-io/damus/pull/3508">リレー統合テストスイート&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>プロトコル検証と劣化したネットワーク条件（3Gシミュレーション）での動作を含む137のネットワーク関連テストを追加します。&lt;/p>
&lt;h3 id="bitchat-暗号化メッセージング">Bitchat (暗号化メッセージング)&lt;/h3>
&lt;p>iOS Nostr+Cashuメッセンジャーのセキュリティ強化。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/928">NoiseプロトコルDHシークレットのクリア&lt;/a>は、Diffie-Hellman鍵合意後に共有シークレットがゼロ化されていなかった6か所を修正し、前方秘匿性の保証を復元しました。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/929">既読レシートキューのスレッドセーフティ&lt;/a>は、NostrTransportでのレースコンディションを防ぐためにバリア同期を追加しました。&lt;a href="https://github.com/permissionlesstech/bitchat/pull/920">メッセージ重複排除の最適化&lt;/a>は大量のメッセージでのパフォーマンスを改善し、&lt;a href="https://github.com/permissionlesstech/bitchat/pull/919">hex文字列解析の強化&lt;/a>は不正な入力からのクラッシュを防止します。&lt;/p>
&lt;h3 id="frostr-閾値署名">Frostr (閾値署名)&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/frost/">FROST&lt;/a>ベースの閾値署名プロトコルは、オンボーディング時と署名者インターフェースで&lt;a href="https://github.com/FROSTR-ORG/igloo-desktop/pull/62">グループ認証情報とシェア認証情報のQRコード表示を追加&lt;/a>しました。これにより、複数のデバイス間でキーシェアを配布する際のセットアップが容易になり、ユーザーは長い文字列を手動でコピーする代わりに認証情報をスキャンできます。&lt;/p>
&lt;h3 id="marmot-mdk-ライブラリ">Marmot mdk (ライブラリ)&lt;/h3>
&lt;p>上記のセキュリティ修正に加えて、アクティブなPRは残りの監査指摘事項に対処しています：&lt;a href="https://github.com/marmot-protocol/mdk/pull/109">Secret&lt;T>型によるゼロ化&lt;/a>は、ドロップ時に自動的に機密データをゼロ化するラッパー型を導入し、&lt;a href="https://github.com/marmot-protocol/mdk/pull/111">メッセージクエリのページネーション&lt;/a>はチャット履歴を読み込む際のメモリ枯渇を防止し、&lt;a href="https://github.com/marmot-protocol/mdk/pull/102">暗号化ストレージ&lt;/a>はグループ状態とメッセージを保存するSQLiteデータベースに保存時暗号化を追加します。&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>Androidクライアント全体で忙しい安定性修正の週でした。&lt;a href="https://github.com/vitorpamplona/amethyst/commit/2c42796">寛容なJSON解析&lt;/a>は、Kotlin Serializationをより寛容にすることで不正な形式のイベントからのクラッシュを防止します。イベント検証は&lt;a href="https://github.com/vitorpamplona/amethyst/commit/40f9622">kindフィールドサイズをチェック&lt;/a>してから処理し、オーバーサイズの値からの例外を回避します。トラストスコアUIは視覚的な干渉を減らすために小さなアイコンを取得し、&lt;a href="https://github.com/vitorpamplona/amethyst/commit/69c53ac">改善されたエラーログ&lt;/a>はリレー接続の問題の診断に役立ちます。翻訳の更新がCrowdin経由で到着し、いくつかのSonarQube警告に対処しました。&lt;/p>
&lt;h3 id="tenex-aiエージェント">TENEX (AIエージェント)&lt;/h3>
&lt;p>Nostrネイティブのエージェントフレームワークは今週、自律機能を構築する81のコミットがありました。新しい&lt;a href="https://github.com/tenex-chat/tenex/pull/48">エージェント監視システム&lt;/a>は、エージェントのアクションを監視し、必要に応じて介入する行動ヒューリスティックを実装しています。&lt;a href="https://github.com/tenex-chat/tenex/commit/b244c10">委任の透明性&lt;/a>は、ユーザーがエージェントが代わりに何を行ったかを監査できるように、委任トランスクリプトにユーザー介入ログを追加します。&lt;a href="https://github.com/tenex-chat/tenex/pull/47">LLMプロバイダーレジストリ&lt;/a>は、異なるAIバックエンドの統合を容易にするためにモジュール化されました。クロスプロジェクト会話サポートにより、エージェントは複数のNostrベースのプロジェクト間でコンテキストを維持できます。&lt;/p>
&lt;h3 id="jumble-webクライアント">Jumble (Webクライアント)&lt;/h3>
&lt;p>リレーフォーカスのWebクライアントは、いくつかのユーザーエクスペリエンスの改善を追加しました。&lt;a href="https://github.com/CodyTseng/jumble/commit/695f2fe">スマートリレープール&lt;/a>は、使用パターンに基づいてインテリジェントに接続を管理します。&lt;a href="https://github.com/CodyTseng/jumble/commit/917fcd9">ライブフィードトグル&lt;/a>では、ユーザーはリアルタイムストリーミングと手動更新を切り替えることができます。&lt;a href="https://github.com/CodyTseng/jumble/commit/d1b3a8c">新しいノートの自動表示&lt;/a>により、ページを再読み込みせずに新鮮なコンテンツがトップに表示されます。フォローフィードと通知の&lt;a href="https://github.com/CodyTseng/jumble/commit/fd9f41c">永続キャッシュ&lt;/a>は、再訪問時の読み込み時間を改善します。ユーザーは設定を通じて&lt;a href="https://github.com/CodyTseng/jumble/commit/53a67d8">デフォルトリレーを変更&lt;/a>できるようになりました。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何かを構築していますか？共有したいニュースがありますか？あなたのプロジェクトを取り上げてほしいですか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせ&lt;/a>いただくか、Nostrで私たちを見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #3</title><link>https://nostrcompass.org/ja/newsletters/2025-12-31-newsletter/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2025-12-31-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> 2025年の締めくくりとして、Nostrの進化における12月の節目を5年分振り返ります。2020年12月のfiatjafによる最初のクライアント公開から、2022年12月のJack Dorseyによる14 BTCの寄付、そして今月の&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリの広がりとNDKの162倍キャッシュ高速化まで、12月は一貫してプロトコルの転換点になってきました。今回は、実験的な2つのrelayから50か国2,500超のノードへと成長した技術史を、各年の12月を通してたどります。あわせて、AmethystのデスクトップモジュールがQuartzで形になり、Notedeckはメッセージ機能を獲得し、CitrineはWebアプリをホスト可能になり、&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>は非ラテン文字向けの国際化問題を修正しました。&lt;/p>
&lt;h2 id="12月の回顧-nostrの5回の12月">12月の回顧: Nostrの5回の12月&lt;/h2>
&lt;p>Nostrは今年で5年になります。fiatjafがプロトコルを始めたのは2020年11月7日で、それ以降の毎年12月は、その進化のはっきり異なる段階を刻んできました。概念実証から世界的なムーブメントへ、さらに本番運用されるエコシステムへ。本稿は、Nostrの土台を形作り、ブレイクアウトの契機となった2020年12月から2025年12月までを技術的に振り返るものです。&lt;/p>
&lt;h3 id="2020年12月-創世記">2020年12月: 創世記&lt;/h3>
&lt;p>Nostrが存在して初めて迎えた丸1か月のあいだに、fiatjafはプロトコル初のクライアントである&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>を公開しました。これはQuasar（Vue.js）とabsurd-sqlをローカルストレージに使った実装でした。fiatjafはすでに中核アーキテクチャを定めていました。ユーザーはsecp256k1公開鍵で識別され、すべての投稿は暗号学的に署名され、relayは相互に通信しない単純なストレージとして機能します。11月16日に始まったTelegramグループ&lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>で調整していた初期採用者のごく少人数を、1つか2つの実験的relayが支えていました。&lt;a href="https://fiatjaf.com/nostr.html">当初のドキュメント&lt;/a>はNostrを「検閲耐性のあるグローバルなソーシャルネットワークを作れる、最もシンプルなオープンプロトコル」と説明していましたが、その前提が実証されるまでにはさらに2年を要しました。&lt;/p>
&lt;h3 id="2021年12月-初期開発期">2021年12月: 初期開発期&lt;/h3>
&lt;p>2021年12月31日、NostrはCameriによる投稿で&lt;a href="https://news.ycombinator.com/item?id=29749061">Hacker Newsのフロントページ&lt;/a>に載り、110ポイントと138件のコメントを集めました。これはプロトコルがより広い開発者コミュニティに初めて大きく露出した瞬間でした。ネットワークは約7つのrelayと1,000人未満のユーザーで動いていました。Branleには12月31日の秘密鍵インポートや複数relayサポートなどの更新が入り、コマンドラインクライアントのnosclはターミナルからの操作を提供していました。プロトコル仕様はまだfiatjaf個人のドキュメントにあり、正式な&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>が作られるのは2022年5月になってからです。当時のプロトコルは、fiatjaf自身の言葉どおり「進行中の作業」でした。&lt;/p>
&lt;h3 id="2022年12月-転換点">2022年12月: 転換点&lt;/h3>
&lt;p>2022年12月は、Nostrをニッチな実験から主流のムーブメントへ押し上げました。きっかけは12月15日、Jack Dorseyがプロトコルを知り、「Blueskyに私たちが求めていたものを100パーセント満たしているが、企業から開発されたものではない」と述べたうえで、fiatjafに&lt;a href="https://www.coindesk.com/tech/2022/12/15/jack-dorsey-gives-decentralized-social-network-nostr-14-btc-in-funding">14.17171699 BTC&lt;/a>（約24.5万ドルから25万ドル）を寄付したことでした。12月16日、fiatjafはその資金をDamus開発者William Casarin（jb55）と分けると発表し、Dorsey自身もNostrアカウント（npub: &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>）を認証しました。この資金提供によって、プロジェクトは一夜にして正当性を得ました。&lt;/p>
&lt;p>同じ週、Twitterの混乱が採用を後押ししました。12月14日から15日にかけてはNew York Times、CNN、Washington Postの著名ジャーナリストたちが停止されました。12月18日にはTwitterが&lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">NostrやMastodonなどを宣伝するアカウントの禁止&lt;/a>を発表し、翌日には反発を受けて撤回しました。この流出が、ユーザーに代替手段を探させる原動力になりました。&lt;/p>
&lt;p>プロトコル開発も急加速しました。12月16日には&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>がマージされ（&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>）、bech32でエンコードされた識別子（npub、nsec、note、nprofile、nevent）が導入され、鍵が人間に読みやすく区別しやすくなりました。その月のNIPsリポジトリには36件超のコミットが入り、NIP-40やNIP-07の更新も含まれていました。クライアントも増殖し、Damusは数時間でTestFlightベータが満員になり、Astralはプロフィール作成のためにBranleをフォークし、Snortは「高速で検閲耐性のある」Webクライアントとして立ち上がり、Vitor PamplonaはAmethystの開発を始めました。Alby v1.22.1「Kemble&amp;rsquo;s Cascade of Stars」は12月22日に&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>対応で出荷されました。12月7日時点でNostrにはプロフィールを持つユーザーがおよそ800人いましたが、Damusが2023年1月31日にApp Storeへ登場すると、成長は一気に加速し、2023年6月までに31.5万人超へ達しました。&lt;/p>
&lt;h3 id="2023年12月-エコシステムの成熟">2023年12月: エコシステムの成熟&lt;/h3>
&lt;p>2023年12月は、Nostrプロトコルのセキュリティにとって重要な変曲点でした。12月20日、独立したCure53セキュリティ監査（NOS-01）でTypeScript、Go、Rust実装にタイミング攻撃やforward secrecyの懸念を含む10件の問題が見つかったあと、&lt;a href="https://github.com/nostr-protocol/nips/pull/746">NIP-44 revision 3がマージ&lt;/a>されました。更新後の仕様は、不完全だった&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化をChaCha20とHMAC-SHA256で置き換え、現在の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDMと&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> Gift Wrapを支える暗号基盤を確立しました。同じ週の12月21日には、&lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSatsが第4回Nostr grantsを発表&lt;/a>し、Lume、noStrudel、ZapThreads、独立したNIP-44監査を含む7プロジェクトを支援しました。これは2023年7月の&lt;a href="https://opensats.org/blog/nostr-grants-july-2023">第1回助成&lt;/a>に続くもので、Damus、Coracle、Irisなどを含め、Nostr Fund全体の配分は39件で約340万ドルに達しました。&lt;/p>
&lt;p>この月は、エコシステムの持続可能性をめぐる緊張も露呈させました。12月28日、William Casarin（jb55）は&lt;a href="https://stacker.news/items/368863">Stacker Newsへの投稿&lt;/a>で、Appleのアプリ内zap制限によって収益化が大きく妨げられたことを理由に、「2024年はおそらくDamusにとって最後の年になる」と述べました。Damusチームはそれ以前にVC資金も断っています。一方で、&lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a>は12月26日に出荷され、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>を&lt;code>pay_keysend&lt;/code>、&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>get_info&lt;/code>メソッドで拡張しました。これは後に複数クライアントで標準になっていくウォレット統合の土台を築きました。&lt;/p>
&lt;h3 id="2024年12月-プロトコルの前進">2024年12月: プロトコルの前進&lt;/h3>
&lt;p>2024年12月は、11月30日の&lt;a href="https://damus.io/notedeck/">Notedeck Alpha公開&lt;/a>から始まりました。これはDamusチームによるRust製デスクトップクライアントで、マルチカラムUIと複数アカウント対応を備えています。Linux、macOS、Windows向けに構築され、Androidは2025年予定でした。当初はDamus Purple購読者向けに提供され、iOSを超える戦略的拡張を示していました。2週間後の12月16日には、&lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSatsが第9回Nostr grantsを発表&lt;/a>し、パーソナライズされたフィード向け初のアルゴリズムrelayであるAlgoRelay、通信制限下のインターネット向けBluetooth mesh対応AndroidアプリPokey、&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>の&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>トークン保存を行うNostr Safebox、軽量でアクセシブルなWebクライアントLumiLumiを支援しました。これによりNostr Fundの総配分は約900万ドルへ伸び、前年同期比67%増となりました。&lt;/p>
&lt;p>この月はクライアント成熟の大きな進展も見せました。&lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a>は12月23日に、File Metadataの&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>サポート、Blossom統合、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a> relay検索を携えて公開されました。&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.5.0">Coracle 0.5.0&lt;/a>は12月12日に、再設計されたオンボーディングとnostr-editor統合付きで出荷されました。プロトコル開発も活発で、12月9日から22日の間に30件のPRが提出され、そのうち10件がマージされています。内容には、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>のNIP-44暗号化専用への書き換えや、Signalレベルのdouble ratchet暗号化を目指す&lt;a href="https://nostrcompass.org/ja/topics/nip-104/">NIP-104&lt;/a>の継続作業が含まれていました。ネットワーク統計では、信頼済みpubkeyイベントが日次22.4万件超に達し、コンタクトリスト付き新規プロフィールは前年比4倍、公開ライティングイベントは50%増となりました。&lt;/p>
&lt;h3 id="2025年12月-エコシステムの拡大">2025年12月: エコシステムの拡大&lt;/h3>
&lt;p>2025年12月も、プロトコルの成熟とエコシステムの拡大が続きました。12月21日、&lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSatsは第14回Nostr grantsを発表&lt;/a>し、3つのプロジェクトを支援しました。長文コンテンツのクリエーターポータルと&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>/Nutzaps決済統合を持つマルチプラットフォームクライアントYakiHonne、Amethystを支え将来のiOS版を可能にするVitor PamplonaのKotlin MultiplatformライブラリQuartz、そしてPlebOneによるRSSとNostrの双方向統合であるNostr Feedzです。加えて、Dart NDKとMattnのnostr-relayには更新助成が行われました。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週の内容:&lt;/strong> 2025年の締めくくりとして、Nostrの進化における12月の節目を5年分振り返ります。2020年12月のfiatjafによる最初のクライアント公開から、2022年12月のJack Dorseyによる14 BTCの寄付、そして今月の&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリの広がりとNDKの162倍キャッシュ高速化まで、12月は一貫してプロトコルの転換点になってきました。今回は、実験的な2つのrelayから50か国2,500超のノードへと成長した技術史を、各年の12月を通してたどります。あわせて、AmethystのデスクトップモジュールがQuartzで形になり、Notedeckはメッセージ機能を獲得し、CitrineはWebアプリをホスト可能になり、&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>は非ラテン文字向けの国際化問題を修正しました。&lt;/p>
&lt;h2 id="12月の回顧-nostrの5回の12月">12月の回顧: Nostrの5回の12月&lt;/h2>
&lt;p>Nostrは今年で5年になります。fiatjafがプロトコルを始めたのは2020年11月7日で、それ以降の毎年12月は、その進化のはっきり異なる段階を刻んできました。概念実証から世界的なムーブメントへ、さらに本番運用されるエコシステムへ。本稿は、Nostrの土台を形作り、ブレイクアウトの契機となった2020年12月から2025年12月までを技術的に振り返るものです。&lt;/p>
&lt;h3 id="2020年12月-創世記">2020年12月: 創世記&lt;/h3>
&lt;p>Nostrが存在して初めて迎えた丸1か月のあいだに、fiatjafはプロトコル初のクライアントである&lt;a href="https://github.com/fiatjaf/branle">Branle&lt;/a>を公開しました。これはQuasar（Vue.js）とabsurd-sqlをローカルストレージに使った実装でした。fiatjafはすでに中核アーキテクチャを定めていました。ユーザーはsecp256k1公開鍵で識別され、すべての投稿は暗号学的に署名され、relayは相互に通信しない単純なストレージとして機能します。11月16日に始まったTelegramグループ&lt;a href="https://t.me/nostr_protocol">@nostr_protocol&lt;/a>で調整していた初期採用者のごく少人数を、1つか2つの実験的relayが支えていました。&lt;a href="https://fiatjaf.com/nostr.html">当初のドキュメント&lt;/a>はNostrを「検閲耐性のあるグローバルなソーシャルネットワークを作れる、最もシンプルなオープンプロトコル」と説明していましたが、その前提が実証されるまでにはさらに2年を要しました。&lt;/p>
&lt;h3 id="2021年12月-初期開発期">2021年12月: 初期開発期&lt;/h3>
&lt;p>2021年12月31日、NostrはCameriによる投稿で&lt;a href="https://news.ycombinator.com/item?id=29749061">Hacker Newsのフロントページ&lt;/a>に載り、110ポイントと138件のコメントを集めました。これはプロトコルがより広い開発者コミュニティに初めて大きく露出した瞬間でした。ネットワークは約7つのrelayと1,000人未満のユーザーで動いていました。Branleには12月31日の秘密鍵インポートや複数relayサポートなどの更新が入り、コマンドラインクライアントのnosclはターミナルからの操作を提供していました。プロトコル仕様はまだfiatjaf個人のドキュメントにあり、正式な&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>が作られるのは2022年5月になってからです。当時のプロトコルは、fiatjaf自身の言葉どおり「進行中の作業」でした。&lt;/p>
&lt;h3 id="2022年12月-転換点">2022年12月: 転換点&lt;/h3>
&lt;p>2022年12月は、Nostrをニッチな実験から主流のムーブメントへ押し上げました。きっかけは12月15日、Jack Dorseyがプロトコルを知り、「Blueskyに私たちが求めていたものを100パーセント満たしているが、企業から開発されたものではない」と述べたうえで、fiatjafに&lt;a href="https://www.coindesk.com/tech/2022/12/15/jack-dorsey-gives-decentralized-social-network-nostr-14-btc-in-funding">14.17171699 BTC&lt;/a>（約24.5万ドルから25万ドル）を寄付したことでした。12月16日、fiatjafはその資金をDamus開発者William Casarin（jb55）と分けると発表し、Dorsey自身もNostrアカウント（npub: &lt;code>npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m&lt;/code>）を認証しました。この資金提供によって、プロジェクトは一夜にして正当性を得ました。&lt;/p>
&lt;p>同じ週、Twitterの混乱が採用を後押ししました。12月14日から15日にかけてはNew York Times、CNN、Washington Postの著名ジャーナリストたちが停止されました。12月18日にはTwitterが&lt;a href="https://techcrunch.com/2022/12/18/twitter-wont-let-you-post-your-facebook-instagram-and-mastodon-handles/">NostrやMastodonなどを宣伝するアカウントの禁止&lt;/a>を発表し、翌日には反発を受けて撤回しました。この流出が、ユーザーに代替手段を探させる原動力になりました。&lt;/p>
&lt;p>プロトコル開発も急加速しました。12月16日には&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>がマージされ（&lt;a href="https://github.com/nostr-protocol/nips/pull/57">#57&lt;/a>）、bech32でエンコードされた識別子（npub、nsec、note、nprofile、nevent）が導入され、鍵が人間に読みやすく区別しやすくなりました。その月のNIPsリポジトリには36件超のコミットが入り、NIP-40やNIP-07の更新も含まれていました。クライアントも増殖し、Damusは数時間でTestFlightベータが満員になり、Astralはプロフィール作成のためにBranleをフォークし、Snortは「高速で検閲耐性のある」Webクライアントとして立ち上がり、Vitor PamplonaはAmethystの開発を始めました。Alby v1.22.1「Kemble&amp;rsquo;s Cascade of Stars」は12月22日に&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>対応で出荷されました。12月7日時点でNostrにはプロフィールを持つユーザーがおよそ800人いましたが、Damusが2023年1月31日にApp Storeへ登場すると、成長は一気に加速し、2023年6月までに31.5万人超へ達しました。&lt;/p>
&lt;h3 id="2023年12月-エコシステムの成熟">2023年12月: エコシステムの成熟&lt;/h3>
&lt;p>2023年12月は、Nostrプロトコルのセキュリティにとって重要な変曲点でした。12月20日、独立したCure53セキュリティ監査（NOS-01）でTypeScript、Go、Rust実装にタイミング攻撃やforward secrecyの懸念を含む10件の問題が見つかったあと、&lt;a href="https://github.com/nostr-protocol/nips/pull/746">NIP-44 revision 3がマージ&lt;/a>されました。更新後の仕様は、不完全だった&lt;a href="https://nostrcompass.org/ja/topics/nip-04/">NIP-04&lt;/a>暗号化をChaCha20とHMAC-SHA256で置き換え、現在の&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>プライベートDMと&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a> Gift Wrapを支える暗号基盤を確立しました。同じ週の12月21日には、&lt;a href="https://opensats.org/blog/nostr-grants-december-2023">OpenSatsが第4回Nostr grantsを発表&lt;/a>し、Lume、noStrudel、ZapThreads、独立したNIP-44監査を含む7プロジェクトを支援しました。これは2023年7月の&lt;a href="https://opensats.org/blog/nostr-grants-july-2023">第1回助成&lt;/a>に続くもので、Damus、Coracle、Irisなどを含め、Nostr Fund全体の配分は39件で約340万ドルに達しました。&lt;/p>
&lt;p>この月は、エコシステムの持続可能性をめぐる緊張も露呈させました。12月28日、William Casarin（jb55）は&lt;a href="https://stacker.news/items/368863">Stacker Newsへの投稿&lt;/a>で、Appleのアプリ内zap制限によって収益化が大きく妨げられたことを理由に、「2024年はおそらくDamusにとって最後の年になる」と述べました。Damusチームはそれ以前にVC資金も断っています。一方で、&lt;a href="https://github.com/getAlby/nostr-wallet-connect/releases/tag/0.4.1">Nostr Wallet Connect v0.4.1&lt;/a>は12月26日に出荷され、&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>を&lt;code>pay_keysend&lt;/code>、&lt;code>make_invoice&lt;/code>、&lt;code>lookup_invoice&lt;/code>、&lt;code>list_transactions&lt;/code>、&lt;code>get_balance&lt;/code>、&lt;code>get_info&lt;/code>メソッドで拡張しました。これは後に複数クライアントで標準になっていくウォレット統合の土台を築きました。&lt;/p>
&lt;h3 id="2024年12月-プロトコルの前進">2024年12月: プロトコルの前進&lt;/h3>
&lt;p>2024年12月は、11月30日の&lt;a href="https://damus.io/notedeck/">Notedeck Alpha公開&lt;/a>から始まりました。これはDamusチームによるRust製デスクトップクライアントで、マルチカラムUIと複数アカウント対応を備えています。Linux、macOS、Windows向けに構築され、Androidは2025年予定でした。当初はDamus Purple購読者向けに提供され、iOSを超える戦略的拡張を示していました。2週間後の12月16日には、&lt;a href="https://opensats.org/blog/9th-wave-of-nostr-grants">OpenSatsが第9回Nostr grantsを発表&lt;/a>し、パーソナライズされたフィード向け初のアルゴリズムrelayであるAlgoRelay、通信制限下のインターネット向けBluetooth mesh対応AndroidアプリPokey、&lt;a href="https://nostrcompass.org/ja/topics/nip-60/">NIP-60&lt;/a>の&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>トークン保存を行うNostr Safebox、軽量でアクセシブルなWebクライアントLumiLumiを支援しました。これによりNostr Fundの総配分は約900万ドルへ伸び、前年同期比67%増となりました。&lt;/p>
&lt;p>この月はクライアント成熟の大きな進展も見せました。&lt;a href="https://github.com/mikedilger/gossip/releases/tag/v0.13.0">Gossip 0.13.0&lt;/a>は12月23日に、File Metadataの&lt;a href="https://nostrcompass.org/ja/topics/nip-92/">NIP-92&lt;/a>/&lt;a href="https://nostrcompass.org/ja/topics/nip-94/">NIP-94&lt;/a>サポート、Blossom統合、&lt;a href="https://nostrcompass.org/ja/topics/nip-50/">NIP-50&lt;/a> relay検索を携えて公開されました。&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.5.0">Coracle 0.5.0&lt;/a>は12月12日に、再設計されたオンボーディングとnostr-editor統合付きで出荷されました。プロトコル開発も活発で、12月9日から22日の間に30件のPRが提出され、そのうち10件がマージされています。内容には、&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>のNIP-44暗号化専用への書き換えや、Signalレベルのdouble ratchet暗号化を目指す&lt;a href="https://nostrcompass.org/ja/topics/nip-104/">NIP-104&lt;/a>の継続作業が含まれていました。ネットワーク統計では、信頼済みpubkeyイベントが日次22.4万件超に達し、コンタクトリスト付き新規プロフィールは前年比4倍、公開ライティングイベントは50%増となりました。&lt;/p>
&lt;h3 id="2025年12月-エコシステムの拡大">2025年12月: エコシステムの拡大&lt;/h3>
&lt;p>2025年12月も、プロトコルの成熟とエコシステムの拡大が続きました。12月21日、&lt;a href="https://opensats.org/blog/fourteenth-wave-of-nostr-grants">OpenSatsは第14回Nostr grantsを発表&lt;/a>し、3つのプロジェクトを支援しました。長文コンテンツのクリエーターポータルと&lt;a href="https://nostrcompass.org/ja/topics/cashu/">Cashu&lt;/a>/Nutzaps決済統合を持つマルチプラットフォームクライアントYakiHonne、Amethystを支え将来のiOS版を可能にするVitor PamplonaのKotlin MultiplatformライブラリQuartz、そしてPlebOneによるRSSとNostrの双方向統合であるNostr Feedzです。加えて、Dart NDKとMattnのnostr-relayには更新助成が行われました。&lt;/p>
&lt;p>プロトコル面では、11月にマージされた&lt;a href="https://nostrcompass.org/ja/topics/nip-be/">NIP-BE&lt;/a>（Bluetooth Low Energyメッセージング、&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>）が、オフラインデバイス同期を可能にしました。その月の後半には&lt;a href="https://nostrcompass.org/ja/topics/nip-a4/">NIP-A4&lt;/a>（Public Messages、kind 24、&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>）が入り、スレッドの複雑さを避けるため&lt;code>q&lt;/code>タグを使う通知画面向けメッセージを定義しました。&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>には大規模な明確化が入り（&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>）、真にプライベートで発見不能なグループのための&lt;code>hidden&lt;/code>タグが導入されました。&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>仕様にも改訂があり（&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>）、開発者がバックグラウンドプロセスから&lt;code>get_public_key&lt;/code>を呼んでしまう一般的な実装ミスに対処しました。&lt;/p>
&lt;p>クライアント側では、&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/#news">Primal Androidが完全なNIP-55署名アプリになり&lt;/a>、8件のマージ済みPRで&lt;code>LocalSignerContentProvider&lt;/code>を実装し、AmberとAegisに並ぶAndroid署名オプションとなりました。&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/#notable-code-and-documentation-changes">NDKライブラリは162倍高速なキャッシュクエリを達成し&lt;/a>、重複書き込みと不要なLRUキャッシュ参照を排除することで、約3,690msから約22msまで短縮しました（&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a>、&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a>）。Shopstrはzapによるフラッシュセール機能&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/#news">Zapsnags&lt;/a>を導入しました。White Noiseは&lt;a href="https://nostrcompass.org/ja/topics/mip-05/">MIP-05&lt;/a>のプライバシー保護プッシュ通知を出荷しています。詳細は&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/">ニュースレター #1&lt;/a>と&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/">ニュースレター #2&lt;/a>をご覧ください。&lt;/p>
&lt;hr>
&lt;p>5年前、fiatjafはBranleを2つの実験的relay上のごく少数のユーザー向けに公開しました。現在、このプロトコルは140超のクライアント、50か国にまたがる2,500超のrelay、そして数十万の鍵ペアを結ぶ成長中のweb of trustを支えています。今月も12月らしい大型リリースの流れは続き、Bluetoothメッセージング、Android署名アプリの広がり、インフラ助成は、クロスプラットフォームのツール群に対する継続的な投資を示していました。&lt;/p>
&lt;h2 id="ニュース">ニュース&lt;/h2>
&lt;p>&lt;strong>Amethystデスクトップが形になり始める&lt;/strong> - OpenSats第14回助成のQuartz支援は、すでに成果を出し始めています。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1625">PR #1625&lt;/a>は、Compose Multiplatformを使ったAmethyst向けの完全な&lt;code>:desktopApp&lt;/code>モジュールを作成し、Desktop JVM上でログイン画面とグローバルフィード画面を動作可能にしました。アーキテクチャは&lt;code>:commons&lt;/code>モジュールを、&lt;code>commonMain&lt;/code>、&lt;code>jvmAndroid&lt;/code>、&lt;code>androidMain&lt;/code>、&lt;code>jvmMain&lt;/code>という明確なソースセット構造を持つKotlin Multiplatformへ変換しています。これによりAndroidとデスクトップでUIコンポーネントを共有しつつ、プラットフォーム固有の判断は各ターゲットに委ねられます。同じKotlin Multiplatformの流れで、将来のiOS版の土台にもなります。&lt;/p>
&lt;p>&lt;strong>Amethystに音声返信&lt;/strong> - davotoulaからのクリスマスプレゼントとして、&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1622">PR #1622&lt;/a>は専用の音声返信画面を追加しました。波形表示、録り直し対応、メディアサーバー選択、アップロード進捗表示を備えています。ユーザーはこれで、ルート音声メッセージにも既存の音声返信にも、音声で返答できます。&lt;/p>
&lt;p>&lt;strong>Notedeckがメッセージ機能を追加&lt;/strong> - DamusのデスクトップクライアントであるNotedeckは、&lt;a href="https://github.com/damus-io/notedeck/pull/1223">PR #1223&lt;/a>でメッセージ機能を獲得し、タイムライン閲覧だけでなくダイレクトなコミュニケーション領域へ踏み出しました。&lt;/p>
&lt;p>&lt;strong>CitrineがWebアプリをホスト&lt;/strong> - Citrineは今や&lt;a href="https://github.com/greenart7c3/Citrine/pull/81">Webアプリケーションをホスト&lt;/a>でき、スマートフォンをローカルファーストなNostr Webサーバーに変えます。別の&lt;a href="https://github.com/greenart7c3/Citrine/pull/85">PR #85&lt;/a>では、ネットワーク接続が戻ったときの自動再接続とイベント配信が追加され、Android APIレベルをまたぐ包括的なテストも整備されました。&lt;/p>
&lt;p>&lt;strong>Nostrabilityの開発者ツールキットレジストリ&lt;/strong> - &lt;a href="https://github.com/nostrability/nostrability/issues/264">Developer Kits &amp;amp; Tooling&lt;/a>トラッカーは、TypeScript、Rust、Python、Go、Dart、Swiftなど多言語にわたるSDK、ライブラリ、開発者ツールのキュレーション済みレジストリを維持しています。Nostr開発を始めたばかりなら、自分のスタックに合うツールキットを探す出発点として有用です。&lt;/p>
&lt;h2 id="nip更新">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-54/">NIP-54&lt;/a>&lt;/strong> - Wikiのd-tag正規化に関する重要な国際化修正（&lt;a href="https://github.com/nostr-protocol/nips/pull/2177">#2177&lt;/a>）。従来のルールでは、すべての非ASCII文字が&lt;code>-&lt;/code>へ変換され、日本語、中国語、アラビア語、キリル文字などのサポートが壊れていました。更新後の仕様ではUTF-8の文字を保持し、大文字小文字の区別がある文字にのみ小文字化を適用します。例も充実しており、&lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>は&lt;code>&amp;quot;ウィキペディア&amp;quot;&lt;/code>のまま、&lt;code>&amp;quot;Москва&amp;quot;&lt;/code>は&lt;code>&amp;quot;москва&amp;quot;&lt;/code>となり、&lt;code>&amp;quot;日本語 Article&amp;quot;&lt;/code>のような混在スクリプトは&lt;code>&amp;quot;日本語-article&amp;quot;&lt;/code>に正規化されます。&lt;/li>
&lt;/ul>
&lt;h2 id="リリース">リリース&lt;/h2>
&lt;p>&lt;strong>Zapstore 1.0-rc1&lt;/strong> - Nostrベースのパーミッションレスなアプリストアが、新アーキテクチャの&lt;a href="https://github.com/zapstore/zapstore/releases/tag/1.0-rc1">最初のリリース候補&lt;/a>を公開しました。完全なUI刷新、改善されたエラーハンドリングを備えた書き直し済みパッケージマネージャー、キュレート発見用のApp Stacks、再設計されたプロフィール画面、バックグラウンド更新チェック、リリース一覧の無限スクロールを含みます。&lt;/p>
&lt;p>&lt;strong>KeyChat v1.38.1&lt;/strong> - MLSベースの暗号化メッセージングアプリが、AndroidとLinux向けのプッシュ通知に&lt;a href="https://github.com/keychat-io/keychat-app/releases/tag/v1.38.1%2B6489">UnifiedPushサポートを追加&lt;/a>しました。加えて、プライバシー関連操作向けの生体認証も入っています。Android、Windows、macOS、Linuxで利用できます。&lt;/p>
&lt;p>&lt;strong>Alby Go v2.0.0&lt;/strong> - モバイルLightningウォレットのコンパニオンアプリが、&lt;a href="https://github.com/getAlby/go/releases/tag/v2.0.0">ビジュアル刷新を出荷&lt;/a>しました。新ロゴ、更新されたカラーパレット、再設計されたアドレス帳、改善された金額入力キーボードを含みます。BTC Mapはホーム画面から利用でき、通知にはトランザクション説明も表示されます。&lt;/p>
&lt;p>&lt;strong>nak v0.17.4&lt;/strong> - fiatjafのコマンドラインNostrツールが&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.4">リリース&lt;/a>されました。先週のv0.17.3で入ったLMDBのLinux制限修正に続くものです。&lt;/p>
&lt;h2 id="注目すべきコードとドキュメントの変更">注目すべきコードとドキュメントの変更&lt;/h2>
&lt;p>&lt;em>オープンPRや初期段階の作業で、今後追う価値があるもの。&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3477">NIP-19 relay hint&lt;/a>は、イベント取得時のrelay hint消費を実装します。ユーザーがnevent、nprofile、naddrリンクを開くと、Damusはbech32のTLVデータからrelay hintを抽出し、ユーザーのrelayプールにないコンテンツを取得するために一時的なrelayへ接続します。実装には、並行ルックアップ時のレース条件を防ぐためのref-countedクリーンアップも含まれます。&lt;a href="https://github.com/damus-io/damus/pull/3474">画像URL検出&lt;/a>は、作成画面に貼り付けた画像URLを自動的にプレビューサムネイルへ変換し、複数画像時にはカルーセル位置バッジも表示します。&lt;a href="https://github.com/damus-io/damus/pull/3473">npub貼り付け変換&lt;/a>は、貼り付けたnpub/nprofile文字列を、非同期プロフィール解決付きのメンションリンクへ変換します。&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1627">Payment targets&lt;/a>は、&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>のzap分配向けイベントインターフェースを追加し、投稿が複数の受取人を指定して入ってきたzapを分け合えるようにします。コラボレーション、収益分配、あるいはコンテンツ作成者とその利用ツールの両方へのチップに使えます。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1624">Quartz feature parity documentation&lt;/a>は、Android、Desktop JVM、iOSの各ターゲットでどの機能が実装済みかを追跡する詳細な表を追加し、iOS側では中核暗号（&lt;code>Secp256k1Instance&lt;/code>）、JSONシリアライズ、データ構造が未実装であると記しています。&lt;/p>
&lt;h3 id="notedeck-desktop">Notedeck (Desktop)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1226">Timeline filter rebuild&lt;/a>は、アンフォロー済みアカウントがフィードに出続けるバグを修正します。タイムラインフィルターはコンタクトリストから一度だけ構築され、その後更新されていませんでした。この修正では&lt;code>contact_list_timestamp&lt;/code>の追跡と、フォロー状態が変わったときに再構築を発火する&lt;code>invalidate()&lt;/code>メソッドが追加されています。&lt;/p>
&lt;h3 id="citrine-android-relay">Citrine (Android Relay)&lt;/h3>
&lt;p>&lt;a href="https://github.com/greenart7c3/Citrine/pull/86">ContentProvider API&lt;/a>は、ローカルrelayのイベントデータベースを&lt;code>ContentResolver&lt;/code>経由で他のAndroidアプリへ公開します。WebSocketインターフェースとは異なり、こちらはアプリが永続接続を維持したりNostr relayプロトコルを話したりする必要がありません。ContentProviderはAndroidネイティブのIPC機構を通じて、同期的なデータベースアクセスを提供します。外部アプリはID、pubkey、kind、日付範囲でイベントをクエリし、バリデーション付きで新規イベントを挿入し、ソケット接続を管理せずにイベントを削除できます。&lt;/p>
&lt;h3 id="rust-nostr-library">rust-nostr (Library)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1183">NIP-40 relay-level support&lt;/a>は、期限切れ処理をrelay builderレベルに追加します。期限切れイベントは保存前に拒否され、クライアント送信前にも除外されるため、各データベース実装が独自に期限確認を持つ必要がなくなります。&lt;/p>
&lt;h3 id="nak-cli">nak (CLI)&lt;/h3>
&lt;p>&lt;a href="https://github.com/fiatjaf/nak/pull/91">Blossom mirror&lt;/a>は、コマンドラインツール向けのblobミラーリング機能を実装します。&lt;/p>
&lt;h3 id="mostro-p2p-trading">Mostro (P2P Trading)&lt;/h3>
&lt;p>&lt;a href="https://github.com/MostroP2P/mostro/pull/559">Dev fee audit events&lt;/a>は、kind 8383のNostrイベントを通じて開発基金支払いの透明な監査証跡を追加します。実装では、成功した手数料支払いのあとに非ブロッキングな監査イベントを公開し、注文詳細と支払いハッシュを含めつつ、プライバシー保護のため買い手と売り手のpubkeyは除外します。&lt;/p>
&lt;h3 id="mdk-marmot-development-kit">MDK (Marmot Development Kit)&lt;/h3>
&lt;p>3件のセキュリティ監査修正が入りました。&lt;a href="https://github.com/marmot-protocol/mdk/pull/40">Author verification&lt;/a>は、rumorのpubkeyがMLS送信者資格情報と一致することを強制し、なりすまし攻撃を防ぎます。&lt;a href="https://github.com/marmot-protocol/mdk/pull/41">KeyPackage identity binding&lt;/a>は、credential identityがイベント署名者と一致することを検証します。&lt;a href="https://github.com/marmot-protocol/mdk/pull/42">Admin update validation&lt;/a>は、空の管理者集合や非メンバーへの管理者割り当てを防ぎます。&lt;/p>
&lt;h3 id="shopstr-marketplace">Shopstr (Marketplace)&lt;/h3>
&lt;p>&lt;a href="https://github.com/shopstr-eng/shopstr/pull/217">HODL invoice escrow&lt;/a>は、実物商品のためのtrust-minimizedな支払いシステムを実装します。この構成ではAlbyの&lt;code>makeHoldInvoice&lt;/code>を使って買い手の資金を自分のウォレット内にロックし、マーチャントの在庫確認後にのみ決済が実行されます。やり取りのプロトコルは&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>暗号化DM上で進みます。買い手が注文要求を送り、販売者がHODL invoiceで返し、買い手が支払い、販売者が在庫と発送を確認したあとに、決済が資金を解放します。複数マーチャントのカートにも対応し、支払いはベンダーごとに分割されます。&lt;/p>
&lt;h3 id="jumble-web-client">Jumble (Web Client)&lt;/h3>
&lt;p>&lt;a href="https://github.com/CodyTseng/jumble/pull/713">Per-relay discovery mode&lt;/a>は、特定のrelayでフォロー中ユーザーの投稿を非表示にするトグルを追加し、言語ベースの発見フィード（例: nostr.band/lang/*）を可能にします。この機能は、著者pubkeyがユーザーのフォローリストにある投稿を除外し、トグル状態をrelay URLごとにlocalStorageへ保存します。&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (Encrypted Messaging)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/937">Media upload retry&lt;/a>は、失敗したアップロードの再試行オプションを追加します。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/927">Profile edit warnings&lt;/a>は、プロフィール変更時に警告を出します。バックエンド側では、&lt;a href="https://github.com/marmot-protocol/whitenoise-rs/pull/422">whitenoise-rs&lt;/a>がAccountGroup作成時のレースコンディションを修正しています。&lt;/p>
&lt;h3 id="npubcash-lightning-address-service">npub.cash (Lightning Address Service)&lt;/h3>
&lt;p>&lt;a href="https://github.com/cashubtc/npubcash-server/pull/40">v3 rewrite&lt;/a>は、モノレポとサーバーをBunへ移行し、SQLiteサポートを追加し、v1互換を削除し、LUD-21を実装し、mint quoteのリアルタイム更新を加えます。&lt;/p>
&lt;h3 id="nostr-java-library">nostr-java (Library)&lt;/h3>
&lt;p>&lt;a href="https://github.com/tcheeric/nostr-java/releases/tag/v1.1.1">v1.1.1&lt;/a>は、&lt;a href="https://github.com/tcheeric/nostr-java/pull/499">2件のPR&lt;/a>にまたがるWebSocket処理のリファクタリングと、より堅牢なテストを出荷しました。&lt;/p>
&lt;h3 id="nips-repository">NIPs Repository&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/pull/2180">NIP-54 Djot migration&lt;/a>は、wiki仕様に対する別の変更提案です。コンテンツ形式をAsciidocからDjotへ切り替え、より簡潔な構文を持つ軽量マークアップへ移行します。このPRはwikilink向けに参照スタイルリンクを導入し、wiki記事間の相互参照をソース上で読みやすくします。&lt;a href="https://github.com/nostr-protocol/nips/pull/2179">NIP-XX Quorum&lt;/a>は、FROST（Flexible Round-Optimized Schnorr Threshold signatures）を用いたNostrグループ向けの閾値マルチシグガバナンスを提案します。QuorumはT-of-N方式でメンバー間に共有されるnsecであり、メンバー自身が参加することも、代表者の評議会へ委任することもできます。評議会が変わると古いnsecは無効になり、新しいnsecが配布されます。つまり、あらゆる評議会の最後の行為は、そのガバナンス移行イベントへ署名することです。仕様は、メンバーシップ（公開または非公開）、選挙や投票（一般投票、不信任投票）、任意の自然言語「laws」、さらにquorumが別のquorumのメンバーにもなれるquorum ontologyを定義します。これにより、地域団体が上位地域団体へ参加するような階層構造が可能になります。用途は、ソースコード開発、企業の取締役会、HOA、モデレーション付きコミュニティまで広がります。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。そして今年もここまでです。何か作っているものがありますか。共有したいニュースはありますか。取り上げてほしいプロジェクトはありますか。&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでご連絡&lt;/a>いただくか、Nostr上で見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #2</title><link>https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2025-12-24-newsletter/</guid><description>&lt;p>Nostr Compassへおかえりなさい。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> 3つの&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリ実装がアップデートされました: Amberはパフォーマンスキャッシュを追加、Aegisは&lt;code>nostrsigner:&lt;/code> URIサポートを獲得、Primal Androidは完全なローカル署名アプリとして参加。Shopstrはzapを通じたフラッシュセール「Zapsnags」を導入。Mostroは開発基金を追加。4つのNIP更新がランディングし、パブリックメッセージ（kind 24）とグループプライバシーの改善を含みます。NDKキャッシュクエリが162倍高速化、ApplesauceはリアクションとNIP-60ウォレットサポートを追加、TenexはAIエージェント委任のためのRALアーキテクチャを導入。詳細解説では、&lt;a href="https://nostrcompass.org/ja/topics/nip-02/">NIP-02&lt;/a>（フォローリスト）と&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>（返信スレッディング）について説明します。これらはソーシャルタイムラインと会話を構築するための基礎的な仕様です。&lt;/p>
&lt;h2 id="news">ニュース&lt;/h2>
&lt;p>&lt;strong>Primal AndroidがNIP-55署名アプリに&lt;/strong> - 先週の&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/#primal-android">Nostr Connectサポート&lt;/a>に続き、Primalは8つのマージされたプルリクエストを通じて完全なローカル署名機能を実装しました。実装には、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>仕様に従ってAndroidのコンテンツプロバイダーインターフェースを介して他のAndroidアプリに署名操作を公開する完全な&lt;code>LocalSignerContentProvider&lt;/code>が含まれます。アーキテクチャは関心を明確に分離しています: &lt;code>SignerActivity&lt;/code>はユーザー向けの承認フローを処理し、&lt;code>LocalSignerService&lt;/code>はバックグラウンド操作を管理し、新しい権限システムによりユーザーはどのアプリが署名を要求できるかを制御できます。これにより、異なるNostr体験のために他のアプリを使用しながら鍵を1つのアプリに保持したいAndroidユーザーにとって、PrimalはAmberの代替となります。&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags: Lightningを介したフラッシュセール&lt;/strong> - Nostrネイティブマーケットプレイスは&lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">「Zapsnags」&lt;/a>を導入しました。これはソーシャルフィードから単一のzapで商品を購入できるフラッシュセール機能です。実装は&lt;code>#shopstr-zapsnag&lt;/code>タグ付きのkind 1ノートをフィルタリングし、標準的なカートフローの代わりに「Zap to Buy」ボタン付きの商品カードとしてレンダリングします。購入者がzapすると、システムは&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>を使用して支払いリクエストを生成し、kind 9735 zapレシートをポーリングして支払いを確認し、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>のgift wrappingを使用して配送情報を暗号化してから販売者にプライベートに送信します。この機能はリピート購入のために購入者の詳細をローカルに保存し、フラッシュセールリストを作成するためのマーチャントダッシュボードも含まれています。ソーシャル、決済、プライバシープリミティブの巧みな組み合わせであり、Nostrの組み合わせ可能な設計が新しい商取引パターンを可能にすることを示しています。&lt;/p>
&lt;p>&lt;strong>Mostroが開発基金を導入&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-69/">NIP-69&lt;/a> P2P Bitcoin取引プラットフォームは、持続可能なメンテナンスをサポートするために&lt;a href="https://github.com/MostroP2P/mostro/pull/555">設定可能な開発手数料を実装&lt;/a>しました。運営者はMostro取引手数料の10〜100%の&lt;code>dev_fee_percentage&lt;/code>を設定でき（デフォルトは30%）、成功した各取引で自動的に開発基金にルーティングされます。実装は3つのデータベースカラム（&lt;code>dev_fee&lt;/code>、&lt;code>dev_fee_paid&lt;/code>、&lt;code>dev_fee_payment_hash&lt;/code>）を追加して貢献を追跡し、デーモン起動時にパーセンテージを検証します。&lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a>の技術ドキュメントでシステムを説明しています。このオプトインモデルにより、運営者は手数料配分の完全な透明性を維持しながら継続的な開発をサポートできます。&lt;/p>
&lt;h2 id="nip-updates">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>新しいNIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-a4/">NIP-A4&lt;/a>（パブリックメッセージ、kind 24）&lt;/strong> - 幅広いクライアントサポートのために設計された通知画面メッセージ用の新しいkind (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>)。スレッド化された会話とは異なり、これらのメッセージにはチャット履歴やメッセージチェーンの概念がありません。スレッディングの複雑さを避けるために&lt;code>e&lt;/code>タグではなく&lt;code>q&lt;/code>タグ（引用）を使用し、会話状態を作成することなく受信者の通知フィードに表示されるシンプルな公開通知に最適です。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>重要な変更:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - グループセマンティクスの大幅な明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>)。&lt;code>closed&lt;/code>タグは「書き込み不可」（非メンバーは読み取り専用）を意味するようになり、参加メカニズムから分離されました。新しい&lt;code>hidden&lt;/code>タグは、リレーが非メンバーにメタデータやメンバーイベントを提供することを防ぎ、帯域外の招待なしには発見できない真にプライベートなグループを可能にします。&lt;code>private&lt;/code>タグは、発見のためのパブリックメタデータを許可しながらメッセージの可視性を制御します。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - キュレートされた画像セット用のkind 30006を追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>)、30004（記事）と30005（動画）のパターンに従います。すでにNostriaで実装されています。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Android署名アプリの接続開始を明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>)。マルチユーザーセッションを実装する開発者が、バックグラウンドプロセスから呼び出すことで&lt;code>get_public_key&lt;/code>を誤用していました。更新された仕様では、初期接続時に1回だけ呼び出すことを推奨し、一般的な実装の落とし穴を防ぎます。&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">NIP詳細解説: NIP-02とNIP-10&lt;/h2>
&lt;p>今週は、ソーシャル機能に不可欠な2つのNIPを取り上げます: クライアントがあなたがフォローしている人を知る方法と、会話がどのようにスレッド化されるかです。&lt;/p>
&lt;h3 id="nip-02jatopicsnip-02-フォローリスト">&lt;a href="https://nostrcompass.org/ja/topics/nip-02/">NIP-02&lt;/a>: フォローリスト&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a>はkind 3イベントを定義し、フォローリストを保存します。このシンプルなメカニズムが、タイムラインを可能にするソーシャルグラフを支えています。&lt;/p>
&lt;p>&lt;strong>構造:&lt;/strong> kind 3イベントにはフォローしているpubkeyをリストする&lt;code>p&lt;/code>タグが含まれます:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7a8f...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9..af5f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://alicerelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;alice&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb..8dad&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://bobrelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bob&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae..982b&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e4f8a...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>各&lt;code>p&lt;/code>タグには4つの位置があります: タグ名、フォローしているpubkey（hex）、オプションのリレーURLヒント、オプションの「petname」（ローカルニックネーム）。リレーヒントは他のクライアントにそのユーザーのイベントをどこで見つけるかを伝えます。petnameを使用すると、自己宣言した表示名に頼らずに連絡先に覚えやすい名前を割り当てることができます。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへおかえりなさい。Nostrプロトコルエコシステムの週刊ガイドです。&lt;/p>
&lt;p>&lt;strong>今週のハイライト:&lt;/strong> 3つの&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリ実装がアップデートされました: Amberはパフォーマンスキャッシュを追加、Aegisは&lt;code>nostrsigner:&lt;/code> URIサポートを獲得、Primal Androidは完全なローカル署名アプリとして参加。Shopstrはzapを通じたフラッシュセール「Zapsnags」を導入。Mostroは開発基金を追加。4つのNIP更新がランディングし、パブリックメッセージ（kind 24）とグループプライバシーの改善を含みます。NDKキャッシュクエリが162倍高速化、ApplesauceはリアクションとNIP-60ウォレットサポートを追加、TenexはAIエージェント委任のためのRALアーキテクチャを導入。詳細解説では、&lt;a href="https://nostrcompass.org/ja/topics/nip-02/">NIP-02&lt;/a>（フォローリスト）と&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>（返信スレッディング）について説明します。これらはソーシャルタイムラインと会話を構築するための基礎的な仕様です。&lt;/p>
&lt;h2 id="news">ニュース&lt;/h2>
&lt;p>&lt;strong>Primal AndroidがNIP-55署名アプリに&lt;/strong> - 先週の&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/#primal-android">Nostr Connectサポート&lt;/a>に続き、Primalは8つのマージされたプルリクエストを通じて完全なローカル署名機能を実装しました。実装には、&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>仕様に従ってAndroidのコンテンツプロバイダーインターフェースを介して他のAndroidアプリに署名操作を公開する完全な&lt;code>LocalSignerContentProvider&lt;/code>が含まれます。アーキテクチャは関心を明確に分離しています: &lt;code>SignerActivity&lt;/code>はユーザー向けの承認フローを処理し、&lt;code>LocalSignerService&lt;/code>はバックグラウンド操作を管理し、新しい権限システムによりユーザーはどのアプリが署名を要求できるかを制御できます。これにより、異なるNostr体験のために他のアプリを使用しながら鍵を1つのアプリに保持したいAndroidユーザーにとって、PrimalはAmberの代替となります。&lt;/p>
&lt;p>&lt;strong>Shopstr Zapsnags: Lightningを介したフラッシュセール&lt;/strong> - Nostrネイティブマーケットプレイスは&lt;a href="https://github.com/shopstr-eng/shopstr/pull/211">「Zapsnags」&lt;/a>を導入しました。これはソーシャルフィードから単一のzapで商品を購入できるフラッシュセール機能です。実装は&lt;code>#shopstr-zapsnag&lt;/code>タグ付きのkind 1ノートをフィルタリングし、標準的なカートフローの代わりに「Zap to Buy」ボタン付きの商品カードとしてレンダリングします。購入者がzapすると、システムは&lt;a href="https://nostrcompass.org/ja/topics/nip-57/">NIP-57&lt;/a>を使用して支払いリクエストを生成し、kind 9735 zapレシートをポーリングして支払いを確認し、&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>のgift wrappingを使用して配送情報を暗号化してから販売者にプライベートに送信します。この機能はリピート購入のために購入者の詳細をローカルに保存し、フラッシュセールリストを作成するためのマーチャントダッシュボードも含まれています。ソーシャル、決済、プライバシープリミティブの巧みな組み合わせであり、Nostrの組み合わせ可能な設計が新しい商取引パターンを可能にすることを示しています。&lt;/p>
&lt;p>&lt;strong>Mostroが開発基金を導入&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/nip-69/">NIP-69&lt;/a> P2P Bitcoin取引プラットフォームは、持続可能なメンテナンスをサポートするために&lt;a href="https://github.com/MostroP2P/mostro/pull/555">設定可能な開発手数料を実装&lt;/a>しました。運営者はMostro取引手数料の10〜100%の&lt;code>dev_fee_percentage&lt;/code>を設定でき（デフォルトは30%）、成功した各取引で自動的に開発基金にルーティングされます。実装は3つのデータベースカラム（&lt;code>dev_fee&lt;/code>、&lt;code>dev_fee_paid&lt;/code>、&lt;code>dev_fee_payment_hash&lt;/code>）を追加して貢献を追跡し、デーモン起動時にパーセンテージを検証します。&lt;a href="https://github.com/MostroP2P/mostro/blob/main/docs/DEV_FEE.md">&lt;code>docs/DEV_FEE.md&lt;/code>&lt;/a>の技術ドキュメントでシステムを説明しています。このオプトインモデルにより、運営者は手数料配分の完全な透明性を維持しながら継続的な開発をサポートできます。&lt;/p>
&lt;h2 id="nip-updates">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>新しいNIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-a4/">NIP-A4&lt;/a>（パブリックメッセージ、kind 24）&lt;/strong> - 幅広いクライアントサポートのために設計された通知画面メッセージ用の新しいkind (&lt;a href="https://github.com/nostr-protocol/nips/pull/1988">#1988&lt;/a>)。スレッド化された会話とは異なり、これらのメッセージにはチャット履歴やメッセージチェーンの概念がありません。スレッディングの複雑さを避けるために&lt;code>e&lt;/code>タグではなく&lt;code>q&lt;/code>タグ（引用）を使用し、会話状態を作成することなく受信者の通知フィードに表示されるシンプルな公開通知に最適です。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>重要な変更:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-29/">NIP-29&lt;/a>&lt;/strong> - グループセマンティクスの大幅な明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2106">#2106&lt;/a>)。&lt;code>closed&lt;/code>タグは「書き込み不可」（非メンバーは読み取り専用）を意味するようになり、参加メカニズムから分離されました。新しい&lt;code>hidden&lt;/code>タグは、リレーが非メンバーにメタデータやメンバーイベントを提供することを防ぎ、帯域外の招待なしには発見できない真にプライベートなグループを可能にします。&lt;code>private&lt;/code>タグは、発見のためのパブリックメタデータを許可しながらメッセージの可視性を制御します。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - キュレートされた画像セット用のkind 30006を追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2170">#2170&lt;/a>)、30004（記事）と30005（動画）のパターンに従います。すでにNostriaで実装されています。&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>&lt;/strong> - Android署名アプリの接続開始を明確化 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2166">#2166&lt;/a>)。マルチユーザーセッションを実装する開発者が、バックグラウンドプロセスから呼び出すことで&lt;code>get_public_key&lt;/code>を誤用していました。更新された仕様では、初期接続時に1回だけ呼び出すことを推奨し、一般的な実装の落とし穴を防ぎます。&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-02-and-nip-10">NIP詳細解説: NIP-02とNIP-10&lt;/h2>
&lt;p>今週は、ソーシャル機能に不可欠な2つのNIPを取り上げます: クライアントがあなたがフォローしている人を知る方法と、会話がどのようにスレッド化されるかです。&lt;/p>
&lt;h3 id="nip-02jatopicsnip-02-フォローリスト">&lt;a href="https://nostrcompass.org/ja/topics/nip-02/">NIP-02&lt;/a>: フォローリスト&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/02.md">NIP-02&lt;/a>はkind 3イベントを定義し、フォローリストを保存します。このシンプルなメカニズムが、タイムラインを可能にするソーシャルグラフを支えています。&lt;/p>
&lt;p>&lt;strong>構造:&lt;/strong> kind 3イベントにはフォローしているpubkeyをリストする&lt;code>p&lt;/code>タグが含まれます:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;d7a8f...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">3&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9..af5f&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://alicerelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;alice&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb..8dad&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://bobrelay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;bob&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae..982b&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;e4f8a...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>各&lt;code>p&lt;/code>タグには4つの位置があります: タグ名、フォローしているpubkey（hex）、オプションのリレーURLヒント、オプションの「petname」（ローカルニックネーム）。リレーヒントは他のクライアントにそのユーザーのイベントをどこで見つけるかを伝えます。petnameを使用すると、自己宣言した表示名に頼らずに連絡先に覚えやすい名前を割り当てることができます。&lt;/p>
&lt;p>&lt;strong>置換可能な動作:&lt;/strong> Kind 3は置換可能な範囲（0、3、10000-19999）に属するため、リレーはpubkeyごとに最新バージョンのみを保持します。新しい人をフォローすると、クライアントはすべてのフォローと新しいものを含む完全な新しいkind 3を公開します。つまり、フォローリストは毎回完全でなければならず、増分更新を公開することはできません。&lt;/p>
&lt;p>&lt;strong>タイムラインの構築:&lt;/strong> ホームフィードを構築するために、クライアントはユーザーのkind 3を取得し、すべての&lt;code>p&lt;/code>タグのpubkeyを抽出し、それらの作成者からのkind 1イベントを購読します:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;home&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;authors&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;612ae...&amp;#34;&lt;/span>], &lt;span style="color:#f92672">&amp;#34;limit&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">50&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>リレーはマッチするノートを返し、クライアントはそれらをレンダリングします。kind 3のリレーヒントは、クライアントがフォローしている各ユーザーに対してどのリレーにクエリするかを知るのに役立ちます。&lt;/p>
&lt;p>&lt;strong>Petnameとアイデンティティ:&lt;/strong> petnameフィールドは分散型命名スキームを可能にします。ユーザーがプロフィールで主張する名前を信頼するのではなく、自分自身のラベルを割り当てることができます。クライアントは「alice（私の姉妹）」と表示するかもしれません。ここで「alice」は彼女のkind 0プロフィールから、「私の姉妹」はあなたのpetnameです。これはグローバルなユーザー名では提供できないコンテキストを提供します。&lt;/p>
&lt;p>&lt;strong>実践的な考慮事項:&lt;/strong> kind 3イベントは置換可能で完全でなければならないため、クライアントは更新時に不明なタグを保持する必要があります。別のクライアントがあなたのクライアントが理解しないタグを追加した場合、盲目的に上書きするとそのデータが失われます。ゼロから再構築するのではなく、新しいフォローを追加してください。&lt;/p>
&lt;h3 id="nip-10jatopicsnip-10-テキストノートのスレッディング">&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>: テキストノートのスレッディング&lt;/h3>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips/blob/master/10.md">NIP-10&lt;/a>はkind 1ノートが返信スレッドを形成するためにお互いを参照する方法を規定しています。会話ビューを構築するにはこれを理解することが不可欠です。&lt;/p>
&lt;p>&lt;strong>問題:&lt;/strong> 誰かがノートに返信するとき、クライアントは知る必要があります: これは何への返信か？会話のルートは何か？誰に通知すべきか？NIP-10は&lt;code>e&lt;/code>タグ（イベント参照）と&lt;code>p&lt;/code>タグ（pubkeyメンション）を通じてこれらの質問に答えます。&lt;/p>
&lt;p>&lt;strong>マーク付きタグ（推奨）:&lt;/strong> 現代のクライアントは&lt;code>e&lt;/code>タグで明示的なマーカーを使用します:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;f9c2e...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;a3b9c...&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734912345&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;abc123...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;root&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;def456...&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;91cf9...&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;14aeb...&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;素晴らしいポイント！同意します。&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;b7d3f...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>root&lt;/code>マーカーはスレッドを開始した元のノートを指します。&lt;code>reply&lt;/code>マーカーは回答している特定のノートを指します。ルートに直接返信する場合は、&lt;code>root&lt;/code>のみを使用します（&lt;code>reply&lt;/code>タグは不要）。この区別はレンダリングに重要です: &lt;code>reply&lt;/code>はスレッドビューでのインデントを決定し、&lt;code>root&lt;/code>はすべての返信をグループ化します。&lt;/p>
&lt;p>&lt;strong>スレッディングルール:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>ルートへの直接返信: &lt;code>root&lt;/code>マーカー付きの1つの&lt;code>e&lt;/code>タグ&lt;/li>
&lt;li>返信への返信: 2つの&lt;code>e&lt;/code>タグ、1つは&lt;code>root&lt;/code>、1つは&lt;code>reply&lt;/code>&lt;/li>
&lt;li>&lt;code>root&lt;/code>はスレッド全体で一定のまま。&lt;code>reply&lt;/code>は返信先に応じて変わる&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>通知用のPubkeyタグ:&lt;/strong> 通知されるべき全員の&lt;code>p&lt;/code>タグを含めます。最低限、返信しているノートの作成者をタグ付けします。慣例として、親イベントからのすべての&lt;code>p&lt;/code>タグも含めます（会話の全員がループに留まるように）、さらにコンテンツで@メンションしたユーザーも含めます。&lt;/p>
&lt;p>&lt;strong>リレーヒント:&lt;/strong> &lt;code>e&lt;/code>および&lt;code>p&lt;/code>タグの3番目の位置には、そのイベントまたはユーザーのコンテンツが見つかる可能性のあるリレーURLを含めることができます。これにより、クライアントは元のリレーに接続していなくても参照されているコンテンツを取得できます。&lt;/p>
&lt;p>&lt;strong>非推奨の位置タグ:&lt;/strong> 初期のNostr実装では、マーカーではなくタグの位置から意味を推論していました: 最初の&lt;code>e&lt;/code>タグがルート、最後がリプライ、中間がメンション。このアプローチは曖昧さを生むため非推奨です。マーカーのない&lt;code>e&lt;/code>タグを見た場合、おそらく古いクライアントからのものです。現代の実装は常に明示的なマーカーを使用すべきです。&lt;/p>
&lt;p>&lt;strong>スレッドビューの構築:&lt;/strong> スレッドを表示するには、ルートイベントを取得し、そのルートを参照する&lt;code>e&lt;/code>タグを持つすべてのイベントをクエリします:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#e6db74">&amp;#34;REQ&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;thread&amp;#34;&lt;/span>, {&lt;span style="color:#f92672">&amp;#34;kinds&amp;#34;&lt;/span>: [&lt;span style="color:#ae81ff">1&lt;/span>], &lt;span style="color:#f92672">&amp;#34;#e&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;&amp;lt;root-event-id&amp;gt;&amp;#34;&lt;/span>]}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>結果を&lt;code>created_at&lt;/code>でソートし、&lt;code>reply&lt;/code>マーカーを使用してツリー構造を構築します。&lt;code>reply&lt;/code>がルートを指すイベントはトップレベルの返信です。&lt;code>reply&lt;/code>が別の返信を指すイベントはネストされた応答です。&lt;/p>
&lt;h2 id="releases">リリース&lt;/h2>
&lt;p>&lt;strong>Zeus v0.12.0&lt;/strong> - 先週の&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/#zeus-lightning-wallet">NWC並列支払いサポート&lt;/a>に続き、Lightningウォレットの&lt;a href="https://github.com/ZeusLN/zeus/releases/tag/v0.12.0">メジャーリリース&lt;/a>は、カスタムリレーサポートとバジェット追跡を備えた完全な&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a> Nostr Wallet Connectサービスを搭載。&lt;a href="https://github.com/ZeusLN/zeus/pull/3455">バジェットリロードの修正&lt;/a>により接続が現在の制限を使用することを保証。&lt;a href="https://github.com/ZeusLN/zeus/pull/3460">Lightningアドレスのコピー&lt;/a>は&lt;code>lightning:&lt;/code>プレフィックスを含まなくなり、Nostrプロフィールフィールドでのペーストの問題を修正。&lt;/p>
&lt;p>&lt;strong>Amber v4.0.6&lt;/strong> - Android &lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>署名アプリは署名操作に&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.6">パフォーマンスキャッシュを追加&lt;/a>し、不正なコンテンツの復号時のエラー処理を改善。リレー接続イベントのリトライロジックにより接続の信頼性が向上し、無効な&lt;code>nostrconnect://&lt;/code> URIと権限画面のインタラクションに関するいくつかのクラッシュ修正が行われました。&lt;/p>
&lt;p>&lt;strong>nak v0.17.3&lt;/strong> - コマンドラインNostrツールの&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.3">最新リリース&lt;/a>はLMDBビルドをLinuxに制限し、クロスプラットフォームのコンパイル問題を修正。&lt;/p>
&lt;p>&lt;strong>Aegis v0.3.4&lt;/strong> - クロスプラットフォームNostr署名アプリは&lt;a href="https://nostrcompass.org/ja/topics/nip-55/">NIP-55&lt;/a>で定義された&lt;code>nostrsigner:&lt;/code> URIスキームの&lt;a href="https://github.com/ZharlieW/Aegis/releases/tag/v0.3.4">サポートを追加&lt;/a>し、Amberの接続フローに対応。ローカルリレーデータはバックアップ用にインポートおよびエクスポートが可能になり、リレーソケットエラーのバグ修正とローカルリレーインターフェースのUI改善が含まれています。&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">注目のコードとドキュメントの変更&lt;/h2>
&lt;p>&lt;em>これらはオープンプルリクエストと初期段階の作業であり、マージ前にフィードバックを得るのに最適です。気になるものがあれば、レビューやコメントを検討してください！&lt;/em>&lt;/p>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/damus/pull/3469">ミュートリストの永続化&lt;/a>はコールドスタート時にミュートリストがワイプされる問題を修正。修正により、アプリ初期化中の偶発的な上書きを防ぐガードを追加。&lt;a href="https://github.com/damus-io/damus/pull/3457">プロフィールストリームのタイミング&lt;/a>は、キャッシュされたプロフィールが表示されるまでの約1秒の遅延を排除。以前はビューが購読タスクの再開を待っていましたが、&lt;code>streamProfile()&lt;/code>がNostrDBからキャッシュされたデータをすぐに返すようになり、省略されたpubkeyとプレースホルダー画像が表示されるウィンドウがなくなりました。&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (暗号化メッセージング)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/919">リアルタイムメッセージストリーミング&lt;/a>は、以前のポーリングメカニズムをストリームベースのアーキテクチャに置き換えます。新しい&lt;code>ChatStreamNotifier&lt;/code>はRust SDKのメッセージストリームを直接消費し、時系列順を維持しながら増分更新を効率的に処理します。テストでは応答性の大幅な改善が示されました。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/921">チャットリストAPI&lt;/a>は会話サマリーを取得するための&lt;code>get_chat_list&lt;/code>を追加し、&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/905">安定ソートの修正&lt;/a>はメッセージIDをタイブレーカーとして&lt;code>createdAt&lt;/code>を使用することでメッセージの並べ替えループを防ぎます。&lt;/p>
&lt;h3 id="ndk">NDK (ライブラリ)&lt;/h3>
&lt;p>2つのプルリクエストが劇的なキャッシュパフォーマンスの改善をもたらしました。&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/371">PR #371&lt;/a>はSQLiteキャッシュから読み取ったイベントがすぐに書き戻されるバグを修正し、アプリ起動時に100%の重複書き込みを引き起こしていました。修正は&lt;code>fromCache&lt;/code>ガードを追加し、メモリ内Setを介したO(1)重複チェックを実装。小さな結果セット（&amp;lt;100イベント）では、バイナリエンコーディングのオーバーヘッドの代わりに直接JSONトランスファーを使用。&lt;a href="https://github.com/nostr-dev-kit/ndk/pull/372">PR #372&lt;/a>はキャッシュされたイベントに対する不要な&lt;code>seenEvent&lt;/code>呼び出しを削除。LRUキャッシュルックアップはイベントあたり0.24-0.64msのコストがかかり、5,700のキャッシュイベントで約1.4秒のオーバーヘッドが追加されていました。結果: キャッシュクエリが約3,690msから約22msに短縮（162倍高速化）。&lt;/p>
&lt;h3 id="rust-nostr">rust-nostr (ライブラリ)&lt;/h3>
&lt;p>&lt;a href="https://github.com/rust-nostr/nostr/pull/1176">マルチフィルターREQサポート&lt;/a>が以前のリファクタリングで削除された後に復元されました。SDKは購読リクエストに&lt;code>Vec&amp;lt;Filter&amp;gt;&lt;/code>を再び受け入れ、ORロジックで複数のフィルター条件を組み合わせる効率的なクエリを可能にします。&lt;a href="https://github.com/rust-nostr/nostr/pull/1156">リレー出所&lt;/a>が&lt;code>stream_events*&lt;/code>メソッドに追加され、各ストリーミングイベントには元の&lt;code>RelayUrl&lt;/code>と成功または失敗を示す&lt;code>Result&lt;/code>が含まれるようになり、リレーの信頼性の追跡と接続問題のデバッグに役立ちます。&lt;a href="https://github.com/rust-nostr/nostr/pull/1179">セキュリティ修正&lt;/a>はRUSTSEC-2024-0421に続いて&lt;code>url-fork&lt;/code>依存関係を削除し、既知の脆弱性を排除しました。&lt;/p>
&lt;h3 id="applesauce">Applesauce (ライブラリ)&lt;/h3>
&lt;p>&lt;a href="https://github.com/hzrd149/nostrudel">noStrudel&lt;/a>を支えるTypeScriptライブラリは今週大幅な開発が行われました。新しいモデルには&lt;a href="https://github.com/hzrd149/applesauce">リアクションシステム&lt;/a>とユーザーグループキャスティングが含まれます。ウォレット機能はNIP-60サポート、送信タブ、改善されたトークン回復ツールで拡張されました。新しい&lt;code>user.directMessageRelays$&lt;/code>プロパティがDMリレー設定を公開。すべてのアクションは非同期インターフェースを使用するようにリファクタリングされ（非同期ジェネレーターを削除）、バグ修正で暗号化コンテンツの復元と時間ベースのイベントフィルターのエッジケースに対処しました。&lt;/p>
&lt;h3 id="tenex">Tenex (AIエージェント)&lt;/h3>
&lt;p>Nostr上に構築された&lt;a href="https://github.com/tenex-chat/tenex">マルチエージェント調整システム&lt;/a>は&lt;a href="https://github.com/pablof7z/tenex/pull/38">5つのマージされたPR&lt;/a>でRAL（Request-Action-Lifecycle）アーキテクチャを導入しました。RALにより、エージェントはタスクを委任するときに一時停止し、結果が到着したときに再開でき、会話スコープの状態永続化を備えています。委任ツール（&lt;code>delegate&lt;/code>、&lt;code>ask&lt;/code>、&lt;code>delegate_followup&lt;/code>、&lt;code>delegate_external&lt;/code>）はブロッキングではなくNostrイベントを公開して停止シグナルを返すようになりました。リファクタリングにはAI SDK v6マイグレーション、決定論的LLMインタラクション記録のためのVCRテストインフラストラクチャ、マルチモーダル画像サポートが含まれています。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何かを構築していますか？共有したいニュースがありますか？プロジェクトを取り上げてほしいですか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>。またはNostrで見つけてください。&lt;/p></content:encoded></item><item><title>Nostr Compass #1</title><link>https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/</guid><description>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムに特化した週刊ニュースレターです。私たちの使命は、開発者、リレー運営者、ビルダーの皆さんにネットワーク全体の重要な動向をお伝えすることです。NIP提案からクライアントリリース、実装のベストプラクティスまで、技術的な正確さ、中立性、深さをもってプロトコルの進化を記録していきます。&lt;/p>
&lt;p>Nostr Compassは&lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>に触発されています。彼らの長年にわたるBitcoin技術知識の発展への献身的な取り組みは、プロトコルに焦点を当てたニュースレターの基準を確立しました。その模範に感謝し、同じ厳密さをNostrエコシステムにもたらすことを目指しています。&lt;/p>
&lt;p>この創刊号では、週刊フォーマットを確立します。毎週水曜日にNIPの更新、リリースノート、開発ハイライト、技術ガイダンスをお届けします。クライアントを構築している方、リレーを運営している方、プロトコルに貢献している方、どなたにとってもNostr Compassはエコシステム全体で何が起きているかを知るための信頼できる情報源となることを目指しています。&lt;/p>
&lt;h2 id="nostrとは">Nostrとは？&lt;/h2>
&lt;p>&lt;em>これが創刊号のため、Nostrの仕組みについての入門から始めます。常連の読者は&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/#news--updates">ニュースと更新情報&lt;/a>に進んでください。&lt;/em>&lt;/p>
&lt;p>Nostr（Notes and Other Stuff Transmitted by Relays）は、ソーシャルネットワーキングとメッセージングのための分散型プロトコルです。従来のプラットフォームとは異なり、Nostrには中央サーバーがなく、それを管理する会社もなく、単一障害点もありません。ユーザーは暗号鍵ペアを通じて自分のアイデンティティを所有し、コンテンツは誰でも運営できる独立したリレーサーバーを通じて流れます。&lt;/p>
&lt;p>&lt;strong>仕組み:&lt;/strong> ユーザーは鍵ペア（nsecと呼ばれる秘密鍵とnpubと呼ばれる公開鍵）を生成します。秘密鍵は「イベント」と呼ばれるメッセージに署名し、公開鍵はあなたのアイデンティティとして機能します。イベントはリレーに送信され、リレーはそれを保存して他のユーザーに転送します。鍵を自分で管理するため、アイデンティティやフォロワーを失うことなくクライアントやリレーを切り替えることができます。&lt;/p>
&lt;p>&lt;strong>なぜ重要か:&lt;/strong> Nostrはリレーの多様性による検閲耐性（1つのリレーがあなたを禁止しても、他のリレーがコンテンツを提供できる）、ポータビリティ（あなたのアイデンティティはどのNostrアプリでも機能する）、相互運用性（すべてのNostrクライアントは同じプロトコルを話す）を提供します。何を見るかを決めるアルゴリズムも、広告も、データ収集もありません。&lt;/p>
&lt;p>&lt;strong>今日のエコシステム:&lt;/strong> Nostrはマイクロブログ（Twitter/Xのような）、長文コンテンツ（Mediumのような）、ダイレクトメッセージ、マーケットプレイス、ライブストリーミングなどをサポートしています。クライアントにはDamus（iOS）、Amethyst（Android）、Primal、Coracleなど数十のものがあります。Lightning Networkの統合により「zaps」を通じた即時決済が可能です。プロトコルは機能を拡張するコミュニティ主導の仕様であるNIPs（Nostr Implementation Possibilities）を通じて進化し続けています。&lt;/p>
&lt;h2 id="news">ニュース&lt;/h2>
&lt;p>&lt;strong>NIP-BEがマージ: Bluetooth Low Energyサポート&lt;/strong> - 重要な新機能が&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">プロトコルに追加されました&lt;/a>。&lt;a href="https://nostrcompass.org/ja/topics/nip-be/">NIP-BE&lt;/a>はNostrアプリケーションがBluetooth Low Energyを介してどのように通信・同期できるかを規定しています。これにより、オフライン対応アプリがインターネット接続なしで近くのデバイス間でデータを同期できるようになります。仕様はWebSocketリレーパターンをBLEの制約に適応させ、DEFLATEの圧縮とチャンクメッセージングを使用してBLEの小さなMTUサイズ（20-256バイト）を処理します。デバイスはUUID比較に基づいて役割を交渉し、より高いUUIDを持つ方がGATTサーバーになります。&lt;/p>
&lt;p>&lt;strong>MIP-05: プライバシー保護プッシュ通知&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot Protocol&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/mip-05/">MIP-05&lt;/a>（&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">仕様&lt;/a>）を公開しました。これはプライバシーを維持するプッシュ通知の仕様です。従来のプッシュシステムはサーバーがデバイストークンとユーザーアイデンティティを知る必要がありましたが、MIP-05はECDH+HKDFとChaCha20-Poly1305でデバイストークンを暗号化し、一時的な鍵を使用して相関を防ぐことでこれを解決します。3イベントのゴシッププロトコル（kind 447-449）が暗号化されたトークンをグループメンバー間で同期し、通知は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>のgift wrappingとデコイトークンを使用してグループサイズを隠します。これにより、WhiteNoiseや他のMarmotクライアントがユーザープライバシーを損なうことなくタイムリーな通知を配信できます。&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10: 新しいURIスキーム&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアプロトコルは&lt;a href="https://nostrcompass.org/ja/topics/bud-10/">BUD-10&lt;/a>（&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">仕様&lt;/a>）を通じてカスタムURIスキームを取得します。新しい&lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code>フォーマットは、ファイルハッシュ、拡張子、サイズ、複数のサーバーヒント、&lt;a href="https://nostrcompass.org/ja/topics/bud-03/">BUD-03&lt;/a>サーバー発見のための作成者pubkeyを埋め込みます。これにより、blobリンクがサーバー間の自動フォールバックを可能にすることで、静的HTTP URLよりも耐障害性が高くなります。&lt;/p>
&lt;p>&lt;strong>Shopstrマーケットプレイスの更新&lt;/strong> - Nostrネイティブマーケットプレイスは決済用に&lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">Nostr Wallet Connectを実装し&lt;/a>（&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>）、&lt;a href="https://nostrcompass.org/ja/topics/nip-40/">NIP-40&lt;/a>を使用した&lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">リスティングの有効期限を追加し&lt;/a>、売り手向けの&lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">割引コード&lt;/a>を導入しました。&lt;/p>
&lt;h2 id="nip-updates">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>新しいNIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Bluetooth Low Energyメッセージングとデバイス同期 (&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - プロトコル内でゲートコンテンツを処理するためのペイウォール/プレミアムコンテンツ標準 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>重要な変更:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Kind 0ユーザーメタデータにオプションの&lt;code>languages&lt;/code>配列を追加。IETF BCP 47タグを使用して複数の優先言語を指定でき、コンテンツ発見とリレーマッチングが改善されます (&lt;a href="https://github.com/nostr-protocol/nips/pull/2159">#2159&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - &lt;code>expires_at&lt;/code>と&lt;code>expiration&lt;/code>タグによるP2P取引の注文有効期限サポートを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2118">#2118&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Gift wrapイベントがNIP-09/NIP-62リクエストで削除可能に (&lt;a href="https://github.com/nostr-protocol/nips/pull/2131">#2131&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - 汎用ブックマークからハッシュタグとURLタグを削除。ハッシュタグはkind 30015を使用 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2133">#2133&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - &lt;code>a&lt;/code>タグサポートによる置換可能イベントの汎用リポストを改善 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2132">#2132&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - 文言を洗練し、DMへのkind 7リアクションサポートを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2098">#2098&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - リレー公開鍵識別のための&lt;code>self&lt;/code>フィールドを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/1764">#1764&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-01-and-nip-19">NIP詳細解説: NIP-01とNIP-19&lt;/h2>
&lt;p>この創刊号では、すべてのNostr開発者が理解すべき2つの基礎的なNIPを取り上げます。トピックページで&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>をご覧ください。&lt;/p></description><content:encoded>&lt;p>Nostr Compassへようこそ。Nostrプロトコルエコシステムに特化した週刊ニュースレターです。私たちの使命は、開発者、リレー運営者、ビルダーの皆さんにネットワーク全体の重要な動向をお伝えすることです。NIP提案からクライアントリリース、実装のベストプラクティスまで、技術的な正確さ、中立性、深さをもってプロトコルの進化を記録していきます。&lt;/p>
&lt;p>Nostr Compassは&lt;a href="https://bitcoinops.org/">Bitcoin Optech&lt;/a>に触発されています。彼らの長年にわたるBitcoin技術知識の発展への献身的な取り組みは、プロトコルに焦点を当てたニュースレターの基準を確立しました。その模範に感謝し、同じ厳密さをNostrエコシステムにもたらすことを目指しています。&lt;/p>
&lt;p>この創刊号では、週刊フォーマットを確立します。毎週水曜日にNIPの更新、リリースノート、開発ハイライト、技術ガイダンスをお届けします。クライアントを構築している方、リレーを運営している方、プロトコルに貢献している方、どなたにとってもNostr Compassはエコシステム全体で何が起きているかを知るための信頼できる情報源となることを目指しています。&lt;/p>
&lt;h2 id="nostrとは">Nostrとは？&lt;/h2>
&lt;p>&lt;em>これが創刊号のため、Nostrの仕組みについての入門から始めます。常連の読者は&lt;a href="https://nostrcompass.org/ja/newsletters/2025-12-17-newsletter/#news--updates">ニュースと更新情報&lt;/a>に進んでください。&lt;/em>&lt;/p>
&lt;p>Nostr（Notes and Other Stuff Transmitted by Relays）は、ソーシャルネットワーキングとメッセージングのための分散型プロトコルです。従来のプラットフォームとは異なり、Nostrには中央サーバーがなく、それを管理する会社もなく、単一障害点もありません。ユーザーは暗号鍵ペアを通じて自分のアイデンティティを所有し、コンテンツは誰でも運営できる独立したリレーサーバーを通じて流れます。&lt;/p>
&lt;p>&lt;strong>仕組み:&lt;/strong> ユーザーは鍵ペア（nsecと呼ばれる秘密鍵とnpubと呼ばれる公開鍵）を生成します。秘密鍵は「イベント」と呼ばれるメッセージに署名し、公開鍵はあなたのアイデンティティとして機能します。イベントはリレーに送信され、リレーはそれを保存して他のユーザーに転送します。鍵を自分で管理するため、アイデンティティやフォロワーを失うことなくクライアントやリレーを切り替えることができます。&lt;/p>
&lt;p>&lt;strong>なぜ重要か:&lt;/strong> Nostrはリレーの多様性による検閲耐性（1つのリレーがあなたを禁止しても、他のリレーがコンテンツを提供できる）、ポータビリティ（あなたのアイデンティティはどのNostrアプリでも機能する）、相互運用性（すべてのNostrクライアントは同じプロトコルを話す）を提供します。何を見るかを決めるアルゴリズムも、広告も、データ収集もありません。&lt;/p>
&lt;p>&lt;strong>今日のエコシステム:&lt;/strong> Nostrはマイクロブログ（Twitter/Xのような）、長文コンテンツ（Mediumのような）、ダイレクトメッセージ、マーケットプレイス、ライブストリーミングなどをサポートしています。クライアントにはDamus（iOS）、Amethyst（Android）、Primal、Coracleなど数十のものがあります。Lightning Networkの統合により「zaps」を通じた即時決済が可能です。プロトコルは機能を拡張するコミュニティ主導の仕様であるNIPs（Nostr Implementation Possibilities）を通じて進化し続けています。&lt;/p>
&lt;h2 id="news">ニュース&lt;/h2>
&lt;p>&lt;strong>NIP-BEがマージ: Bluetooth Low Energyサポート&lt;/strong> - 重要な新機能が&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">プロトコルに追加されました&lt;/a>。&lt;a href="https://nostrcompass.org/ja/topics/nip-be/">NIP-BE&lt;/a>はNostrアプリケーションがBluetooth Low Energyを介してどのように通信・同期できるかを規定しています。これにより、オフライン対応アプリがインターネット接続なしで近くのデバイス間でデータを同期できるようになります。仕様はWebSocketリレーパターンをBLEの制約に適応させ、DEFLATEの圧縮とチャンクメッセージングを使用してBLEの小さなMTUサイズ（20-256バイト）を処理します。デバイスはUUID比較に基づいて役割を交渉し、より高いUUIDを持つ方がGATTサーバーになります。&lt;/p>
&lt;p>&lt;strong>MIP-05: プライバシー保護プッシュ通知&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/marmot/">Marmot Protocol&lt;/a>は&lt;a href="https://nostrcompass.org/ja/topics/mip-05/">MIP-05&lt;/a>（&lt;a href="https://github.com/marmot-protocol/mips/blob/main/mip-05.md">仕様&lt;/a>）を公開しました。これはプライバシーを維持するプッシュ通知の仕様です。従来のプッシュシステムはサーバーがデバイストークンとユーザーアイデンティティを知る必要がありましたが、MIP-05はECDH+HKDFとChaCha20-Poly1305でデバイストークンを暗号化し、一時的な鍵を使用して相関を防ぐことでこれを解決します。3イベントのゴシッププロトコル（kind 447-449）が暗号化されたトークンをグループメンバー間で同期し、通知は&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>のgift wrappingとデコイトークンを使用してグループサイズを隠します。これにより、WhiteNoiseや他のMarmotクライアントがユーザープライバシーを損なうことなくタイムリーな通知を配信できます。&lt;/p>
&lt;p>&lt;strong>Blossom BUD-10: 新しいURIスキーム&lt;/strong> - &lt;a href="https://nostrcompass.org/ja/topics/blossom/">Blossom&lt;/a>メディアプロトコルは&lt;a href="https://nostrcompass.org/ja/topics/bud-10/">BUD-10&lt;/a>（&lt;a href="https://github.com/hzrd149/blossom/blob/master/buds/10.md">仕様&lt;/a>）を通じてカスタムURIスキームを取得します。新しい&lt;code>blossom:&amp;lt;sha256&amp;gt;.ext&lt;/code>フォーマットは、ファイルハッシュ、拡張子、サイズ、複数のサーバーヒント、&lt;a href="https://nostrcompass.org/ja/topics/bud-03/">BUD-03&lt;/a>サーバー発見のための作成者pubkeyを埋め込みます。これにより、blobリンクがサーバー間の自動フォールバックを可能にすることで、静的HTTP URLよりも耐障害性が高くなります。&lt;/p>
&lt;p>&lt;strong>Shopstrマーケットプレイスの更新&lt;/strong> - Nostrネイティブマーケットプレイスは決済用に&lt;a href="https://github.com/shopstr-eng/shopstr/pull/202">Nostr Wallet Connectを実装し&lt;/a>（&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>）、&lt;a href="https://nostrcompass.org/ja/topics/nip-40/">NIP-40&lt;/a>を使用した&lt;a href="https://github.com/shopstr-eng/shopstr/pull/203">リスティングの有効期限を追加し&lt;/a>、売り手向けの&lt;a href="https://github.com/shopstr-eng/shopstr/pull/210">割引コード&lt;/a>を導入しました。&lt;/p>
&lt;h2 id="nip-updates">NIP更新&lt;/h2>
&lt;p>&lt;a href="https://github.com/nostr-protocol/nips">NIPsリポジトリ&lt;/a>への最近の変更:&lt;/p>
&lt;p>&lt;strong>新しいNIP:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-be/">NIP-BE&lt;/a>&lt;/strong> - Bluetooth Low Energyメッセージングとデバイス同期 (&lt;a href="https://github.com/nostr-protocol/nips/pull/1979">#1979&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-63/">NIP-63&lt;/a>&lt;/strong> - プロトコル内でゲートコンテンツを処理するためのペイウォール/プレミアムコンテンツ標準 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2156">#2156&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>重要な変更:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-24/">NIP-24&lt;/a>&lt;/strong> - Kind 0ユーザーメタデータにオプションの&lt;code>languages&lt;/code>配列を追加。IETF BCP 47タグを使用して複数の優先言語を指定でき、コンテンツ発見とリレーマッチングが改善されます (&lt;a href="https://github.com/nostr-protocol/nips/pull/2159">#2159&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-69/">NIP-69&lt;/a>&lt;/strong> - &lt;code>expires_at&lt;/code>と&lt;code>expiration&lt;/code>タグによるP2P取引の注文有効期限サポートを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2118">#2118&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-59/">NIP-59&lt;/a>&lt;/strong> - Gift wrapイベントがNIP-09/NIP-62リクエストで削除可能に (&lt;a href="https://github.com/nostr-protocol/nips/pull/2131">#2131&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-51/">NIP-51&lt;/a>&lt;/strong> - 汎用ブックマークからハッシュタグとURLタグを削除。ハッシュタグはkind 30015を使用 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2133">#2133&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-18/">NIP-18&lt;/a>&lt;/strong> - &lt;code>a&lt;/code>タグサポートによる置換可能イベントの汎用リポストを改善 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2132">#2132&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-17/">NIP-17&lt;/a>&lt;/strong> - 文言を洗練し、DMへのkind 7リアクションサポートを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/2098">#2098&lt;/a>)&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://nostrcompass.org/ja/topics/nip-11/">NIP-11&lt;/a>&lt;/strong> - リレー公開鍵識別のための&lt;code>self&lt;/code>フィールドを追加 (&lt;a href="https://github.com/nostr-protocol/nips/pull/1764">#1764&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="nip-deep-dive-nip-01-and-nip-19">NIP詳細解説: NIP-01とNIP-19&lt;/h2>
&lt;p>この創刊号では、すべてのNostr開発者が理解すべき2つの基礎的なNIPを取り上げます。トピックページで&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>と&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>をご覧ください。&lt;/p>
&lt;h3 id="nip-01-基本プロトコル">NIP-01: 基本プロトコル&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-01/">NIP-01&lt;/a>はコアプロトコルを定義します。Nostrのすべてはこの仕様の上に構築されています。&lt;/p>
&lt;p>&lt;strong>イベント&lt;/strong>は唯一のオブジェクト型です。各イベントには以下が含まれます:&lt;/p>
&lt;ul>
&lt;li>&lt;code>id&lt;/code>: シリアライズされたイベントのSHA256ハッシュ（イベントの一意識別子）&lt;/li>
&lt;li>&lt;code>pubkey&lt;/code>: 作成者の公開鍵（32バイトhex、secp256k1）&lt;/li>
&lt;li>&lt;code>created_at&lt;/code>: Unixタイムスタンプ&lt;/li>
&lt;li>&lt;code>kind&lt;/code>: イベントタイプを分類する整数&lt;/li>
&lt;li>&lt;code>tags&lt;/code>: メタデータ用の配列の配列&lt;/li>
&lt;li>&lt;code>content&lt;/code>: ペイロード（解釈はkindに依存）&lt;/li>
&lt;li>&lt;code>sig&lt;/code>: pubkeyがこのイベントを作成したことを証明するSchnorr署名&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Kind&lt;/strong>はリレーがイベントを保存する方法を決定します:&lt;/p>
&lt;ul>
&lt;li>通常イベント (1, 2, 4-44, 1000-9999): 通常どおり保存され、すべてのバージョンが保持&lt;/li>
&lt;li>置換可能イベント (0, 3, 10000-19999): pubkeyごとに最新のもののみ保持&lt;/li>
&lt;li>一時的イベント (20000-29999): 保存されず、購読者に転送のみ&lt;/li>
&lt;li>アドレス指定可能イベント (30000-39999): pubkey + kind + &lt;code>d&lt;/code>タグの組み合わせごとに最新のものを保持&lt;/li>
&lt;/ul>
&lt;p>Kind 0はユーザーメタデータ（プロフィール）、kind 1はテキストノート（基本的な投稿）、kind 3はフォローリストです。&lt;/p>
&lt;p>&lt;strong>Kind 1: テキストノート&lt;/strong>はソーシャルNostrの心臓部です。kind 1イベントはツイートに似た短文投稿です。&lt;code>content&lt;/code>フィールドにはメッセージテキスト（プレーンテキスト、ただしクライアントはしばしばmarkdownをレンダリング）が含まれます。タグにより返信、メンション、参照が可能になります:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;pubkey&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;32-byte-hex&amp;gt;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;created_at&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1734480000&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;kind&amp;#34;&lt;/span>: &lt;span style="color:#ae81ff">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;content&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hello Nostr! Check out @jb55&amp;#39;s work on Damus.&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;tags&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;e&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;replied-to-event-id&amp;gt;&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;wss://relay.example.com&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;reply&amp;#34;&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#e6db74">&amp;#34;p&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;&amp;lt;jb55-pubkey&amp;gt;&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;sig&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;lt;64-byte-hex&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>「reply」マーカー付きの&lt;code>e&lt;/code>タグは、これが返信であることを示します（スレッディング規約については&lt;a href="https://nostrcompass.org/ja/topics/nip-10/">NIP-10&lt;/a>を参照）。&lt;code>p&lt;/code>タグはユーザーをメンションし、クライアントがそのユーザーに通知し、生のpubkeyの代わりに名前をレンダリングできるようにします。クライアントはメンションされたユーザーのkind 0イベントを取得して、表示名と画像を取得します。&lt;/p>
&lt;p>タイムラインを構築するために、クライアントはフォローしているpubkeyからのkind 1イベントを購読します: &lt;code>[&amp;quot;REQ&amp;quot;, &amp;quot;feed&amp;quot;, {&amp;quot;kinds&amp;quot;: [1], &amp;quot;authors&amp;quot;: [&amp;quot;&amp;lt;pubkey1&amp;gt;&amp;quot;, &amp;quot;&amp;lt;pubkey2&amp;gt;&amp;quot;, ...], &amp;quot;limit&amp;quot;: 50}]&lt;/code>。リレーはマッチするノートを返し、クライアントはそれらを時系列でレンダリングします。&lt;/p>
&lt;p>&lt;strong>アドレス指定可能イベント&lt;/strong> (30000-39999)は置換可能イベントのように機能しますが、追加の識別子として&lt;code>d&lt;/code>タグを使用します。リレーはpubkey + kind + dタグの組み合わせごとに最新バージョンのみを保持します。これにより、編集可能な記事、商品リスト、またはユーザーごとに複数の置換可能なアイテムが必要な場合に対応できます。&lt;/p>
&lt;p>&lt;strong>タグ&lt;/strong>は最初の要素がタグ名である配列です。標準的な1文字タグ（&lt;code>e&lt;/code>、&lt;code>p&lt;/code>、&lt;code>a&lt;/code>、&lt;code>d&lt;/code>、&lt;code>t&lt;/code>）はリレーによってインデックス化され、効率的なクエリが可能です。例えば、&lt;code>[&amp;quot;e&amp;quot;, &amp;quot;&amp;lt;event-id&amp;gt;&amp;quot;]&lt;/code>は別のイベントを参照し、&lt;code>[&amp;quot;p&amp;quot;, &amp;quot;&amp;lt;pubkey&amp;gt;&amp;quot;]&lt;/code>はユーザーを参照します。&lt;/p>
&lt;p>&lt;strong>クライアント-リレー通信&lt;/strong>はWebSocket接続を使用し、JSONの配列をメッセージとして使用します。最初の要素がメッセージタイプを識別します。&lt;/p>
&lt;p>クライアントからリレーへ:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;event&amp;gt;]&lt;/code> - リレーにイベントを公開&lt;/li>
&lt;li>&lt;code>[&amp;quot;REQ&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;filter&amp;gt;, ...]&lt;/code> - フィルターにマッチするイベントを購読&lt;/li>
&lt;li>&lt;code>[&amp;quot;CLOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - 購読を終了&lt;/li>
&lt;/ul>
&lt;p>リレーからクライアントへ:&lt;/p>
&lt;ul>
&lt;li>&lt;code>[&amp;quot;EVENT&amp;quot;, &amp;lt;sub-id&amp;gt;, &amp;lt;event&amp;gt;]&lt;/code> - 購読にマッチするイベントを配信&lt;/li>
&lt;li>&lt;code>[&amp;quot;EOSE&amp;quot;, &amp;lt;sub-id&amp;gt;]&lt;/code> - 「保存されたイベントの終わり」 - リレーはすべての履歴マッチを送信し、今後は新しいイベントが到着したときのみ送信&lt;/li>
&lt;li>&lt;code>[&amp;quot;OK&amp;quot;, &amp;lt;event-id&amp;gt;, &amp;lt;true|false&amp;gt;, &amp;lt;message&amp;gt;]&lt;/code> - イベントが受け入れられたか拒否されたか（および理由）を確認&lt;/li>
&lt;li>&lt;code>[&amp;quot;NOTICE&amp;quot;, &amp;lt;message&amp;gt;]&lt;/code> - リレーからの人間が読めるメッセージ&lt;/li>
&lt;/ul>
&lt;p>購読フロー: クライアントは購読IDとフィルターを含む&lt;code>REQ&lt;/code>を送信し、リレーはマッチする&lt;code>EVENT&lt;/code>メッセージで応答し、履歴に追いついたことを示す&lt;code>EOSE&lt;/code>を送信します。&lt;code>EOSE&lt;/code>の後、新しい&lt;code>EVENT&lt;/code>メッセージはリアルタイムです。クライアントは完了したら&lt;code>CLOSE&lt;/code>を送信します。&lt;/p>
&lt;p>&lt;strong>フィルター&lt;/strong>は取得するイベントを指定します。フィルターオブジェクトには以下を含めることができます: &lt;code>ids&lt;/code>（イベントID）、&lt;code>authors&lt;/code>（pubkey）、&lt;code>kinds&lt;/code>（イベントタイプ）、&lt;code>#e&lt;/code>/&lt;code>#p&lt;/code>/&lt;code>#t&lt;/code>（タグ値）、&lt;code>since&lt;/code>/&lt;code>until&lt;/code>（タイムスタンプ）、&lt;code>limit&lt;/code>（最大結果数）。1つのフィルター内のすべての条件はANDロジックを使用します。&lt;code>REQ&lt;/code>に複数のフィルターを含めることができ、それらはORロジックで結合されます - 1つの購読で異なるイベントタイプを取得するのに便利です。&lt;/p>
&lt;h3 id="nip-19-bech32エンコード識別子">NIP-19: Bech32エンコード識別子&lt;/h3>
&lt;p>&lt;a href="https://nostrcompass.org/ja/topics/nip-19/">NIP-19&lt;/a>は、Nostrのどこでも見かける人間に優しいフォーマットを定義します: npub、nsec、noteなど。これらはプロトコル自体では使用されません（プロトコルはhexを使用）が、共有と表示には不可欠です。&lt;/p>
&lt;p>&lt;strong>なぜbech32か？&lt;/strong> 生のhex鍵はコピー時にエラーが発生しやすく、視覚的に区別しにくいです。Bech32エンコーディングは人間が読めるプレフィックスとチェックサムを追加します。&lt;code>npub&lt;/code>（公開鍵）を&lt;code>nsec&lt;/code>（秘密鍵）や&lt;code>note&lt;/code>（イベントID）とすぐに区別できます。&lt;/p>
&lt;p>&lt;strong>基本フォーマット&lt;/strong>は生の32バイト値をエンコードします:&lt;/p>
&lt;ul>
&lt;li>&lt;code>npub&lt;/code> - 公開鍵（あなたのアイデンティティ、共有しても安全）&lt;/li>
&lt;li>&lt;code>nsec&lt;/code> - 秘密鍵（秘密に保つ、署名に使用）&lt;/li>
&lt;li>&lt;code>note&lt;/code> - イベントID（特定のイベントを参照）&lt;/li>
&lt;/ul>
&lt;p>例: hexのpubkey &lt;code>3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d&lt;/code>は&lt;code>npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&lt;/code>になります。&lt;/p>
&lt;p>&lt;strong>共有可能識別子&lt;/strong>はTLV（Type-Length-Value）エンコーディングを使用してメタデータを含みます:&lt;/p>
&lt;ul>
&lt;li>&lt;code>nprofile&lt;/code> - リレーヒント付きプロフィール（クライアントがユーザーを見つけるのに役立つ）&lt;/li>
&lt;li>&lt;code>nevent&lt;/code> - リレーヒント、作成者pubkey、kindを含むイベント&lt;/li>
&lt;li>&lt;code>naddr&lt;/code> - アドレス指定可能イベント参照（pubkey + kind + dタグ + リレー）&lt;/li>
&lt;/ul>
&lt;p>これらは重要な問題を解決します: 誰かがノートIDを共有したとき、どのリレーがそれを持っているかをどうやって知るのでしょうか？&lt;code>nevent&lt;/code>はイベントIDと推奨リレーをバンドルし、共有をより信頼性の高いものにします。&lt;/p>
&lt;p>&lt;strong>重要:&lt;/strong> プロトコル自体ではbech32フォーマットを使用しないでください。イベント、リレーメッセージ、NIP-05レスポンスはhexを使用する必要があります。Bech32は純粋に人間用インターフェースのためのものです: 表示、コピー/ペースト、QRコード、URL。&lt;/p>
&lt;h2 id="releases">リリース&lt;/h2>
&lt;p>&lt;strong>Amber v4.0.4&lt;/strong> - Android署名アプリはNullPointerExceptionを修正し、アクティビティ画面のパフォーマンスを改善し、一部のイベントkindの翻訳を追加しました。以前のv4.0.3リリースでは、刷新された暗号化/復号化UI、アカウントのエクスポート/インポート、アカウントごとのリレー処理、bunkerのpingサポート、クラッシュレポートが追加されました。&lt;a href="https://github.com/greenart7c3/Amber/releases/tag/v4.0.4">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Coracle 0.6.28&lt;/strong> - WebクライアントのバグFixリリース。トピックフィード、imgproxyが無効な場合の画像処理、非リンクハイライトソースのリンク化を修正しました。&lt;a href="https://github.com/coracle-social/coracle/releases/tag/0.6.28">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Flotilla v1.6.2&lt;/strong> - Discordライクなコミュニティクライアントはモーダルのスクロールとスタイルの問題を修正。このサイクルの以前のリリースでは、通知用のオプションのバッジとサウンド、改善されたリンクレンダリング、招待リンク用のQRコードスキャン、合理化されたウォレットセットアップが追加されました。&lt;a href="https://github.com/coracle-social/flotilla/releases/tag/1.6.2">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>nak v0.17.2&lt;/strong> - コマンドラインNostrツールはNIPリファレンスをすばやく検索するための新しい&lt;code>nip&lt;/code>コマンドを追加し、gitリポジトリ処理とstdinイベント処理の修正も行いました。&lt;a href="https://github.com/fiatjaf/nak/releases/tag/v0.17.2">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>White Noise v0.2.1&lt;/strong> - MLSベースの暗号化メッセージングアプリのメジャーリリース。Blossomを介した画像共有、バックグラウンド同期、プッシュ通知、8言語のローカライズ、グループメンバー管理を追加。&lt;a href="https://github.com/marmot-protocol/whitenoise/releases/tag/v0.2.1%2B14">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Amethyst v1.04.2&lt;/strong> - フォローリスト/パック、新しいタイムラインフィルター、画像ギャラリー、H.265動画圧縮（50%小さいファイル）を導入した機能リリース。Kotlin Multiplatformマイグレーションを完了。&lt;a href="https://github.com/vitorpamplona/amethyst/releases/tag/v1.04.2">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Mostro v0.15.5&lt;/strong> - NIP-69注文有効期限サポートと改善された取引履歴レスポンスを含むP2P取引プラットフォームの更新。&lt;a href="https://github.com/MostroP2P/mostro/releases/tag/v0.15.5">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Nosflare v8.9.26&lt;/strong> - Cloudflareインフラストラクチャ上に構築されたサーバーレスNostrリレー。このリリースはwebsocketの障害を引き起こす可能性のあるバグに対処する重要なホットフィックスを提供し、リレーに依存するユーザーとアプリケーションにより安定した接続を保証します。&lt;a href="https://github.com/Spl0itable/nosflare/releases/tag/v8.9.26">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Noscall v0.4.1&lt;/strong> - Nostrベースの安全な音声およびビデオ通話アプリ。このリリースはMeページのポップアップUIを改善し、いくつかの既知の問題を修正して、安定性と通話の信頼性が向上しました。&lt;a href="https://github.com/sanah9/noscall/releases/tag/v0.4.1-release">リリース&lt;/a>&lt;/p>
&lt;p>&lt;strong>Gitplaza v0.25.0&lt;/strong> - Git関連のアクティビティに焦点を当てたデスクトップNostrクライアント。このリリースは受信箱フィードに高度なkindフィルターを導入し、フィルターに通常のzapsを含め、タブテキストのフォーマットを簡素化しました。パフォーマンスの改善により、コメントツリーの読み込みが最適化され、不要なデータベースクエリが削減され、より高速な表示のためにキャッシュされたコメントブランチを使用します。&lt;a href="https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0">リリース&lt;/a>&lt;/p>
&lt;h2 id="notable-code-and-documentation-changes">注目のコードとドキュメントの変更&lt;/h2>
&lt;h3 id="damus-ios">Damus (iOS)&lt;/h3>
&lt;p>クラッシュとUIの修正に焦点を当てた安定性の改善: 作成ビューの&lt;a href="https://github.com/damus-io/damus/pull/3377">カーソルジャンプ修正&lt;/a>、トランザクションの安全性のためにSwiftの&lt;code>~Copyable&lt;/code>型を使用した&lt;a href="https://github.com/damus-io/damus/pull/3366">NostrDBインターフェースの再設計&lt;/a>、アクションバーの再インスタンス化を修正する&lt;a href="https://github.com/damus-io/damus/pull/3341">スレッドUIの安定性&lt;/a>、AttributeGraphサイクルによる&lt;a href="https://github.com/damus-io/damus/pull/3346">ミュートリストのフリーズ&lt;/a>、クロススレッドトランザクションクリーンアップによる&lt;a href="https://github.com/damus-io/damus/pull/3334">プロフィールクラッシュ&lt;/a>。またAIコーディングエージェント用の&lt;a href="https://github.com/damus-io/damus/pull/3293">AGENTS.md&lt;/a>ガイドラインも追加。&lt;/p>
&lt;h3 id="notedeck">Notedeck (デスクトップ/モバイル)&lt;/h3>
&lt;p>&lt;a href="https://github.com/damus-io/notedeck/pull/1191">セキュアキーストレージ&lt;/a>はnsecを自動マイグレーションでOSセキュアストアに移動。&lt;a href="https://github.com/damus-io/notedeck/pull/1201">将来のノートフィルタリング&lt;/a>は24時間以上先の日付のイベントを非表示にします（アンチスパム）。&lt;a href="https://github.com/damus-io/notedeck/pull/1183">neventコピー&lt;/a>にリレーヒントを含めるようになりました。また: &lt;a href="https://github.com/damus-io/notedeck/pull/1212">プロフィールカラムのクイック追加&lt;/a>、&lt;a href="https://github.com/damus-io/notedeck/pull/1208">キーボードナビゲーション&lt;/a>、&lt;a href="https://github.com/damus-io/notedeck/pull/1210">メディア読み込みの最適化&lt;/a>。&lt;/p>
&lt;h3 id="amethyst-android">Amethyst (Android)&lt;/h3>
&lt;p>[&lt;a href="https://nostrcompass.org/ja/topics/nip-46/">NIP-46&lt;/a>リモート署名](&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1555">https://github.com/vitorpamplona/amethyst/pull/1555&lt;/a>)のNostr Connectサポート。&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1586">ブックマーク整理&lt;/a>で公開/非公開リスト管理。リレー情報解析のエッジケースに対する&lt;a href="https://github.com/vitorpamplona/amethyst/pull/1596">strfry互換性&lt;/a>修正。&lt;/p>
&lt;h3 id="primal-android">Primal (Android)&lt;/h3>
&lt;p>&lt;code>nostrconnect://&lt;/code> URL用の&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/788">Nostr Connectディープリンク&lt;/a>。bunker接続用のQRスキャンによる&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/787">リモートログイン&lt;/a>。&lt;a href="https://github.com/PrimalHQ/primal-android-app/pull/783">接続競合状態の修正&lt;/a>。&lt;/p>
&lt;h3 id="white-noise-encrypted-messaging">White Noise (暗号化メッセージング)&lt;/h3>
&lt;p>&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/890">アプリデータ保持の修正&lt;/a>はプライバシーのためにAndroid自動バックアップを無効化。&lt;a href="https://github.com/marmot-protocol/whitenoise/pull/861">チャットスクロール動作&lt;/a>は履歴を読むときに位置を保持。&lt;/p>
&lt;h3 id="zeus-lightning-wallet">Zeus (Lightningウォレット)&lt;/h3>
&lt;p>バッチzapスループット改善のための[&lt;a href="https://nostrcompass.org/ja/topics/nip-47/">NIP-47&lt;/a>並列支払い](&lt;a href="https://github.com/ZeusLN/zeus/pull/3407">https://github.com/ZeusLN/zeus/pull/3407&lt;/a>)。&lt;/p>
&lt;h2 id="開発者ベストプラクティス">開発者ベストプラクティス&lt;/h2>
&lt;p>&lt;strong>認証イベントを防御的に検証する&lt;/strong> - go-nostrはリレータグが欠落している場合のNIP-42検証での&lt;a href="https://github.com/nbd-wtf/go-nostr/pull/182">パニックを修正&lt;/a>しました。整形式のイベントを期待する認証フローでも、アクセスする前に必須タグをチェックしてください。&lt;/p>
&lt;p>&lt;strong>認証状態によるレート制限&lt;/strong> - khatruは&lt;a href="https://github.com/fiatjaf/khatru/pull/57">NIP-42ベースのレート制限&lt;/a>を追加し、認証済みと匿名の接続に異なる制限を適用できるようにしました。一律の制限ではなく、認証状態に基づく階層的な制限を検討してください。&lt;/p>
&lt;p>&lt;strong>リストにはカーソルページネーションを使用&lt;/strong> - Blossomは&lt;code>/list&lt;/code>エンドポイントで&lt;a href="https://github.com/hzrd149/blossom/pull/65">日付ベースのページネーションをカーソルベースのページネーションに置き換え&lt;/a>ました。日付ベースのページネーションはアイテムがタイムスタンプを共有すると壊れます。カーソルは信頼性の高い反復を提供します。&lt;/p>
&lt;p>&lt;strong>イベントタイプのスキーマ検証&lt;/strong> - &lt;a href="https://github.com/nostrability/schemata">nostrability/schemata&lt;/a>プロジェクトはNIP準拠のイベントを検証するためのJSONスキーマを提供します。開発中にスキーマ検証を統合して、不正なイベントがリレーに到達する前に検出することを検討してください。&lt;/p>
&lt;hr>
&lt;p>今週は以上です。何かを構築していますか？共有したいニュースがありますか？プロジェクトを取り上げてほしいですか？&lt;a href="nostr:npub1wav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qq902923">NIP-17 DMでお問い合わせください&lt;/a>。またはNostrで見つけてください。&lt;/p></content:encoded></item></channel></rss>