Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for non-custodial escrow in ICS-20 #5

Open
siburu opened this issue Jun 21, 2021 · 0 comments
Open

Support for non-custodial escrow in ICS-20 #5

siburu opened this issue Jun 21, 2021 · 0 comments

Comments

@siburu
Copy link
Contributor

siburu commented Jun 21, 2021

In the current implementation, escrow specified in ICS-20 is implemented by transferring Cash states to a trusted escrow node called the bank. I think that non-custodial escrow can be implemented as follows.

Corda has an interesting feature encumbrance, which enables UTXOs to be encumbered with (locked by) other UTXOs in the same transaction. A transaction consuming the former states must successfully consume the latter states at the same time. For example, every Cash.State belongs to the Cash contract and so must always satisfy the rules required by the contract. Additionally, if there are output states encumbering the Cash.State in the same transaction, the Cash.State also must satisfy the rules required by the contract to which the encumbering output states belong.

The encumbrance feature can be used to lock Cash.State in the Ibc contract until requirements for unlocking specified in ICS-20 are fulfilled. In addition to this, by moving ownership of locked Cash.State to a dummy user whose private key is open, no cooperation with a trusted third party is required to unlock the locked Cash.State.

@siburu siburu changed the title Support non-custodial escrow in ICS-20 Support for non-custodial escrow in ICS-20 Jun 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant