IP Library Granted Patent US 12694396
Granted Patent B2
US 12694396 · App. 19/425,253 · Granted Jul 28, 2026

Systems and methods for blockchain distributed ledger-based transactions using UTXO merkle tree data structures

Inventors: Shihang Yu (Guangzhou, CN); Ruxin Hou (Shanghai, CN); Wei Ming Zhuang (Shanghai, CN); Yuan Li (Guangzhou, CN); Shiqian Zhong (Guangzhou, CN)
Assignee: HSBC Software Development (Guangdong) Limited
G06Q20/367G06Q20/389
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12694396
App. No.
19/425,253
Granted
Jul 28, 2026
Kind
B2
Abstract

An improved computational privacy based approach is proposed to allow for a blockchain privacy enabled transaction protocol for processing distributed ledger transactions of a specially configured blockchain smart contract, the approach describing a cryptographic process, along with a corresponding apparatus and computer program products using a pair of specialized UTXO merkle tree data structures, authentication nullifiers based on zero-knowledge proofs and sets of public-private key pairs. The process includes storing a transaction amount as UTXOs into a first merkle tree data structure and confirming the transaction by claiming ownership using private tokens over the UTXOs in the first merkle tree data structure and moving the UTXOs to a second merkle tree data structure for redemption.

Claims (62)

1 . A computing system for processing private blockchain distributed ledger based transactions using two unspent transaction output (UTXO) merkle tree data structures, the system comprising:

a computer processor coupled with computer memory and a non-transitory computer readable storage medium, the computer processor configured to:

persist a smart contract data object comprising a pending UTXO merkle tree data structure and a confirmed UTXO merkle tree data structure;

receive a plurality of tokens from a sender blockchain wallet to be sent to a receiver blockchain wallet;

generate and insert a first plurality of confirmed UTXOs corresponding to the plurality of tokens into the confirmed UTXO merkle tree data structure;

receive a transfer request from the sender blockchain wallet to transfer the plurality of tokens to the receiver blockchain wallet;

verify the transfer request and the sender blockchain wallet using a first confirmed nullifier;

upon successful verification of the transfer request, generate and insert a plurality of pending UTXOs into the pending UTXO merkle tree data structure, record the first confirmed nullifier in the smart contract data object, and burn the first plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure, wherein the plurality of pending UTXOs are encrypted using public keys associated with the sender blockchain wallet and the receiver blockchain wallet;

receive an extraction request from an owner to extract the plurality of pending UTXOs, wherein the owner is one of the sender blockchain wallet and the receiver blockchain wallet;

verify the extraction request and the owner using a pending nullifier;

upon successful verification of the extraction request, extract the plurality of pending UTXOs from the pending UTXO merkle tree data structure, generate a second plurality of confirmed UTXOs in the confirmed UTXO merkle tree data structure, and record the pending nullifier in the smart contract data object;

receive a withdrawal request from the owner to withdraw the plurality of tokens;

verify the withdrawal request using a second confirmed nullifier; and

upon successful verification of the withdrawal request, transmit the plurality of tokens to the owner, record the second confirmed nullifier in the smart contract data object and burn the second plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure.

2 . The computing system of claim 1 , wherein the pending nullifier is generated using a hash function of a pending nonce, a Elliptic-curve Diffie-Hellman (ECDH) shared secret, and the value of the plurality of tokens.

3 . The computing system of claim 1 , wherein the first and second confirmed nullifiers are generated using a hash function of a confirmed nonce, a private key of the owner, and the value of the plurality of tokens.

4 . The computing system of claim 1 , wherein the transfer request is verified using zero-knowledge proof and a Circom circuit to prove that the first plurality of confirmed UTXOs exist in the confirmed UTXO merkle tree data structure, the first confirmed nullifier is mapped to the first plurality of confirmed UTXOs, the first confirmed nullifier has not been recorded in the smart contract data object, the plurality of pending UTXOs do not exist in the pending UTXO merkle tree data structure, and the first plurality of confirmed UTXOs and the plurality of pending UTXOs correspond to the same token value.

