Skip to content
This repository has been archived by the owner on Jul 18, 2020. It is now read-only.

Membership and subscription app for Aragon DAOs #161

Open
evvvritt opened this issue May 21, 2019 · 19 comments
Open

Membership and subscription app for Aragon DAOs #161

evvvritt opened this issue May 21, 2019 · 19 comments

Comments

@evvvritt
Copy link

evvvritt commented May 21, 2019

Aragon Nest Proposal: Membership Subscription and Functional NFT Aragon Apps

Authors: Everett Williams, Billy Rennekamp (Bin Studio)

Abstract

This proposal comprises of two unique Aragon apps that can work in coordination: a Subscription Manager and a Non-Fungible Token Manager (NFT). DAOs can manage subscription products in the Subscription Manager (annual payment, monthly, weekly etc.), which optionally grant an NFT as proof-of-payment in coordination with the NFT Manager app. These membership assets could be used for access control to member-only content on other platforms, like a chat or a forum. While DappNode has developed a basic NFT Manager, we are proposing a more robust app that will support an upgradeable token URI endpoint that will allow for a pure return value making for very cheap metadata management. This technique can be seen in more detail here.

Use Case

The apps could be used independently but we imagine the most effective use case would be in tandem. A typical user flow for our use case might look like the following:

  1. The recently ended Berlin Community Radio (BCR), a music streaming application re-opens as a community owned DAO built with Aragon.
  2. Dedicated listeners are excited to donate to the project in a manner similar to Patreon.
  3. They use the subscription app to approve some amount of DAI, and then sign a subscription transaction that allows the contract to extract $10 of DAI every month.
  4. The first subscription is executed by a meta-transaction miner that Berlin Community Radio runs themselves.
  5. This meta-transaction will remove the $10 of DAI and upon successfully doing so will mint a new ERC-721 NFT.
  6. This NFT has been configured so that when token URI is triggered in the contract with the token ID as a parameter, it will always return https://berlincommunityradio.com/membership-token/{tokenID} (The base URL is configurable, and prevents the need for storing a separate string in the contract for each NFT. The metadata endpoint can also be updated as more decentralized solutions become available).
  7. This endpoint will return a json object that includes information gathered from the blockchain about when the token was minted, how long it is valid as well as a relevant membership tier image.
  8. This json data can be used to show the membership NFT in the subscriber’s wallet as well as any other site that supports NFTs. The presence of this NFT and the duration of its validity can be used like a library card to access exclusive content within Berlin Community Radio.

Deliverables

  1. Subscription Manager – an EIP1337 compliant Aragon application for both creating subscriptions for your Aragon organization, purchasing a subscription in that given Aragon organization and executing payment functions for that subscription.
  2. NFT Token Manager – an Aragon application modeled after Token Manager for minting ERC721 tokens.

Grant size

Funding: Up to $150k in DAI, split into chunks paid out over achieved deliverables.

Success reward: Up to 30k ANT, given out when all deliverables are ready.

Application requirements

  • Proof of concept of NFT Manager or basic Subscription Manager using AragonOS.
  • Details of the team members, alongside with their willingness in terms of implication
  • Estimated average burn rate for completing the deliverables
  • Legal structure to be adopted, if any

Development timeline

  1. Develop NFT Manager smart contracts
  2. Design and Build NFT Manager interface
  3. Develop Subscriptions smart contracts
  4. Design and Build Subscriptions interface
  5. Develop optional off-chain API service for invoking Subscription smart contracts
@LouisGrx
Copy link
Contributor

LouisGrx commented Jun 5, 2019

Hey there @evvvritt, thanks for the proposition and your interest in contributing to Aragon!

The use case you detail here is interesting: enabling Aragon DAOs to offer subscriptions to their users in order to generate recurring revenue streams makes a lot of sense, especially considering that Aragon DAOs do not have “traditional” monetization modules for now.

This being said the current content of the proposal raises a few important questions:

  • In the Grant Size section it looks like you left the template’s figures. In order to have a better idea of the overall proposal, we would need to understand the order of magnitude of the grant you will require to work on it.
  • Same for the length of the Timeline. Could you provide hints on those?
  • As its not specified in the Timeline, do you plan to push apps on Rinkeby at the end of the period?
  • Considering a situation where the Nest program facilitates security audits at the end of the period: how far would the two apps be from a potential mainnet release?
  • You seem to have a good idea of where you want to go and how you want to proceed. Have you started thinking about the specs (for the subscriptions app especially)?

