# Idea de producto: el interruptor de liberación condicional *1 de octubre de 2026. Idea del autor, discutida en la sesión de la firma. No forma parte de la cápsula del tiempo ni de su plan: la cápsula se abre en su fecha sin confiar en nadie, y eso no cambia. Esto es otro servicio, que reutiliza piezas de DateKeys.* ## Qué es Un servicio de liberación condicional, como un interruptor de hombre muerto. El contenido se libera cuando se cumple una condición que vive en un contrato inteligente confidencial (Oasis Sapphire): una fecha que el creador renueva cuando quiere, o cualquier otro valor del contrato, como una votación, un oráculo o una señal del creador. Si el creador deja de renovar, la fecha llega y el contenido se libera. ## Cómo funciona Dos barreras en serie: 1. **Quicknet, la fecha mínima T0.** Nadie abre antes de T0, ni siquiera con la ayuda de Sapphire. Esto es criptografía y no exige confiar en nadie. 2. **El contrato, la condición vigente.** Pasado T0, hace falta además que el contrato dé por cumplida su condición: por ejemplo, que haya llegado la fecha vigente, `disclosure_at`, que el creador puede retrasar. **El contrato.** Uno solo, con muchos interruptores dentro. Cada interruptor guarda, en el estado confidencial de Sapphire: - su propietario; - la fecha vigente, u otro valor que haga de condición; - una clave privada X25519 propia, `sk_switch`, que nunca sale del contrato; - el resumen del objeto que protege. Sus operaciones: - `renew(fecha)`, firmada por el propietario, solo antes de que venza la fecha vigente. Una vez vencida, ya no se puede renovar. - `release`, una consulta confidencial que no cuesta gas. Si la condición no se cumple, falla. Si se cumple, usa `sk_switch` para abrir lo que se le pasa y devuelve la clave que protege, nunca la privada. - Un relayer paga el gas de las renovaciones, para que el usuario no necesite monedero ni criptomoneda. **Una copia antigua no sirve.** La condición está en el contrato, no en el paquete: quien guardó una copia antes de una renovación sigue necesitando que el contrato la libere. ## Cómo encaja con DateKeys Sin cambiar el formato de la cápsula. El interruptor es una llave más de una cápsula `time_and_key`: - su clave pública ocupa uno de los 16 huecos de `INNER_ACCESS_AGE`; - tlock hacia la ronda de T0 da la fecha mínima; - pasada la condición, el contrato abre su hueco (Sapphire hace X25519 dentro) y devuelve la clave del fichero, no su privada; - una extensión registrada por el servicio, no por el protocolo de la cápsula, dice dónde está el interruptor: la red, el contrato y el `switch_id`. La cápsula no puede llevar ninguna otra llave, ni `.dkk` ni palabras. Si la lleva, quien la tenga abre en T0 y se salta el interruptor. ## Riesgos 1. **Si Sapphire desaparece, el contenido se pierde para siempre.** Si la red se apaga, el contrato se rompe o el gestor de claves pierde las suyas, nadie vuelve a abrir el hueco. Hay que elegir: - una salida de emergencia: otra llave cifrada con Quicknet para una fecha máxima, por ejemplo T0 + 10 años, que abre aunque Sapphire haya muerto; - o asumir expresamente que, sin Sapphire, el contenido no se libera nunca. 2. **Después de T0, todo descansa en el enclave.** La confidencialidad de Sapphire depende de los enclaves SGX y TDX y de su gestor de claves, y SGX ha sufrido muchos ataques. Romperlos permitiría liberar antes de la condición, nunca antes de T0. El usuario tiene que saberlo. 3. **El contrato tiene que ser inmutable,** sin proxy ni administrador. Si quien lo opera puede cambiarlo, puede liberar antes. 4. **El relayer puede disparar el interruptor.** Si las renovaciones solo pasan por él, basta con que deje de retransmitir una. El usuario tiene que poder renovar directamente, aunque le cueste gas. 5. **La hora de las consultas.** `release` usa el `block.timestamp` del último bloque que conoce el nodo que responde. Hay que confirmar en la documentación de Oasis que ese nodo no puede presentar una hora adelantada. 6. **Los metadatos.** Las renovaciones van cifradas en Sapphire, pero el relayer y la red ven quién y cuándo. 7. **Perder la clave del propietario equivale a no renovar,** y el interruptor salta. Es la semántica correcta, pero hay que avisarlo. ## Costes La estimación de la conversación de diseño, sin medir: un solo contrato para todos, unas 500 000 unidades de gas por interruptor creado y unas 100 000 por renovación, y una liberación sin gas. Con una renovación al mes, del orden de milésimas de euro por usuario y año. Hay que medirlo en la testnet antes de dar cifras. El coste real está en otra parte: - el almacenamiento del contenido, con su redundancia; - el relayer; - los nodos RPC: los públicos tienen límites, y Oasis recomienda uno propio o dedicado para un servicio así; - la auditoría del contrato. ## Preguntas abiertas - ¿Salida de emergencia con Quicknet, o pérdida aceptada sin Sapphire? - ¿Qué condiciones además de la fecha: votaciones de custodios, oráculos, pagos? - ¿Quién puede pedir la liberación: cualquiera que tenga el paquete, o solo destinatarios autenticados con consultas firmadas? - La señal de coacción del [almacén de la app móvil](almacen_cifrado_movil.md): qué hace el contrato al recibirla. Hoy, rechazar renovaciones durante 48 horas. - La dependencia de una cadena, un monedero para el relayer y las librerías de Sapphire, que necesitan la aprobación del autor.