COMPUTER-IMPLEMENTED SYSTEMS AND METHODS FOR IMPLEMENTING TRANSFERS OVER A BLOCKCHAIN NETWORK
The invention provides improved verification solutions for blockchain-implemented transfers. It is suited for, but not limited to, implementation in an SPV wallet. In accordance with one embodiment, a method, system or resource is provided in which Bob verifies a Merkle proof for a first transaction and, upon successful verification, submits a second transaction to the blockchain. The second transaction has an input that spends an output (UTXO) from the first transaction. Generally, the invention provides an arrangement in which Bob sends Alice a payment transaction template (template Tx 3 ) and requests: the full transaction data for all input transactions (Tx 1 , Tx 2 ) comprising at least one output that Alice wants to spend as inputs to a transfer (Tx 3 ); the Merkle path for all input transactions (Tx 1 , Tx 2 ) linking them to their respective Merkle roots associated with their respective block headers; the completed transfer transaction (Tx 3 ). Alice provides this information plus her signature and optionally a change address. Bob can then perform local SPV checks on the input transactions Tx 1 , Tx 2 using transactions Tx 1 and Tx 2 , their corresponding Merkle paths Path 1 , Path 2 , and Bob's local list of block headers. Bob broadcasts the transfer transaction (Tx 3 ) to the P2P network.
1 . A computer-implemented method of transferring an asset on a blockchain network, comprising the steps of:
receiving and/or requesting, by a resource which is a transferee of the asset and from a further resource which is a transferor of the asset:
complete transaction data relating to at least one blockchain transaction, and
a Merkle path for the at least one blockchain transaction; and
using the Merkle path to verify a Merkle proof for the at least one blockchain transaction.
2 . The method of claim 1 , further comprising the step of storing, at or on the resource: at least one public key and/or at least one private key.
3 . The method of claim 1 , further comprising the step of storing, receiving and/or requesting, at or on the resource: at least one block header.
4 . The method of claim 3 , wherein the at least one block header is received from the further resource, and wherein the further resource comprises a digital wallet.
5 . The method of claim 1 , further comprising the step of requesting the Merkle path and complete transaction data by the resource and from the further resource.
6 . The method of claim 1 , further comprising the step of sending to the further resource: a public key address; and/or a transfer value.
7 . The method of claim 1 , further comprising the step of sending, from the resource to the further resource, a request for transfer data comprising at least one of:
data relating to at least one unspent blockchain transaction output (UTXO);
a transaction ID (TXID) for a transaction containing the at least one unspent blockchain transaction output (UTXO);
a signature for spending at the at least one unspent blockchain transaction output (UTXO);
a Merkle path for a transaction containing the at least one unspent blockchain transaction output (UTXO); and/or
a public key address.
8 . The method of claim 7 , wherein the transfer data is requested by the computer-implemented resource, and/or received from the further resource, using a blockchain transaction template.
9 . The method of claim 6 , wherein the transfer data is received from the further resource in the form of a complete blockchain transaction or a partially complete blockchain transaction.
10 . The method of claim 1 , further comprising the step of submitting a blockchain transaction to a blockchain network upon successful verification of the Merkle proof for the at least one blockchain transaction.
11 . The method of claim 1 , wherein the resource comprises a digital wallet.
12 . A computer-implemented system comprising a resource operative to facilitate a transfer of an asset on a blockchain network, and arranged to:
receive and/or request, from a further resource which is a transferor of the asset:
complete transaction data relating to at least one blockchain transaction, and
a Merkle path for the at least one blockchain transaction;
and use the Merkle path to verify a Merkle proof for the at least one transaction.
13 . The computer-implemented system of claim 12 , wherein:
the blockchain transaction is received by the resource from the further resource in response to a request;
the resource is operative to send, to the further resource, a transfer amount and an output address;
the first blockchain transaction comprises an output (UTXO) which spends an amount of cryptocurrency to an address specified or determined by the resource.
14 . The computer-implemented system of claim 12 , wherein the transfer data is requested by the computer-implemented resource, and/or received from the further resource, using a blockchain transaction template.
15 . A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to perform the steps of:
receiving and/or requesting, by a resource which is a transferee of the asset and from a further resource which is a transferor of the asset:
complete transaction data relating to at least one blockchain transaction, and
a Merkle path for the at least one blockchain transaction; and
using the Merkle path to verify a Merkle proof for the at least one blockchain transaction.
16 . The non-transitory computer-readable storage medium of claim 15 , wherein the executable instructions, as a result of being executed by a processor of a computer system, cause the computer system to perform the step of storing, at or on the resource: at least one public key and/or at least one private key.
17 . The non-transitory computer-readable storage medium of claim 15 , wherein the executable instructions, as a result of being executed by a processor of a computer system, cause the computer system to perform the step of storing, receiving and/or requesting, at or on the resource: at least one block header.
18 . The non-transitory computer-readable storage medium of claim 15 , wherein the executable instructions, as a result of being executed by a processor of a computer system, cause the computer system to perform the step of requesting the Merkle path and complete transaction data by the resource and from the further resource.
19 . The non-transitory computer-readable storage medium of claim 15 , wherein the executable instructions, as a result of being executed by a processor of a computer system, cause the computer system to perform the step of sending to the further resource: a public key address; and/or a transfer value.
20 . The non-transitory computer-readable storage medium of claim 15 , wherein the executable instructions, as a result of being executed by a processor of a computer system, cause the computer system to perform the step of sending, from the resource to the further resource, a request for transfer data comprising at least one of:
data relating to at least one unspent blockchain transaction output (UTXO);
a transaction ID (TXID) for a transaction containing the at least one unspent blockchain transaction output (UTXO);
a signature for spending at the at least one unspent blockchain transaction output (UTXO);
a Merkle path for a transaction containing the at least one unspent blockchain transaction output (UTXO); and/or
a public key address.