Skip to content

Feature/milestone 2 social relays#7

Merged
cacrespo merged 5 commits into
mainfrom
feature/milestone-2-social-relays
May 30, 2026
Merged

Feature/milestone 2 social relays#7
cacrespo merged 5 commits into
mainfrom
feature/milestone-2-social-relays

Conversation

@cacrespo

Copy link
Copy Markdown
Owner

🛰 Milestone 3: Physical Presence (BLE Integration)

Este PR completa el Hito 3 del proyecto, introduciendo la capa de verificación de presencia física mediante Bluetooth Low Energy (BLE). Con esto, Strata ahora puede "sentir" a
otros nodos cercanos y validar su identidad criptográfica sin necesidad de conexión a internet o GPS.

🛠 Cambios Principales

  1. BLE Hardware Abstraction Layer (HAL)
  • Implementación de src/strata/core/ble.py utilizando la librería bleak.
  • Abstracción agnóstica para escaneo y anuncios (advertising) que permite portabilidad entre Linux, macOS y Windows.
  1. Protocolo de Presence Beacon (v1)
  • Diseño de un paquete compacto de 31 bytes (límite de BLE legacy) que incluye:
    • Protocol ID (ST): Para identificación rápida del ecosistema.
    • PubKey Hash (8 bytes): Identificador del nodo basado en su clave Ed25519.
    • Nonce Rotativo (4 bytes): Basado en tiempo para prevenir el rastreo físico (privacy-preserving).
    • Shortened Signature (16 bytes): Firma criptográfica para validar que el emisor realmente posee la clave privada.
  1. Orquestación y Proximity Filtering
  • Integración del PresenceManager en el motor principal (StrataEngine).
  • Clasificación de proximidad basada en RSSI:
    • Immediate (>-50 dBm)
    • Near (>-70 dBm)
    • Far (resto)
  1. CLI & UX
  • Nuevo comando: strata presence. Permite realizar un escaneo manual y ver qué contactos de confianza están físicamente presentes.
  • Integración en strata node: El beacon se activa automáticamente al iniciar un nodo para que otros puedan detectarte.

🧪 Verificación

  • Tests Unitarios: Añadidos en tests/test_presence.py cubriendo serialización, deserialización y lógica de descubrimiento con mocks de hardware.
  • Tests de Integración: Verificado que la activación de BLE no interfiere con los protocolos Gossip (UDP) ni BitTorrent.

🚀 Cómo probarlo

  1. Instalar dependencias: uv sync (añade bleak).
  2. Iniciar un nodo en un PC: uv run strata node --lat 0 --lon 0.
  3. Escanear desde otro dispositivo: uv run strata presence.

Nota: Este PR también incluye la actualización del README.md con el progreso del roadmap y el uv.lock actualizado.

@cacrespo cacrespo merged commit b20e083 into main May 30, 2026
1 check passed
cacrespo added a commit that referenced this pull request May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant