
bitchat v1.7.1
chat Bluetooth mesh, ambiance IRC
bitchat
Une application de messagerie décentralisée pair-à-pair dotée d'une architecture de transport double : des réseaux Bluetooth maillés locaux pour la communication hors ligne et le protocole Nostr sur Internet pour une portée mondiale. Pas de comptes, pas de numéros de téléphone, pas de serveurs centraux. C'est le groupe de discussion de quartier.
Licence
Ce projet est placé dans le domaine public. Voir le fichier LICENSE pour plus de détails.
Fonctionnalités
- Architecture à double transport : Bluetooth maillé pour le hors ligne + protocole Nostr pour la messagerie sur Internet
- Canaux basés sur la localisation : salons de discussion géographiques utilisant les coordonnées géohash sur des relais Nostr mondiaux
- Routage intelligent des messages : choisit automatiquement le meilleur transport (Bluetooth → repli sur Nostr)
- Réseau maillé décentralisé : découverte automatique des pairs et relais de messages multi-sauts via Bluetooth LE
- Confidentialité d'abord : pas de comptes, pas de numéros de téléphone, pas d'identifiants persistants
- Chiffrement de bout en bout des messages privés : Protocole Noise pour le maillé, NIP-17 pour Nostr
- Commandes de style IRC : interface familière avec
/slap,/msg,/who - Application universelle : prise en charge native d'iOS et macOS
- Effacement d'urgence : triple tap pour effacer instantanément toutes les données
- Optimisations des performances : compression des messages LZ4, modes batterie adaptatifs et réseau optimisé
Architecture technique
BitChat utilise une architecture de messagerie hybride avec deux couches de transport complémentaires :
Réseau maillé Bluetooth (hors ligne)
- Communication locale : pair-à-pair direct à portée Bluetooth
- Relais multi-sauts : les messages transitent par les appareils voisins (max 7 sauts)
- Aucun Internet requis : fonctionne complètement hors ligne dans des scénarios de catastrophe
- Chiffrement avec le protocole Noise : chiffrement de bout en bout avec secret de persistance
- Protocole binaire : format de paquet compact optimisé pour les contraintes Bluetooth LE
- Découverte automatique : découverte des pairs et gestion des connexions
- Alimentation adaptative : cycles d'utilisation optimisés pour la batterie
Protocole Nostr (Internet)
- Portée mondiale : connectez-vous avec des utilisateurs du monde entier via des relais Internet
- Canaux de localisation : salons de discussion géographiques utilisant les coordonnées géohash
- Réseau de 290+ relais : répartis à travers le monde pour la fiabilité
- Chiffrement NIP-17 : messages privés emballés-cadeaux pour la confidentialité sur Internet
- Clés éphémères : nouvelle identité cryptographique par zone géohash
Types de canaux
mesh #bluetooth
- Transport : réseau maillé Bluetooth Low Energy
- Portée : appareils locaux à portée multi-sauts
- Internet : non requis
- Cas d'utilisation : communication hors ligne, manifestations, catastrophes, zones reculées
Canaux de localisation (block #dr5rsj, neighborhood #dr5rs, country #dr)
- Transport : protocole Nostr via Internet
- Portée : zones géographiques définies par la précision du géohash
block(7 caractères) : niveau pâté de maisonsneighborhood(6 caractères) : niveau quartier / districtcity(5 caractères) : niveau villeprovince(4 caractères) : niveau état / provinceregion(2 caractères) : niveau pays / grande région
- Internet : requis (se connecte aux relais Nostr)
- Cas d'utilisation : discussion communautaire basée sur la localisation, événements locaux, discussions régionales
Routage des messages directs
Les messages privés utilisent une sélection de transport intelligente :
-
Bluetooth d'abord (préféré lorsque disponible)
- Connexion directe avec session Noise établie
- Option la plus rapide et la plus privée
-
Repli sur Nostr (lorsque Bluetooth indisponible)
- Utilise la clé publique Nostr du destinataire
- Emballage-cadeau NIP-17 pour la confidentialité
- Routage via le réseau mondial de relais
-
File d'attente intelligente (lorsque aucun des deux n'est disponible)
- Messages mis en file d'attente jusqu'à ce qu'un transport devienne disponible
- Livraison automatique lorsque la connexion est établie
Pour une documentation détaillée du protocole, voir le Livre blanc technique.
Configuration
Option 1 : Utilisation de Xcode
cd bitchat
open bitchat.xcodeproj
Pour exécuter sur un appareil, quelques étapes sont nécessaires pour préparer le code :
- Clonez les configurations locales :
cp Configs/Local.xcconfig.example Configs/Local.xcconfig - Ajoutez votre identifiant d'équipe développeur dans le fichier
Configs/Local.xcconfignouvellement créé.- Le Bundle ID sera défini sur
chat.bitchat.<team_id>(sauf si vous le modifiez)
- Le Bundle ID sera défini sur
- Les droits (
entitlements) doivent être mis à jour manuellement (TODO : automatiser) :- Recherchez et remplacez
group.chat.bitchatpargroup.<votre_bundle_id>(ex.group.chat.bitchat.ABC123)
- Recherchez et remplacez
Option 2 : Utilisation de just
brew install just
Vous voulez essayer sous macOS ? just run configurera et exécutera depuis les sources.
Exécutez just clean ensuite pour restaurer l'état d'origine pour la construction et le développement de l'application mobile.
Localisation
- Les ressources de base de l'application se trouvent dans
bitchat/Localization/Base.lproj/. Ajoutez de nouvelles chaînes dansLocalizable.stringset les règles de pluriel dansLocalizable.stringsdict. - Les chaînes de l'extension de partage sont séparées dans
bitchatShareExtension/Localization/Base.lproj/Localizable.strings. - Préférez les clés qui décrivent l'intention (
app_info.features.offline.title) et réutilisez celles existantes lorsque c'est possible. - Exécutez
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO buildpour vérifier par compilation toute mise à jour de localisation.