The problem Aegis solves
On-chain Patreon alternative
NFT as a badge of subscription
- An user can subscribe to other users and will automatically get an indexed NFT as a part of proof of subscription. The index indicates how early they subscribed.
- This NFT will be tradable like any NFT.
- It’s up to the creators to reward their early supporters through this feature, e.g. airdrop tokens/ access to exclusive content to the first 100 NFT holders. Also some early supporter NFTs for celebrities can have a secondary market value.
Stream money continuously
- Along with holding the NFTs, subscribed users will also be able to stream money to the creators through Superfluid.
Streaming money solves the problem of recurring payment.
- This will enable creators to get monetary support directly from their fans, without a middleman taking a cut.
Paid content for paying supporters
- Creators will be able to publish posts with attachments which can be marked paid// premium. The attachments will be uploaded through Arcana and shared exclusively with the paying supporters.
- Using Arcana means we can cryptographically ensure that only supporters will get access to paid content.
Ability to upload free content
- Posts with attachments that are not marked paid will be free for everyone to download . The attachments will be uploaded through Web3.Storage which uses IPFS and Filecoin and will be open to anyone to view and download.
Decentralized and open to all
- The platform doesn't distinguish between creators and supporters. Thus anyone and everyone can use the platform to grow a following for themselves and generate revenue.
Some Important Notes
Before you can subscribe to someone through Aegis, you have to have USDCx in your wallet, which is a wrapper around USDC. To get USDCX go to app.superfluid.finance and wrap your USDC into USDCx. Aegis sends 1 USDCx per month to users you're subscribed to.
Hypepaper: https://docs.google.com/document/d/1tZbJKFWU6qEkaAqRticTB42g5Yk6SMuH2xxcBxl8vLI
Challenges we ran into
Using events log for storage
At first, we were storing everything in the contract storage and emitting events for each function. Then we learned that the EVM log is a very cheap form of storage in itself, and if we have data that won’t be modified, it makes sense to use the log as storage. So we stored the posts only in events, not in the contract storage. This way, from the user’s POV, there’s a lot of gas savings for creating posts.
Sync state between Superfluid and Arcana
A core feature is that only paying supporters would have access to premium content. So the list of paying supporters on Superfluid and the list of people the content is shared with on Arcana have to be in sync. But Arcana does not have any bridge with Polygon yet; we could not make the whole process on-chain.
We solved this by sharing the premium contents with the snapshot of the list of paying supporters when the post is created. After that list of people with whom the content is shared doesn’t change.
- A new supporter won’t be able to access the past paid contents.
- Even after stopping payment to the creator, a supporter who was paying before would still be able to access the contents shared while he was a paying supporter.
It is not necessarily a compromise but rather a fair design. Still, we will look into making the process on-chain after Arcana bridges are released.
Using social auth for logging in to Arcana
As of now, Arcana supports user login only through OAuth, with no Metamask support. Users will have to log in to our dApp and Arcana separately. It also poses problems in the backend as we have to verify that the same user logged in to Arcana and Aegis.
There’s no way around this now, so we’re storing the Arcana public key of users in the contract storage and putting up checks before posting or creating accounts that the user has logged into Arcana. When Arcana releases Metamask support, we can make the UX smoother by using a single on-chain login for Aegis and Arcana.