Smart contracts: https://github.com/ZeroPayDev/Subscription 1. Create plan table, update it when receive onchain events 2. Create subscription table, update it when receive onchain events 3. Claim the subscription when time passed the period