Torna agli aggiornamenti
New releaseAug 1, 2026

bitchat v1.7.1

chat mesh Bluetooth, vibrazioni IRC

Condividi
icona_128x128@2x

bitchat

Un'app di messaggistica decentralizzata peer-to-peer con architettura a doppio trasporto: reti mesh Bluetooth locali per comunicazioni offline e protocollo Nostr su Internet per portata globale. Niente account, niente numeri di telefono, niente server centrali. È il side-groupchat.

bitchat.free

📲 App Store

Licenza

Questo progetto è rilasciato nel pubblico dominio. Vedi il file LICENSE per i dettagli.

Caratteristiche

  • Architettura a doppio trasporto: mesh Bluetooth per offline + protocollo Nostr per messaggistica via Internet
  • Canali basati sulla posizione: chat room geografiche usando coordinate geohash su relay Nostr globali
  • Routing intelligente dei messaggi: sceglie automaticamente il trasporto migliore (Bluetooth → fallback Nostr)
  • Rete mesh decentralizzata: scoperta automatica dei peer e inoltro multi-hop dei messaggi via Bluetooth LE
  • Priorità alla privacy: nessun account, nessun numero di telefono, nessun identificatore persistente
  • Crittografia end-to-end dei messaggi privati: Protocollo Noise per la mesh, NIP-17 per Nostr
  • Comandi in stile IRC: interfaccia familiare con /slap, /msg, /who
  • App universale: supporto nativo per iOS e macOS
  • Cancellazione di emergenza: triplo tocco per cancellare istantaneamente tutti i dati
  • Ottimizzazioni delle prestazioni: compressione messaggi LZ4, modalità batteria adattive e networking ottimizzato

Architettura tecnica

BitChat utilizza un'architettura di messaggistica ibrida con due livelli di trasporto complementari:

Rete Mesh Bluetooth (Offline)

  • Comunicazione locale: peer-to-peer diretto entro il raggio Bluetooth
  • Inoltro multi-hop: i messaggi transitano attraverso dispositivi vicini (massimo 7 hop)
  • Nessuna connessione Internet necessaria: funziona completamente offline in scenari di disastro
  • Crittografia Protocollo Noise: crittografia end-to-end con segretezza in avanti
  • Protocollo binario: formato compatto dei pacchetti ottimizzato per i vincoli Bluetooth LE
  • Scoperta automatica: rilevamento dei peer e gestione delle connessioni
  • Alimentazione adattiva: duty cycling ottimizzato per la batteria

Protocollo Nostr (Internet)

  • Portata globale: connettiti con utenti di tutto il mondo tramite relay Internet
  • Canali di posizione: chat room geografiche utilizzando coordinate geohash
  • Rete di 290+ relay: distribuita globalmente per affidabilità
  • Crittografia NIP-17: messaggi privati impacchettati per la privacy su Internet
  • Chiavi effimere: identità crittografica fresca per ogni area geohash

Tipi di canale

mesh #bluetooth

  • Trasporto: rete mesh Bluetooth Low Energy
  • Ambito: dispositivi locali entro portata multi-hop
  • Internet: non richiesto
  • Caso d'uso: comunicazione offline, proteste, disastri, aree remote

Canali di posizione (block #dr5rsj, neighborhood #dr5rs, country #dr)

  • Trasporto: protocollo Nostr su Internet
  • Ambito: aree geografiche definite dalla precisione geohash
    • block (7 caratteri): livello dell'isolato cittadino
    • neighborhood (6 caratteri): distretto/quartiere
    • city (5 caratteri): livello città
    • province (4 caratteri): stato/provincia
    • region (2 caratteri): paese/grande regione
  • Internet: richiesto (si connette ai relay Nostr)
  • Caso d'uso: chat di comunità basata sulla posizione, eventi locali, discussioni regionali

Routing dei messaggi diretti

I messaggi privati utilizzano la selezione intelligente del trasporto:

  1. Bluetooth prima (preferito quando disponibile)

    • Connessione diretta con sessione Noise stabilita
    • Opzione più veloce e più privata
  2. Fallback Nostr (quando Bluetooth non disponibile)

    • Utilizza la chiave pubblica Nostr del destinatario
    • Impacchettamento NIP-17 per la privacy
    • Instradamento attraverso la rete globale di relay
  3. Coda intelligente (quando nessuno dei due è disponibile)

    • Messaggi in coda fino a quando il trasporto diventa disponibile
    • Consegna automatica quando la connessione viene stabilita

Per la documentazione dettagliata del protocollo, consulta il Technical Whitepaper.

Configurazione

Opzione 1: Usando Xcode

cd bitchat
open bitchat.xcodeproj

Per eseguire su un dispositivo ci sono alcuni passaggi per preparare il codice:

  • Clona le configurazioni locali: cp Configs/Local.xcconfig.example Configs/Local.xcconfig
  • Aggiungi il tuo Team ID sviluppatore nel file Configs/Local.xcconfig appena creato
    • Il Bundle ID sarà impostato a chat.bitchat.<team_id> (a meno che tu non lo imposti diversamente)
  • È necessario aggiornare manualmente gli entitlements (TODO: Automatizzare):
    • Cerca e sostituisci group.chat.bitchat con group.<il_tuo_bundle_id> (es. group.chat.bitchat.ABC123)

Opzione 2: Usando just

brew install just

Vuoi provarlo su macOS: just run lo configurerà e lo eseguirà dal sorgente. Esegui just clean in seguito per ripristinare tutto allo stato originale per la costruzione e lo sviluppo dell'app mobile.

Localizzazione

  • Le risorse base dell'app si trovano in bitchat/Localization/Base.lproj/. Aggiungi nuovi testi a Localizable.strings e regole plurali a Localizable.stringsdict.
  • Le stringhe dell'estensione di condivisione sono separate in bitchatShareExtension/Localization/Base.lproj/Localizable.strings.
  • Preferisci chiavi che descrivono l'intento (es. app_info.features.offline.title) e riutilizza quelle esistenti quando possibile.
  • Esegui xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build per verificare con la compilazione eventuali aggiornamenti di localizzazione.

Categorie