Como o BitChat Funciona e Por Que os Mensageiros Bluetooth Mesh Estão Voltando à Moda

Quando o serviço celular desaparece completamente em um festival de música ou nas montanhas, os aplicativos familiares se transformam em ícones inúteis. O sinal não vai a lugar algum, e as torres estão sobrecarregadas. Nesses casos, soluções peer-to-peer que conseguem transmitir dados diretamente de um smartphone para outro são bastante úteis.
O projeto BitChat oferece uma abordagem interessante para esse problema. Os desenvolvedores combinaram uma rede local offline em Bluetooth LE com o protocolo global Nostr. O resultado é um mensageiro híbrido no estilo do IRC clássico, funcionando sem contas e sem servidores centrais.
Como Funciona a Transmissão de Mensagens
O BitChat é construído em uma arquitetura dupla. O aplicativo ajusta automaticamente o transporte com base nas condições atuais de conectividade.
Primeiro nível: Bluetooth LE Mesh. Se o destinatário estiver próximo, a mensagem vai diretamente. Quando o destinatário está fora do alcance do Bluetooth, o pacote se move ao longo de uma cadeia através dos smartphones de outros usuários. A arquitetura suporta até 7 saltos intermediários desses. Nenhum acesso à internet é necessário para isso. A segurança é gerenciada pelo protocolo Noise, que fornece criptografia ponta a ponta dos pacotes no nível local.
Segundo nível: protocolo Nostr. Se um canal Bluetooth direto não estiver disponível, mas houver acesso à rede, o BitChat envia dados através de relays públicos do Nostr.
Salas públicas são organizadas usando geohashes. O nível de precisão depende do tamanho da string de hash das coordenadas:
block(7 caracteres): chat dentro de um quarteirãoneighborhood(6 caracteres): nível de bairrocity(5 caracteres): chat em toda a cidaderegion(2 caracteres): um país inteiro
Ao enviar uma mensagem privada, o mensageiro primeiro procura uma conexão Bluetooth direta. Se não houver dispositivos próximos, ele alterna para o Nostr e empacota o texto usando o algoritmo NIP-17. Quando não há internet nem vizinhos Bluetooth, a mensagem fica na fila até que qualquer canal disponível apareça.
Detalhes de Implementação e Interface
Visualmente, o BitChat se parece com os chats de texto do final dos anos noventa. Suporta comandos familiares como /slap, /msg ou /who. Não há nenhum processo de registro. Na primeira inicialização, o aplicativo gera chaves criptográficas temporárias sem solicitar número de telefone ou e-mail.
Algumas soluções técnicas interessantes no projeto:
- Exclusão de emergência. Tocar três vezes na tela limpa permanentemente o armazenamento local e as chaves criptográficas.
- Compressão de tráfego. Os dados são compactados via LZ4 antes do envio, o que é crítico para a baixa largura de banda do Bluetooth LE.
- Otimização de consumo de energia. No modo offline, o chat altera dinamicamente os intervalos de varredura, preservando a carga da bateria.
- Código aberto. O repositório é lançado sob a Unlicense e pode ser livremente bifurcado ou usado em produtos comerciais.
Como Executar o Projeto
O código-fonte é escrito em Swift para iOS e macOS.
A forma mais rápida de executar a versão desktop é através do utilitário just:
brew install just
just run
O comando vai compilar o aplicativo e iniciá-lo no seu Mac. Para limpar os arquivos gerados após os testes, chame just clean.
Para compilar para iOS no Xcode, você precisará realizar a preparação padrão de configuração:
cd bitchat
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
Depois disso, simplesmente abra bitchat.xcodeproj, defina seu ID de Developer Team no arquivo Local.xcconfig e atualize o nome do grupo nos entitlements.
Por Que Estudar Este Repositório
Ninguém provavelmente usará o BitChat como mensageiro principal todos os dias. No entanto, o projeto é de enorme interesse sob a perspectiva da engenharia.
No código, você pode encontrar uma implementação limpa de um protocolo binário personalizado sobre CoreBluetooth, manipulação de geohash e integração com relays Nostr. Ao mesmo tempo, o aplicativo já está pronto para uso e publicado na App Store, então pode ser mantido no seu dispositivo como uma opção de comunicação de backup para trilhas ou grandes shows.
Projetos relacionados