PagamentosAssinaturas

Visão Geral

O Programa de Delegação de Assinaturas permite que desenvolvedores possibilitem que os usuários autorizem transferências futuras de tokens de suas carteiras com limites claros. Ele foi projetado para pagamentos recorrentes, assinaturas, cobrança de comerciantes e outros fluxos onde um usuário não deve ter que assinar cada transferência manualmente.

Finalidade

As contas de token da Solana podem aprovar outra autoridade para movimentar tokens, mas cada conta de token só pode ter uma autoridade aprovada por vez. Isso dificulta que uma carteira suporte com segurança vários arranjos de gastos para o mesmo token, como uma assinatura mensal, um limite de gastos fixo e um acordo de cobrança de comerciante.

Este programa resolve isso ao fornecer a cada par (user, token mint) uma Autoridade de Assinatura controlada pelo programa. A conta de token do usuário aprova essa autoridade uma vez. O programa então verifica cada transferência solicitada contra um registro separado que define quem pode retirar fundos, quanto pode retirar e quando a autorização expira ou é redefinida.

A Autoridade de Assinatura não pode movimentar fundos por si só. Uma transferência só é bem-sucedida quando corresponde a uma das autorizações ativas do usuário.

ID do Programa

De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44

O ID do programa é declarado em program/src/lib.rs. Os fluxos de trabalho locais do Surfpool instalam o programa neste endereço canônico.

Modelos de Delegação

O programa suporta três modelos de autorização:

ModeloFinalidade
Delegação fixaPermite que outra carteira ou serviço gaste até um valor total fixo, opcionalmente até um prazo de expiração.
Delegação recorrentePermite que outra carteira ou serviço gaste até um limite que é redefinido a cada período, como diário, semanal ou mensal.
Plano de assinaturaPermite que um comerciante publique termos de cobrança que os usuários podem aceitar, e então permite que cobradores aprovados cobrem os assinantes a cada período de cobrança.

Tokens Suportados

Suporta todos os mints de SPL Token e Token-2022.

Para mints Token-2022 com um TransferHook configurado, o programa encaminha as contas de hook do mint (programa de hook, PDA ExtraAccountMetaList, extras) para o CPI TransferChecked em cada transferência delegada, garantindo a aplicação da política de hook. O SDK resolve-os automaticamente:

  • Cliente de plugin (transferFixed, transferRecurring, transferSubscription) — adicionados automaticamente.
  • Construção manual — chame resolveTransferHookAccounts, passe transferHookAccounts.

Eventos On-Chain

O programa emite eventos on-chain via self-CPI para que indexadores e aplicações possam rastrear a atividade. Todos os eventos estão registados no IDL publicado, permitindo que os clientes gerados os decodifiquem. Os eventos emitidos são:

  • FixedTransferEvent, RecurringTransferEvent e SubscriptionTransferEvent — um por transferência delegada. Cada um carrega o receiverTokenAccount creditado; SubscriptionTransferEvent também carrega o puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent e SubscriptionResumedEvent — ciclo de vida da subscrição. SubscriptionCreatedEvent carrega o payer.
  • PlanUpdatedEvent — emitido quando um plano é atualizado.

Versionamento

Os registos geridos pelo programa incluem um campo de versão. Isto fornece ao programa um mecanismo para atualizar os dados de conta ao longo do tempo sem quebrar os utilizadores existentes. A estratégia de migração suporta:

  • Atualização lazy in-place
  • Instrução de migração explícita
  • Fallback de revogação e recriação

Contribuidores

O projeto é mantido por contribuidores do repositório solana-program/subscriptions.

Estado da Auditoria

O programa foi auditado pela Cantina. O estado da auditoria, o commit de base, o commit de correção verificada e o delta atual não auditado são rastreados no diretório audits/ do repositório.

Aplicação de Demonstração

Se pretender experimentar o programa por conta própria, pode consultar uma aplicação de exemplo aqui para ver uma implementação completa dos conceitos abordados nesta secção.

Is this page helpful?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.