5 . The computing system of claim 1 , wherein the extraction request is verified using zero-knowledge proof and a Circom circuit to prove that the plurality of pending UTXOs exist in the pending UTXO merkle tree data structure, the pending nullifier is mapped to the plurality of pending UTXOs, the pending nullifier has not been recorded in the smart contract data object, the second plurality of confirmed UTXOs do not exist in the confirmed UTXO merkle tree data structure, and the plurality of pending UTXOs and the second plurality of confirmed UTXOs correspond to the same token value.

6 . The computing system of claim 1 , wherein the withdrawal request is verified by using zero-knowledge proof and a Circom circuit to prove that the second plurality of confirmed UTXOs exist in the confirmed UTXO merkle tree data structure, the second confirmed nullifier is mapped to the second plurality of confirmed UTXOs, and the second confirmed nullifier has not been recorded in the smart contract data object.

7 . The computing system of claim 1 , wherein the smart contract data object further comprises an event bus that can be queried by the receiver blockchain wallet to check for pending UTXOs in the pending UTXO merkle tree data structure that are assigned to the receiver blockchain wallet.

8 . The computing system of claim 7 , wherein the processor is further configured to:

set an expiration time limit; and

upon the expiration time limit lapsing, automatically extract the plurality of pending UTXOs from the pending UTXO merkle tree data structure and return the plurality of tokens to the sender blockchain wallet, wherein the plurality of pending UTXOs have not been extracted within the expiration time limit.

9 . The computing system of claim 1 , wherein the receiver blockchain wallet is a custodial wallet that can be accessed by a plurality of entities to extract and consume the plurality of pending UTXOs in the pending UTXO merkle tree data structure and the second plurality of confirmed UTXOs in the confirmed UTXO merkle tree data structure, wherein the plurality of entities can simultaneously access the custodial wallet through access control.

10 . The computing system of claim 4 , wherein the processor is further configured to:

upon successful verification of the transfer request, generate a UTXO designated for the sender blockchain wallet as change.

11 . The computing method for processing private blockchain distributed ledger based transactions using two unspent transaction output (UTXO) merkle tree data structures, the method comprising:

persisting a smart contract data object comprising a pending UTXO merkle tree data structure and a confirmed UTXO merkle tree data structure;

receiving a plurality of tokens from a sender blockchain wallet to be sent to a receiver blockchain wallet;

generating and inserting a first plurality of confirmed UTXOs corresponding to the plurality of tokens into the confirmed UTXO merkle tree data structure;

receiving a transfer request from the sender blockchain wallet to transfer the plurality of tokens to the receiver blockchain wallet;

verifying the transfer request and the sender blockchain wallet using a first confirmed nullifier;

upon successful verification of the transfer request, generating and inserting a plurality of pending UTXOs into the pending UTXO merkle tree data structure, recording the first confirmed nullifier in the smart contract data object, and burning the first plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure, wherein the plurality of pending UTXOs are encrypted using public keys associated with the sender blockchain wallet and the receiver blockchain wallet;

receiving an extraction request from an owner to extract the plurality of pending UTXOs, wherein the owner is one of the sender blockchain wallet and the receiver blockchain wallet;

verifying the extraction request and the owner using a pending nullifier;

upon successful verification of the extraction request, extracting the plurality of pending UTXOs from the pending UTXO merkle tree data structure, generating a second plurality of confirmed UTXOs in the confirmed UTXO merkle tree data structure, and recording the pending nullifier in the smart contract data object;

receiving a withdrawal request from the owner to withdraw the plurality of tokens;

verifying the withdrawal request using a second confirmed nullifier; and

upon successful verification of the withdrawal request, transmitting the plurality of tokens to the owner, recording the second confirmed nullifier in the smart contract data object and burning the second plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure.

12 . The computing method of claim 11 , wherein the pending nullifier is generated using a hash function of a pending nonce, a Elliptic-curve Diffie-Hellman (ECDH) shared secret, and the value of the plurality of tokens.

13 . The computing method of claim 11 , wherein the first and second confirmed nullifiers are generated using a hash function of a confirmed nonce, a private key of the owner, and the value of the plurality of tokens.

