bitchat:用蓝牙Mesh和Nostr打造的去中心化“末日聊天工具”

242 次阅读 0 点赞 0 评论 5 分钟原创开源项目

bitchat 是一个基于 Swift 的双通道即时通讯工具,支持蓝牙 Mesh 离线组网与 Nostr 协议全球通信,无需账号、端到端加密,适用于极端网络环境下的应急通信。

#去中心化 # 蓝牙Mesh # Nostr # 即时通讯 # 隐私保护 # Swift # 离线通信
bitchat:用蓝牙Mesh和Nostr打造的去中心化“末日聊天工具”

作为一个被 Spring Boot 折磨多年的 Java 老兵,看到 bitchat 这个 Swift 项目时,我差点以为自己穿越到了平行宇宙——它居然用蓝牙 Mesh 网络搞了个去中心化的聊天工具?还能无缝切换到 Nostr 协议走互联网?这不就是现实版的“末日通讯器”+“数字篝火”吗?

项目速览:离线也能聊的硬核聊天工具

bitchat 是一个开源的 iOS/macOS 即时通讯 App,主打 双通道架构

  • 本地模式:通过蓝牙 LE Mesh 自动组网,设备间多跳中继(最多 7 跳),完全离线可用。
  • 全球模式:接入 Nostr 协议,连接全球 290+ 中继节点,支持基于地理坐标的“位置频道”(如 #dr5rsj7)。

最反常识的是:它不需要账号。没有手机号、邮箱、持久化 ID——打开即匿名节点,像 IRC 一样直接 /msg 发私信。这种设计在当今“注册即监控”的时代,堪称一股清流。

架构设计:混合传输层像乐高一样拼装

bitchat 的核心在于其 混合通信架构,可类比为一辆既能越野又能上高速的车:

复制代码
应用层(IRC 风格 UI)
   ↓
路由层(智能消息分发)
   ↓
传输层:[蓝牙 Mesh] ↔ [Nostr 协议]
   ↓
加密层:[Noise Protocol] / [NIP-17 Gift-Wrapping]

蓝牙 Mesh 层:离线世界的骨干网

  • 使用 Noise Protocol 实现端到端加密,确保消息即使被截获也无法解密。
  • 消息采用二进制紧凑格式,并启用 LZ4 压缩,减少带宽占用。
  • 支持 自适应省电策略:根据设备电量动态调整广播频率和中继深度。

这意味着在地震断网、抗议现场或荒野露营时,只要附近有几台设备开着 bitchat,就能形成一个临时通信网络,消息自动多跳传递。

Nostr 层:全球匿名广播系统

  • 基于 Nostr 协议(Notes and Other Stuff Transmitted by Relays),利用公钥作为身份标识。
  • 私信采用 NIP-17 标准,使用“礼物包装”(gift-wrapping)技术:消息内容对中继节点不可见,只有目标收件人能解密,防止元数据泄露。
  • 位置频道基于 Geohash 编码,用户加入 #dr5rsj7 即可接收该地理区域内的广播消息。

智能路由:比微服务熔断还聪明

bitchat 的私信发送逻辑堪称教科书级的降级策略:

swift 复制代码
// 伪代码示意:智能私信路由
if (bluetoothPeerAvailable(recipient)) {
    // 优先走蓝牙:低延迟、高隐私、零流量
    sendViaNoiseProtocol(recipient, message);
} else if (nostrPublicKeyKnown(recipient)) {
    // 次选 Nostr:全球可达,但依赖中继
    sendViaNostrNIP17(recipient, message);
} else {
    // 兜底:排队等待任一通道恢复
    queueMessageUntilTransportAvailable(recipient, message);
}

这种设计不仅提升了可靠性,还最大限度保护了隐私——能走本地绝不走公网。

上手体验:Swift 开发者的玩具箱

作为非 Apple 生态开发者,第一反应是:“Maven 坐标呢?” 但 bitchat 是纯 Swift 项目,构建方式如下:

bash 复制代码
## 方式1:Xcode 手动构建
cd bitchat
open bitchat.xcodeproj
## 需复制 Local.xcconfig.example 并配置 Developer Team ID 和 Bundle ID

或者使用现代化命令运行器 just

bash 复制代码
## 方式2:自动化构建(推荐)
brew install just
just run      # 自动配置并启动模拟器
just clean    # 清理构建缓存

项目代码结构清晰,模块高度解耦。特别值得一提的是 Triple-tap wipe 功能:连续三击屏幕即可清空所有本地数据,比某些大厂 App 的“隐私设置”真诚得多。

安全警告:别真拿它聊机密

作者在 README 中明确警告:私信功能尚未经过第三方安全审计,可能存在漏洞,切勿用于敏感场景。这种坦诚值得点赞!相比之下,许多项目假装“坚不可摧”,而 bitchat 直接告诉你:“兄弟,这还在 beta 阶段。”

不过公共频道(蓝牙广播)本身无安全风险——因为本来就是公开的,就像在广场上喊话,谁都能听见。

值得学吗?我的建议

  • 移动端/物联网开发者:蓝牙 Mesh + 多跳中继 + 自适应功耗,这套方案在应急通信、野外作业、临时组网场景潜力巨大。
  • 后端/Java 工程师:虽然语言不同,但 双通道、智能降级、位置频道 的协议设计思想完全可以借鉴。比如,能否设计一个“局域网优先”的微服务调用链?
  • 普通用户:App Store 已上架,装一个玩玩很酷,尤其适合极客聚会当“地下联络工具”。

最后吐槽一句:项目叫 bitchat,界面却是极简 IRC 风格,连表情包都没有……果然硬核开发者眼里只有协议和字节流!

总的来说,bitchat 不是“下一个微信”,但它可能是“下一个灾难中的救命稻草”。在这个中心化平台垄断的时代,这种去中心、离线优先的设计,虽然小众,但足够锋利。

最后更新:2025-12-12T10:01:52

评论 (0)

发表评论

blog.comments.form.loading
0/500
加载评论中...