dfinity / grant-rfps

Grant RFPs and Bounties
Apache License 2.0
58 stars 13 forks source link

BNT-2: Invoice Canister #2

Closed domwoe closed 1 year ago

domwoe commented 2 years ago

Overview

Description

The invoice canister provides a simple interface for creating and paying invoices in various tokens on the Internet Computer. It is a custodial solution, intended to be a simple, drop-in payment solution for any canister.

The invoice canister project has been started by DFINITY but needs additional work to make it production-ready. The main points to be tackled in this bounty are:

Acceptance Criteria

How to apply?

Add a comment to this issue or contact us on the #grants channel in the Developer Discord. Please provide some background on your experience and give an outline of your project plan.

References

Forum post: https://forum.dfinity.org/t/payments-invoice-canister-design-review/ Code: https://github.com/dfinity/examples/tree/master/motoko/invoice-canister

atengberg commented 1 year ago

Hello, I'd like to apply for this bounty.

I recently completed a grant of my own (https://github.com/AshtonEngberg/doyoutodo), and one of the use cases that emerged in the course of that work was creating a "billable hours" dapp that could be integrated the direct ECDSA signing. To get from what I developed to that, I'd need to implement an invoices services which dovetails neatly into this bounty. I've also been attending the Token & Ledger working group and am familiar with the ICRC-1 standard.

To start I'd implement a minimalistic front-end for the existing invoice canister code, which is not strictly necessary but important for demonstrating the functionality, and it would give me an opportunity to get to know the code well enough. With that implemented, I'd finish off the simpler unrelated open issues such as using dependencies instead of hard-code libraries, progressing into user access control to handle the others, and then do integration with a novel token implementing the ICRC-1 standard. Each iteration of the development would come with test cases, and I'd finish the work adding the needed documentation as well as a developer experience article walking through using the integration of an ICRC-1 token.

I estimate it would take me between 6-8 weeks to complete. Let me know if there is any other information I can provide. This bounty is just the project I've been looking forward to do, and I would get started immediately.

domwoe commented 1 year ago

Hey @AshtonEngberg, thank you for your interest! I'll have a look at your previous work and will get in contact with you shortly.

FYI, I've seen that @krpeacock did some more work: https://github.com/dfinity/examples/pull/356

domwoe commented 1 year ago

Hey @AshtonEngberg, please contact me on Discord (domwoe#9301). It would be great to have a quick chat.

atengberg commented 1 year ago

Just a quick note, I finished changes necessary for the last pull request to be completed which can be viewed here:

https://github.com/AshtonEngberg/examples/tree/ashton/invoice-finish-cleanup-merge

I didn't know the procedure for contributing to Kyle's pull request, so I forked the examples repo, pulled the PR branch, made changes, and pushed them back to the fork repo to show what had been done. Integrating the nns-ledger (dfx nns install) also became a part of this pull request, which does work although may not be ideal yet (mostly, resseting the nns-ledger in particular also reinstalls all 8 nns ledgers, which afaik there's not another way to do this when using dfx nns install yet). If not, I can also push another branch using the manual download and deploying of an ICP ledger to finish the PR if that's the path forward, just let me know.

domwoe commented 1 year ago

Completed with https://github.com/dfinity/examples/pull/465