bitchat 是什么?
bitchat 是一个去中心化的 P2P 即时通讯应用,它最酷的地方在于:完全不需要互联网。通过蓝牙低功耗(BLE)Mesh 网络,附近的设备可以自动组网、多跳中继消息,实现真正的离线通信。
项目目前在 GitHub 上已获得超过 28,000 Star,是近期最火的开源通信项目之一。采用 Unlicense(公共领域) 许可证,完全自由使用。
核心特性一览
| 特性 | 说明 |
|---|---|
| 🔌 双传输架构 | 蓝牙 Mesh(本地离线)+ Nostr 协议(互联网全球通信) |
| 🔒 端到端加密 | 蓝牙使用 Noise Protocol,Nostr 使用 NIP-17 |
| 📡 自动组网 | 设备自动发现、多跳消息中继(最多 7 跳) |
| 🕵️ 完全匿名 | 无需账号、无需手机号、无持久标识符 |
| 🌍 地理频道 | 基于 geohash 的地理位置聊天室 |
| 🚨 紧急擦除 | 三击屏幕瞬间清除所有数据 |
| 📱 全平台 | iOS + macOS 原生支持 |
和传统聊天应用有什么区别?
微信/Telegram/Signal:
用户 → 互联网 → 中心服务器 → 互联网 → 用户
bitchat(蓝牙模式):
设备A → 设备B → 设备C → 设备D(多跳 Mesh,无需互联网)
bitchat(Nostr 模式):
用户 → Nostr 中继网络(去中心化)→ 用户
关键区别:当基站断了、网络瘫了、或者你在深山老林里,bitchat 照样能用。
技术架构深度解析
bitchat 的精妙之处在于它的双传输混合架构——蓝牙负责本地通信,Nostr 负责全球互联,两者无缝切换。
蓝牙 Mesh 网络层
蓝牙 Mesh 是 bitchat 的核心创新。它利用 Bluetooth Low Energy(BLE)实现设备间的直接通信:
- 自动发现:设备进入范围后自动识别附近节点
- 多跳中继:消息可以在设备间跳转,最多 7 跳,大幅扩展通信范围
- Noise Protocol 加密:端到端加密 + 前向保密,即使密钥泄露也无法解密历史消息
- 二进制协议:针对 BLE 带宽限制优化的紧凑数据包格式
- 自适应电源管理:智能占空比调节,延长电池续航
Nostr 协议层
当蓝牙不可用时,bitchat 会自动切换到 Nostr 协议进行互联网通信:
- 290+ 全球中继节点:分布式网络确保可靠性
- 地理位置频道:基于 geohash 坐标的本地社区聊天
- NIP-17 加密:Gift-wrapped 私聊消息,保护互联网隐私
- 临时密钥:每个 geohash 区域使用全新的加密身份
智能消息路由
bitchat 的消息路由策略非常聪明:
优先级 1:蓝牙直连(最快、最私密)
↓ 不可用
优先级 2:Nostr 中继(全球覆盖)
↓ 不可用
优先级 3:消息队列(等待连接恢复后自动投递)
安装与快速上手
iOS / macOS 安装
bitchat 是 Apple 生态原生应用,可以直接从 App Store 下载:
App Store 搜索 "Bitchat Mesh" 即可安装
从源码构建(开发者)
如果你想自己编译或参与开发:
# 克隆仓库
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat
# macOS 用户一键运行
brew install just
just run
# 或者用 Xcode 打开
open bitchat.xcodeproj
从源码构建需要注意几个配置步骤:
# 1. 复制本地配置模板
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
# 2. 在 Local.xcconfig 中添加你的 Developer Team ID
# 3. 手动更新 Entitlements:
# 将 group.chat.bitchat 替换为 group.<你的TeamID>
第一次使用
打开 bitchat 后,你会看到一个 IRC 风格的终端界面——这正是它的特色:
╔══════════════════════════════════╗
║ bitchat v2.0 ║
║ bluetooth mesh chat ║
╠══════════════════════════════════╣
║ [mesh] 欢迎加入 mesh 网络! ║
║ [mesh] 发现 3 个附近设备 ║
║ ║
║ <alice> 嘿,有人吗? ║
║ <bob> 在的!信号很好 ║
║ <you> 测试消息,离线也能发 ║
║ ║
║ > /help 查看所有命令 ║
╚══════════════════════════════════╝
IRC 风格命令速查
bitchat 采用了经典的 IRC 命令风格,老网民会非常熟悉:
# 基础命令
/msg <用户名> <消息> # 发送私聊消息
/who # 查看在线用户
/slap <用户名> # 经典 IRC 互动( slap 一下)
/help # 查看所有可用命令
# 频道与地理
/join <频道名> # 加入频道
/geo # 查看当前地理频道
/location <精度> # 设置地理频道精度
# block = 街区级别
# neighborhood = 社区级别
# city = 城市级别
# province = 省/州级别
# region = 国家/大区域
# 安全
/wipe # 紧急擦除所有数据(三击也可触发)
进阶用法
配置地理位置频道
bitchat 的地理频道是一个杀手级功能——你可以和同一区域内的 bitchat 用户自动聊天,无需互加好友:
# 设置为城市级别(附近几公里的人都能看到)
/location city
# 设置为街区级别(只有非常近的人)
/location block
# 查看当前所在地理频道
/geo
地理频道基于 geohash 编码,精度从粗到细:
| 精度 | geohash 长度 | 覆盖范围 | 适用场景 |
|---|---|---|---|
| region | 2 字符 | 国家级 | 全国讨论 |
| province | 4 字符 | 省/州级 | 省内交流 |
| city | 5 字符 | 城市级 | 同城社区 |
| neighborhood | 6 字符 | 社区级 | neighborhood 交流 |
| block | 7 字符 | 街区级 | 面对面活动 |
私聊加密原理
bitchat 的私聊加密根据传输方式自动选择最优方案:
蓝牙模式(Noise Protocol):
1. 双方建立 BLE 连接
2. 执行 Noise Protocol 握手
3. 生成会话密钥(前向保密)
4. 所有消息端到端加密传输
Nostr 模式(NIP-17 Gift Wrap):
1. 获取对方 Nostr 公钥
2. 消息用对方公钥加密
3. 外层再用临时密钥包装(gift wrap)
4. 通过 Nostr 中继投递,中继无法解密内容
紧急安全机制
在敏感场景下(如抗议活动、灾难现场),bitchat 提供了快速擦除功能:
- 三击擦除:连续点击屏幕三次,瞬间清除所有聊天数据、密钥和身份信息
- 无持久标识:每次连接使用临时身份,不留痕迹
- 本地存储:所有数据仅存设备本地,不上传任何服务器
实战场景
场景 1:户外活动 / 登山徒步
在没有手机信号的山里,bitchat 可以让队友之间保持通信:
# 所有队员打开 bitchat
# 自动发现附近设备,组建 Mesh 网络
# 消息通过多跳中继,即使队员分散也能通信
# 设置同城频道,方便联系附近的人
/location city
场景 2:大型活动 / 音乐节
演唱会、音乐节现场基站经常过载,bitchat 完全不受影响:
# 设置街区级别频道
/location block
# 和附近的人聊天、分享位置
/msg friend 我在舞台左边,找到了吗?
场景 3:灾难应急通信
地震、洪水等灾害导致基站瘫痪时,bitchat 可以成为救命工具:
# 完全离线工作,不需要任何基础设施
# 多跳 Mesh 让消息传递更远
# 端到端加密保护求救信息隐私
场景 4:隐私敏感场景
不想被监控的通信需求:
# 完全匿名,无需手机号注册
# 蓝牙模式不经过任何服务器
# 三击擦除,快速清除证据
与其他去中心化通信工具对比
| 特性 | bitchat | Briar | Bridgefy | Meshtastic |
|---|---|---|---|---|
| 蓝牙 Mesh | ✅ | ✅ | ✅ | ✅(LoRa) |
| 互联网回退 | ✅ Nostr | ✅ Tor | ❌ | ❌ |
| 端到端加密 | ✅ | ✅ | ✅ | ✅ |
| 匿名无需注册 | ✅ | ✅ | ❌ | ✅ |
| iOS 支持 | ✅ | ❌ | ✅ | ❌ |
| 地理频道 | ✅ | ❌ | ❌ | ❌ |
| 开源协议 | Unlicense | GPL | 部分开源 | GPL |
| GitHub Stars | 28K+ | 5K+ | 3K+ | 4K+ |
bitchat 的独特优势在于蓝牙 + Nostr 双模架构和地理频道功能,这在同类工具中是独一无二的。
总结
bitchat 是一个设计精巧的去中心化通信工具,它证明了:在基础设施失效的场景下,我们仍然可以保持连接。
适合谁? - 🏕️ 户外爱好者(登山、露营、探险) - 🎪 大型活动参与者(音乐节、展会、体育赛事) - 🔐 隐私极客(追求完全匿名通信) - 🆘 应急通信需求者(灾难救援、应急准备) - 👨💻 开发者(对 Mesh 网络和去中心化协议感兴趣)
项目地址: github.com/permissionlesstech/bitchat
下载: iOS/macOS 直接在 App Store 搜索 "Bitchat Mesh"
在一个所有通信都依赖中心化服务器的时代,bitchat 提醒我们:真正的通信自由,是不需要任何人的许可。