bitchat:蓝牙 Mesh + Nostr 双通道去中心化聊天应用,没有账号没有服务器的 IRC 风格通讯工具

在即时通讯被几大巨头垄断的今天,你是否想过:如果断网了,怎么跟身边的人聊天?如果平台封号了,消息还能发出去吗?

GitHub 今日 Trending 榜首项目 bitchat 给出了一个大胆的答案:用蓝牙组 Mesh 网络,用 Nostr 做全球中继,不需要账号、不需要手机号、不需要中心服务器。

上线一年多,bitchat 已经积累了 32,874 Stars、5,150 Forks,今日新增 2,346 Stars 登上 Trending 榜首。让我们看看这个项目到底有什么过人之处。

什么是 bitchat?

bitchat 是一款去中心化的点对点通讯应用,由 permissionlesstech 团队开发。它的核心理念非常简单:不依赖任何中心化基础设施,随时随地自由通讯。

项目采用 双通道传输架构,在两种场景下都能工作:

  1. 离线场景:设备之间通过蓝牙低功耗(BLE)Mesh 网络直接连接,无需 WiFi 和移动网络
  2. 在线场景:通过 Nostr 协议接入全球 290+ 中继节点,实现全球范围通讯

bitchat 目前已在 App Store 上架,支持 iOS 和 macOS,使用 Swift 编写,并采用公共域(Public Domain)许可发布。

核心技术架构

1. 蓝牙 Mesh 网络(离线模式)

  • 点对点通讯:设备在蓝牙范围内直接连接,无需配对、无需互联网
  • 多跳中继:消息通过附近设备层层转发,最多支持 7 跳,形成一个自组织的 Ad-hoc 网络
  • 自动发现:设备进入范围后自动发现并建立连接,无需手动配对
  • 二进制协议:针对蓝牙 LE 的带宽限制优化的紧凑数据包格式
  • 自适应电量:根据电池状态动态调整通信频率,在保持连通的同时最大程度省电

这意味着完全没有网络的环境下——比如演唱会现场、地下停车场、灾区、偏远山区——你仍然可以通过 bitchat 与他人通讯。

2. Nostr 协议(在线模式)

  • 全球覆盖:通过 Nostr 中继网络连接世界各地的用户
  • 地理位置频道:基于 geohash 坐标创建地理聊天室,可以定位到城市街区级别
  • 290+ 中继节点:分布式部署确保可靠性和抗审查能力
  • 临时密钥:每个 geohash 区域使用全新的加密身份,防止追踪

3. 加密机制

  • 蓝牙 Mesh 层使用 Noise Protocol 框架实现端到端加密,提供前向安全性
  • Nostr 层使用 bitchat 自有的 XChaCha20-Poly1305 加密信封,私密负载包装在 Nostr kind-1059 事件中传输
  • LZ4 消息压缩减少传输流量

消息路由策略

bitchat 的消息路由非常智能,会自动选择最佳通道:

  1. 优先蓝牙:当私聊对象在蓝牙范围内时,建立 Noise 加密会话直接通讯——最快、最私密
  2. Nostr 回退:蓝牙不可用时,通过接收方的 Nostr 公钥和全球中继网络传输
  3. 智能排队:两种通道都不通时,消息进入队列,等通道恢复后自动发送

频道类型

频道 传输方式 范围 使用场景
mesh #bluetooth 蓝牙 LE Mesh 多跳范围内本地设备 离线通讯、抗议活动、灾难场景
block #dr5rsj7 Nostr(互联网) 城市街区级别 邻里社群、街道讨论
neighborhood #dr5rs Nostr(互联网) 社区/片区 社区活动、本地事件
city #dr5r Nostr(互联网) 城市级别 城市层面讨论
province #dr5 Nostr(互联网) 省/州级别 区域讨论
region #dr Nostr(互联网) 国家/大区域 全国性讨论

特色功能一览

  • IRC 风格命令:支持 /slap/msg/who 等经典 IRC 命令,老派聊天室用户会非常亲切
  • 紧急清除:三击屏幕即可瞬间清空所有数据,适合需要快速保护隐私的场景
  • 无需注册:没有账号、没有手机号绑定、没有中心服务器,开箱即用
  • 性能优化:LZ4 压缩、自适应电池模式、优化的网络栈
  • 通用应用:原生 iOS 和 macOS 支持

技术栈

  • 语言:Swift
  • 平台:iOS 15+、macOS 12+
  • 蓝牙:BLE Mesh(GATT Central + Peripheral)
  • 互联网:Nostr 协议(290+ relays)
  • 加密:Noise Protocol Framework + XChaCha20-Poly1305
  • 压缩:LZ4
  • 许可:Public Domain(公共域)
  • 包管理:SwiftPM

快速上手

目前最简单的方式是从 App Store 安装:

# App Store 下载
https://apps.apple.com/us/app/bitchat-mesh/id6748219622

如果你更倾向自己编译(推荐,更安全):

# 克隆仓库
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat

# macOS 编译(不带签名)
xcodebuild -project bitchat.xcodeproj   -scheme "bitchat (macOS)"   -configuration Debug CODE_SIGNING_ALLOWED=NO build

# 运行测试
swift test

⚠️ 安全提醒:bitchat 仓库曾收到下架要求,项目方强烈建议从源码构建而不是下载未知来源的编译版本。详见项目的 构建验证指南

适用场景

  • 抗议/集会:无需 SIM 卡和网络,蓝牙 Mesh 即可组网通讯
  • 灾难救援:地震、洪水后基础设施瘫痪时,恢复基本的通讯能力
  • 偏远地区:没有基站覆盖的山区、野外探险等场景
  • 隐私通讯:不需要绑定任何身份信息,加密保护通讯内容
  • 社区组织:通过地理位置频道建立邻里社区,讨论本地事务
  • 技术研究:学习去中心化网络、Mesh 网络和 Nostr 协议的工程实践

小结

bitchat 不是一个要”取代微信/WhatsApp”的产品——它本质上是一个抗审查、抗断网的通讯备选方案。在日常生活里你可能觉得用不上,但当你真正需要的时候,没有替代品。

32k Stars、Public Domain 许可、IRC 风格界面、Noise Protocol 加密——这是一个设计哲学和技术实现都相当扎实的项目。如果你对去中心化通讯、蓝牙 Mesh 或 Nostr 协议感兴趣,这是个很值得学习和研究的开源项目。

GitHub 地址github.com/permissionlesstech/bitchat

技术白皮书WHITEPAPER.md

技术架构文档deepwiki.com/permissionlesstech/bitchat

App Storebitchat-mesh

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享