Nostr Compass #12
Nostr Compassへようこそ。Nostrの週刊ガイドです。
今週の内容: Marmot Development Kitが暗号化メディアと多言語バインディングを含む初の公開リリースを出荷。Nostrabilityが14種のrelay選択アルゴリズムにわたるアウトボックスモデルベンチマークを公開。WispがTorとNIP-55(Android署名アプリケーション)署名を備え、8日間でアルファからベータに到達。NIP-91(ANDフィルター)がマージ。Vector v0.3.1がnegentropy同期を15倍のパフォーマンス向上とともに提供。本号にはNostr2月の5年間回顧録も収録し、3つのrelayにサービスするスペック書き換えから、Damus App Store爆発、メッシュネットワーキングとAIエージェント提案までのプロトコルの歩みを辿ります。
ニュース
アウトボックスモデルの検証
Nostrabilityが、異なるrelay選択アルゴリズムが分散relayネットワークからイベントをどの程度適切に取得するかをテストする一連のアウトボックスモデルベンチマークを公開しました。プロジェクトは10日間で16件のPRと76件のコミットをマージし、NIP-65(Relayリストメタデータ)実装戦略に関する最も徹底的な実証分析となった可能性があります。
ベンチマークは5言語15種のクライアントとライブラリにわたる実世界のフォローリストに対して14種のrelay選択アルゴリズムをテストしています。人気relayのみをクエリするベースラインアプローチではイベントの約26%を取得します。Thompson Samplingを用いた貪欲集合被覆は80-90%の再現率に達します。双曲線割引とEWMA relayレイテンシ追跡を使用するレイテンシ対応バリアントを追加すると、6つのテストプロファイルにわたって2秒時点での完全性が62-80%から72-96%に向上しました。
NIP-66(Relayモニタリング)のデッドrelayフィルタリングは大きな影響をもたらしました。nostr.watchの稼働状況データに基づくrelay候補の事前フィルタリングにより、デッドrelayの40-64%が除外され、relay成功率が30%から75-85%に倍増しました。フィード読み込み時間は39%短縮されました(10プロファイルで40秒から24秒に)。EOSE-raceシミュレーションでは、EOSEプラス200msの猶予期間を待つことで、最初のrelayの完了時に停止するよりも完全性が向上することが判明しました。
relay経路設定を完全に書き換えられないクライアント向けに、「ハイブリッドアウトボックスエンリッチメント」アプローチがあります。既存のハードコードされたアプリrelayの上に著者ごとのアウトボックスクエリを追加します。このハイブリッドは26%のベースラインに対して80%の1年間イベント再現率を達成し、レガシーrelayアーキテクチャを持つクライアントへの移行パスを提供します。
ContextVMがMCP NIPを提出しエフェメラルGift Wrapを出荷
ContextVMはNostrとModel Context Protocolを橋渡しするプロトコルで、今週NIPsリポジトリに2件の提案を提出しました。PR #2246はCVMをエフェメラルkind 25910イベントを使用してNostr上でMCP JSON-RPCメッセージを転送するための慣例として形式化します。PR #2245はNIP-59(Gift Wrap)をエフェメラルkind(21059)で拡張し、NIP-01(基本プロトコルフロー)のエフェメラルセマンティクスに従って、relayが配信後にラップされたメッセージを破棄できるようにします。
エフェメラルgift wrap慣例はContextVM SDK v0.6.xリリースファミリーのCEP-19として出荷されました。SDK実装はOPTIONAL(両方のkindを受け入れてピア機能を自動検出)、EPHEMERAL(kind 21059のみ)、PERSISTENT(kind 1059のみ)の3つの設定を持つGiftWrapMode列挙型を追加します。AIツール呼び出しでは、エフェメラルモードはrelayに中間リクエスト-レスポンストラフィックを保存することを回避し、ストレージコストとプライバシー露出の両方を削減します。
独立した運営者から新しいパブリックMCPサーバーがネットワーク上に出現し、Wolfram Alphaクエリサーバーも含まれます。ContextVMチームはv0.6.xリリースサイクルとともにCEP-15(共通ツールスキーマ)とCEP-17(サーバーrelayリスト公開)を公開しました。
Marmot Development Kitが初の公開リリースを出荷
MDK(Marmot Development Kit)はPikaとWhite NoiseにわたるMarmot暗号化メッセージングを支えるRustライブラリで、初の公開リリースとしてv0.6.0を出荷しました。200件以上のPRがこのバージョンにマージされ、6人の新しいコントリビューターが参加しました。
このリリースには暗号化メディアサポート(MIP-04)とHKDFシード導出(MIP-01 v2)、決定論的コミットレース解決(MIP-03)、暗号化ローカルストレージ、Marmotコミットとプロポーザルのための管理者認可バリデーション、プロトコル拡張性のためのGREASEサポートが含まれます。Kotlin、Python、Ruby、Windows向けのバインディングがAndroidクロスコンパイルとともに出荷されます。ライブラリはセキュリティアドバイザリ修正とメモリ内の機密値をゼロ化するSecret<T>型を含むOpenMLS 0.8.0にアップグレードされています。
コンパニオンプロトコル変更(MIP-03)はkind 445メッセージのNIP-44(暗号化ペイロード)暗号化をChaCha20-Poly1305に置き換えました。NIP-44は仕様上UTF-8文字列入力を要求するため、標準的なTypeScript Nostrライブラリを通じて生のMarmotメッセージバイトを渡すことが不可能でした。代替方式はMarmotエクスポーターシークレットから直接キーを導出します。この破壊的変更はコアスペック、MDK、TypeScript SDKにわたる協調的なアップデートを必要としました。
marmot-tsはhzrd149がメンテナンスするTypeScript実装で、4件のPRをマージし独自の破壊的API変更を含みます。包括的アップデートはcreate/publish/rotateライフサイクル用のキーパッケージマネージャー、sendChatMessageコンビニエンスメソッド、参加なしの招待プレビュー(readInviteGroupInfo)、前方秘密性ローテーションの自己アップデート、構造化デバッグログを追加しました。グループ復号APIはreadGroupMessageからdecryptGroupMessageに変更され、より豊富な結果バリアント(processed/skipped/rejected/unreadable)を持ちます。gzuuusはNIP-65 relayサポートとMIP-00に準拠したラストリゾートキーパッケージ処理を含むサンプルクリーンアップに貢献しました。
White Noise CLI(wn)はモバイルアプリと新しいTUIの両方を支えるRustバックエンドで、10日間で16件のPRをマージしました。署名者ライフサイクル処理がRAAIスコープガードによるキャンセルセーフティ(PR #538)を獲得し、中断された操作が署名者の状態をリークする可能性のあるバグのクラスを修正しました。ログインは必要なrelayリスト(kind 10002/10050/10051)が欠落している場合にブロックするようになり(PR #515)、giftwrapサブスクリプションはinboxリストが不在の場合にNIP-65 relayにフォールバックします(PR #518)。デバッグモード(PR #528)はデータベースクエリとMLSラチェットツリーの検査をJSON出力として公開します。その他の修正は、署名者の再登録後のサブスクリプション回復、ウェルカムメッセージのキャッチアップタイミング、relayフィルターバリデーション、ユーザー検索半径制限に対応しました。
Marmotは今週、コアのRustスタック以外でも大きな拡大を見せました。White Noise TUIはWhite Noiseメッセージングスタックへのターミナルベースのインターフェースで、3月3日にローンチしました。wn CLIをサブプロセスとしてラップし、そのJSON出力をElmにインスパイアされた単方向アーキテクチャでレンダリングし、未読インジケーター付きのマルチ会話ナビゲーション、グループ作成とメンバー検索、リアルタイムメッセージストリーミング、ターミナルからの絵文字リアクションを提供します。
DavidGershonyはRustツールチェーンの階層化アーキテクチャを反映した完全なC# Marmotスタックを公開しました。dotnet-mlsはC#でMLS RFC 9420暗号プリミティブを実装します。marmot-csはその上にNostr relayトランスポートを追加し、MDKのC#相当として機能します。OpenChatは.NET 9とAvalonia UIで構築されたクロスプラットフォームデスクトップアプリで、NIP-44 DM、Marmotグループ暗号化、NIP-46(Nostr Connect)リモート署名、マルチrelayステータスインジケーターを備えた動作するチャットクライアントに両者を統合します。
MDK PWA ReferenceはMarmot暗号化アプリケーションを構築するためのProgressive Web Appテンプレートを提供し、グループチャットへのAIエージェント参加とArkadeウォレットインフラを通じたBitcoin支払いの実験的サポートを含みます。
Wispがアルファからベータへ
Wispは新しいAndroid Nostrクライアントで、2月24日の初のアルファから3月3日のv0.3.4-betaまで、8日間で19リリース、115件のマージ済みPR、276件のコミットを生み出しました。
機能の軌跡は、ほとんどのクライアントが到達するのに数か月かかる領域をカバーしています。v0.1.0はoutbox/inbox relayモデルサポートとオンボーディングフローを搭載して出荷されました。v0.1.3までにクライアントはAmber向けのNIP-55インテントベース署名、.onion relay接続用の組み込みTor SOCKS5プロキシ、NIP-47(Nostr Wallet Connect)を備えました。v0.2.0はミュートリストフィルタリングとカスタム絵文字サポートでベータに昇格し、v0.2.4はコンテンツ警告オーバーレイを追加しました。v0.3.xシリーズはノート向けのNIP-13プルーフオブワーク、永続設定によるバックグラウンドPoWマイニング、.onion relayストレージ、ミュートスレッド通知を導入しました。
Google ML Kitによるオンデバイス翻訳は、最初のモデルダウンロード後はネットワークアクセスなしでローカルに実行されます。インタラクティブなソーシャルグラフ可視化は、ピンチズームナビゲーションとプロフィール検査を備えた約30fpsのvelocity Verlet物理シミュレーションを使用します。
リリース
Vector v0.3.1
Marmot暗号化メッセージングアプリのVectorが、グループ管理の改善とパフォーマンス作業を含むv0.3.1を出荷しました。マルチ管理者グループ、一括招待、npubによる招待、グループアバターがコラボレーション機能を拡張します。Androidバックグラウンド通知がインラインの返信と既読マークアクションをサポートするようになりました。
Negentropyベースの決定論的同期がオフライン中に見逃されたメッセージを含む完全な会話履歴を取得します。音声テキスト変換がAndroidでGPUアクセラレーションにより再構築されました。ファイル添付処理がダウンロード進捗、再試行ステート、ディレクトリのzip送信、全体にわたるライブ進捗インジケーターで刷新されました。起動時間、画像処理、オーディオ再生、一般的なUIレスポンシブネスにわたってパフォーマンスが15倍以上向上しました。アプリインストールサイズは3分の1以上削減され、フロントエンドは約半分に縮小されました。32ビットARM Androidサポートが追加されました。
Alby Hub v1.21.5
Alby HubはNostr Wallet Connect(NIP-47)をサポートするセルフカストディアルLightningノードで、v1.21.5を出荷しました。デフォルトのNWC設定に2つ目のrelayが追加され、relay再起動時の信頼性が向上しました。トランザクションリスト内の無効なzapデータの修正により、不正な形式のNIP-57(Lightning Zaps)イベントの表示問題が解消されました。新しいアプリストアエントリにはAlby CLIとLNVPSが含まれます。
nospeak v0.12.x
nospeakはテキストベースのNostrメッセージングクライアントで、この期間に3つのリリースを出荷しました。v0.12.0は4桁キーパッドによるPINアプリロックと、ベンガル語、タイ語、ベトナム語、ヒンディー語、アラビア語、ヘブライ語、ウルドゥー語、トルコ語、日本語、中国語、韓国語、オランダ語、ポーランド語、ロシア語、ペルシア語のRTLサポートを含む15以上の新しい言語翻訳を追加しました。v0.12.1は純粋な黒背景とシアンアクセントのCypherテーマに加え、Android動画ポスター生成を導入しました。v0.12.2は連絡先メニューにチャットエクスポートとプロフィール表示を追加しました。
Citrine v2.0.0-pre2
greenart7c3によるAndroidパーソナルrelayのCitrineが、新しいデータベースインデックスと再構成されたKotlinコルーチンによるrelayパフォーマンス改善を含むv2.0.0-pre2を出荷しました。各ホステッドウェブアプリが独自のポートで起動するようになりました。全文検索とイベント展開機能を備えた再設計されたイベント画面が変更を締めくくります。
NoorNote v0.5.x
NoorNoteはNostrベースのノートテイキングアプリケーションで、v0.5.0からv0.5.7まで8つのリリースを出荷しました。v0.5.0のAndroidローンチではNIP-55 Amber署名者サポートとNIP-71(動画イベント)ノート公開が追加されました。v0.5.1の再設計されたウェルカムページにはパブリックタイムラインプレビューが含まれ、APKが15 MBに縮小されました。v0.5.2のRelay Browserではユーザーが共有可能なURLを通じてパブリックrelayタイムラインを閲覧でき、メディアダウンロードとNIP-30カスタム絵文字リアクションも搭載されました。v0.5.7までの後続リリースでは、協調的な「tribes」ノート共有システムにおける同期競合状態に対処しました。
NosCall v0.5.1
NosCallはNostr音声・動画通話アプリで、音声メッセージサポート、グループエントリーを含む最適化されたデスクトップエクスペリエンス、デスクトップでの連絡先お気に入り、連絡先ノートとフィルタリング、データエクスポートとクリーンアップオプション、システムフォントサイズのアクセシビリティサポートを含むv0.5.1を出荷しました。
Shosho v0.13.0
ShoshoはNostrライブストリーミングアプリで、ストリームカードメニューからのMP4リプレイダウンロードとプロフィール向けNIP-05(DNSベース検証)を含むv0.13.0を出荷しました。RTMPパブリッシャーはExpo Modules APIに移行されました。低帯域幅接続でのストリーミングパフォーマンスが改善され、旧型デバイスでのクラッシュとZap.StreamへのiOSストリーミングが修正されました。
nostr-java v2.0.0
nostr-javaは設定可能なWebSocketバッファサイズを含むv2.0.0を出荷し、アプリケーションがより大きなNostrイベントを切り捨てなしに処理できるようになりました。メジャーバージョンのバンプは接続APIへの破壊的変更を反映しています。
Prism 1.1.0
Prismはlong-formコンテンツサポート(kind 30023記事)とアプリ内で直接作成するためのMarkdownエディターを含む1.1.0を出荷し、続いて1.1.1のバグ修正リリースが行われました。
Angor v0.2.6
AngorはBitcoinクラウドファンディングプラットフォームで、Boltz統合とワンクリック投資フローを含むv0.2.6を出荷しました。投資と資金調達の両プロジェクトタイプがtestnet上でエンドツーエンドで動作します。チームはUIが約70%完成していると述べています。
NIPアップデート
NIPsリポジトリへの最近の変更:
マージ済み:
NIP-91: フィルターのAND演算子:relayサブスクリプションのタグ配列にANDフィルターセマンティクスを追加します。現在、タグフィルターに複数の値を指定すると(例:複数の
pタグ)、そのいずれかを含むイベントにマッチします。NIP-91では指定されたすべてのタグ値に同時にマッチするイベントをクライアントが要求でき、帯域幅を削減しより高速なインデックス操作を可能にします。nostr-rs-relay、satellite-node、worker-relay、applesauceを含む複数のrelay実装が既に存在します。以前はNIP-119として番号付けされていました。NIP-30: タグ内の絵文字セットアドレス:NIP-30のカスタム絵文字タグにオプションの絵文字セットアドレスを含められるようになりました。クライアント内で絵文字をクリックすると、ブックマークやブラウジングのためにその絵文字が属するセットを開けます。Chachiクライアントに由来します。
NIP-29: unallowpubkeyとunbanpubkeyの追加:NIP-29グループチャット用の2つの新しい管理者コマンド。
unallowpubkeyはBANせずに許可リストからpubkeyを削除します。unbanpubkeyはメンバーリストにpubkeyを再追加せずにBANを解除します。以前は許可リストからの削除にはBANが伴い、BANの解除にはメンバーとしての再追加が必要でした。
オープンPRとディスカッション:
NIP-A7: Spells(2月27日オープン):purrgrammerによる提案で、spellsはkind 777イベントとして公開されるポータブルな保存済みNostrクエリです。spellはREQまたはCOUNTフィルターを構造化タグ(kindの
k、pubkeyのauthors、任意のタグフィルターのtag)にエンコードし、ランタイム変数を持ちます。$meはログインユーザーのpubkeyに解決され、$contactsはユーザーのkind 3フォローリストに展開されます。相対タイムスタンプ(7d、2w、1mo)によりハードコードされた日付なしにローリングタイムウィンドウを定義できます。nakとGrimoireで既に実装されており、spellsによりユーザーはクライアントをまたいで移動するキュレートされたフィードを作成、共有、購読できます。NIP-59: エフェメラルGift Wrap(kind 21059)(2月27日オープン):NIP-59 gift wrapのエフェメラルバリアントを追加します。kind 21059はNIP-01エフェメラルセマンティクスに従い、relayは配信後にイベントを破棄します。メッセージの永続化が不要なMCPトランスポート向けにContextVMが提案しました。
ContextVM: Nostr上のMCP JSON-RPC(2月27日オープン):エフェメラルkind 25910イベントとアドレッシングおよび相関のための
pとeタグを使用して、Model Context ProtocolメッセージをNostr上で転送する方法を規定します。意図的に薄い仕様で、プロトコルの詳細はContextVMスペックに委ねています。NIP-29: オーディオ/ビデオライブスペース(2月25日オープン、ドラフト):fiatjafによるドラフトで、NIP-29グループにライブオーディオとビデオを拡張します。グループメタデータイベントにオプションの
livekitとno-textタグを追加します。ユーザーが音声スペースに参加する際、クライアントは/.well-known/nip29/livekit/{groupId}でrelayにJWTをリクエストします。relayはグループメンバーシップを確認し、ユーザーの16進pubkeyをsubクレームとするトークンを発行し、LiveKitにメディアトランスポートのために渡されます。音声ルームのアクセスはグループの既存の権限モデルを継承するため、relayサイドのメンバーシップルールが発言者を管理します。PyramidとChachiでテスト中です。協調的イベント所有権(2月24日オープン):pablof7zはポインターイベント(kind 39382)を提案し、
pタグに共同所有者のpubkeyを、kタグに対象イベントkindを記載して協調的空間を宣言します。リストされた所有者は誰でも同じdタグでそのkindのイベントを公開でき、クライアントはすべての所有者をクエリして最新のイベントを採用することで現在の状態を解決します。共同著者属性は、検証可能なaタグがポインターを逆参照し著者がそのpタグに含まれる場合にのみ表示され、なりすましを防ぎます。これにより共有Wikiページや共同著作リソースを単一のキーペアに制御を割り当てることなく実現できます。NIP-09: リポストの連鎖削除(2月24日オープン):元の著者がノートを削除した場合、relayはそれを参照するkind 6またはkind 16のリポストも削除すべきです。著者がソースを削除した後にリポストが誤って漏洩した情報を保持しうるプライバシー上の懸念から動機づけられています。変更はrelayサイドのみで、クライアントの修正は不要です。
NIP-07: peekPublicKey(2月23日オープン):NIP-07ブラウザ拡張機能に
peekPublicKey()メソッドを追加します。getPublicKey()とは異なり、ユーザー確認のプロンプトなしに現在のpubkeyを返し、ユーザーが自動ログインを有効にしている場合のサイレント自動ログインを可能にします。NIP-BB: Book(2月28日オープン、ドラフト):Nostr上の構造化された書籍出版のために4つのアドレス可能イベントkind(30300-30303)を定義します。Coverイベントはタイトル、カバー画像、NIP-32(ラベリング)ラベルによるライセンス、言語コードを含むルートメタデータを保持します。Indexイベントはbase62分数インデックスを使用して各章をその位置にマッピングし、著者が既存の章の間に番号の振り直しなしに新しい章を挿入できます。Chapterイベントはオプションの画像を含む構造的ヘッダーとして機能し、Episodeイベントは30,000文字上限の実際の散文を配置画像タグとともに運びます。レビューはCoverイベントへのZapで行われ、Zap説明がレビューテキストとなります。
NIP-54: AsciidocからDjotへの切り替え(2月26日オープン):12月のd-tag国際化修正に続き、このPRはNIP-54 WikiのAsciidocマークアップ形式をDjotに置き換えることを提案し、非ラテン文字スクリプトの理由説明セクションとwikilinkの例を追加します。
NIP-66: 防御的措置(2月26日オープン):nostrability/outboxベンチマークからの学びに基づき、NIP-66のエッジケースに対する明示的な注意事項を追加します。コンパニオンPR #2241はSSL、位置情報、ネットワーク、接続性チェックの出力タグを定義します。
NIP-C1: 暗号学的アイデンティティ証明(wikiエントリ、kind 30817):APK署名証明書をNostrプロフィールに暗号学的に紐づけるkind 30509イベントを提案します。証明は証明書の秘密鍵でNostr pubkeyを含む正規メッセージに署名し(ECDSA、RSA PKCS1v15、Ed25519などの標準アルゴリズムをサポート)、その署名をNostr鍵で署名されたkind 30509イベントとして公開することで機能します。検証者はアプリのAndroid署名証明書を制御する人物が、それを公開すると主張するNostr pubkeyも制御していることを確認できます。証明はデフォルトで1年後に失効し、明示的に取り消すこともできます。Zapstoreツールチェーンで実装されています。
NIP-31402: SARA収益シェアオファリングレジストリ(wikiエントリ、kind 30817):Nostr relay上でSimple Autonomous Revenue Agreement(SARA)オファリングを公開するためのkind 31402アドレス可能イベントを定義します。発行者はプール共有パーセンテージ、支払いトリガー、satsでの閾値、期間長、段階的料金設定を含むLightning決済型収益シェア条件を広告します。エージェントと人間は中央プラットフォームなしにrelay全体でオファリングを発見し自律的にサブスクライブできます。kind番号はkind 30402(L402サービスレジストリ、コンパニオンwikiエントリとして同じ著者が公開)を反映しており、SARAがL402支払い関係のリターンレグを表すためです。
オープンPRとプロジェクトアップデート
Damus: NIP-89(推奨アプリケーションハンドラー)
PR #3337がDamusにNIP-89クライアントタグサポートを実装します。アプリはすべての投稿パス(メインアプリ、共有拡張機能、ハイライター、ドラフト)でクライアントタグを送出し、他のアプリがタグを含む場合にタイムスタンプの横に「via ClientName」を表示します。外観設定のプライバシートグルでユーザーがタグ送出を無効にできます。PR #3652はNostrDBとKingfisherキャッシュのディスク使用量をエクスポートサポート付きのインタラクティブ円グラフで分解する設定内ストレージセクションを追加します。
オープン:PR #3657は引用ノート向けのNIP-65 relayフォールバックを追加します。インラインのneventに著者pubkeyが含まれるがrelayヒントがなくノートがユーザーのプールに見つからない場合、Damusは著者のkind 10002 relayリストを取得し、そのwrite relayから再試行します。
Amethyst: NIP-39(外部アイデンティティ)、NIP-C0、NIP-66
Amethystは28件のPRにわたるNIP実装の大規模な波をマージしました。外部アイデンティティクレームはNIP-39の下で専用kind 10011イベントとして公開されるようになり(PR #1747)、後方互換フォールバック付きでソーシャルアイデンティティをkind 0メタデータから分離します。NIP-C0によるコードスニペットサポート(PR #1744)は言語、拡張子、ランタイム、ライセンス、依存関係のアクセサーを持つkind 1337イベントを追加します。NIP-66 relayモニタリング実装(PR #1742)はRTTメトリクス、ネットワークタイプ、サポートされるNIP、geohashの完全なタグパースを含む両イベントkindをカバーします。
暗号化DMがAmethyst Desktop(PR #1710)に到着し、NIP-04(暗号化ダイレクトメッセージ)とNIP-17(プライベートダイレクトメッセージ)の両方をサポートするスプリットペインチャットレイアウトを備えます。新しいrelayフィード画面(PR #1733)はフォロー/アンフォロー機能付きで特定のrelayからの投稿を閲覧できます。オープン:検閲耐性NIP-05検証(PR #1734)はHTTP DNSの代わりにNamecoinブロックチェーンに対して解決する.bit識別子の並列検証パスを追加します。AmethystがNIP-05フィールドで.bitサフィックスを検出すると、ElectrumX-NMCサーバーに名前のトランザクション履歴をクエリし、最新の出力からNAME_UPDATEスクリプトを解析してNostr pubkeyを抽出し、36,000ブロック(Namecoinの有効期限ウィンドウ)より古い名前を拒否します。ElectrumX接続はTor有効時にSOCKS5を経由し、クリアネットと.onionエンドポイント間の動的サーバー選択を行います。1時間TTLのLRUキャッシュが繰り返しのブロックチェーンクエリを防ぎます。
Notedeck: アウトボックスアーキテクチャ
PR #1303はNotedeckをアドホックなrelayプール管理からアカウントスコープのサブスクリプションを持つ集中型アウトボックスモデルに移行します。Messagesモジュールはデフォルトのリストが存在しない場合にデフォルトのDM relayリストを公開し、kind 10050ごとに受信者の優先relayにDMをルーティングするようになりました。
Pika: グループごとのプロフィールとチュートリアルフィード
PikaはiOS、Android、デスクトップビルドで利用可能なMarmot暗号化メッセージングアプリで、グループごとのプロフィール(PR #368)を獲得しました。ユーザーは各グループチャットに個別の表示名と画像、カスタムプロフィールを設定できるようになりました。これらのプロフィールはMarmotグループ内の暗号化kind 0イベントとして公開され、外部からは見えません。グループ固有のプロフィールが設定されていない場合はユーザーのグローバルNostrプロフィールにフォールバックします。新メンバーが参加すると、管理者は保存されたすべてのグループプロフィールを再ブロードキャストし、各メンバーはコミット時に自分のプロフィールを再公開します。プロフィール画像はBlossomアップロード前にMarmotメディア暗号化されます。PRには16の新しいユニットテストが含まれ、CLIコマンド(update-group-profile)とUIの両方で機能を公開します。
新しいpika-newsウェブアプリ(PR #401)はPika自身のGitHub PRを監視し、PR diffからステップバイステップのチュートリアルウォークスルーを自動生成し、NIP-07認証付きのサーバーレンダリングページとして公開します。ユーザーはNostr認証チャットを通じて特定のチュートリアルについてリアルタイムで議論できます。
diVine: 埋め込みウィジェットとビデオリプライ
diVineはNostrネイティブの動画共有プラットフォームで、10日間で132件のPRをマージしました。埋め込みiframeウィジェット(PR #1843)はユーザーのプロフィールと最新動画をレンダリングする自己完結型の/embed?npub=...ページを提供します。ビデオリプライ機能(PR #1915)はフィーチャーフラグの背後でゲートされ、NIP-92(メディア添付)imetaメタデータを持つKind 1111コメント(NIP-22)を使用します。Blueskyにインスパイアされた3段階コンテンツフィルター(PR #1797)は17のNIP-32コンテンツ警告カテゴリにわたって表示/警告/非表示コントロールを提供します。
strfry: REQフィルターバリデーション
PR #163はC++ Nostr relayのstrfryに設定可能なREQフィルターバリデーションを追加します。オペレーターはREQあたりの最大フィルター数、必要な著者またはタグの存在、許可されるkindのホワイトリスト、フィルターごとのkind制限を設定できます。この機能は厳格なフィルター適用が必要なNWC relayデプロイメントをターゲットにしています。オープン:PR #173はインジェスト時のイベントペイロードのオプションzstd圧縮を追加します。
rust-nostr: NIP-62 Request to Vanish
rust-nostrはRust Nostrプロトコルライブラリで、3つすべてのデータベースバックエンドにわたるNIP-62(Request to Vanish)サポートを追加しました。LMDB、SQLite、インメモリです。LMDB実装にはデプロイメントごとにNIP-09とNIP-62の適用を有効または無効にする設定可能なオプションが含まれます。
NDK: 協調イベントとNIP-46タイムアウト
JavaScript/TypeScript向けNostr Development KitのNDKは、認可された著者を定義するアドレス可能ポインターイベント(kind 39382)を使用するマルチ著者協調ドキュメント用のNDKCollaborativeEventを導入するPR #380をマージしました。NDKNip46Signerの設定可能なタイムアウト(PR #381)はバンカーが応答しない場合にNIP-46リモート署名操作が無期限にハングすることを防ぎます。
TENEX: エージェント分類とPubkeyゲーティング
TENEXはNostrネイティブのAIエージェントオーケストレーションプラットフォームで、セキュリティ関連の2件のPRをマージしました。TIP-01ロールベースのエージェント分類(PR #91)はエージェントカテゴリ(principal、orchestrator、worker、advisor、auditor)をdenied-toolsマップを通じた自動ツール制限にマッピングします。フロントドアpubkeyゲーティング(PR #87)はホワイトリストまたはバックエンド署名済みpubkeyからのイベントのみが既知のエージェントとともにルーティングされることを保証し、未知のpubkeyは監査用OpenTelemetryスパンとともにサイレントにドロップされます。
Zap Cooking: メンバーシップダッシュボード
Zap CookingはNostrベースのレシピ共有プラットフォームで、10日間で25件のPRと85件のコミットをマージしました。メンバーシップダッシュボード(PR #228)は有効期限と管理/アップグレードオプション付きのサブスクリプションステータスを表示し、クライアントサイドとサーバーサイドの両方のチェックでSous ChefとZappyティアのフィーチャーゲートを再有効化し、26ファイルにわたるティア命名を標準化します。2フェーズグループメッセージ読み込み(PR #227)は即座の表示のための3日間の高速初期フェッチに続いてバックグラウンドの40日間バックフィルを提供します。
ウォレットニーモニックストレージがpubkey導出暗号化からNIP-44自己暗号化に移行しました(PR #224)。旧方式はSHA-256(pubkey)からキーを導出しており、pubkeyは公開情報のため事実上暗号化されていない脆弱性を修正します。既存のウォレットは最初の読み込み時にサイレントに移行されます。NIP-29グループチャットは赤ドットバッジの未読インジケーターとkind 9009招待コードによる招待制アクセスを獲得しました(PR #213)。リンクプレビューとNostrイベント埋め込みがDMとグループメッセージでレンダリングされるようになりました(PR #218)。設定内のNostrバックアップセクション(PR #210)はローテーティング3スロットバージョニングを持つNIP-78(アプリケーション固有データ)暗号化ストレージを通じてフォローとミュートリストを保存します。起動パフォーマンスは通知サービスの遅延化、IntersectionObserverによるレイジーDOMレンダリング(200イベントフィードでDOMノードを約15,000から約3,000に削減)、延長されたアウトボックスキャッシュTTLを通じて改善されました(PR #208)。カスタマイズ可能な印刷レシピモーダル(PR #205)はライブプレビュー付きでどのセクションを含めるかをトグルできます。Branta SDK統合(PR #222)はPOSTとGETリクエストの検証ガードレールを追加します。
Keep: Rust駆動の状態移行
KeepはAndroid向けNostrベースの秘密鍵マネージャーで、4つのKotlin設定ストアを削除しkeep-mobileレイヤーからのRust駆動共有状態に置き換えるPR #178をマージしました。10秒ポーリングループがRustからのプッシュベースのKeepStateCallbackに置き換えられました。PR #179はパスフレーズ保護付きの暗号化バックアップとリストアを追加します。
Mostro Mobile: 紛争チャット暗号化
Mostro MobileはMostro P2P Bitcoin取引プラットフォームのモバイルクライアントで、紛争チャット暗号化の2段階移行を出荷しました。最初のステップ(PR #495)はmostro固有のラッピングから管理者のpubkeyから導出された共有キー暗号化に切り替えます。その上に構築されるPR #501はメッセージモデルをNostrEventに統一し、gift wrapイベントをディスク上に暗号化して保存します。これはP2Pチャットパターンと一貫しています。BIP-340署名修正(PR #496)はbip340依存関係を0.2.0にオーバーライドし、Schnorr署名の1-2%を無効にし、公開鍵が0x00で始まるキーでは100%失敗を引き起こすbigToBytes()パディングバグを解決します。Order Detailsは生のプロトコル値の代わりに人間が読めるステータスラベルを表示するようになり、英語、スペイン語、イタリア語、フランス語にわたってローカライズされています(PR #502)。HalCashが追加されSEPAが支払い方法から削除されました(PR #493)。SEPA送金は24時間を超える可能性があるためです(SEPA Instantは維持)。
サーバーサイドでは、Mostroが紛争セッションの復元にinitiatorフィールドを含めるよう修正し(PR #599)、売り手が資金をリリースした際にアクティブな紛争を自動的にクローズし、管理クライアントが解決を確認できるよう決済済みNostrイベントを公開するようになりました(PR #606)。
Nostr 2月の5年間
先月のニュースレターではNostrの1月のマイルストーンを初期開発からDamusのブレイクアウト、2026年のセキュリティインフラまで辿りました。今回の回顧録は2021年から2026年までの各年2月に起きたことをカバーします。
2021年2月:リライト
誕生から3か月後、Nostrの2月はプロトコルの最も重大な初期変更を生み出しました。2月14-15日、fiatjafがNIP-01を書き換え、オリジナルのメッセージ形式をプロトコルが現在も使用するEVENT/REQ/CLOSEモデルに置き換えました。この書き換え以前は、クライアントとrelayはよりシンプルな構造で通信していました。イベント公開(EVENT)とサブスクリプション管理(REQ/CLOSE)を分離することで、スケーリングに不可欠となるrelayサイドのフィルタリングが可能になりました。
同月にNIP-04が到着し、secp256k1上のDiffie-Hellman鍵交換から導出された共有シークレットを使用する暗号化ダイレクトメッセージを追加しました。暗号化は基本的なもの(AES-256-CBC)で、後にNIP-44の監査済み暗号方式に置き換えられましたが、少数の初期ユーザーにプロトコル上での最初のプライベート通信チャネルを提供しました。
ツールはnoscl(ターミナルベースのrelay操作用Goコマンドラインクライアント)で拡張され、futurepaullは初期のRust実装であるnostr-rsを開始しました。ネットワーク全体は2つか3つのrelayで運用され、Telegramグループを通じて調整され、約7人のアクティブなコントリビューターがいました。
2022年2月:勢いの構築
2021年12月31日のHacker Newsの投稿が引き続き2月まで開発者を引き付けました。nostr-protocol/nostrリポジトリ(正式なNIPsリポジトリは2022年5月まで存在しませんでした)は2月に6件のプルリクエストを受け取りました。vinliaoのNIP-13(Proof of Work)、fiatjafのNIP-14(Reputation)、CameriのNIP-15(Resource Relations)、melvincarvalhoのNIP-17(Git Updates Over Nostr)が含まれます。NIP番号は後にPrivate Direct Messagesに再割り当てされ、Nostr上のgitコラボレーションは後にgitworkshop.devとなるものを通じて別途続きました。
Greg Heartsfield のnostr-rs-relayはこの月の主力で、34件のコミットと3つのリリースを記録しました。2月12日のバージョン0.5.0はNIP-05認証済みユーザー公開制限を追加しました。バージョン0.5.1と0.5.2がその後2週間で続き、relayはネットワークのトラフィックの大部分を単独で処理していました。
Robert C. Martin(Uncle Bob)はmore-speech(Clojureデスクトップクライアント)を構築しており、1月18日から2月末までに69件のコミットを記録しました。彼の関与はより広いソフトウェアエンジニアリングコミュニティからの注目を集めました。fiatjafのnos2xブラウザ拡張機能は2月にNIP-04復号サポートとrelay優先ポリシーを出荷し、ウェブクライアントが鍵委任に現在も使用するwindow.nostrインターフェース(NIP-07)を実装しました。
Branleは依然として主要なウェブクライアントで、2月13日にweb+nostrプロトコルハンドラー登録を獲得しました。これはNostrアプリケーション間のディープリンクの初期の試みでした。nostr-toolsはNIP-05検証を厳格化しました。go-nostrは11件のコミットでNIP-04暗号化DMサポートとNIP-12(Generic Tag Queries)パースを追加しました。ネットワークは約7-15のrelayで運用され、アクティブなユーザーベースはおそらく数百人規模でした。DamusとNostreamはまだ存在せず、2022年4月まで登場しませんでした。
2023年2月:国際的注目
2023年2月はNostrに最大の公的注目の波をもたらしました。William CasarinによるiOSクライアントのDamusは、度重なるリジェクトの後に1月31日にApple App Storeで承認されました。2月1日までに米国ソーシャルネットワーキングでトップ10に到達しました。2日後の2月2日、報道によるとサイバースペース管理局の要請によりAppleがDamusを中国のApp Storeから削除しました。
TechCrunchやCoinDeskを含む主要メディアが削除を報じ、アプリとプロトコルの両方の認知度を高めました。nostr.directory上のメタデータ付きユニーク公開鍵は2月3日までに30万を超えました。すべてのrelayは自費で運営する愛好家によって運営されており、インフラは負荷に対処するために奔走しました。2月初旬までに約289のrelayが追跡され、その数は増加し続けました。
NIPsリポジトリはその月に29件のマージ済みプルリクエストを記録し、それまでのプロトコル史上最多の月間件数でした。NIP-57(Lightning Zaps)とNIP-23(Long-form Content)が2月13日に同時にマージされ、Bitcoinマイクロペイメントの追加とNostrの短文投稿以外への拡張が1日で実現しました。NIP-65(Relayリストメタデータ)はその1週間前の2月7日にマージされ、後に続くアウトボックスモデルを可能にしました。NIP-46(Nostr Connect)とNIP-58(Badges)も月末までにランドしました。
Human Rights Foundationは2月21日にWilliam CasarinにNostrとDamus開発のため5万ドルの助成金を授与しました。これはNostrプロジェクトへの最初期の機関助成金の1つでした。OpenSatsのNostrファンドはまだ開始されていませんでした(2023年7月に開始)。
2024年2月:プロトコルの耐久性
2024年2月は成長からプロトコルの耐久性へと焦点を移しました。前年7月からオープンしていたNIP-17(プライベートダイレクトメッセージ)は、NIP-44の監査済み暗号方式とNIP-59 gift wrappingを使用する老朽化したNIP-04暗号化の置き換えに向けて取り組んでいました。NIP-04はrelayオペレーターにメタデータを漏洩し、送信者と受信者のペアを確認できました。NIP-17は使い捨てキーペアの背後に送信者のアイデンティティを隠し、3月の最終レビューラウンドを経てその春にマージされました。
NIP-29(Simple Groups)は数か月の議論を経て2月28日にマージされ、管理者ロールとアクセス制御を持つモデレートされたグループチャットをrelayがホストする方法を定義しました。NIP-92(imetaタグ)は2月1日にマージされ、クライアントがメディアイベントに画像寸法とblurhashプレビューを添付する方法を標準化しました。
2月16日、NIPsリポジトリにBREAKING.mdが追加されました。これはプロトコル仕様への後方互換性のない変更を追跡するファイルです。その作成は、Nostrが破壊的変更に正式な文書化が必要な成熟レベルに達したことを認めるものでした。
その月に22件のプルリクエストがマージされました。npub.cashがサーバーを運用せずにどのnpubでも支払いを受け取れるLightningアドレスサービスとしてローンチされました。2月8日に公開された学術論文は、無料relayの95%が寄付だけでは運用コストを賄えず、有料relayの35%が1,000 sats(当時約0.45ドル)未満の入場料を請求していることを発見しました。
2025年2月:インフラの成長
2025年2月はNIPsリポジトリに28件のマージ済みプルリクエストを生み出しました。Right to Vanish NIPが2月19日にマージされ、データポータビリティとユーザーコントロールに関する規制上の質問に応じてユーザーがrelayからのデータ削除を要求する方法を定義しました。
NIP-60(Cashuウォレット)とNIP-61(Nutzaps)が簡素化アップデートを受け、ecashトークンストレージ形式が合理化されました。qタグ(引用タグ)のロールアウトが複数のNIPにわたって続き、イベントが引用とスレッディングのために他のイベントを参照する方法を標準化しました。
クライアントリリースは着実な進歩を示しました。Notedeck v0.3.0アルファが1月最終日に出荷され、2月もアドプションが続きました。Primal v2.1が2月7日に続き、Go relay実装のGRAIN v0.3.0が2月21日にリリースされました。
NOSTRLDN v5がロンドンNostrコミュニティの第5回ミートアップを開催しました。DVMCPブリッジがNostrのData Vending Machines(NIP-90)とModel Context Protocolを接続し、翌月に到来するAIエージェント統合作業を予告しました。
2026年2月:ソーシャルメディアを超えて
2026年2月のアクティビティはNostr Compass第8号から第11号から引用しています。
2026年2月はどのNostr単月でも最も広範なアプリケーションレイヤー開発を生み出しました。Mostroが分散型P2P Bitcoin取引の初のパブリックベータを出荷し、Zapstoreがリリース候補テストの数か月を経て1.0安定版に到達しました。White Noise v0.3.0が160件以上のマージ改善とAmber署名者サポートを含むリアルタイムMarmot暗号化メッセージングを提供しました。
pablof7z(エージェントワークフロー用NIP-AE、MCPサーバーアナウンス用NIP-AD)とjoelklabo(AIエージェントメッセージ)からの競合するAIエージェント提案が、NIP-90を拡張するDVMエージェント調整提案とともに到着しました。ContextVMがModel Context ProtocolをNostrトランスポートに接続するSDK改善を出荷しました。BurrowがAIエージェントと人間の両方にMarmot暗号化メッセージングを追加し、Nostrのアイデンティティとrelayインフラをマシン間通信に拡張しました。
FIPSがsecp256k1キーペアをノードアイデンティティとして使用し、UDP、イーサネット、Bluetooth、LoRadioにわたるトランスポート非依存ルーティングを持つNostrネイティブメッシュネットワーキングの動作するRust実装を出荷しました。その設計はNostrのキーモデルがソーシャルメディアを超えて物理ネットワークインフラに拡張できることを示しました。
OpenSatsが第15波のNostr助成金を発表し、ContextVMとNostubeを含むプロジェクトに資金提供しました。プロトコル変更にはNostr Wallet ConnectのNIP-47ホールドインボイスサポートとrelayサイドのカウント推定のためのNIP-45(カウント結果)HyperLogLogが含まれました。Web of Trustスコアリング用のNIP-85(Trusted Assertions)サービスプロバイダー発見機能もマージされました。rust-nostrが完全なAPI再設計を開始し、Nostria 3.0とFrostr(iOS TestFlight)が出荷されました。Blossomのローカルキャッシュレイヤーがrelay間のメディア可用性に対応しました。
今後の展望
5つの2月のプロトコル史は、基盤的作業からアプリケーションレイヤーの多様化への一貫した進展を示し、2023年のユーザー流入がターニングポイントとなりました。2021年には7人のコントリビューターが3つのrelayで作業していました。2026年までに、同じプロトコルがプロダクションインフラ上で実行されるメッシュネットワーキングと自律エージェント提案をサポートしています。
今週は以上です。構築中のプロジェクトや共有したいニュースがあれば、NIP-17 DMでお問い合わせください。Nostrでもお待ちしています。