Skip to content

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

@siburu

Description

@siburu

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions