Grants-Program icon indicating copy to clipboard operation
Grants-Program copied to clipboard

ISO20022 Implementation POC

Open pifragile opened this issue 1 year ago • 17 comments

Project Abstract

This proposal is a response to this RFP.

ISO20022 is the future standard of financial transactions of all kinds including payments, foreign exchange and securities trading. Many blockchain ecosystems like Ripple, Cardano and Stellar are already ISO20022 compliant. In order to make Polkadot ISO20022 compatible as well, it is necessary to start designing how such an integration would look like in pratice. Some prior theoretical research has been conducted and in this project we want to go a step further and build a practical Proof-Of-Concept for ISO20022 payments in Substrate. ISO20022 covers a vast amount of different messages for different financial transactions. In this project, we want to focus on customer-to-customer interbank payments evolving around the ISO20022 message pain.001.001.11(CustomerCreditTransferInitiationV11).

Edit 1: Comparison with Hyperfridge

Hyperfridge is about making information of banking data available on-chain in a secure and private way and having on-chain events trigger bank transactions. Payments are settled off-chain. As they write in their whitepaper: "It is about triggering and mirroring state changes of a bank account on a ledger".

Our project is different. We want to use the Polkadot blockchain as the actual settlement layer for payments. The benefits thereof are:

  1. Bank users can hold and transfer DOT via their banks using ISO20022 messages. Also payment reversals (ie. via. pain.007.001.11 CustomerPaymentReversalV11) will be supported (this will be implemented in this proposal).
  2. Banks can use DOT as an intermediate currency for inter-bank payments and thus reduce friction in (cross-border/foreign exchange) payments (to be implemented in a later stage).

Grant level

  • [ ] Level 1: Up to $10,000, 2 approvals
  • [x] Level 2: Up to $30,000, 3 approvals
  • [ ] Level 3: Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

  • [x] The application template has been copied and aptly renamed (project_name.md).
  • [x] I have read the application guidelines.
  • [x] Payment details have been provided (bank details via email or Polkadot (USDC & USDT) address in the application).
  • [x] I am aware that, in order to receive a grant, I (and the entity I represent) have to successfully complete a KYC/KYB check.
  • [x] The software delivered for this grant will be released under an open-source license specified in the application.
  • [x] The initial PR contains only one commit (squash and force-push if needed).
  • [x] The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
  • [ ] I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

pifragile avatar Feb 19 '24 08:02 pifragile

Hello from element36 - we support ISO 20022 pain.001 and camt files processed via Ebics protocoll using an Off-chain-worker; our current implementation adds Zero-Knowledge proofs (arguments of knowledge as STARKs to be more precise) for downloaded camt53 files, so independenlty of Ebics. Thus we are able to prove settlement of payments and assets (in/out), or identities in a non-interactive and trustless manner. Happy to jump on a call to carve out differences or synergies, just pm me. Thx, Walter

wstrametz avatar Feb 21 '24 07:02 wstrametz

