1 ポイント 投稿者 GN⁺ 3 시간 전 | 1件のコメント | WhatsAppで共有
  • Bitchatは、BluetoothメッシュネットワークとインターネットベースのNostrを組み合わせ、アカウント・電話番号・中央サーバーなしで動作するiOS・macOS向け分散型P2Pメッセージングアプリ
  • オフラインではBluetooth LEで最大7ホップ中継をサポートし、インターネット接続時は290以上のNostrリレーを通じて、世界中および位置ベースのチャンネルに接続する
  • プライベートメッセージはBluetoothのNoise Protocolを優先して使用し、接続できない場合はNostrのNIP-17に切り替え、どちらも不可能な場合は送信できるようになるまでキューに保持する
  • geohashの精度に応じて、ブロック・近隣・都市・州・国単位のチャンネルを提供し、/slap/msg/whoのようなIRC風コマンドと、3回タップしてデータを消去するEmergency Wipeをサポートする
  • プロジェクトはパブリックドメインとして公開されており、Xcodeまたはjustで実行できるが、実機ビルドにはDeveloper Team IDとentitlement設定が必要

BluetoothとNostrを組み合わせた転送構造

  • BitchatはBluetoothメッシュとNostrを組み合わせたiOS・macOSネイティブアプリで、App Storeでも提供されている
  • Bluetoothメッシュネットワークは、インターネットなしで周辺デバイスを自動的に探索して接続する
    • Bluetooth LEで直接P2P通信し、隣接デバイスを経由して最大7ホップまでメッセージを中継する
    • Noise Protocolベースのエンドツーエンド暗号化と前方秘匿性をサポートする
    • Bluetooth LEの制約に合わせた圧縮バイナリパケット形式と、バッテリー最適化されたデューティサイクルを使用する
    • mesh #bluetoothチャンネルは、抗議活動・災害・遠隔地などでのオフライン通信を対象とする
  • Nostr転送レイヤーは、世界中の290以上のリレーを通じてインターネットメッセージングを提供する
    • geohash座標で位置ベースのチャットルームを作成し、地域ごとに新しい一時的な暗号化IDを使用する
    • プライベートメッセージはNIP-17 gift wrappingで保護する
    • 位置チャンネルはインターネット接続が必要で、地域コミュニティ、現地イベント、地域ディスカッションに活用される
      • block 7文字: 都市ブロック
      • neighborhood 6文字: 区域・近隣
      • city 5文字: 都市
      • province 4文字: 州・道
      • region 2文字: 国・大規模地域
  • プライベートメッセージのルーティングは、利用可能な転送手段を自動的に選択する
    1. 既存のNoiseセッションを利用できる場合は、高速でプライバシー性の高いBluetooth接続を優先する
    2. Bluetoothを使用できない場合は、受信者のNostr公開鍵とNIP-17を使ってリレーネットワークへ送信する
    3. どちらの方式も使用できない場合は、メッセージをキューに保持し、接続が成立すると自動的に配送する
  • LZ4メッセージ圧縮、適応型バッテリーモード、ネットワーク最適化、IRC風コマンド、3回タップしてすべてのデータを即座に削除するEmergency Wipeも提供する
  • 詳細なプロトコルはTechnical Whitepaperで確認できる

ビルド、ローカライズ、ライセンス

  • Xcodeで実行するには、リポジトリで次のコマンドを使用する
cd bitchat
open bitchat.xcodeproj
  • 実機で実行するには、ローカル設定とコード署名を準備する必要がある
    • cp Configs/Local.xcconfig.example Configs/Local.xcconfigで設定ファイルを複製する
    • 新しいファイルにDeveloper Team IDを追加すると、デフォルトのBundle IDがchat.bitchat.<team_id>に設定される
    • entitlementのgroup.chat.bitchatgroup.<your_bundle_id>に手動で変更する必要がある
  • macOSでは、brew install just後にjust runで設定とソース実行が可能
    • その後just cleanを実行すると、モバイルアプリのビルド・開発用の元の状態に復元される
  • ローカライズリソースは、アプリと共有拡張に分かれている
    • 基本アプリの文字列と複数形ルールは、bitchat/Localization/Base.lproj/Localizable.stringsLocalizable.stringsdictに追加する
    • 共有拡張の文字列は、bitchatShareExtension/Localization/Base.lproj/Localizable.stringsで管理する
    • キーはapp_info.features.offline.titleのように意図が分かるように作成し、可能な限り既存のキーを再利用する
    • ローカライズ変更は、xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO buildでコンパイルを確認する
  • プロジェクトはパブリックドメインで配布されており、詳細条件はLICENSEで確認できる