Looking forward to discussing more

@evvvritt
Copy link
Author

evvvritt commented Jun 5, 2019

Hi @LouisGrx! Thanks for considering our proposal.

If approved for funding requests, we planned to apply for a $50K DAI grant with a success reward of 12K ANT to cover three developers over a three month timeline.

We definitely hope to launch on mainnet so we can utilize these applications for a community-based music platform in early stages of development (currently applying for funding). If the Nest program could aide a security audit that would be great!

For the subscription app, we plan on following EIP1337 for subscriptions and made a rough outline for the app's permission configuration. We planned to provide more details in the request for funding but we can do so now, if preferred?

@LouisGrx
Copy link
Contributor

LouisGrx commented Jun 18, 2019

Hey there @evvvritt, thanks for the quick reply.

  • How about DAI45K and a ANT20K success reward? This would be in order to put the emphasis on deliverables.
  • Happy to hear about the music platform initiative. Makes sense.

For the subscription app, we plan on following EIP1337 for subscriptions and made a rough outline for the app's permission configuration. We planned to provide more details in the request for funding but we can do so now, if preferred?

  • Sounds good, It’s fine if you provide it for the RFF!

Overall the application is appealing and we would like to approve it to have a comprehensive RFF. However let us signal that the Nest budget is drying up for this period. We will have to prioritize over what to fund before we hopefully get more budget during ANV#3. How Flexible would you be in terms of starting date?

Approving this proposal for a RFF!

@evvvritt
Copy link
Author

Hi @LouisGrx—thanks for approving!

The revised funding and success scheme is totally fine. And fully understand timing considerations—a later starting date actually works well for us. In the meantime, we will begin working on our RFF. If you advise we submit at or around a certain date, please let us know.

Exciting!

@LouisGrx
Copy link
Contributor

LouisGrx commented Jun 26, 2019

Hey there,

Awesome to hear that!

The main deadline we're looking at right now is Aragon Network Vote #3 happening on July 27th. After that we will know if Nest has more budget available or not. For the RFF submission, it's whenever you are ready and ideally before the end of July.

Thanks for getting involved!

@yeqbfgxjiq yeqbfgxjiq changed the title Aragon Nest Proposal: Membership Subscription and Functional NFT Aragon Apps Membership Subscription and Functional NFT Aragon Apps Nov 1, 2019
@yeqbfgxjiq
Copy link
Contributor

yeqbfgxjiq commented Nov 1, 2019

Memberships and subscriptions are a feature that we would really like to see developed on Aragon. This would allow fans to support creators with monthly recurring subscriptions and it would also allow developers to create SaaS integrations for Aragon.

@evvvritt As you might have seen, the Nest program received more funds in ANV3! If you're still interested in developing this project, please submit an updated application! :)

@yeqbfgxjiq yeqbfgxjiq changed the title Membership Subscription and Functional NFT Aragon Apps Membership and subscription app for Aragon DAOs Nov 1, 2019
@evvvritt
Copy link
Author

evvvritt commented Nov 7, 2019

Hi @burrrata thanks for the encouragement and update on funding :) This summer our team couldn't find the time but things are opening up and we hope to finally submit our application by the end of the month. Many thanks!

@evvvritt
Copy link
Author

Hi Aragon! Please find below our updated application for funding to develop an Aragon Membership App and NFT Manager App. We have also created a video demonstrating a proof-of-concept implementation of this app.

Application

Membership Subscription and Functional NFT Aragon Apps

An application on the Aragon platform that allows an organization to create different membership subscriptions that grant an optional NFT as proof of membership. Users can subscribe and manage their subscriptions via the Membership app. NFT Tokens can also be minted manually and managed via the NFT Manager app.

Project GitHub


Team

Bin Studio

Lead:
Everett Williams
evv.info@gmail.com

Team:
Billy Rennekamp
Role: Contract Developer

Nicolas Kort
Role: Front-end Developer

