Sample App: ICRC-1 Compliant Payment Flow
Overview
- Status: Open
- Project Type: Multiple - Multiple applicants can get selected to work on the tasks and get paid.
- Time Commitment: Weeks
- Experience Level: Intermediate
- Size: USD 1'000 in ICP (at time of distribution)
Description
One of the advantages to deploy a service on a blockchain platform is to be able to receive payments without the usage of a 3rd party service provider which can be a huge cost factor. In this bounty, you'll implement a sample application that showcases the implementation of the ICRC-1 payment flow to buy some digital good.
The base ICRC-1 standard supports the client-orchestrated transfer/notify flow, i.e. the client (payer) transfers the token to the service-designated subaccount and notifies the service (payee) about the transfer.
High-level flow diagram
Notes
- The client would utilize
agent-js
to perform (transfer
andnotify
) calls. - The invoice and its relation to a subaccount will probably need to be standardized at some point, allowing for different compatible payer and payee implementations. We hope that this implementation will inform a potential standardization.
Acceptance Criteria
- Interesting and sensible use case
- Clean and well-structured code
- Unit and E2E tests
- Documentation
- MIT or Apache-2.0 License
- PR to samples at https://github.com/dfinity/portal
Further Information
The eventual goal is to make it as easy as possible for developers to integrate a payment flow into their applications. Hence, we see the development of sample applications as a first step to implementing ready-to-use client and canister libraries which could be funded by a follow-up bounty or grant.
The ICRC-1 token standard is in its early days and many details and extensions have not been fully fleshed out. It would be great if you'd provide your implementer's feedback to the Ledger & Tokenization Working Group.
How to apply?
Add a comment to this issue or respond to the forum thread. Please provide some background on your experience and give an outline of your project plan.