Nostr Compassへようこそ。Nostrの週刊ガイドをお届けします。

今週のハイライト: BitchatはC言語版TorをRust実装のArtiに置き換え、信頼性とパフォーマンスを向上させました。nostrdb-rsはゼロアロケーションデータベース操作を可能にするストリーミングfoldクエリを獲得。Listrは1年間の休止期間を経て、NDK 3ベータ移行とAI支援メンテナンスによる大規模なリファクタリングを実施。ZeusはリモートLightning制御のためのNIP-47 (Nostr Wallet Connect)修正とCashu改善に焦点を当てた17件のマージされたPRを出荷。Primal Androidはウォレットバックアップフローと適切なアスペクト比のためのNIP-92 (メディア次元)サポートを追加。新しいドラフトNIPは標準化されたリレー信頼スコアリングのためのTrusted Relay Assertionsを提案しています。

ニュース

BitchatがTorサポートでRust Artiに移行

Bitchatは、C言語版TorからTorプロトコルのRust実装であるArtiに移行しました。PR #958はC言語版Torの依存関係を削除してArtiを統合し、メモリ安全性の保証と信頼性の向上をもたらします。この変更により、C言語実装で長年の問題だったフォアグラウンドサービスの再起動を引き起こしていた休止状態の起動試行が排除されます。

ユーザーにとっての意味: より安定した暗号化メッセージングで、特にモバイルデバイスでの切断が少なくなります。Rust実装は、絶え間ない再接続試行によるクラッシュリスクとバッテリー消耗を削減します。