Thanks for the heads up @keeganquigley, I was not aware of this project yet. I took a look at their proposal and whitepaper and I can summarize as follows (@wstrametz correct me if I'm wrong):

Hyperfridge is about making information of banking data available on-chain in a secure and private way and having on-chain events trigger bank transactions. Payments are settled off-chain. As they write in their whitepaper: "It is about triggering and mirroring state changes of a bank account on a ledger".

Our project is different. We want to use the Polkadot blockchain as the actual settlement layer for payments. The benefits thereof are:

  1. Bank users can hold and transfer DOT via their banks using ISO20022 messages. Also payment reversals (ie. via. pain.007.001.11 CustomerPaymentReversalV11) will be supported.
  2. Banks can use DOT as an intermediate currency for inter-bank payments and thus reduce friction in (cross-border/foreign exchange) payments.

@wstrametz Thank you, sent you a message on Linkedin to schedule a call!

pifragile avatar Feb 21 '24 08:02 pifragile

Thanks for the heads up @keeganquigley, I was not aware of this project yet. I took a look at their proposal and whitepaper and I can summarize as follows (@wstrametz correct me if I'm wrong):

Hyperfridge is about making information of banking data available on-chain in a secure and private way and having on-chain events trigger bank transactions. Payments are settled off-chain. As they write in their whitepaper: "It is about triggering and mirroring state changes of a bank account on a ledger".

Our project is different. We want to use the Polkadot blockchain as the actual settlement layer for payments. The benefits thereof are:

  1. Bank users can hold and transfer DOT via their banks using ISO20022 messages. Also payment reversals (ie. via. pain.007.001.11 CustomerPaymentReversalV11) will be supported.
  2. Banks can use DOT as an intermediate currency for inter-bank payments and thus reduce friction in (cross-border/foreign exchange) payments.

@wstrametz Thank you, sent you a message on Linkedin to schedule a call!

Yes indeed - this is a big difference; hyperfridge is basically a bidirectional trustless bridge to real-world-assets like FIAT sitting on banking ledgers. Your idea I guess is inter-bank communication and settlement similar like R3 consortium ideas or as JP Morgan did with Quorum (now Consensys) as alternative to SWIFT. The biggest challenge for adoption I guess is not techniclal but getting (many) banks on a shared ledger and protocol. Also you need to consider that banks report (sync) their own ledgers to national banks for international transfers, which do the clearing with the "other" national banks - thus they probably need to support DOT as well.

wstrametz avatar Feb 21 '24 08:02 wstrametz

@wstrametz Thanks for your thoughts and inputs!

pifragile avatar Feb 21 '24 09:02 pifragile

@wstrametz Thanks for your thoughts and inputs!

happy to jump on a call anyway: https://www.linkedin.com/in/strametz/

A note: the whitepaper is not accurate any more, I learned quite a bit while implementing it. Its simpler and much more generic E.g. no merkle tree needed any more, "composition" (Risc0 feature) will do the trick, transactions and previous states can be chained without keeping a state. Not started yet, but I will create a new version which includes learnings.

wstrametz avatar Feb 21 '24 09:02 wstrametz

happy to jump on a call anyway: https://www.linkedin.com/in/strametz/

Sent you a contact request.

pifragile avatar Feb 21 '24 09:02 pifragile

Sorry for the delay @pifragile I marked the application as ready for review and pinged the committee.

keeganquigley avatar Mar 04 '24 20:03 keeganquigley

Thank you @keeganquigley. I updated the description to include the comparison with Hyperfridge.

pifragile avatar Mar 05 '24 06:03 pifragile

Sorry for the long radio silence, @pifragile. My main question would be what your incentive is to build this. Are you planning to use this client yourself? In the Future Plans section, you write that this project "can be extended", but not whether you are actually planning to do any of this.

No worries @semuelle! My incentive is to find opportunities in the Polkadot ecosystem. I know my way around Substrate and like to design protocols and build stuff. So I wanted to create a grant application for a project that is actually needed in the ecosystem and thus I replied to an RFP. I am not planning to use this client myself.

pifragile avatar Mar 28 '24 06:03 pifragile

Would you consider applying with the Decentralized Futures Program, @pifragile?

semuelle avatar Apr 10 '24 13:04 semuelle

Would you consider applying with the Decentralized Futures Program, @pifragile?

Haha, I'm scared that if I say yes, you will reject this proposal😂 No, I mean sure, I could consider that.

pifragile avatar Apr 10 '24 13:04 pifragile

Hi @pifragile yes basically that is what would happen, but you could always re-apply if DF funding were not approved. There might be some benefits to that as well, if your aim is to eventually be a self-sustainable entity. Up to $50k is able to be fast-tracked to get it in front of the committee faster, and the DF program also has a broader scope, allowing you to fund additional areas such as audits, marketing, partnerships, etc. as a few examples.

keeganquigley avatar Apr 11 '24 18:04 keeganquigley

Hi @pifragile yes basically that is what would happen, but you could always re-apply if DF funding were not approved.

We could even reopen this PR if necessary, so you wouldn't even have to submit a new application.

semuelle avatar Apr 12 '24 09:04 semuelle

@keeganquigley @semuelle Thanks for your clarifications! The way I understand the requirements for the DF program, I am not sure if my project in it's current form - which is intended to be a POC - is already mature enough for DF. Would be grateful to hear your thoughts on that.

pifragile avatar Apr 12 '24 10:04 pifragile

Would be grateful to hear your thoughts on that.

We wouldn't have suggested it if we thought it wouldn't be a fit. :) "Kickstarting teams and initiatives" doesn't mean that you need to be self-sufficient at the end of the grant. It just means there should be potential and plans for beyond the grant.

semuelle avatar Apr 12 '24 13:04 semuelle

Ok, thanks @semuelle :) And thanks a lot to everyone for taking the time to consider my proposal @keeganquigley @takahser.