Everett, Billy and Nics are members of Bin Studio, a multi-disciplinary studio based in Berlin, and have been collaborating for the past few years on several blockchain projects, including Clovers Network.

(Bin Studio is not currently present on the Aragon Forum)


Progress

How far along are you?

We have developed a simple prototype to demonstrate the base functionality of this Aragon app, found in our project’s GitHub.

Is anyone using your product/application?

No, this app is purely a proof of concept and lacks many of the features that will make it a complete experience. We are collaborating with a former internet radio station in Berlin as a possible first user of this application framework.

If you've applied previously with the same idea, how much progress have you made since the last time you applied? What has changed?

We applied earlier this year but did not have the capacity to complete the proof of concept. Since then we have created a proof of concept.


Idea Problem

Why did you pick this idea to work on? Do you have domain expertise in this area?

Subscription models are a popular form of financing cultural institutions but the current options of decentralized models lack a full range of features. An important enhancement for us is granting NFTs as tokens of membership to visually display patronage and support for specific causes or communities.

We have been developing proof of concepts in the blockchain space for a couple years now. We come from a background in the arts and are most interested in community owned advancements in technology. DAOs offer an interesting new framework to configure collective action and community, especially around music and the arts.

What's new about what you're making? What do people resort to because it doesn't exist yet (or they don't know about it)?

Because something like this doesn’t exist people resort to using Patreon. Patreon has a high fee because they dominate this market. Decentralized solutions can under-cut these costs but need to deliver a competitive user experience. We hope to offer an intuitive alternative that allows organizations to design and manage their own memberships independently.

Have you talked to people about what you're making? Do people want it and do you have examples of this?

There is a high demand for subscriptions on the blockchain, EIP1337 is an example.


Market

What is the target market or end user in mind for this project?

We have small cultural communities in mind but are designing the application for as wide an audience as possible.

What are the alternatives or competitors to this project?

Patreon most directly, GitCoin Grants and StakeTree could also be considered.

How will this project get users? If your project is the type that faces a chicken-and-egg problem in the sense that it won't be attractive to users until it has a lot of users (e.g. a marketplace), how will you overcome that?

Given the high utility of subscription funding models, we hope it will be included as a default application in the relevant DAO templates. Additionally, a successful application with the online music-community we’re collaborating with would be a natural promotion. A promotional website will also be considered.


Legal

Will you be using an Aragon DAO for operating this project and receiving the funds?

Yes. We plan to create a DAO for our Bin Studio to operate funding.

Are any of the project team members covered by non-competes or intellectual property agreements that overlap with your project? If so, please explain.

Billy is an employee of All In Bits, GmbH (dba Tendermint Inc.) with an explicit exception to non-compete clauses via Bin Studio that allows him to work on projects like this. For the sake of transparency, Tendermint Inc. is developing the Cosmos-SDK, a blockchain development framework which will be used by the upcoming Aragon chain.


Aragon

Why do you think Aragon is a good fit for this project?

Aragon allows for groups of people to organize in a decentralized and democratic manner, adding a subscription funding model only helps bolster the success of these groups to operate.

Are there any existing Aragon projects that are similar or complementary to your project?

DappNode NFT Manager has similar functionality to the NFT app but doesn’t cover the use case of the Membership app or the full flexibility of an NFT Manger.


Funding

How much money are you requesting as a grant? (the maximum grant size we provide is $150k in USD value)

  • 45K in DAI, split into chunks
  • 20K in ANT, as a success reward

Have you already received any grants or funds from 3rd parties? If yes, how much?
No

Are you applying for funding to any other DAO platforms or grant programs? If so, that is not a problem as it increases the likelihood of your success, but it's important that we can take that into consideration if your project relies on multiple grants.
No

How do you plan to deploy grant funds? (split between research/development/marketing/etc)
45K DAI - Research/Development/Marketing

What is your expected monthly burn rate?
15K DAI per month

Do you think this project will require additional funds once you have depleted the grant funds? If so, why? Where do you plan on acquiring further funding?
No


Roadmap

How long do you plan on working on this project before shipping?
3 months

