ПлатежіПідписки

Огляд

Програма делегування підписок дозволяє розробникам надавати користувачам можливість авторизувати майбутні переказі токенів зі своїх гаманців із чіткими обмеженнями. Вона розроблена для регулярних платежів, підписок, виставлення рахунків продавцями та інших процесів, де користувачу не потрібно підписувати кожен переказ вручну.

Призначення

Облікові записи токенів Solana можуть схвалювати іншого уповноваженого для переміщення токенів, але кожен обліковий запис токена може мати лише одного схваленого уповноваженого одночасно. Це ускладнює безпечну підтримку одним гаманцем кількох угод про витрати для одного й того ж токена, таких як щомісячна підписка, фіксований ліміт витрат і угода про виставлення рахунків продавцем.

Ця програма вирішує це, надаючи кожній парі (user, token mint) керований програмою Уповноважений підписки. Обліковий запис токена користувача схвалює цього уповноваженого один раз. Потім програма перевіряє кожен запитуваний переказ відповідно до окремого запису, який визначає, хто може виводити кошти, скільки може вивести і коли авторизація закінчується або скидається.

Уповноважений підписки не може переміщувати кошти самостійно. Переказ виконується успішно лише тоді, коли він відповідає одній з активних авторизацій користувача.

ID програми

De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44

ID програми оголошено в 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?