DEV Community

Aleksandr Crypto for Free TON

Posted on

Recurring Payments (‘Subscriptions’) smart contract system

Short description
Develop smart contracts to recurring payments (‘subscriptions’) on the Free TON, both (1) for TIP-3 tokens, and (2) for TON Crystal.

Contest dates
July 16, 2021 00:00 UTC — August 31, 2021 23:59 UTC

Voting cycle
15 days

Motivation
Monthly subscriptions are a key monetization channel for legacy web, and arguably they are the most healthy monetization channel for businesses (especially when compared to ad/surveillance) based models. But in the blockchain world there haven’t been any successful full-featured crypto subscription payment systems yet. For these reasons, I think it’s worth creating smart contracts to do ‘subscriptions’ on Free TON to facilitate user experience in crypto for both users and product owners (service providers).

Users don’t have to read a complex whitepapers to assess service in Free TON (as opposed to utility tokens)
Users should have ability to subscribe and cancel anytime, without having to own any specific tokens
Don’t have to understand the product owners vesting schedules, crypto-economics, or anything more complex than the DeBot/Smart Contracts use case.
Product owners can get a consistent, ongoing stream of cash flow while assessing the health of their business (subscribers, churn, growth)
Product owners can focus on making customers happy, as opposed to splitting time between speculators and users
Product owners utilize a proven, time-tested business model
Task
Implement on-chain Recurring Payments (‘Subscriptions’) smart contract system by which FreeTON users will be able to pay to unlock access to special DeBots/Smart Contracts/Off-chain service for a certain amount of time. Users must be able to recurly pay by TON Crystal or TIP-3 token (e.q. USDT) to subscribe for DeBots/Smart Contracts and be able to cancel or pause subscription anytime. In turn, DeBots/Smart Contracts owners must be able to track subscribers to unlock DeBots/Smart Contracts usage or some of its features. Existing examples:
Solc: https://github.com/tonlabs/ton-client-js/blob/master/packages/tests/contracts/abi_v2/Subscription.sol
C++: samples/cpp/Wallet at master · tonlabs/samples · GitHub

Also some kind of validation (for off-chain services) and verification (for on-chain services) should be introduced also. It’s necessary to ensure that the end user receives the service which he subscribed to. In the case of subscribing to on-chain services, some special contract can collect metrics about service and determine the subscription agreement fulfilled. In case of off-chain service, the system should be able to receive this information from external messages and validate it.

Requirements
To develop a Recurring Subscription smart contract system using either Solidity or C++ languages
Distributed smart contracts are always preferable, the participants should avoid operations on large data sets as much as possible (distributed programming paradigm) (github, youtube)
Should allow product owners (service providers) to deploy a smart contract on FreeTON with parameters for a subscription including destination address, TIP-3 token address (if necessary), token amount, and period of recurrence.
The subscriber should be able to control subscription status (starting, stopping, pausing, etc)
Product owners should be able supply a link to the subscriber that is presented with the terms of the subscription to sign an transaction that is replayed on the defined period
Should support the ability to subscribe with TON Crystal tokens as well as any other TIP-3 Token
Should include DeBots for all system user interfaces
Some kind of validation (for off-chain services) and verification (on-chain services) should be implemented
A system should be deployed and tested on any test network(net.ton.dev, fld.ton.dev) and Jury should be able to access it for testing
Solution should be committed to the Free TON community repo in accordance with the following document - GitHub - freeton-org/readme
Should include auto-tests designed as a smart contract or a script to test scenarios
A solution should have a Free Software license (https://www.gnu.org/licenses/license-list.html 1)
Your repo should include README with introduction and usage manual and deploy instructions
*any TIP-3 realisation allowed to use

Evaluation criteria
Safety first. If the architecture is not able to keep user funds secure, it is a non-starter
Minimize UX Complexity. A user should have closest as possible experience to legacy web but with all blockchain benefits
Opt-Out First. A user should not need to perform actions on an on-going basis. It should be a “set it and forget it” experience. A subscriber performs one transaction to set the subscription in motion and transactions should happen “automatically” between the parties
Minimizes Gas Use: The smart contract(s) should be as efficient of a consumer of on-chain resources as possible
No Staking. A user should not have to stake funds. i.e. lock 1200 TON for a subscription that pays out 100 TON per month.
Bonus: Extensibility. It’d be great if the smart contract could be extended to any recurring action (not just TIP3/TON Crystal transfers)
Bonus: Notifications. It’d be great if the smart contract could notify users regarding payment date or insufficient balance on the wallet, send bills (e.q. with TON Surf)
Submission format
Submission must be published to a public FreeTON org github repository (GitHub - freeton-org/readme)

PDF should be attached to the submission with the link to the repository’s contest branch along with the telegram id of the participant so that jury members can access the participant and ask questions.

Contest Rewards
💎 100’000
💎 80’000
💎 70’000
💎 40’000
💎 20’000
participants who receive 6th-10th place, receive points and do not have “rejected” votes will receive a consolation prize from 💎10000 to 💎2000 (with step equal to 2000

Landing page https://freeton.support/subscriptions
More details https://forum.freeton.org/t/contest-proposal-recurring-payments-subscriptions-smart-contract-system/10563/4
Apply for the contest https://devex.gov.freeton.org/proposal?isGlobal=false&proposalAddress=0%3A30e215b218c98085ab7d68edd7c6c65b9724568a4c21c270bfe62fe8c1a9fc23

Discussion (0)