What are the key milestones you have to accomplish before you can ship a production ready product to users?

  1. Develop Subscriptions smart contracts
  2. Design and Build Subscriptions interface
  3. Develop optional off-chain API service or serverless-function template for invoking the Subscription smart contracts to collect payment. Either by EIP1337 relayer network or standalone (requires further research)
  4. Develop NFT Manager smart contracts
  5. Design and Build NFT Manager interface
  6. Develop optional off-chain API service or serverless-function template for serving NFT metadata

Notes

Membership App Prototype

A prototype of our app can be found on our project’s Github and tested locally. We’ve also produced a video to demonstrate the basic functionality. Below are a few notes on the prototype:

  • For simplicity, our Membership app is combined with the NFT directly.
  • As a demo app, there is only the most basic ACL implemented.
  • Only the most basic use of the app is supported. A complete feature set would be part of the final app.
  • Does not support EIP1337, which is under consideration for the final app.

Video

Link to Video
Screenshot 2019-12-11 13 48 40

Key Deliverables

The final app will aim to achieve the key deliverables outlined by Luke Duncan (#196):

  • Organizations must be able to manage subscription tiers and charge recurring subscriptions and revoke membership in the event of non-payment.
  • It should be possible to issue non-transferrable voting rights proportional to subscriptions. These voting rights should comply with the minime interface standard in order to maintain compatibility with apps designed to work with Aragon's token manager app.
  • It should be possible to query a users membership status, making it possible to restrict or grant access to content or services.
  • It should be possible for memberships to be open (not requiring approval to become a member), or permissioned (require approval via an ACL Role).
  • When requiring approval via a Role, enough information about the request should be exposed in the docstring to provide context for approval via a voting app.
  • There should be a place for users to manage their subscriptions (topping up their payment balance, terminating a subscription). This interface can be global and not necessarily related to a specific organization or individual subscription.

@LouisGrx
Copy link
Contributor

LouisGrx commented Jan 3, 2020

Hey @evvvritt,

Nice to see you again and thanks for this comprehensive proposal.

If I get it correct,

  • the membership app is used by the 'admin' of the DAO to create new memberships
  • the subscriptions app can be used by the user in order to suscribe to a given membership type
  • NFT representing membership is issued and grants privileges. Is it burnt at the end of the subscription period or?

Could you please provide more details on this 👇 ? What exactly is the role of this milestone?

Develop optional off-chain API service or serverless-function template for invoking the Subscription smart contracts to collect payment. Either by EIP1337 relayer network or standalone (requires further research)

Would you build on the work from DAOnuts?

Thanks!

Would be nice to have your takes @lkngtn, @burrrata

@evvvritt
Copy link
Author

evvvritt commented Jan 8, 2020

Hi Louis! Good to hear from you, your summary is correct.



To clarify, the NFT isn’t burned but will be considered expired after the given term in which its valid (1 month, 1 year, …). After which, a new payment is required to grant a new NFT. We felt retaining the NFT could be a nice way for members to exhibit their level of support.

Regarding your quoted text:

Develop optional off-chain API service or serverless-function template for invoking the Subscription smart contracts to collect payment. Either by EIP1337 relayer network or standalone (requires further research)

This pertains to how subscriptions might be collected periodically without an admin manually capturing each due payment. One idea we will explore is to develop off-chain serverless functions that when called, loops through each due term, collects payment and grants a new NFT. These serverless functions could be published as a template for DAOs to use, and/or a service could be built around them. Alternatively, we would explore the viability of leveraging an EIP1337 relayer network to handle payment capture.

Looking at the DAOnuts work, they appear to be executing a different model of subscriptions with an implementation that as yet wouldn’t translate to our own. As I understand, in their app a subscriber pre-pays for a duration of time and must continually do so. In our model, a subscriber pre-approves the contract to withdraw funds up to an amount the subscriber specifies; then payments can be collected periodically by anyone willing to pay the gas. This means the subscriber just needs to ensure they have enough funds in their wallet at each term, rather than have a large sum to pay ahead. It also allows them to cancel a membership without the issue of receiving a refund for pre-paid terms.

Lastly, in case unclear, we would allow admins to create memberships paid with any token, such as DAI (rather than just the DAOs token).

Hope that helps, looking forward to more feedback!

@yeqbfgxjiq
Copy link
Contributor

yeqbfgxjiq commented Jan 9, 2020

This is really cool! Thank you so much for building a proof of concept and re-applying :)


