Methods and systems for generating and validating transactions on a distributed ledger
Disclosed is a method of releasing a locked transaction encoded in a smart contract on a distributed ledger network. The locked transaction is locked by at least one hash lock condition requiring matching to a hash. The method involves: receiving entry of a passcode associated with the locked transaction: transmitting a request to generate a first hash to a contactless payment device and receiving the first hash from that device; generating a second hash based on the first hash and transaction-specific data; and transmitting an unlock request comprising the second hash and an address of the smart contract on the distributed ledger network, to a node of that network. The unlock request causes the smart contract to release the locked transaction on matching of the second hash against the hash of the hash lock condition.
1 . A method of generating transactions comprising:
receiving, by a processing server, from a wallet server, transaction data including a payment token that is associated with a contactless payment device of a user, a recipient address associated with a blockchain network, a transaction amount, and a passcode;
receiving, by the processing server, from an issuer of the contactless payment device, a first hash;
generating, by the processing server, a second hash by (i) concatenating the first hash, received from the issuer of the contactless payment device, with the transaction amount and recipient address included in the transaction data received from the wallet server, and (ii) applying a hashing algorithm to the concatenation;
transmitting, by the processing server, to the wallet server, a transaction initiation request including the second hash;
in response to the wallet server receiving the transaction initiation request from the processing server, (1) generating, by the wallet server, a self-executing smart contract, and (2) encoding a transaction in the self-executing smart contract such that the transaction is hash-locked by at least one hash lock condition that is dependent on the second hash;
submitting, by the wallet server, the self-executing smart contract, to the blockchain network for storage thereof in a blockchain;
receiving, by the blockchain network, a request from a terminal to unlock the hash-locked transaction encoded in the smart contract, wherein the request includes the second hash and a blockchain address of the smart contract stored in the blockchain;
validating the hash-locked transaction, by a consensus algorithm executed by nodes of the blockchain network, such that the smart contract executes on the blockchain and compares the received second hash to the hash-lock condition of the hash-locked transaction;
determining, by the smart contract executing on the blockchain, that the received second hash matches the hash-lock condition of the hash-locked transaction; and
in response to determining that the received second hash matches the hash-lock condition of the hash-locked transaction, unlocking, by the smart contract executing on the blockchain, the transaction such that payment to the recipient address is released.
2 . A method according to claim 1 , further comprises:
transmitting, to the issuer of the contactless payment device, a request to generate the first hash using the passcode.
3 . A method according to claim 1 , wherein the first hash is generated in accordance with a technical standard for smart payment cards.
4 . A method according to claim 3 , wherein the first hash is generated as part of a dynamic data authentication (DDA) process or a combined dynamic data authentication and application cryptogram generation (CDA) process.
5 . Method according to claim 2 , wherein the hashing algorithm applied to the concatenation is a SHA-1 algorithm.
6 . A method according to claim 1 , wherein the self-executing smart contract further encodes a time lock condition.
7 . A system comprising:
a processing server;
a wallet server;
a terminal; and
a blockchain network,
wherein the processing server includes
a memory; and
at least one processor in communication with the memory;
wherein the memory comprises machine-readable instructions for causing the at least one processor to:
receive, from the wallet server, transaction data including a payment token that is associated with a contactless payment device of a user, a recipient address associated with the blockchain network, a transaction amount, and a passcode,
receive, from an issuer of the contactless payment device, a first hash,
generate a second hash by (i) concatenating the first hash, received from the issuer of the contactless payment device, with the transaction amount and recipient address included in the transaction data received from the wallet server, and (ii) applying a hashing algorithm to the concatenation; and
transmit, to the wallet server, a transaction initiation request including the second hash,
wherein the wallet server includes a wallet server memory storing wallet memory instructions that, when executed by a wallet server processor, cause the wallet server processor to perform operations including:
generating, in response to receiving the transaction initiation request from the processing server, a self-executing smart contract, and encoding a transaction in the self-executing smart contract such that the transaction is hash-locked by at least one hash lock condition that is dependent on the second hash, and
submitting the self-executing smart contract, to the blockchain network for storage thereof in a blockchain, and
wherein the blockchain network performs operations including:
receiving a request from the terminal to unlock the hash-locked transaction encoded in the smart contract, wherein the request includes the second hash and a blockchain address of the smart contract stored in the blockchain,
validating the hash-locked transaction, by a consensus algorithm executed by nodes of the blockchain network, such that the smart contract executes on the blockchain and compares the received second hash to the hash-lock condition of the hash-locked transaction,
determining, by the smart contract executing on the blockchain, that the received second hash matches the hash-lock condition of the hash-locked transaction, and
in response to determining that the received second hash matches the hash-lock condition of the hash-locked transaction, unlocking, by the smart contract executing on the blockchain, the transaction such that payment to the recipient address is released.
8 . A processing server according to claim 7 , wherein the memory comprises instructions for generating the second hash data by:
transmitting, to the issuer of the contactless payment device, a request to generate the first hash using the passcode.
9 . A processing server according to claim 7 , wherein the first hash is, or is comprised in, a cryptogram that is generated in accordance with a technical standard for smart payment cards.
10 . A processing server according to claim 9 , wherein the cryptogram is generated as part of a dynamic data authentication (DDA) process or a combined dynamic data authentication and application cryptogram generation (CDA) process.
11 . A processing server according to claim 8 , wherein the hashing algorithm applied to the concatenation is a SHA-1 algorithm.