Inspiration
The idea was to explore ways to enable developers to enable Premium features on their dApp in a similar way that other projects already provide gated communities based on ownership of a token (like DSCVR does)
What it does
Users can pay for a premium membership with any wallet they choose to, and the Invoice canister acts as a witness, and an intermediary between the Ledger and any canisters in your ecosystem
How we built it
This was built in rust, with some inspiration from the libraries provided by Dfinity and the work done by Kyle on the invoice canister written in Motoko.
Challenges we ran into
The local dev experience while trying to locally test with a Ledger, an Internet Identity canister and my own canisters was a bit rough, and I ended up dealing with some bugs in production :)
Accomplishments that we're proud of
This works pretty seamlessly from my testing, and it can provide a starting point for other projects that want to explore this avenue of providing gated access based on a witness / NFT canister.
What we learned
Fixing bugs in production is cool?! Working with the ledger and receiving funds is not really that scary! Have a look at the code, it's pretty simple and straightforward. The improvements on the libraries available is huge from ~6months ago when the canisters were enabled to hold ICP! Give it a try!
What's next for Invoices as NFTs
Well, it mostly depends on the community feedback. I could see this going the way of Kyle's project, as a global public invoicing canister (with a lot of work & testing) or it could be used by devs that want to pickup something that works and adapt it to their needs. One particular interesting use case is something like a "Proof of Membership" or "Proof of Usage". More and more dApps are thinking about how to pre-screen their users, and I think the community could use a privacy-aware witness approach to ownership, membership and on-chain spending.
Log in or sign up for Devpost to join the conversation.