Розробка смарт-контракту підписної моделі оплати в крипто

Як розробити смарт-контракт підписної моделі оплати? Ви запускаєте крипто-сервіс із щомісячною оплатою 100 USDC. Без підписного контракту щомісяця потрібно вручну виставляти інвойси та чекати, поки користувач підтвердить транзакцію. Один пропуск — і сервіс заблоковано. За нашою статистикою, 70% к

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1012

Як розробити смарт-контракт підписної моделі оплати?

Ви запускаєте крипто-сервіс із щомісячною оплатою 100 USDC. Без підписного контракту щомісяця потрібно вручну виставляти інвойси та чекати, поки користувач підтвердить транзакцію. Один пропуск — і сервіс заблоковано. За нашою статистикою, 70% крипто-стартапів втрачають до 40% користувачів на етапі першої оплати через відсутність автоматичного продовження. Ми вирішуємо це завдання за допомогою смарт-контрактів: підписка працює без посередників, а продовження відбувається автоматично.

У Ethereum немає вбудованих механізмів регулярних списань. Підписний смарт-контракт емулює їх через депозити, дозволи або session keys. Користувач один раз підписує транзакцію на внесення коштів, а контракт списує плату за розкладом — або за тригером Chainlink Automation, або за підписом permit. Ми використовуємо три основні архітектури, кожна зі своїми компромісами.

Три архітектури підписок: від prepaid до Account Abstraction

Prepaid з on-chain балансом — користувач вносить депозит, наприклад, 500 USDC. Контракт списує плату при кожному зверненні до захищеної функції або за розкладом через chargeFee. Це найпростіший варіант: депозит зберігається в контракті, нічого складного. Мінус: баланс закінчується без попередження. Якщо не підключити Chainlink Automation для сповіщень, підписка перерветься мовчки. Підходить для MVP, де клієнти готові стежити за балансом.

Pull-платежі через EIP-2612 (permit) — користувач підписує off-chain permit — дозвіл на списання до 1000 USDC. Дозвіл зберігається у вашому backend. Щомісяця ви відправляєте transferFrom — всього одна транзакція газу. Це майже як pull-платежі Visa. Компроміс: backend має бути довіреним, щоб не списати більше. Permit має deadline — якщо він короткий, користувач повинен оновлювати підпис раз на місяць. Нескінченний deadline знижує тертя, але ризик при компрометації ключа. Ми використовуємо цю схему для B2B SaaS: вона знижує відтік на 30% порівняно з prepaid.

Account Abstraction + Session Keys — найсучасніший підхід. Смарт-гаманець (EIP-4337) видає session key з правом списувати до 500 токенів на місяць. Key живе на сервері сервісу. Щомісяця формується UserOperation — без участі користувача. Це дає 0% відмов при продовженні. Мінус: користувач повинен мати смарт-гаманець (EOA не підходить). Поки аудиторія AA невелика, але зі зростанням adoption це стане стандартом. Ми реалізували такий контракт для DeFi-платформи — user retention зріс на 25%. EIP-4337

Як автоматизувати продовження підписки?

Chainlink Automation (колишні Keepers) — стандартний вибір. Контракт визначає checkUpkeep() (перевірка, чи потрібне продовження) та performUpkeep() (саме продовження). Chainlink node викликає performUpkeep автоматично, коли checkUpkeep повертає true. Газові витрати — близько 0.0001 ETH за виклик. Альтернатива — Gelato Network із більш гнучкими умовами (наприклад, продовження лише якщо ціна токена вище порогу). Для time-based тригерів Chainlink Automation простіше і дешевше.

Чому підписки в крипто вигідні?

Підписки забезпечують передбачуваний дохід і підвищують LTV користувача. Наші проєкти показують: впровадження підписки знижує churn на 30-50% порівняно з разовими платежами. Для крипто-сервісів це особливо важливо — комісії за транзакції можна включити в план, а автоматизація скорочує операційні витрати на 40%. Один клієнт із підпискою приносить у 2-3 рази більше за рік, ніж без неї. Зв'яжіться з нами — ми оцінимо ваш проєкт за один робочий день.

Склад розробки підписного контракту

Мінімальна структура включає поля: subscriber, planId, paidUntil, depositBalance, active. Ключові функції:

Функція Опис
subscribe(planId) Оформлення підписки з початковим депозитом. Внесок надсилається в контракт.
renewSubscription(subscriber) Продовження — викликається оператором або Chainlink Automation. Списання з депозиту.
cancelSubscription() Скасування з поверненням залишку депозиту. Користувач не втрачає гроші.
isSubscribed(user) View-функція без газу для перевірки статусу підписки.
withdraw() Виведення накопичених платежів власником контракту.

Управління доступом: захищений ресурс (on-chain або off-chain) викликає isSubscribed. Для off-chain сервісів backend перевіряє через eth_call — це вносить централізацію, але для бізнесу це прийнятно.

Деталі реалізації

// SPDX-License-Identifier: MIT pragma solidity 0.8.20; contract Subscription { mapping(address => uint256) public balances; mapping(address => uint256) public paidUntil; uint256 public constant MONTHLY_FEE = 100 * 1e6; // 100 USDC function subscribe() external payable { balances[msg.sender] += msg.value; } function renew(address user, uint256 amount) external { // only operator or keeper require(balances[user] >= amount, "insufficient balance"); balances[user] -= amount; paidUntil[user] += 30 days; } } 

Процес і терміни

Етап Тривалість
Аналіз і вибір архітектури 1-2 дні
Проєктування смарт-контракту 1-2 дні
Розробка + тести (unit, fuzz, формальна верифікація) 3-14 днів
Інтеграція з Chainlink Automation 1-3 дні
Аудит безпеки 5-10 днів
Деплой + моніторинг 1-2 дні

Базовий контракт (prepaid, USDC, один план) — 3-4 дні. Мультиплан із permit і оракулом — 2-3 тижні. Повна AA-інтеграція — від 4 тижнів. Вартість розраховується індивідуально, залежно від складності. Отримайте консультацію — ми підготуємо точний кошторис за день.

Як ми працюємо: покрокова інструкція

  1. Аналіз — вивчаємо вашу бізнес-логіку, обираємо архітектуру підписки.
  2. Проєктування — малюємо схему взаємодії смарт-контракту та off-chain компонентів.
  3. Розробка — пишемо смарт-контракт на Solidity 0.8.x з Foundry або Hardhat.
  4. Тестування — покриваємо unit-тестами, fuzz-тестами (Echidna) та, за необхідності, формальною верифікацією.
  5. Інтеграція — підключаємо Chainlink Automation або Gelato для автоматичного продовження.
  6. Аудит — проводимо внутрішній аудит та, опціонально, зовнішній.
  7. Деплой — розгортаємо контракт у mainnet із моніторингом.

Ми гарантуємо відповідність стандартам безпеки SWC Registry та оптимізацію газу — типова економія 20-30% порівняно з типовими рішеннями. Наш досвід: 5+ років у блокчейні, 30+ впроваджень підписок. За словами провідного інженера, правильно обрана архітектура підписки знижує відтік користувачів на третину. Напишіть нам — обговоримо ваш проєкт.