Saltar al contenido principal

Fase 7: retirar la infraestructura de custodia

· 6 min de lectura
OrcaRail
Crypto payment rails for web2 apps

20 de abril de 2026: la Fase 7 es la limpieza. Cuando lleguemos aquí, el volumen de EVM y Solana estará en receptores en contrato y en SubscriptionHub, Bitcoin estará en multisig 2 de 2 y ningún enlace de pago nuevo pasará por el camino de barrido heredado. Esta fase elimina el código heredado y los secretos heredados.

En resumen​

  • Eliminar hd_wallet_seed, la configuración WALLET_ENCRYPTION_KEY y la lógica de derivación para las cadenas con el flag.
  • Borrar los caminos de EVM/SOL en api/src/withdrawals/: SmartAccountWalletService.drainSmartAccountWallet, solana-withdrawal-transfer.service.ts y los archivos de spec relacionados.
  • Mantener el camino de BTC (reducido al modelo 2 de 2 de la Fase 5).
  • Actualizar los términos del servicio, la política de privacidad y los controles SOC2 para reflejar una superficie de custodia mucho menor.
  • Publicar un postmortem que resuma lo aprendido.

Qué cambia en esta fase​

Antes de esta fase, el código tiene dos versiones de todo (el camino de barrido antiguo y el nuevo camino por contrato) detrás de feature flags. Después de esta fase, el camino nuevo es el único en EVM y Solana.

Qué eliminamos​

Base de datos​

  • La tabla hd_wallet_seed y su entidad TypeORM en api/src/payments/infrastructure/persistence/relational/entities/hd-wallet-seed.entity.ts.
  • La columna wallet_address.derivationPath se conserva para consultas históricas, pero pasa a admitir nulos; ninguna fila nueva la escribe para EVM/SOL.
  • Una migración archiva las filas de semillas cifradas en almacenamiento en frío durante siete años (retención regulatoria) y luego elimina la tabla.

Código​

En api/src/payments/wallet.service.ts:

  • Eliminar encryptSeed, decryptSeed, getOrCreateHDWallet, generateAddressForNetwork (ramas de EVM + SOL), getNextAvailableIndex y la importación dinámica de @account-kit/wallet-client.
  • getOrCreateAddressForPaymentLink pasa a ser un envoltorio fino sobre factory.computeAddress para EVM y findProgramAddressSync para Solana.

En api/src/withdrawals/services/smart-account-wallet.service.ts:

  • Eliminar drainSmartAccountWallet, transferFromSmartAccount, batchTransferFromSmartAccount, getSmartAccountClientForDepositWallet y derivePrivateKey.
  • El módulo se mantiene (todavía tiene un uso pequeño para utilidades relacionadas con BTC y para leer saldos).

Otras eliminaciones:

Configuración​

  • WALLET_ENCRYPTION_KEY: se elimina de .env, de los secretos de despliegue y de la documentación.
  • Cualquier material de firmante de Alchemy Account Kit en la configuración (las claves de API de @account-kit/* se mantienen si se siguen usando para el paymaster).

Qué se mantiene​

  • Hot wallet de BTC: reducida al modelo multisig 2 de 2 de la Fase 5. No queda ninguna semilla HD de EVM/SOL.
  • Política de paymaster de Alchemy: la usa el keeper para patrocinar charge() cuando aplica.
  • Ejecutores de puente de Relay: siguen orquestando la liquidación entre cadenas; quienes llaman son EOA de keeper, no firmantes custodiales.
  • Todos los webhooks, emails, facturación, panel y analíticas: sin cambios.
  • Términos del servicio: «OrcaRail no custodia fondos de EVM ni de Solana durante la liquidación de pagos» pasa a ser una afirmación factual, no un texto aspiracional.
  • Política de privacidad: eliminar las referencias al material de semillas almacenado.
  • Alcance de SOC2: los controles de custodia se reducen; los hallazgos de auditoría se mapean a la nueva superficie, más pequeña.
  • Postura como transmisor de dinero: nueva revisión con asesoría legal. Menos puntos de contacto con la custodia simplifican el análisis en varias jurisdicciones.

Postmortem​

Un artículo complementario resumirá lo aprendido en las Fases 0 a 7: qué tardó más de lo esperado, qué fue mejor, cuál fue el coste real de ingeniería de la no custodia y cómo reaccionaron los comercios. Cadencia prevista: un artículo en los 30 días siguientes a la publicación de la Fase 7.

Obsolescencias (ninguna nueva)​

Esta fase es en sí misma la obsolescencia. Todos los caminos con el flag useOnChainReceiver pasan a estar activados por defecto; el flag se elimina.

Plan de migración​

Cuando se ejecute la Fase 7, todos los pagos y suscripciones nuevos llevarán más de 12 meses siendo no custodiales. La migración se centra en la cola larga de enlaces heredados:

  • Enlaces de pago heredados abiertos y caducados → liquidar el polvo residual con un script de una sola vez y parar.
  • Suscripciones heredadas que nunca migraron → aviso por email 30 días antes del cierre, migración en un clic en el panel y suspensión del cobro automático si no migran.
  • Saldos residuales en direcciones de depósito heredadas → barrer por última vez con el antiguo camino de drenaje hacia las direcciones de retiro del comercio y luego retirar las claves.

Riesgos y mitigaciones​

  • Polvo residual en direcciones antiguas. Mitigación: ejecutar un script de barrido final antes del desmantelamiento; publicar en un informe público cualquier polvo irrecuperable.
  • Riesgo legal por eliminar demasiado pronto. Mitigación: archivo de 7 años de las filas de semillas cifradas (nunca descifrables sin la clave de cifrado, que se destruye en una ceremonia); los auditores pueden seguir verificando el estado histórico.
  • Alguien depende de una forma de API no documentada. Mitigación: aviso público de obsolescencia con 90 días; entrada en el changelog de la API; contacto directo con los principales comercios.

Lista de estado​

  • Todos los comercios de EVM + SOL en el flujo no custodial durante al menos 90 días
  • Suscripciones heredadas residuales a cero
  • Script de barrido final completado
  • Migración de hd_wallet_seed al archivo en frío completada
  • Eliminaciones de código fusionadas
  • Términos del servicio + política de privacidad actualizados y publicados
  • Artículo de postmortem publicado

El final de la hoja de ruta​

Tras la Fase 7, la postura de custodia es:

  • EVM, Solana: no custodial. OrcaRail no guarda ningún material de semillas.
  • Bitcoin: custodia reducida mediante multisig 2 de 2 con firmante del comercio.
  • Momento en tránsito: eliminado en EVM/SOL; reducido a un camino de reembolso multisig en BTC.

Eso es lo que nos propusimos en la hoja de ruta no custodial.


Documentación de referencia: Estado de la Fase 7 · Modelo de seguridad · Hoja de ruta