>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Swift

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

Icona BitChat

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 isolato
  • neighborhood (6 caratteri): livello di quartiere
  • city (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