3

after reading these threads link 1, link 2 and link 3, I am a bit confused as why there is no way, on the EVM, to put in place recurring payments as it's such a predominant use case IRL (rent, utilities, Netflix etc...). I saw EIP-1337 did fail but would anyone have more information as of why and how would it be possible to move forward on this topic as it seems crucial for mass adoption?

Also, I keep on wondering: how do hackers "drain" external wallets by simply having them approving a malicious smart contract? Cause it seems like that actually fits the use case (from bad people obviously) in the scenario where only an approval is necessary (though I understand Approve + Sign a malicious Tx is not the same).

Thanks for your help!

3
  • 1
    You can do other more interesting things on the blockchain - like streaming money. See Sablier. Commented Nov 4, 2022 at 10:01
  • 1
    thanks Paul, in our case, money streaming doesn't seem like a good option but I totally agree it brings new use cases on the table
    – ibox
    Commented Nov 4, 2022 at 15:54
  • thanks Paul, in our case, money streaming doesn't seem like a good option but I totally agree it brings new use cases on the table
    – ibox
    Commented Nov 4, 2022 at 15:54

2 Answers 2

2

Short answer: It is not possible to make Automated recurring payments onchain.

You need to trigger a transaction to make a payment, one solution would be to create an app kind of a task-runner, that will automatically send or invoke a function at intervals.

let's say I want to send 10 USDT every day to 3 different wallets.

Your app will be running continuously and every day, it will send using your private key 10 USDT to the three different wallets.

Or you can make a claim scheme where users can claim their payments, and they will be able to call a specific function to get their payment. It is currently the most preferred solution

But it's not possible to send it automatically, you need a transaction to update the state of the blockchain, but if you edit your ERC20 Token, and make the balance updated over time / over block.

function balanceOf(address user) external view returns {
   return block.timestamp - startPeriod;
}

So if let's say startPeriod is Jan 01, and current date is Jan 02: At this moment the balance of the user will be 86400 tokens, and thus he'll be able to send this amount since its balance is 86400. It is just a simple example.

1

There goes my first answer in Ethereum SX 🙃

Note: Centralized solutions and non-custodial wallets are not discussed here.

It is currently possible to create subscriptions on the blockchain but it's complicated. Here are the issues:

  • Subscriptions require deploying smart contracts by the vendors
  • Each new subscription requires the customer to create an allowance for the vendor to charge
  • There's no system for automatic scheduling of transactions. Every recurring payment requires manual triggering by the vendor
  • Each payment requires interacting with a smart contract making it much more expensive to execute than a regular transaction

The current available procedure is complicated, expensive, cumbersome to operate and may be completely uneconomical. Subscriptions are meant to be used for small, regular payments but smart contract interactions are expensive so triggering them on every recurring payment may generate fees that will outweigh even the total value of the transactions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.