CPC G06Q 20/389 (2013.01) [G06Q 20/108 (2013.01); G06Q 20/3827 (2013.01); G06Q 20/3829 (2013.01)] | 10 Claims |
1. A method for distributed ledger based multi-currency clearing and settlement, comprising:
receiving, at a first distributed ledger node for a first financial institution in a distributed ledger network comprising a plurality of distributed ledger nodes, a transaction comprising a transfer request from a payor to transfer funds to a payee, the payee associated with a second financial institution, wherein the first distributed ledger node stores a public state and a private state for the first financial institution, wherein the private state for the first financial institution is private to the first financial institution;
generating, by the first distributed ledger node, a symmetric key;
encrypting, by the first distributed ledger node, a transaction payload for the transaction with the symmetric key;
retrieving, by the first distributed ledger node, a public key for the second financial institution from a smart contract registry of registered participants on the distributed ledger network;
generating, by the first distributed ledger node, a first financial institution/second financial institution shared key using a private key for the first financial institution and the public key for the second financial institution;
encrypting, by the first distributed ledger node, the symmetric key with the first financial institution/second financial institution shared key;
sending, by the first distributed ledger node, the encrypted transaction payload and the encrypted symmetric key to a second distributed ledger node for the second financial institution in the distributed ledger network, wherein the second distributed ledger node stores a public state and a private state for the second financial institution, wherein the private state for the second financial institution is private to the second financial institution;
generating, by the second distributed ledger node, the first financial institution/second financial institution shared key using a public key for the first financial institution retrieved from the smart contract registry of registered participants on the distributed ledger network and a private key for the second financial institution;
decrypting, by the second distributed ledger node, the symmetric key using the first financial institution/second financial institution shared key;
decrypting, by the second distributed ledger node, the transaction payload using the symmetric key;
writing, by the second distributed ledger node, the transaction payload to the private state for the second financial institution;
retrieving, by the first distributed ledger node, a public key for a liquidity provider from the smart contract registry of registered participants on the distributed ledger network;
generating, by the first distributed ledger node, a first financial institution/liquidity provider shared key using a private key for the first financial institution and the public key for the liquidity provider;
encrypting, by the first distributed ledger node, the symmetric key with the first financial institution/liquidity provider shared key;
sending, by the first distributed ledger node, the encrypted transaction payload and the encrypted symmetric key to a liquidity provider distributed ledger node for the liquidity provider in the distributed ledger network, wherein the liquidity provider distributed ledger node stores a public state and a private state for the liquidity provider, wherein the private state for the liquidity provider is private to the liquidity provider;
generating, by the liquidity provider distributed ledger node, the first financial institution/liquidity provider shared key using a public key for the first financial institution and a private key for the liquidity provider;
decrypting, by the liquidity provider distributed ledger node, the symmetric key using the first financial institution/liquidity provider shared key;
decrypting, by the liquidity provider distributed ledger node, the transaction payload using the symmetric key;
writing, by the liquidity provider distributed ledger node, the transaction payload to the private state for the liquidity provider;
generating, by the first distributed ledger node, a hash of the encrypted transaction payload;
submitting, by the first distributed ledger node, the hash of the encrypted transaction payload to the distributed ledger network;
verifying, by a smart contract on the first distributed ledger node, that an account for the first financial institution has sufficient funds for the transaction;
atomically transferring, by the smart contract, the funds from the account for the first financial institution on the distributed ledger network to an account for the second financial institution on the distributed ledger network;
generating, by a smart contract executed on the liquidity provider distributed ledger node, a first hash of an accounting entry for the account for the first financial institution on the liquidity provider distributed ledger node;
sending, by the smart contract, the first hash to the first distributed ledger node;
generating, by the first distributed ledger node, a hash of an accounting entry in the private state for the account at the first distributed ledger node;
comparing, by the first distributed ledger node, the first hash from the liquidity provider distributed ledger node to the hash generated by the first distributed ledger node;
generating, by the first distributed ledger node, a notification to the second distributed ledger node in response to the hash not matching; and
resyncing, by the smart contract, one or more of a plurality of accounting entries at the liquidity provider distributed ledger node with the account entry at the first distributed ledger node.
|