Bitchat 无许可群聊

permissionlesstech/bitchat 访问 GitHub ↗
🔤 Swift ★ 35800 ⑂ 0 monthly #5 (+9757) 抓取 2026-08-23

一句话简介

基于蓝牙低功耗的无需注册、无需服务器的隐私群聊应用,使用 Swift 开发,支持点对点加密消息传输。

标签

  • iOS
  • Swift
  • 蓝牙通信
  • 隐私通讯
  • 去中心化

适用应用场景

  • 无网络环境下的本地群组沟通
  • 隐私敏感的临时任务协作
  • 应急救援场景的离线通讯
  • 音乐节等大型活动的近距离消息推送

README 中文摘要

项目概述

bitchat 是一款去中心化的点对点即时通讯应用,采用双重传输架构:在无网络环境下使用蓝牙 mesh 实现本地通信,在有网络时通过 Nostr 协议触达全球用户。无需注册账号、无需手机号、不依赖任何中心服务器,适用于离线场景和地理位置社群。

应用官方页面:bitchat.free,可在 App Store 与 Play Store 下载。

安装与构建建议

由于项目曾面临下架压力,第三方镜像与篡改构建风险较高,强烈建议从官方应用商店安装,或按 docs/VERIFYING-A-BUILD.md 的步骤核对源码与发布清单的哈希值,确认无篡改后再编译。

核心特性

  • 双重传输架构:蓝牙 mesh(离线) + Nostr 协议(互联网)
  • 基于地理位置的频道:使用 geohash 坐标在 Nostr 中继上创建地理聊天室
  • 智能消息路由:自动选择最优传输通道,蓝牙优先、Nostr 兜底
  • 去中心化 mesh 网络:自动发现邻居节点,支持最多 7 跳的中继
  • 隐私优先:无账号、无手机号、无服务器;mesh 使用由身份密钥派生的持久设备标识,详见白皮书
  • 端到端加密私聊:mesh 使用 Noise 协议;Nostr 回退使用 BitChat 自有信封格式
  • IRC 风格命令:熟悉的 /msg/who 等斜杠指令
  • 应急清除:三击清空全部数据
  • 性能优化:LZ4 消息压缩、自适应省电模式与网络调优

技术架构

应用采用两层互补的传输结构。

蓝牙 mesh(离线)

适用于无互联网场景,支持多跳中继、Noise 协议端到端加密、二进制紧凑报文、自动邻居发现与自适应占空比节能。前向保密仅覆盖在线会话,存储转发消息为密封信封形式。

Nostr 协议(互联网)

通过全球 440+ 中继节点触达远端用户,按 geohash 精度支持从街区到国家级别的频道。私聊使用 BitChat 自有信封格式(封装于 kind-1059 事件、v2: 前缀内容、XChaCha20-Poly1305 加密),不兼容 NIP-17、NIP-44、NIP-59,仅与 BitChat 客户端互通;每个地理区域使用临时密钥。

私聊传输选择

  1. 蓝牙优先:使用已有 Noise 会话直连,最快、最私密
  2. Nostr 回退:蓝牙不可用时,通过收件人 Nostr 公钥经中继网络投递
  3. 智能排队:两者皆不可用时进入队列,恢复后自动送达

频道类型

  • mesh #bluetooth:纯本地蓝牙 mesh
  • block #dr5rsj7:街区级(约 7 位 geohash)
  • neighborhood #dr5rs:社区级(6 位)
  • city #dr5:城市级(5 位)
  • province #dr:省级(4 位)
  • region #dr:国家或大区(2 位)

构建方式

方式一:Xcode

open bitchat.xcodeproj  # 打开工程

需为签名设备构建时,复制本地配置并填入 Apple Developer Team ID:

cp Configs/Local.xcconfig.example Configs/Local.xcconfig

常用命令行检查:

# macOS Debug 构建,不签名
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" \
  -configuration Debug CODE_SIGNING_ALLOWED=NO build

# 完整 SwiftPM 测试套件
swift test

# iOS 模拟器测试
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (iOS)" \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator,name=iPhone 17' test

iPhone 17 不可用,可用 -showdestinations 列出已安装模拟器。

方式二:just

brew install just
just check   # 校验
just run     # 运行

just buildjust run 使用当前 bitchat (macOS) scheme,构建产物输出到被忽略的 .DerivedData/ 目录,不会修改源码与工程文件。just clean 仅清理 .DerivedData/.build/,保留未提交改动。

本地化

  • 主应用字符串:bitchat/Localizable.xcstrings
  • 分享扩展字符串:bitchatShareExtension/Localization/Localizable.xcstrings
  • 推荐使用描述意图的键名(如 app_info.features.offline.title),并优先复用已有键
  • 修改后可执行上方 xcodebuild 命令做编译校验

许可证

本项目以公共领域(public domain)形式发布,详见 LICENSE 文件。

摘要更新于 2026-07-31 00:33:24 · 原文 7395 字符 · md5 ba8423c792a1…