pifragile avatar Apr 13 '24 02:04 pifragile

This pull request has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/polkadot-iso-20022-integration/8483/1

Polkadot-Forum avatar Jun 04 '24 15:06 Polkadot-Forum

pinging @pifragile

semuelle avatar Jul 17 '24 12:07 semuelle

@semuelle

  • Java/C# is possible.
  • We do not have any specific plans for this project. This was intended to be an early stage exploration of a complex topic.
  • I agree that it would make sense to take a step back to figure out the best way to build this, but the time that I am willing to put into those proposals is quite saturated now. Would you be willing to accept a 5k grant for a report on the current state of ISO2002 integrations of other blockchains and more concrete technical architecture/design proposals on different ways to achieve ISO compatibility?
  • Sure, can do as soon as we come to an agreement on how to proceed best.

pifragile avatar Jul 18 '24 07:07 pifragile

  • Would you be willing to accept a 5k grant for a report on the current state of ISO2002 integrations of other blockchains and more concrete technical architecture/design proposals on different ways to achieve ISO compatibility?

Sounds very good to me. If you reduce the scope accordingly, I'll happily approve. It'll also only take two votes and we can revisit the implementation afterwards, if you're still up for it then!

semuelle avatar Jul 18 '24 08:07 semuelle

  • Would you be willing to accept a 5k grant for a report on the current state of ISO2002 integrations of other blockchains and more concrete technical architecture/design proposals on different ways to achieve ISO compatibility?

Sounds very good to me. If you reduce the scope accordingly, I'll happily approve. It'll also only take two votes and we can revisit the implementation afterwards, if you're still up for it then!

Ok great. Should I use this proposal or open a new one?

pifragile avatar Jul 18 '24 08:07 pifragile

You can use this one, that's probably the easiest.

semuelle avatar Jul 18 '24 11:07 semuelle

You can use this one, that's probably the easiest.

Ok @semuelle, done!

pifragile avatar Jul 20 '24 11:07 pifragile

You should have just received an email from our KYB provider, @pifragile. Could you check?

semuelle avatar Jul 26 '24 10:07 semuelle

Congratulations and welcome to the Web3 Foundation Grants Program! Please refer to our Milestone Delivery repository for instructions on how to submit milestones and invoices, our FAQ for frequently asked questions and the support section of our README for more ways to find answers to your questions.

Before you start, take a moment to read through our announcement guidelines for all communications related to the grant or make them known to the right person in your organisation. In particular, please don't announce the grant publicly before at least the first milestone of your project has been approved. At that point or shortly before, you can get in touch with us at [email protected] and we'll be happy to collaborate on an announcement about the work you’re doing.

Also, if you haven't yet, consider signing up for the Polkadot Alpha Program. The program offers plenty of resources for people building on Polkadot. Lastly, please remember to let us know in case you run into any delays or deviate from the deliverables in your application. You can either leave a comment here or directly request to amend your application via PR. We wish you luck with your project! :rocket:

github-actions[bot] avatar Jul 26 '24 10:07 github-actions[bot]

You should have just received an email from our KYB provider, @pifragile. Could you check?

Yep got it, and submitted again. I remember submitting this already last time, but somehow one document was not accepted and I couldn't figure out which document they actually needed (I have a LLC (GmbH) registered in Switzerland). I tried a couple of times with different documents but no success. Hope it will work this time :)

pifragile avatar Jul 26 '24 13:07 pifragile

Can confirm, check was successful.

semuelle avatar Jul 26 '24 13:07 semuelle