>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Swift

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

Ícone do BitChat

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ão
  • neighborhood (6 caracteres): nível de bairro
  • city (5 caracteres): chat em toda a cidade
  • region (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