-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
I am opening this ERC as a means of discussing (a) the merits and (b) the viability of creating a standard way of managing recurring payments on the blockchain, both (1) for tokens, and (2) for Eehereum.
Merit
Monthly subscriptions are a key monetization channel for legacy web, and arguably they are the most healthy monetization channel for businesses on the legacy web (especially when compared to ad/surveillance) based models. They are arguably more healthy than a token based economic system (depending upon the vesting model of the ICO).
For these reasons, I think it's worth talking about the viability of creating a standard way to do 'subscriptions' on Ethereum. I'm envisioning an
From UX standpoint, it would be pretty nice if you could manage all your ethereum-based SAAS subscriptions from one service like an on-chain keychain, if privacy was respected.
Viability
Opt in every month model
This is already viable if a service were to send an email (or other notification) to a user to every month sign a transaction.
But it creates a lot of churn in the subscriber base because the steps of
- sending the email.
- receiving the email
- opening the email
- signing a tx
- broadcasting the tx
is a lot of friction for the user.
It is also suboptimal from a cash flow perspective from the business, because the trickle of exchange of a value to the user and revenue for the business requires each party to reaffirm their relationship every month.
In a world in which there are 100s of Ethereum based dapps, it would simply be untenable from an attention standpoint for a consumer to manage all of their subscriptions in this world.
Opt out model
For the above reasons, I think it's optimal for Ethereum to support opt out subscription models. I am defining an opt out subscription model as
- User consents to having
priceworth of ETH (or tokens) withdrawn everytime_periodbyservice_address. - The user may remove consent at any time.
- The owner of
service_addressmay removepriceworth of ETH/tokens everytime_period. If those tokens are available and the users consent is active and its been at leasttime_periodsince last withdrawal, then the tx will be successful. If not it willthrow().
Case Studies
Take the case study of Adobe Creative Cloud. Prior to 2013, you had to pay $1000 for creative suite, and it was a massive barrier to entry. Now you just pay $40 per month, and you can learn the software and continue to pay if you use it. And Adobe can manage their cash flow over time.
Or the case of Amazon Prime. For $80 per year, one can simply (1) not have to pay shipping for their goods (2) receive a ton of benefits related to their content. And now amazon can do revenue forecasts more accurately because they're managing a consistent voume of cash flow.
Technical Viability
Right now, it is not technically viable to do opt out recurring subscriptions on the blockchain. The best workaround would be to present a user with an approve(x) where x = price * n, where price is the monthly price of the service and n is a number of months, and then call transfer(x/n) every month or so.
Until (and if) ETH becomes a token, it would not be viable to do this at all with ETH.
Proposal.
I am not at a point yet with this idea where I feel comfortable presenting an interface. A discussion on (a) merit should precede the discussion on viability and proposal design.
My only strongly held beliefs for the 'proposal' stage of this ERC at this point is
- that subscription payments are a core piece of infrastructure for the Ethereum ecossytem and thereby should not be subject to the rent-seeking nature of any tokenized product (other than gas payments setup already active in the Ethereum protocol)
- The system should be architected such that a subscription product can be managed in a completely trustless way. (i.e. no trusted intermediary in between the two parties).
👋
@owocki and the @gitcoinco team.
