Come Funziona BitChat e Perché i Messaggeri Bluetooth Mesh Sono di Nuovo di Moda

Quando il servizio cellulare scompare completamente in un festival musicale o in montagna, le app familiari si trasformano in icone inutili. Il segnale non arriva da nessuna parte e le torri sono sovraccariche. In queste situazioni, le soluzioni peer-to-peer che possono trasmettere dati direttamente da uno smartphone all'altro sono utili.
Il progetto BitChat offre un approccio interessante a questo problema. Gli sviluppatori hanno combinato una rete locale offline su Bluetooth LE con il protocollo globale Nostr. Il risultato è un messenger ibrido in stile IRC classico, che funziona senza account e senza server centrali.
Come Funziona la Trasmissione dei Messaggi
BitChat è costruito su un'architettura duale. L'app regola automaticamente il trasporto in base alle condizioni di connettività correnti.
Primo livello: Bluetooth LE Mesh. Se il destinatario è vicino, il messaggio va direttamente. Quando il destinatario è fuori dalla portata Bluetooth, il pacchetto si sposta lungo una catena attraverso gli smartphone di altri utenti. L'architettura supporta fino a 7 salti intermedi. Non è necessaria internet per questo. La sicurezza è gestita dal protocollo Noise, che fornisce la crittografia end-to-end dei pacchetti a livello locale.
Secondo livello: protocollo Nostr. Se un canale Bluetooth diretto non è disponibile ma c'è accesso alla rete, BitChat invia i dati attraverso i relay Nostr pubblici.
Le stanze pubbliche sono organizzate usando i geohash. Il livello di precisione dipende dalla lunghezza della stringa hash delle coordinate:
block(7 caratteri): chat all'interno di un isolatoneighborhood(6 caratteri): livello di quartierecity(5 caratteri): chat a livello di cittàregion(2 caratteri): un intero paese
Quando si invia un messaggio privato, il messenger cerca prima una connessione Bluetooth diretta. Se non ci sono dispositivi nelle vicinanze, passa a Nostr e impacchetta il testo usando l'algoritmo NIP-17. Quando non c'è né internet né vicini Bluetooth, il messaggio viene messo in coda fino a quando non appare un canale disponibile.
Dettagli di Implementazione e Interfaccia
Visivamente, BitChat somiglia alle chat di testo della fine degli anni novanta. Supporta comandi familiari come /slap, /msg, o /who. Non c'è alcun processo di registrazione. Al primo avvio, l'app genera chiavi crittografiche temporanee senza richiedere un numero di telefono o un'email.
Diversi aspetti tecnici interessanti nel progetto:
- Eliminazione di emergenza. Toccando tre volte lo schermo si cancellano permanentemente l'archiviazione locale e le chiavi crittografiche.
- Compressione del traffico. I dati vengono compressi tramite LZ4 prima dell'invio, fondamentale per la bassa larghezza di banda del Bluetooth LE.
- Ottimizzazione del consumo energetico. In modalità offline, la chat modifica dinamicamente gli intervalli di scansione ether, preservando la carica della batteria.
- Open source. Il repository è rilasciato sotto la Unlicense e può essere liberamente forkato o utilizzato in prodotti commerciali.
Come Eseguire il Progetto
Il codice sorgente è scritto in Swift per iOS e macOS.
Il modo più veloce per eseguire la versione desktop è tramite l'utility just:
brew install just
just run
Il comando compilerà l'app e la avvierà sul tuo Mac. Per pulire i file generati dopo il test, chiama just clean.
Per buildare per iOS in Xcode, dovrai eseguire la preparazione standard della configurazione:
cd bitchat
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
Dopo di che, basta aprire bitchat.xcodeproj, impostare il tuo Developer Team ID nel file Local.xcconfig, e aggiornare il nome del gruppo negli entitlements.
Perché Studiare Questo Repository
Nessuno probabilmente userà BitChat come messenger principale ogni giorno. Tuttavia, il progetto è di enorme interesse dal punto di vista ingegneristico.
Nel codice puoi trovare un'implementazione pulita di un protocollo binario personalizzato su CoreBluetooth, gestione dei geohash e integrazione con i relay Nostr. Allo stesso tempo, l'app è già pronta all'uso e pubblicata nell'App Store, quindi può essere tenuta sul tuo dispositivo come opzione di comunicazione di backup per escursioni o grandi concerti.
Progetti correlati