How do you plan to deploy grant funds? (split between research/development/marketing/etc)
45K DAI - Research/Development/Marketing

Why is research still needed and what exactly would be involved? What is the target market and how will you reach those users? Essentially, please breakdown the research and marketing milestones the same way the development milestones were broken down.

@LouisGrx LouisGrx removed their assignment Jan 9, 2020
@lkngtn
Copy link

lkngtn commented Jan 9, 2020

Looking at the DAOnuts work, they appear to be executing a different model of subscriptions with an implementation that as yet wouldn’t translate to our own. As I understand, in their app a subscriber pre-pays for a duration of time and must continually do so. In our model, a subscriber pre-approves the contract to withdraw funds up to an amount the subscriber specifies; then payments can be collected periodically by anyone willing to pay the gas. This means the subscriber just needs to ensure they have enough funds in their wallet at each term, rather than have a large sum to pay ahead. It also allows them to cancel a membership without the issue of receiving a refund for pre-paid terms.

I like that with this approach users are only required to make a single approval, and subsequent terms can be paid by a service without further interactions. However, I'm a bit concerned about the pattern of approving multiple payment terms if the contract that is approved is upgradeable. Can you clarify if that is the case in your prototype and/or if this could be addressed by having the Membership app be upgradeable, but the subscription contract that receives the approval be static?

One idea we will explore is to develop off-chain serverless functions that when called, loops through each due term, collects payment and grants a new NFT.

Are you thinking that each term would create a new NFT for that term? Or do you mean that in the event a member unsubscribes / doesn't renew (by making a new approval?) they would keep their NFT, and later if they re-subscribe they would get a new NFT?

If a developer wanted to restrict access to content or a service based on an active membership would they be querying the NFT(s)? Or would the NFT be intended purely as a badge for the purposes of showcasing patronage/support?

@evvvritt
Copy link
Author

evvvritt commented Jan 14, 2020

Hi @burrrata!

Why is research still needed and what exactly would be involved?

We’d like to research different methods for processing payments programmatically. In its simplest form our app only allows payments to be processed manually one at a time by a user. There is no restriction on who processes them, as it is simply executing a token transfer on behalf of the pre-approved account and amount. There seem to be a couple ways to improve this process. Either with meta-transactions that are executed by a relayer network (like Gas Station Network) with or without the 1337 standard, or even with a more simple serverless client that holds small amounts of ether in order to execute. There are also possible configurations where the gas is sponsored by the DAO and where the payment itself includes gas cost that is exchanges atomically to pay for gas. We want to figure out which method has the best combination of viability and simplicity and need to do some further research to draw conclusions.

What is the target market and how will you reach those users?

Our target audience are groups or organizations in the cultural spheres that would benefit from subscription based funding models. This project initiated from a collaboration with a former internet radio station exploring decentralized means of funding and content distribution. An alternative example might be an organization like Guild.is, a decentralized artist network, whose users are more familiar with blockchain technology. We plan to develop a simple holding site to present the app’s features and share within our network. Although we are motivated around developing this for the cultural sphere, we plan to design the app to be as widely accessible as possible.

Here is a more elaborate Roadmap to shed light on research and marketing milestones.

Roadmap

  1. Phase 1 – Subscription App – 6 weeks
    1. Finalize features and contract model
    2. Develop contract
    3. Design + Build App interface
    4. Testing
  2. Phase 2 – NFT Manager App – 3 weeks
    1. Model features and contract
    2. Develop contract
    3. Design + Build App interface
    4. Testing
  3. Phase 3 – Extend Subscription App – 1.5 weeks
    1. Build serverless-functions for collecting payments programmatically
  4. Phase 4 – Marketing – 1 week
    1. Design/Build a holding site for Subscription App
    2. Publish Apps and share holding site

@evvvritt
Copy link
Author

And hi @lkngtn! —thank you for your comments

…I'm a bit concerned about the pattern of approving multiple payment terms if the contract that is approved is upgradeable. Can you clarify if that is the case in your prototype and/or if this could be addressed by having the Membership app be upgradeable, but the subscription contract that receives the approval be static?

