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:
| Modelo | Finalidade |
|---|---|
| Delegação fixa | Permite que outra carteira ou serviço gaste até um valor total fixo, opcionalmente até um prazo de expiração. |
| Delegação recorrente | Permite que outra carteira ou serviço gaste até um limite que é redefinido a cada período, como diário, semanal ou mensal. |
| Plano de assinatura | Permite 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
O programa suporta tokens criados com SPL Token e Token-2022. A única extensão
Token-2022 que ele rejeita é um TransferHook configurado (onde o hook
authority ou program_id está definido). Um TransferHook inerte (ambos
indefinidos e, portanto, permanentemente imutável) e todas as outras extensões
são permitidas.
Eventos On-Chain
O programa emite eventos on-chain para que indexadores e aplicações possam rastrear atividades importantes. Esses eventos cobrem alterações de assinatura e transferências realizadas através de fluxos fixos, recorrentes e de planos de assinatura.
Versionamento
Os registros de propriedade do programa incluem um campo de versão. Isso fornece ao programa um caminho para atualizar dados de contas ao longo do tempo sem prejudicar usuários existentes. A estratégia de migração suporta:
- Atualização preguiçosa 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.
Status de Auditoria
O programa foi auditado pela Cantina. O status da auditoria, commit de baseline,
commit com correções verificadas e delta não auditado atual são rastreados no
diretório audits/
do repositório.
Aplicação de Demonstração
Se quiser 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?