1件のコメント

 
GN⁺ 3 시간 전
Hacker News のコメント
  • 昨日 Radicle デスクトップクライアントをインストールして新しいユーザー名とパスワードを入力したが、何も起きなかった。アプリを再起動してもアカウント作成・ログイン画面を通過できず、Radicle の利用はそこで終わった

  • 可用性を重視するなら、libs.gms.location への依存を見直し、F-Droid でも配布すべき(https://gitlab.com/fdroid/fdroiddata/-/merge_requests/24907#...

    • リポジトリ管理者は PR のレビューもメッセージへの返信も止めてしまったようだ。進めるには誰かが fork する必要がありそう
  • Fusion Festival で Bitchat を起動して歩き回り、約20台のデバイスといくつかのメッセージを見つけたが、自分が送ったメッセージには誰も返信しなかった。8万人中20台なので利用者がまったくいないわけではないが多くもなく、最大 2ホップ にとどまり、会場を横断できるほど十分な密度にはならなかった

    • 複数の抗議活動で使われており、現在インドの CJP 抗議活動でも使われていると認識している。インド政府は GitHub にリポジトリの削除も要請した
    • 少なくとも メッシュ Wi-Fi は追加されたが、生死に関わる抗議活動の状況を除けば、導入ペースはかなり遅い
      席を並べて座るために50ドル余計に払いたくなくて、飛行機で同行者と離れてしまったときには役に立つ
    • こうしたニッチなプロジェクトでデバイス20台なら、すでにかなりの数字だ
    • 実際に動作するという点がなかなかすごい。3万人が集まったフェスで同行者を探そうと AirTag を持っていったが、完全に使い物にならなかった
    • 最後に使ったときは、ASCII アートで描かれたヒトラー画像しか投稿されていなかった。それでも、始まりは始まりだ
  • BitChat に関心があるなら、人気が出たり一緒に使う相手に出会ったりしたときに備えて、とりあえずインストールしておく価値はある。実際に試してみると、Wi-Fi やモバイル通信なしでテキストをやり取りする感覚は非現実的だった

    • 混雑した場所に行くたびに起動して確認している。ただ、メッシュではないインターネットチャットでは、ジオハッシュよりも 近辺ベースのチャットがあるといい。ジオハッシュは望む範囲の粒度を選ぶのがいつも難しい
      重複するジオハッシュも悪くはないが、トランシーバーのように片方だけが範囲内にいると会話の半分しか見えない混乱が心配だ。現在のジオハッシュは約1エーカーまで絞られていて精密すぎるが、12階建ての大学寮全体で1つのチャットルームを使う場合には役立つかもしれない
    • Bluetooth チャットアプリはすでに存在する。昨年、ヨーロッパの Ryanair 便で離れて座った友人たちと話すために App Store で見つけた Berkanan を使ったが、見た目はひどくても機能はきちんと動いた
  • Radicle のサイトは Git リポジトリプラットフォームとして興味深いデザインを見せている。全幅の余白、よく整理されたナビゲーション構造、見やすいコードレンダリングが気に入った

    • 任意の Git リポジトリ URL をつないで、同じ形で表示するサービスを作れるのか気になる
  • Bitchat は AOS の プロジェクトだ。同じ AOS プロジェクトである ngit に再ホスティングしていない点が意外だ

    • ngit にミラーがないのは少し意外だが、メインのホスティング場所にしていないのは理解できる。人々が実際に見つけられる場所にある必要があるからだ
      Nostr 純粋主義に陥ると、投稿を見る人がわずか5人だけという結果になりがちだ。プロトコルは好きだが、ユーザーを増やすには、人々がすでにいる場所にアプリを置かなければならない
  • ほかの分散型メッセージング製品である Nostr や XMTP と比べて、特別な機能があるのか気になる