As mentioned previously, parts of the architecture require further research. In terms of upgradability, it is our understanding that all APM apps are using proxy contracts which maintain a consistent contract address but delegate functionality to replaceable contracts. If that is the case the contract which has been approved to move tokens should stay the same.

There could also be a concern in that after approving a contract to spend tokens on a users behalf, the contract may be upgraded into a malicious contract that does something else with these approvals. The first mitigation to a malicious event such as that is to not use a maximum approval but only encourage a user to approve some amount of tokens for a very specific but limited period (1 year for example).

Providing an architecture wherein there is a static Subscription contract approved for transferring erc-20s which can not be upgraded is an interesting idea. It would require some rather custom deployment methods and a custom upgrade path as well which would need some more research but seems like a valuable endeavor.

Are you thinking that each term would create a new NFT for that term? Or do you mean that in the event a member unsubscribes / doesn't renew (by making a new approval?) they would keep their NFT, and later if they re-subscribe they would get a new NFT?

Canceling mid-term does not result in a refund for the remainder of that term. With that in mind, after a cancelation, the last minted NFT remains valid until the next renewal period. At that point no new NFT would be minted and their membership status would become invalid. The NFTs which are created are kind of like the “Valid until” stickers which are put on license plates. They are not revoked after they become invalid, it is the lack of a valid NFT which shows a lapsed membership.

If a developer wanted to restrict access to content or a service based on an active membership would they be querying the NFT(s)? Or would the NFT be intended purely as a badge for the purposes of showcasing patronage/support?

It would be up to the specific developer on which method they use for verifying a user. We imagine a system where the NFT metadata is served by a service which queries the date minted and duration of the NFT. That means the validity of the membership could be confirmed just by checking the NFT metadata, or it could be queried directly within the subscription contract. The subscription contract contains an endpoint to determine if a subscription is valid or not, so it depends more on the developers desire to interact more or less with a contract directly. In that way the NFT can be used for access as well as showcasing patronage/support and specific purposes :)

@yeqbfgxjiq
Copy link
Contributor

Thanks for the detailed and helpful answers!

I see that the research portion is set for Phase 3. The Nest program doesn't really fund research, but the Community Funding DAO (CFDAO) does. Could you submit a CFDAO proposal for the research aspects of this proposal, then circle back to the Nest program once everything's been ironed out and it's simply a matter of execution?

  • FTR the etiquette around CFDAO to submit a proposal for discussion (1+ weeks), then if there's rough consensus submit a request for funding to the CFDAO (I think it's a 7 day voting window, but it might actually be 14). Not sure if that works for your timeline, but thought I'd throw it out there as an option if it helps.

@evvvritt
Copy link
Author

Hi @burrrata, I’m wondering if our roadmap misrepresented our Phase 3 section, which only states research but we are actually building one of these programmatic means of collecting payments as well.

In lieu of focusing on building, we now propose revising the scope for Phase 3 to only building the serverless functions option as a means of collecting payment (forgoing the Relayer Network option). As such, we have removed half a week that would have been used to evaluate the viability of using the Relayer Network. Perhaps we can apply for CFDAO and/or Nest funding to extend the Subscription app to leverage a Relayer Network at a future time.

I’m updating the roadmap accordingly.

  1. Phase 3 – Extend Subscription App – 1.5 weeks
    1. Build serverless-functions for collecting payments programmatically

@yeqbfgxjiq
Copy link
Contributor

Makes sense. Thanks for explaining that.

Also, sorry for taking so long to reply. NFTs, memberships, and subscriptions are equally complex and important. Currently doing a deep dive into all the ways they can be configured and how that might look for Aragon DAOs. Will be able to circle back in a few weeks with more info as to how we want to proceed.

@evvvritt
Copy link
Author

evvvritt commented Feb 5, 2020

Ok, thanks for the update @burrrata. We look forward to your assessment.

@evvvritt
Copy link
Author

Hi Aragon, I hope all’s well. I wanted to check in on the status of our proposal, especially given current events. If Nest proposals are on hold, can we expect them to be revisited at a later date? Any updates are appreciated so we can plan accordingly. Many thanks

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants