El programa de delegación de suscripciones permite a los desarrolladores que los usuarios autoricen futuras transferencias de tokens desde sus billeteras con límites claros. Está diseñado para pagos recurrentes, suscripciones, facturación de comerciantes y otros flujos donde el usuario no debería tener que firmar cada transferencia manualmente.
Propósito
Las cuentas de tokens de Solana pueden aprobar otra autoridad para mover tokens, pero cada cuenta de tokens solo puede tener una autoridad aprobada a la vez. Esto dificulta que una billetera admita de forma segura varios acuerdos de gasto para el mismo token, como una suscripción mensual, una asignación de gasto fija y un acuerdo de facturación con un comerciante.
Este programa resuelve esto al otorgar a cada par (user, token mint) una
autoridad de suscripción controlada por el programa. La cuenta de tokens del
usuario aprueba esa autoridad una vez. Luego, el programa verifica cada
transferencia solicitada contra un registro separado que define quién puede
retirar fondos, cuánto puede retirar y cuándo expira o se restablece la
autorización.
La autoridad de suscripción no puede mover fondos por sí misma. Una transferencia solo tiene éxito cuando coincide con una de las autorizaciones activas del usuario.
ID del programa
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
El ID del programa se declara en program/src/lib.rs. Los flujos de trabajo
locales de Surfpool instalan el programa en esta dirección canónica.
Modelos de delegación
El programa admite tres modelos de autorización:
| Modelo | Propósito |
|---|---|
| Delegación fija | Permite que otra billetera o servicio gaste hasta un monto total fijo, opcionalmente hasta una fecha de vencimiento. |
| Delegación recurrente | Permite que otra billetera o servicio gaste hasta un límite que se restablece en cada período, como diario, semanal o mensual. |
| Plan de suscripción | Permite que un comerciante publique términos de facturación que los usuarios pueden aceptar, luego permite que cobradores aprobados cobren a los suscriptores en cada período de facturación. |
Tokens Soportados
El programa es compatible con tokens creados tanto con SPL Token como con
Token-2022. La única extensión de Token-2022 que rechaza es un TransferHook
configurado (donde el hook authority o program_id está establecido). Un
TransferHook inerte (ambos sin configurar y, por lo tanto, permanentemente
inmutable) y todas las demás extensiones están permitidas.
Eventos On-Chain
El programa emite eventos on-chain para que los indexadores y aplicaciones puedan rastrear actividad importante. Estos eventos cubren cambios de suscripción y transferencias realizadas a través de flujos fijos, recurrentes y de planes de suscripción.
Versionado
Los registros propiedad del programa incluyen un campo de versión. Esto proporciona al programa una vía para actualizar los datos de las cuentas con el tiempo sin afectar a los usuarios existentes. La estrategia de migración admite:
- Actualización diferida in situ
- Instrucción de migración explícita
- Alternativa de revocar y recrear
Contribuidores
El proyecto es mantenido por colaboradores del
repositorio solana-program/subscriptions.
Estado de Auditoría
El programa ha sido auditado por Cantina. El estado de auditoría, commit base,
commit con correcciones verificadas y el delta actual sin auditar se rastrean en
el
directorio audits/ del repositorio.
Aplicación de demostración
Si deseas explorar el programa por tu cuenta, puedes ver una aplicación de ejemplo aquí para ver una implementación completa de los conceptos tratados en esta sección.
Is this page helpful?