Arquitectura
Velum tiene seis capas. Cada una sabe lo justo para hacer su trabajo y nada más.
Las capas
| Capa | Ve | No ve |
|---|---|---|
| App | Tus mensajes en claro, tus contactos, tu frase de recuperación | Nada de otros usuarios |
| Sobre | Un mensaje cifrado para un dispositivo concreto | No sale del teléfono sin trocear |
| Fragmentos | Trozos de igual tamaño, con su huella de recibo | Contenido, remitente, tamaño real |
| Nodos | Fragmentos opacos, buzones del día, recibos | Quién envía, quién recibe, qué dice |
| Puerta de entrada | Conexiones y tramas JSON que reenvía | Contenido; las identidades nunca van en claro |
| Cadena | Pagos, tokens, órdenes, recibos, recompensas | Mensajes y quién habla con quién |
App
La app genera la frase de recuperación, deriva las claves (identidad, cartera, buzón) y crea una clave de dispositivo que nunca sale del teléfono. Guarda los chats en SQLite cifrada con SQLCipher; la clave vive en el Keychain con WHEN_UNLOCKED_THIS_DEVICE_ONLY, así que no viaja en copias de iCloud.
Cuando envías, la app:
- Firma el contenido con la clave de dispositivo.
- Lo sella para cada dispositivo de quien recibe y para tus otros dispositivos (así el historial es igual en todos).
- Rellena cada sobre a un tamaño fijo y lo parte en 5 fragmentos.
- Envía cada fragmento por un nodo distinto, al buzón del día del destinatario.
Sobre
Un sobre es un mensaje cifrado para un dispositivo. Formato:
[1 byte versión = 2][32 B clave efímera X25519][1088 B kemCt ML-KEM-768][24 B nonce][texto cifrado]
Fuera del sobre no hay nada que identifique a quien envía (remitente sellado). Dentro va el contenido firmado por el dispositivo de origen, la identidad de quien envía y la firma que liga ese dispositivo a esa identidad. Detalles en Criptografía.
Fragmentos
Cada sobre se rellena a un cubo (2 KB, 8 KB, 32 KB, 128 KB, 512 KB, 2 MB u 8 MB) y se trocea con Reed–Solomon 3 de 5: bastan tres trozos cualesquiera para rehacerlo. Cada trozo lleva la huella SHA-512 del secreto de su recibo. Detalles en Fragmentos y recibos.
Nodos
Un nodo es un programa que corre en un ordenador de la comunidad. Hace tres trabajos:
- Abrir puentes. Un puente es una ruta que el nodo abre y mantiene entre emisores y buzones: acepta trozos (es su carrier), los guarda y los entrega cuando el dueño abre el buzón (es su courier).
- Producir bloques. Los nodos completos se turnan para montar bloques, con un objetivo de 2 segundos por turno; el ritmo real se mide.
- Descubrir VEL. Cada época el nodo publica una reclamación agregada del trabajo de sus puentes; tras comprobarla por muestreo, descubre su parte del VEL de la época.
Hay nodos completos (ordenador, producen bloques) y nodos ligeros (la app del móvil, solo entregan fragmentos). Para cada trozo, un sorteo público elige 3 candidatos y la app usa el más cercano. Ver Monta un nodo.
Puerta de entrada
La puerta de entrada pública (wss://velum.consultorabim.com/hub) es el punto de encuentro: los nodos se presentan firmando un saludo, las apps mandan peticiones RPC y el explorador recibe los bloques en vivo. La puerta solo reenvía tramas; no tiene ninguna clave que le permita leer nada.
Para resistir bloqueos hay varias puertas en dominios distintos con ECH, los nodos se conectan directamente entre sí (ws://host:7420/ws) y cada nodo anuncia su dirección en la cadena (endpoint). Ver Resistencia a bloqueos.
App ──ws──▶ Puerta /hub?role=client ──▶ Nodo elegido (RPC) o directo: ws://nodo:7420/ws?role=client
Nodo ──ws──▶ Puerta /hub?role=node ◀─▶ resto de nodos y directo entre nodos: ?role=node
Web ──ws──▶ Puerta /hub?role=watch ◀── bloques y estadísticas en vivo
Cadena
Una cadena de bloques propia, sin dependencias externas. Guarda:
- Saldos en VEL y en tokens, y el nonce de cada cartera.
- Altas de nodos, su nivel y sus créditos de entrega.
- Reclamaciones de trabajo (raíces de Merkle), comprobaciones por muestreo y recompensas.
- El precio del oráculo de cada época y el saldo de la Reserva de la Red.
- Alias públicos (
name.register). - Tokens, bolsas de tokens para nodos, órdenes y operaciones del mercado.
- Dispositivos atestados (solo el hash de su clave, sin identidad).
Nunca guarda mensajes, contactos, listas de dispositivos ni identidades de chat. Ver Consenso y bloques.
Qué se separa y por qué
| Separación | Para qué |
|---|---|
| Clave de identidad ≠ clave de cartera | Que nadie pueda unir tus chats con tus pagos. |
| Clave de dispositivo propia en cada aparato | Expulsar un dispositivo sin rehacer la cuenta. |
| Buzón distinto cada día y por dispositivo | Que los nodos no puedan seguir a nadie en el tiempo. |
| Recibo sin firma ni dirección | Que descubrir VEL no delate a quien recibe. |