PagosSuscripciones

Descripción general

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:

ModeloPropósito
Delegación fijaPermite que otra billetera o servicio gaste hasta un monto total fijo, opcionalmente hasta una fecha de vencimiento.
Delegación recurrentePermite 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ónPermite 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?

Tabla de Contenidos

Editar Página