ArtiはTor ProjectによってRustで開発されたTorの完全な書き直しであり、メモリ安全性によるセキュリティの向上とアプリケーションへの統合の容易さを提供します。Bitchatにとって、メモリ安全性特性は、暗号化メッセージとリレー接続を処理する際の攻撃面を削減します。この移行は、チームの最近のCure53セキュリティ監査 (Newsletter #5でカバー)に続き、セキュリティ改善を継続しています。

このPRはまた、ChatViewModelとBLEServiceの包括的なテストカバレッジを導入し、デッドコードを削除し、テストスイートを安定化します。Bluetooth Low Energyメッシュの信頼性向上はTorの変更に付随し、大規模な転送失敗に対処します。これらの変更により、TorがローカルBLE通信と並んでインターネット接続を提供するオフラインメッシュネットワーキングシナリオでのBitchatの弾力性が向上します。

ListrがAI駆動のメンテナンスで復活

JeffGは、listr.lolで利用可能なNostrリスト管理アプリケーションListrの大規模なリファクタリングを発表しました。プロジェクトが1年以上休止状態だった後のことです。AI支援を使用して、NDK 3ベータへの移行、SvelteとViteの最新バージョンへの更新、すべての依存関係の最新化を含む包括的なアップグレードを完了しました。このリファクタリングは、パックのフォローに対するファーストクラスのサポートを追加し、50項目を超えるリストのページネーションを実装し、休止期間中に蓄積された多数のバグを修正します。

ユーザーにとっての意味: Listrは、フォローリスト、コンテンツコレクション、トピックキュレーションを管理するための改善されたパフォーマンスと新機能でオンラインに戻りました。ページネーション修正により、大きなリストが実際に使用可能になります。

JeffGは、AI支援がなければ、このメンテナンス作業は決して行われず、プロジェクトが放棄されることを防げなかっただろうと述べました。ListrはNostrでのコンテンツキュレーションを可能にし、ユーザーがプロフィール、トピック、リソースのリストを作成、管理、共有できるようにします。このアップグレードにより、リスト管理がプロトコル上のコンテンツ発見においてより中心的になるにつれて、アプリケーションは現在のNostr標準とクライアントの期待に準拠し続けます。

NIP更新

NIPsリポジトリへの最近の変更:

マージ済み:

  • NIP-29 (リレーベースのグループ) - リレーキーの明確化 (#2190 - マージ済み)は、リレーキーがリレーURL自体であり、公開鍵ではないことを明確化します。仕様は「リレーキーはリレーのWebSocket URL (例: wss://groups.example.com)」と明示的に述べ、混乱を避けます。これは、クライアントが特定のグループをホストするリレーを識別する方法に影響し、グループがホストするリレーに適切に帰属されることを保証します。

オープンPRとディスカッション:

  • Trusted Relay Assertions - ドラフトNIPは、NIP-66 (リレー発見と監視)メトリクス、オペレーターの評判、ユーザーレポートから計算された信頼スコア(0-100)を含むkind 30385イベントを通じてリレー信頼スコアリングを標準化することを提案します。仕様は信頼を信頼性(稼働時間、レイテンシ)、品質(TLS、ドキュメント、オペレーター検証)、アクセシビリティ(管轄区域、障壁、監視リスク)コンポーネントに分割します。オペレーター検証には、NIP-11 (リレー情報ドキュメント)を介した暗号署名、DNS TXTレコード、.well-knownファイルが含まれます。ユーザーはkind 10385イベントを介して信頼されたアサーションプロバイダーを宣言し、クライアントが複数のプロバイダーに多様な視点を問い合わせることを可能にします。この提案は、NIP-66発見を評価で補完し、NIP-46 (リモート署名/Nostr Connect)が接続URIでリレーの信頼性を評価するのを支援します。

  • ポスト量子暗号 - PR #2185 (オープン)は、Newsletter #5が量子耐性アルゴリズムの提案を導入して以来、進化し続けています。今週のディスカッションは、暗号アジリティの実装詳細に焦点を当てました:移行中にクライアントが二重署名を処理する方法、古いクライアントの後方互換性、および大きな量子耐性署名のパフォーマンスへの影響。貢献者は、ML-DSA-44のみを義務化するか、柔軟性のために複数のアルゴリズム(ML-DSA-44、Falcon-512、Dilithium)をサポートするかについて議論しました。コンセンサスは段階的アプローチに傾いています:最初はオプションの量子署名、広範なクライアントサポートと実際の量子脅威の出現後にのみ必須になります。

NIP詳細解説: NIP-11とNIP-66

今週は、リレーの発見と評価を可能にする2つのNIPを検証します:NIP-11はリレーが自分自身を記述する方法を定義し、NIP-66はリレーの動作を測定する方法を標準化します。これらは一緒にリレー信頼評価システムの基礎を形成します。

NIP-11: リレー情報ドキュメント

NIP-11は、リレーがHTTPを介して提供する、その機能、ポリシー、オペレーター情報を記述するJSONドキュメントを定義します。クライアントがwss://relay.example.comに接続すると、https://relay.example.com (wss://https://に置き換えて)を取得してリレーの情報ドキュメントを取得できます。

このドキュメントは、Accept: application/nostr+jsonヘッダーを持つ標準のHTTPコンテンツネゴシエーションを使用します。これにより、リレーはブラウザに通常のWebサイトを提供しながら、Nostrクライアントに機械可読メタデータを提供できます。レスポンスには、リレーソフトウェア名とバージョン、オペレーター連絡先情報(公開鍵、メール、代替連絡先)、サポートされているNIP、支払い要件やコンテンツ制限などの運用パラメータが含まれます。

重要なことに、基本的なNIP-11ドキュメントはHTTPSを介して提供される署名なしのJSONであり、認証性をTLS証明書のみに依存しています。これは、リレーのWebサーバーを制御している人なら誰でもドキュメントを変更でき、オペレーターの主張が検証できないことを意味します。Trusted Relay Assertionsの提案は、リレーのself公開鍵フィールドを通じて署名された証明を導入することで、このギャップに対処し、リレーが認証メカニズムに署名済みイベントを使用する方法と同様に、オペレーターのアイデンティティの暗号的証明を可能にします。

{
  "name": "relay.example.com",
  "description": "A general-purpose public relay",
  "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
  "contact": "admin@example.com",
  "supported_nips": [1, 2, 4, 9, 11, 12, 16, 20, 22],
  "software": "git+https://github.com/relay/relay.git",
  "version": "1.2.3",
  "limitation": {
    "max_message_length": 16384,
    "max_subscriptions": 20,
    "max_filters": 100,
    "max_limit": 5000,
    "max_subid_length": 100,
    "min_prefix": 4,
    "max_event_tags": 2000,
    "max_content_length": 8196,
    "min_pow_difficulty": 0,
    "auth_required": false,
    "payment_required": false
  },
  "payments_url": "https://relay.example.com/payments",
  "fees": {
    "admission": [{"amount": 5000, "unit": "msats"}],
    "subscription": [{"amount": 1000, "unit": "msats", "period": 2592000}],
    "publication": []
  }
}

limitationオブジェクトは、リレーが実施する制約をクライアントに伝えます。max_message_lengthはWebSocketフレームサイズを制限し、max_subscriptionsは接続ごとの同時REQサブスクリプションを上限とし、max_filtersはREQごとのフィルターを制限し、max_limitは単一のフィルターが要求できるイベント数を制約します。これらのパラメータは、クライアントがリレーの機能に適応し、制限を超えて切断されるのを防ぐのに役立ちます。

支払い情報はfeespayments_urlに表示されます。リレーは、入場(1回限りのアクセス)、サブスクリプション(定期的なアクセス)、または公開(イベントごとの料金)に課金できます。payments_urlは、通常Lightning請求書またはecashミントである支払い方法の詳細を指します。有料リレーは、クライアントが認証を試みる前に、これらのフィールドを使用して価格を伝達します。

supported_nips配列により、クライアントはリレーの機能を発見できます。リレーがNIP-50をリストしている場合、クライアントは全文検索クエリを送信できることがわかります。NIP-42が表示される場合、クライアントは認証チャレンジを期待する必要があります。この宣言的な機能広告により、プログレッシブエンハンスメントが可能になります:クライアントは利用可能な高度な機能を使用しながら、限定的なサポートのリレーでは適切に劣化できます。

オペレーター情報は説明責任を構築します。pubkeyフィールドはNostr上のリレーオペレーターを識別し、NIP-17 DMまたは公開メンションを介した直接通信を可能にします。contactメールはプロトコル外のフォールバックを提供します。これらのフィールドは、ユーザーが不正使用レポート、アクセスリクエスト、または技術的な問題についてオペレーターに連絡するのに役立ちます。

NIP-11ドキュメントは自己報告です:リレーは実際に行うことではなく、サポートすると主張することを記述します。ここでNIP-66が重要になります。

NIP-66: リレー発見と稼働監視

NIP-66は、リレー監視データをNostrに公開することを標準化します。モニターサービスは、可用性、レイテンシ、プロトコル準拠、サポートされているNIPについてリレーを継続的にテストします。結果をkind 30166イベントとして公開し、リレーの自己報告から独立したリアルタイムのリレーステータスを提供します。

モニターは、接続してテストサブスクリプションを送信することによりリレーの可用性をチェックします。レイテンシ測定は、接続時間、サブスクリプション応答時間、イベント伝播遅延を追跡します。プロトコル準拠テストは、リレーの動作が仕様と一致することを確認し、実装バグや意図的な逸脱をキャッチします。NIPサポート検証は、NIP-11の主張を超えて、広告された機能が実際に正しく動作するかどうかを実際にテストします。

{
  "id": "a34b5c7d89e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7",
  "pubkey": "4e2d0bc6f8e7c3a5b9f1d2e3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4",
  "created_at": 1736784000,
  "kind": 30166,
  "tags": [
    ["d", "wss://relay.example.com"],
    ["rtt", "open", "143", "1736784000"],
    ["rtt", "read", "89", "1736784000"],
    ["rtt", "write", "92", "1736784000"],
    ["nips", "1", "2", "4", "9", "11", "12"],
    ["geo", "US", "United States", "New York"],
    ["other", "network", "clearnet"],
    ["other", "payment_required", "false"],
    ["other", "auth_required", "false"]
  ],
  "content": "{\"last_check\": 1736784000, \"checks\": 8760}",
  "sig": "8b9c4d5e6a7f8b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b"
}

dタグにはリレーURLが含まれ、これをパラメータ化された置換可能なイベントにします。各モニターは、測定値が変化するにつれて更新される、リレーごとに1つのイベントを公開します。複数のモニターが同じリレーを追跡でき、冗長性とクロスバリデーションを提供します。クライアントは複数のモニター公開鍵をクエリして、リレーの健全性に関する多様な視点を取得します。

ラウンドトリップタイム(rtt)タグは、さまざまな操作のレイテンシを測定します。rtt openはWebSocket接続確立を追跡し、rtt readはサブスクリプション応答時間を測定し、rtt writeはイベント公開速度をテストします。すべての値はミリ秒単位です。クライアントはこれらのメトリクスを使用して、時間に敏感な操作には低レイテンシのリレーを優先したり、遅いリレーを優先度を下げたりします。

nipsタグは、主張されたサポートではなく、実際に検証されたNIPサポートをリストします。モニターは、その機能を実行することによって各NIPをテストします。リレーがNIP-11ドキュメントでNIP-50検索を主張しているが、検索クエリが失敗した場合、モニターは検証済みリストからNIP-50を省略します。これにより、リレー機能に関する真実が提供されます。

地理情報は、クライアントがレイテンシの改善と検閲への耐性のために近くのリレーを選択するのに役立ちます。geoタグには、国コード、国名、地域が含まれます。networkタグは、クリアネットリレーをTor hidden servicesまたはI2Pエンドポイントと区別します。これらのタグを組み合わせることで、地理的多様性が可能になります:クライアントは、地域的な検閲に抵抗するために複数の管轄区域のリレーに接続できます。

モニターデータは、クライアントのリレーセレクター、エクスプローラーWebサイト、およびTrusted Relay Assertions提案に電力を供給します。自己報告されたNIP-11ドキュメントと測定されたNIP-66データおよび計算された信頼アサーションを組み合わせることで、エコシステムは、ハードコードされたデフォルトや口コミの推奨に頼るのではなく、情報に基づいたリレー選択に向かって移動します。

リリース

0xchat v1.5.3 - 拡張メッセージング機能

0xchat v1.5.3は、TelegramスタイルのNostrメッセージングクライアントに大幅な改善をもたらします。このリリースは、Amberなどの外部署名者を通じた適切なイベント署名を妨げていたNIP-55 (Android署名者アプリケーション)準拠の問題に対処します。完全な準拠により、0xchatは署名操作を正しく委任し、秘密鍵を分離してセキュリティを向上させます。

このアップデートは、FileDropServerとBlossomServerの両方をデフォルトのメディアストレージオプションとして統合し、ファイルアップロードの冗長性をユーザーに提供します。Blossomは、ファイルがSHA-256ハッシュによって参照されるコンテンツアドレス可能なストレージを提供し、整合性を確保し、ネットワーク全体での重複排除を可能にします。Momentsの自動ドラフト保存は、長文コンテンツを作成する際のデータ損失を防ぎ、アプリの切り替えや接続の中断中に失われた投稿に関するユーザーの苦情に対処します。

Cashuウォレット統合は、使用済みトークンをウォレットビューから削除する自動プルーフフィルタリングにより洗練されます。これにより、ユーザーが有効なecashと並んで無効なプルーフを見て、残高計算が信頼できなくなるという混乱するUXが解決されます。フィルタリングはクライアント側で行われ、プライバシーを維持しながら、チャット内のピアツーピアトランザクションの支払いエクスペリエンスを向上させます。

Amber v4.1.0 プレリリース - UI刷新

Amber v4.1.0-pre1からv4.1.0-pre3は、人気のあるAndroidイベント署名者の再設計されたインターフェースを導入します。ログイン画面は、どのアプリケーションが署名権限を要求しているかを明確に表示し、承認フローに関するユーザーの混乱に対処します。新しいイベント画面は、アプリケーションが署名したいデータの詳細な検査を提供し、ユーザーが操作を承認する前に情報に基づいたセキュリティ決定を行うことを可能にします。

権限管理は、各接続されたアプリケーションに正確にどのような機能が付与されているかを示す改訂されたインターフェースで大きな注目を集めています。ユーザーは完全に切断することなく特定の権限を取り消すことができ、署名委任のきめ細かい制御が可能になります。更新されたquartzライブラリを使用したリファクタリングされたリレーカウンターは、イベントスループットとリレーパフォーマンスに関するリアルタイム統計を提供します。NIP-46 (Nostr Connect)バンカー接続は、接続が失敗したときに詳細なエラーメッセージを表示し、不可解なタイムアウトエラーを実用的な診断に置き換えます。

注目すべきコードとドキュメントの変更

これらはマージされたプルリクエストと追跡する価値のある初期段階の開発です。一部はリリース前に進化する可能性がある実験的機能です。

Zeus (Nostr Wallet ConnectによるLightningウォレット)

Zeusは今週17のプルリクエストをマージし、主要なNIP-47 Nostr Wallet Connect実装としての地位を強化しました。最も重要な修正は、Nostrクライアントとの相互運用性の問題を引き起こしていたデータの一貫性とプロトコル準拠の問題に対処します。

トランザクション履歴修正 - PR #3542は、NWCトランザクションリストが不正確または重複したエントリを表示する重大なバグを解決します。この問題は、Zeusがイベント更新を適切に処理せずにトランザクションデータをキャッシュしたときに発生し、ユーザーがファントムトランザクションまたは欠落した支払いを見る原因となりました。この修正は、適切なイベント重複排除とキャッシュ無効化を実装し、トランザクション履歴がLightningノードの状態を正確に反映することを保証します。

プロトコル準拠 - PR #3548は、完全なNIP-47準拠を期待するクライアントとの互換性を壊していた不完全なgetInfoレスポンスに対処します。一部のNostrクライアントは、block_heightnetworkなどのフィールドが欠落している部分的なレスポンスを受信するとクラッシュしました。このPRは、基礎となるLightning実装がそれらを提供しない場合でも、すべての必須フィールドが適切なデフォルトで返されることを保証し、エコシステム全体でZeusの互換性を向上させます。

接続の弾力性 - PR #3543は、停止したNostr接続のタイムアウト通知を実装します。以前は、ユーザーはリレー接続が静かにドロップしたときに無期限に待っていました。現在、Zeusは30秒の非アクティブ後に明確なタイムアウトメッセージを表示し、ユーザーが再試行するか、リレーを切り替えることを可能にします。PR #3541は、互換性のないLightning実装でのNWCアクティベーションを防ぐためのバックエンド検証を追加し、ランタイムクラッシュを引き起こす前に構成エラーをキャッチします。

Cashuレース条件 - PR #3531は、同時ミント操作がトークンデータベースを破損する可能性があったCashuトークン管理の同時実行バグを修正します。レース条件は、複数のスレッドが適切なロックなしでトークンカウントを更新したときに発生し、時折不正確な残高が生じました。この修正は、クリティカルセクション周辺にミューテックス保護を追加し、トークン状態へのアトミックな更新を保証します。

Primal Android (クライアント)

Primal Androidは、ウォレットセキュリティとメディア処理の大幅な改善を伴う12のマージされたPRを出荷しました。ウォレットバックアップ実装は、最も要求された機能の1つに対処し、NIP-92サポートはアプリケーション全体のビジュアルエクスペリエンスを向上させます。

ウォレットバックアップシステム - 4つのPRシリーズ(#844#845#846#848)は、包括的なシードフレーズバックアップ機能を実装します。ユーザーは、スクリーンショットを防ぐセキュアフローを通じて12ワードのニーモニックをエクスポートし、ウォレットダッシュボードにバックアップステータスを表示し、既存のユーザーを移行にガイドできるようになりました。実装はBIP-39標準に従い、誤ったフレーズ記録により資金を失うことを防ぐための検証が含まれています。

メディア次元 (NIP-92) - PR #718は、適切な画像とビデオのアスペクト比のためのNIP-92サポートを実装します。次元メタデータがないと、クライアントはサイズを決定するために画像をダウンロードする必要があり、コンテンツが読み込まれるときにレイアウトジャンプが発生します。NIP-92は、ファイルメタデータイベントにdimタグ(["dim", "1920x1080"]など)を追加し、Primalがメディアをダウンロードする前に正しいスペースを予約できるようにします。これにより、画像ギャラリーでの不快なリフローが排除され、知覚されるパフォーマンスが向上します。

リモート署名者の信頼性 - PR #841は、wss://プレフィックスの欠落がサイレント障害を引き起こしたNIP-46接続の問題を修正します。このPRは、バンカー接続セットアップ中にリレーURIを検証し、ユーザーがベアドメインを貼り付けたときにプロトコルプレフィックスを自動的に追加します。PR #843は、ネットワーク状態が悪い場合に返信がルートノートとして投稿され、会話フローを壊すスレッディングバグに対処します。この修正により、親イベントIDがネットワークの中断を通じて持続することが保証されます。

Marmot Protocol: White Noise (暗号化グループチャットライブラリ)

Marmot Protocolの暗号化グループチャットを支えるRustライブラリWhite Noiseは、ユーザーエクスペリエンスとセキュリティを向上させる6つのPRをマージしました。これらの変更により、Marmotはプライバシーファーストのアーキテクチャを維持しながら、主流のメッセージングアプリケーションと機能パリティに近づいています。

既読レシート - PR #433#436は、グループ会話のメッセージ既読追跡を実装します。システムは、単一デバイス内でグループごとのユーザーごとの既読位置を保存し、未読カウントバッジを可能にします。実装は、各会話の最後の既読メッセージ位置を追跡するために単調なタイムスタンプを使用します。この基礎的な機能により、会話ごとの未読メッセージカウントを示すUI指標が可能になります。

会話のピン留め - PR #442は、アカウントをグループにリンクするaccounts_groupsジャンクションテーブルのpin_orderフィールドを通じて永続的な会話のピン留めを追加します。ピンされた会話は、メッセージアクティビティに関係なく、チャットリストの上部にその位置を維持し、SignalやWhatsAppからのユーザーの期待と一致します。実装は、決定論的なソートで無制限のピンを可能にするために整数の順序付けを使用します。

決定論的コミット解決 (MIP-03) - PR #152 (オープン)は、Marmot Improvement Proposal 03を実装し、分散グループチャットにおけるコミットレース条件の重大な問題を解決します。複数のメンバーがグループ状態の変更(メンバーの追加/削除、権限の変更)を同時に送信すると、クライアントはコミットの順序付けで分岐し、グループを互換性のない状態に断片化する可能性がありました。MIP-03は、エポックスナップショットと決定論的な勝者選択を導入します:最も早いcreated_atタイムスタンプを持つコミットが勝ち、タイブレーカーとして辞書式イベントIDを使用します。これにより、すべてのクライアントがロールバックとリプレイを通じて同じ状態に収束でき、ネットワークパーティション中でもグループの一貫性を維持できます。

セキュリティ強化 - PR #443は、resolve_group_image_pathで参照を使用することにより、暗号シークレットの不要なコピーを防ぎます。これにより、解放されたヒープ割り当てからシークレットを回復できるメモリ攻撃のウィンドウが削減されます。PR #438は、キーリングパラメータを通じてSQLCipherデータベース暗号化を有効にし、静止状態のメッセージ履歴を保護します。キーリング統合により、構成ファイルではなくプラットフォームキーチェーンでの安全なキー保存が可能になります。

nostrdb-rs (データベースライブラリ) - オープンPR

ストリーミングクエリ実装 - PR #58 (オープン)は、ゼロアロケーションデータベース操作を可能にするストリーミングfoldクエリを提案します。実装は、結果セット全体をベクトルに具体化することなく、データベース結果を一度に1つずつ処理するfoldtry_foldcountanyall、およびfind_mapメソッドを追加します。このアプローチにより、メモリ消費が削減され、一般的なクエリパターンでの早期終了が可能になります。

技術実装は、低レベルクエリ結果コールバック(ndb_query_visit)を、ControlFlowバリアントをCビジターアクションにマップするステートフルなRustビジターとして公開します。マージされると、アプリケーションコードはデータベースレイヤーの近くで実行しながら、イテレーターロジックのように読み取れるようになります。たとえば、一致するノートをカウントすることは、それらを収集するのではなく結果をストリーミングし、find_mapは残りの行を処理せずに最初の有用な結果を返します。

nostrdbはDamusとNotedeck、iOSとmacOSおよびデスクトップクライアントをそれぞれ駆動します。ストリーミングクエリにより、ページネーション、条件付きフィルタリング、存在チェックなどの効率的なパターンが可能になります。このPRは、+756の追加と-32の削除を含む3つのファイルを変更し、クエリレイヤーの大幅なリファクタリングです。nostrdb-rsベースのアプリケーションのユーザーは、大きなタイムラインを閲覧したり、広範なイベントデータベースを検索したりするときに、メモリ使用量が削減されることがわかります。

nak (CLIツール)

fiatjafのコマンドラインNostrツールnakは、ビルドシステムの改善と新しい機能に焦点を当てた6つのPRをマージしました。PR #91は、Blossomミラー機能を実装し、nakをBlossomメディアサーバーのミラーとして機能させます。Blossomは、Nostrイベントと並行して動作するコンテンツアドレス可能なメディアストレージプロトコルです。

残りのPRは、Windows、macOS、およびLinuxプラットフォーム全体でのビルドシステムの互換性に対処し、NostrイベントをローカルディレクトリとしてマウントするためのFUSEファイルシステムサポートを有効にします。

Damus (iOSクライアント) - オープンPR

Damusには、重要なアーキテクチャ改善を探求する11のオープンPRがあります。これらはまだマージされていませんが、特にプライバシー、同期効率、モバイルデータ最適化に関するiOS Nostrクライアント開発の重要な方向性を示しています。

Tor統合 - PR #3535は、Arti TorクライアントをDamusに直接埋め込み、外部依存関係なしで匿名リレー接続を可能にします。OrbotまたはTor Browserアプローチとは異なり、Artiの埋め込みは、iOSサンドボックスとバックグラウンド実行制限とのシームレスな統合を提供します。Rust実装は、C言語版Torと比較して攻撃面を削減し、ネットワーク匿名化にメモリ安全性をもたらします。ユーザーは、リレーごとまたはグローバルにTorモードを切り替えることができ、クライアントは回路管理を透過的に処理します。

Negentropy同期プロトコル - PR #3536は、同期効率を根本的に向上させるセット調整プロトコルであるNegentropyを実装します。最後の接続以降のすべてのイベントをダウンロードする代わりに、Negentropyはコンパクトなフィンガープリント(Merkleツリー)を交換して、クライアントとリレー間で異なるイベントを正確に識別します。何百もの公開鍵をフォローしているユーザーにとって、これにより同期帯域幅がメガバイトからキロバイトに削減されます。実装は、RelayPoolとSubscriptionManagerと統合され、接続されているすべてのリレーで自動的な効率的な同期を可能にします。

低データモード - PR #3549は、帯域幅消費に関するユーザーフィードバックに応答して、セルラーデータ保存機能を追加します。このモードは、画像の自動読み込み、ビデオのプリフェッチングを無効にし、サブスクリプション制限を削減します。従量制接続を使用しているユーザーは、データ上限を超える心配なしにテキストコンテンツを閲覧できます。実装は、iOS低データモード設定を尊重し、さまざまなメディアタイプに対してきめ細かい制御を提供します。

データベース最適化 - PR #3548は、より高速なクエリとディスク使用量の削減のためにnostrdbスナップショットストレージを再作成します。最適化により、データベーススナップショットがディスクに永続化する方法が変更され、読み取りパフォーマンスと書き込み増幅の両方が向上します。これにより、大きなイベントデータベースを持つユーザーからのバッテリー消耗の苦情に対処します。


今週は以上です。何か作っていますか? 共有したいニュースはありますか? プロジェクトをカバーしてほしいですか? NIP-17 DMでご連絡くださいまたは、Nostrで私たちを見つけてください。