Wie BitChat funktioniert und warum Bluetooth-Mesh-Messenger wieder im Trend liegen

Wenn der Mobilfunkempfang bei einem Musikfestival oder in den Bergen vollständig zusammenbricht, werden vertraute Apps zu nutzlosen Symbolen. Das Signal findet keinen Weg, und die Sendemasten sind überlastet. In solchen Situationen kommen Peer-to-Peer-Lösungen gelegen, die Daten direkt von einem Smartphone zum anderen übertragen können.
Das BitChat-Projekt bietet einen interessanten Ansatz für dieses Problem. Die Entwickler kombinierten ein lokales Offline-Netzwerk über Bluetooth LE mit dem globalen Nostr-Protokoll. Das Ergebnis ist ein Hybrid-Messenger im Stil des klassischen IRC, der ohne Konten und ohne zentrale Server funktioniert.
So funktioniert die Nachrichtenübertragung
BitChat basiert auf einer dualen Architektur. Die App passt den Transport automatisch an die aktuellen Konnektivitätsbedingungen an.
Erste Ebene: Bluetooth-LE-Mesh. Wenn der Empfänger sich in der Nähe befindet, geht die Nachricht direkt. Befindet sich der Empfänger außerhalb der Bluetooth-Reichweite, bewegt sich das Paket entlang einer Kette durch die Smartphones anderer Benutzer. Die Architektur unterstützt bis zu 7 solcher Zwischen-Hops. Hierfür ist kein Internet erforderlich. Die Sicherheit wird vom Noise-Protokoll gewährleistet, das eine End-to-End-Verschlüsselung der Pakete auf lokaler Ebene bietet.
Zweite Ebene: Nostr-Protokoll. Wenn ein direkter Bluetooth-Kanal nicht verfügbar ist, aber Netzzugang besteht, sendet BitChat die Daten über öffentliche Nostr-Relays.
Öffentliche Räume werden mit Geohashes organisiert. Die Präzisionsebene hängt von der Länge des Koordinaten-Hash-Strings ab:
block(7 Zeichen): Chat innerhalb eines Stadtblocksneighborhood(6 Zeichen): Stadtviertel-Ebenecity(5 Zeichen): Stadtweiter Chatregion(2 Zeichen): ein ganzes Land
Beim Senden einer privaten Nachricht sucht der Messenger zunächst nach einer direkten Bluetooth-Verbindung. Wenn keine Geräte in der Nähe sind, wechselt er zu Nostr und verpackt den Text mit dem NIP-17-Algorithmus. Wenn weder Internet noch Bluetooth-Nachbarn verfügbar sind, wird die Nachricht in eine Warteschlange gestellt, bis ein verfügbarer Kanal erscheint.
Implementierungsdetails und Benutzeroberfläche
Optisch ähnelt BitChat den Textchats aus den späten Neunzigern. Es unterstützt vertraute Befehle wie /slap, /msg oder /who. Es gibt keinerlei Registrierungsprozess. Beim ersten Start generiert die App temporäre kryptografische Schlüssel, ohne eine Telefonnummer oder E-Mail anzufordern.
Einige interessante technische Lösungen im Projekt:
- Notfalllöschung. Dreifaches Tippen auf den Bildschirm löscht dauerhaft den lokalen Speicher und die kryptografischen Schlüssel.
- Traffic-Komprimierung. Daten werden vor dem Senden über LZ4 komprimiert, was für die niedrige Bandbreite von Bluetooth LE entscheidend ist.
- Stromverbrauchoptimierung. Im Offline-Modus ändert der Chat dynamisch die Scan-Intervalle und schont dabei den Akku.
- Open Source. Das Repository wird unter der Unlicense veröffentlicht und kann frei geforkt oder in kommerziellen Produkten verwendet werden.
So führen Sie das Projekt aus
Der Quellcode ist in Swift für iOS und macOS geschrieben.
Der schnellste Weg, die Desktop-Version auszuführen, ist über das just-Dienstprogramm:
brew install just
just run
Der Befehl kompiliert die App und startet sie auf Ihrem Mac. Um die generierten Dateien nach dem Testen zu bereinigen, rufen Sie just clean auf.
Um für iOS in Xcode zu bauen, müssen Sie die standardmäßige Konfigurationsvorbereitung durchführen:
cd bitchat
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
Anschließend öffnen Sie einfach bitchat.xcodeproj, setzen Ihre Developer Team ID in der Local.xcconfig-Datei und aktualisieren den Gruppennamen in den Berechtigungen.
Warum dieses Repository studieren
Es ist unwahrscheinlich, dass jemand BitChat täglich als primären Messenger nutzen wird. Das Projekt ist jedoch aus ingenieurtechnischer Sicht von enormem Interesse.
Im Code finden Sie eine saubere Implementierung eines benutzerdefinierten binären Protokolls über CoreBluetooth, Geohash-Handling und Nostr-Relay-Integration. Gleichzeitig ist die App bereits einsatzbereit und im App Store veröffentlicht, sodass sie als Backup-Kommunikationsoption für Wanderungen oder große Konzerte auf dem Gerät behalten werden kann.
Ähnliche Projekte