14 . The computing method of claim 11 , wherein verifying the transfer request comprises using zero-knowledge proof and a Circom circuit to prove that the first plurality of confirmed UTXOs exist in the confirmed UTXO merkle tree data structure, the first confirmed nullifier is mapped to the first plurality of confirmed UTXOs, the first confirmed nullifier has not been recorded in the smart contract data object, the plurality of pending UTXOs do not exist in the pending UTXO merkle tree data structure, and the first plurality of confirmed UTXOs and the plurality of pending UTXOs correspond to the same token value.

15 . The computing method of claim 11 , wherein verifying the extraction request comprises using zero-knowledge proof and a Circom circuit to prove that the plurality of pending UTXOs exist in the pending UTXO merkle tree data structure, the pending nullifier is mapped to the plurality of pending UTXOs, the pending nullifier has not been recorded in the smart contract data object, the second plurality of confirmed UTXOs do not exist in the confirmed UTXO merkle tree data structure, and the plurality of pending UTXOs and the second plurality of confirmed UTXOs correspond to the same token value.

16 . The computing method of claim 11 , wherein verifying the withdrawal request comprises using zero-knowledge proof and a Circom circuit to prove that the second plurality of confirmed UTXOs exist in the confirmed UTXO merkle tree data structure, the second confirmed nullifier is mapped to the second plurality of confirmed UTXOs, and the second confirmed nullifier has not been recorded in the smart contract data object.

17 . The computing method of claim 11 , wherein the smart contract data object further comprises an event bus that can be queried by the receiver blockchain wallet to check for pending UTXOs in the pending UTXO merkle tree data structure that are assigned to the receiver blockchain wallet.

18 . The computing method of claim 17 , wherein the method further comprises:

setting an expiration time limit; and

upon the expiration time limit lapsing, automatically extracting the plurality of pending UTXOs from the pending UTXO merkle tree data structure and returning the plurality of tokens to the sender blockchain wallet, wherein the plurality of pending UTXOs have not been extracted within the expiration time limit.

19 . The computing method of claim 11 , wherein the receiver blockchain wallet is a custodial wallet that can be accessed by a plurality of entities to extract and consume the plurality of pending UTXOs in the pending UTXO merkle tree data structure and the second plurality of confirmed UTXOs in the confirmed UTXO merkle tree data structure, wherein the plurality of entities can simultaneously access the custodial wallet through access control.

20 . A non-transitory computer readable medium storing computer interpretable instructions, which when executed by a computer processor, cause the computer processor to perform a method for processing private blockchain distributed ledger based transactions using two unspent transaction output (UTXO) merkle tree data structures, the method comprising:

persisting a smart contract data object comprising a pending UTXO merkle tree data structure and a confirmed UTXO merkle tree data structure;

receiving a plurality of tokens from a sender blockchain wallet to be sent to a receiver blockchain wallet;

generating and inserting a first plurality of confirmed UTXOs corresponding to the plurality of tokens into the confirmed UTXO merkle tree data structure;

receiving a transfer request from the sender blockchain wallet to transfer the plurality of tokens to the receiver blockchain wallet;

verifying the transfer request and the sender blockchain wallet using a first confirmed nullifier;

upon successful verification of the transfer request, generating and inserting a plurality of pending UTXOs into the pending UTXO merkle tree data structure, recording the first confirmed nullifier in the smart contract data object, and burning the first plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure, wherein the plurality of pending UTXOs are encrypted using public keys associated with the sender blockchain wallet and the receiver blockchain wallet;

receiving an extraction request from an owner to extract the plurality of pending UTXOs, wherein the owner is one of the sender blockchain wallet and the receiver blockchain wallet;

verifying the extraction request and the owner using a pending nullifier;

upon successful verification of the extraction request, extracting the plurality of pending UTXOs from the pending UTXO merkle tree data structure, generating a second plurality of confirmed UTXOs in the confirmed UTXO merkle tree data structure, and recording the pending nullifier in the smart contract data object;

receiving a withdrawal request from the owner to withdraw the plurality of tokens;

verifying the withdrawal request using a second confirmed nullifier; and

upon successful verification of the withdrawal request, transmitting the plurality of tokens to the owner, recording the second confirmed nullifier in the smart contract data object and burning the second plurality of confirmed UTXOs from the confirmed UTXO merkle tree data structure.