Bitchat 无许可群聊
一句话简介
基于蓝牙低功耗的无需注册、无需服务器的隐私群聊应用,使用 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 客户端互通;每个地理区域使用临时密钥。
私聊传输选择
- 蓝牙优先:使用已有 Noise 会话直连,最快、最私密
- Nostr 回退:蓝牙不可用时,通过收件人 Nostr 公钥经中继网络投递
- 智能排队:两者皆不可用时进入队列,恢复后自动送达
频道类型
mesh #bluetooth:纯本地蓝牙 meshblock #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 build 与 just 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…