Программа делегирования подписок позволяет разработчикам давать пользователям возможность авторизовать будущие переводы токенов из их кошельков с четкими ограничениями. Она предназначена для регулярных платежей, подписок, выставления счетов торговцами и других сценариев, где пользователь не должен подписывать каждый перевод вручную.
Назначение
Аккаунты токенов Solana могут одобрить другой орган для перемещения токенов, но каждый аккаунт токенов может иметь только один одобренный орган одновременно. Это затрудняет безопасную поддержку одним кошельком нескольких соглашений о расходах для одного и того же токена, таких как ежемесячная подписка, фиксированный лимит расходов и соглашение о выставлении счетов торговцем.
Эта программа решает данную проблему, предоставляя каждой паре
(user, token mint) управляемый программой Орган подписки. Аккаунт токенов
пользователя одобряет этот орган один раз. Затем программа проверяет каждый
запрошенный перевод на соответствие отдельной записи, которая определяет, кто
может списывать средства, сколько он может списать и когда срок действия
авторизации истекает или сбрасывается.
Орган подписки не может перемещать средства самостоятельно. Перевод выполняется успешно только тогда, когда он соответствует одной из активных авторизаций пользователя.
Идентификатор программы
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Идентификатор программы объявлен в program/src/lib.rs. Локальные рабочие
процессы Surfpool устанавливают программу по этому каноническому адресу.
Модели делегирования
Программа поддерживает три модели авторизации:
| Модель | Назначение |
|---|---|
| Фиксированное делегирование | Позволяет другому кошельку или сервису потратить до фиксированной общей суммы, опционально до момента истечения срока действия. |
| Регулярное делегирование | Позволяет другому кошельку или сервису тратить до лимита, который сбрасывается каждый период, например ежедневно, еженедельно или ежемесячно. |
| План подписки | Позволяет торговцу опубликовать условия выставления счетов, которые пользователи могут принять, а затем разрешает утвержденным сборщикам взимать плату с подписчиков каждый расчетный период. |
Поддерживаемые токены
Программа поддерживает токены, созданные как с помощью SPL Token, так и
Token-2022. Единственное расширение Token-2022, которое отклоняется, — это
настроенный TransferHook (когда хук authority или program_id задан).
Неактивный TransferHook (оба не заданы и поэтому навсегда неизменяемый) и все
остальные расширения разрешены.
События в блокчейне
Программа генерирует события в блокчейне, чтобы индексаторы и приложения могли отслеживать важную активность. Эти события охватывают изменения подписок и переводы, выполненные через фиксированные, повторяющиеся и плановые потоки подписок.
Версионирование
Записи, принадлежащие программе, включают поле версии. Это дает программе возможность обновлять данные аккаунта со временем без нарушения работы существующих пользователей. Стратегия миграции поддерживает:
- Ленивое обновление на месте
- Явную инструкцию миграции
- Отзыв и повторное создание в качестве запасного варианта
Участники проекта
Проект поддерживается участниками
репозитория solana-program/subscriptions.
Статус аудита
Программа прошла аудит компанией Cantina. Статус аудита, базовый коммит, коммит
с проверенными исправлениями и текущая непроверенная разница отслеживаются в
директории audits/
репозитория.
Демонстрационное приложение
Если вы хотите самостоятельно поэкспериментировать с программой, вы можете ознакомиться с примером приложения здесь, чтобы увидеть полную реализацию концепций, рассмотренных в этом разделе.
Is this page helpful?