>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Swift

Cómo funciona BitChat y por qué los mensajeros Bluetooth mesh están volviendo a estar de moda

BitChat Icon

Cuando el servicio celular desaparece por completo en un festival de música o en la montaña, las aplicaciones familiares se convierten en iconos inútiles. La señal no llega a ningún lado y las torres están sobrecargadas. En estas situaciones, resultan útiles las soluciones peer-to-peer que pueden transmitir datos directamente de un teléfono a otro.

El proyecto BitChat ofrece un enfoque interesante para este problema. Los desarrolladores combinaron una red local sin conexión con Bluetooth LE y el protocolo Nostr global. El resultado es un mensajero híbrido al estilo del IRC clásico, que funciona sin cuentas y sin servidores centrales.

Cómo funciona la transmisión de mensajes

BitChat se construye sobre una arquitectura dual. La aplicación ajusta automáticamente el transporte según las condiciones de conectividad actuales.

Primer nivel: Mesh Bluetooth LE. Si el destinatario está cerca, el mensaje va directamente. Cuando el destinatario está fuera del alcance de Bluetooth, el paquete se mueve a lo largo de una cadena a través de otros teléfonos inteligentes de usuarios. La arquitectura soporta hasta 7 saltos intermedios. No se requiere internet para esto. La seguridad es manejada por el protocolo Noise, que proporciona cifrado de extremo a extremo de paquetes a nivel local.

Segundo nivel: Protocolo Nostr. Si un canal Bluetooth directo no está disponible pero hay acceso a la red, BitChat envía datos a través de relés públicos Nostr.

Las salas públicas se organizan usando geohashes. El nivel de precisión depende de la longitud de la cadena hash de coordenadas:

  • block (7 caracteres): chat dentro de una cuadra
  • neighborhood (6 caracteres): nivel de distrito
  • city (5 caracteres): chat en toda la ciudad
  • region (2 caracteres): un país entero

Al enviar un mensaje privado, el mensajero primero busca una conexión Bluetooth directa. Si no hay dispositivos cercanos, cambia a Nostr y empaqueta el texto usando el algoritmo NIP-17. Cuando no hay ni internet ni vecinos Bluetooth, el mensaje se encola hasta que aparece cualquier canal disponible.

Detalles de implementación e interfaz

Visualmente, BitChat se parece a los chats de texto de finales de los noventa. Soporta comandos familiares como /slap, /msg o /who. No hay proceso de registro en absoluto. En el primer lanzamiento, la aplicación genera claves criptográficas temporales sin solicitar número de teléfono o correo electrónico.

Plusieurs soluciones techniques intéressantes dans le projet:

  • Supresión de emergencia. Tocar tres veces la pantalla borra permanentemente el almacenamiento local y las claves criptográficas.
  • Compresión de tráfico. Los datos se comprimen mediante LZ4 antes del envío, lo cual es crítico para el bajo ancho de banda de Bluetooth LE.
  • Optimización del consumo de energía. En modo sin conexión, el chat cambia dinámicamente los intervalos de escaneo, preservando la carga de la batería.
  • Código abierto. El repositorio se publica bajo la licencia Unlicense y puede ser bifurcado libremente o usado en productos comerciales.

Cómo ejecutar el proyecto

El código fuente está escrito en Swift para iOS y macOS.

La forma más rápida de ejecutar la versión de escritorio es mediante la utilidad just:

brew install just
just run

El comando compilará la aplicación y la iniciará en tu Mac. Para limpiar los archivos generados después de las pruebas, llama a just clean.

Para construir para iOS en Xcode, necesitarás realizar la preparación estándar de configuración:

cd bitchat
cp Configs/Local.xcconfig.example Configs/Local.xcconfig

Después de eso, simplemente abre bitchat.xcodeproj, establece tu ID de Developer Team en el archivo Local.xcconfig y actualiza el nombre del grupo en los entitlements.

Por qué estudiar este repositorio

Nadie va a usar BitChat como su mensajero principal todos los días. Sin embargo, el proyecto es de tremendo interés desde una perspectiva de ingeniería.

En el código, puedes encontrar una implementación limpia de un protocolo binario personalizado sobre CoreBluetooth, manejo de geohash e integración de relés Nostr. Al mismo tiempo, la aplicación ya está lista para usar y publicada en la App Store, por lo que puede mantenerse en tu dispositivo como una opción de comunicación de respaldo para caminatas o grandes conciertos.

Proyectos relacionados