Method and system for private transaction processing

The system addresses the challenge of private transactions in blockchain by using smart contracts and a central authority to validate transactions within privacy groups, ensuring secure and compliant transactions without double-spending.

JP7739616B2Active Publication Date: 2025-09-16MASTERCARD INT INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024526674
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-11-03
Filing Date
2022-10-03
Publication Date
2025-09-16
Estimated Expiration
2042-10-03

AI Technical Summary

Technical Problem

Existing blockchain technologies lack the ability to facilitate private transactions between participants while preventing double-spending and ensuring compliance with regulations, as they often expose transaction data to unauthorized entities and do not have mechanisms to enforce regulatory compliance.

Method used

A system utilizing smart contracts and a central authority to manage private transactions within privacy groups, where transactions are validated by a central authority to ensure participants have sufficient balances and prevent double-spending, maintaining transaction privacy and regulatory compliance.

Benefits of technology

Enables secure, private transactions within privacy groups on a blockchain, preventing double-spending and ensuring compliance with regulations through the use of smart contracts and a central authority, thereby enhancing transaction security and regulatory adherence.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007739616000001
    Figure 0007739616000001
  • Figure 0007739616000002
    Figure 0007739616000002
  • Figure 0007739616000003
    Figure 0007739616000003
Patent Text Reader

Abstract

A method for facilitating secure private transfers on a blockchain includes the steps of: receiving an initiation message from a device for a proposed private transfer, the initiation message including a private group identifier, an entity identifier, and a transfer amount; executing a smart contract using the initiation message as input, resulting in sending an event message including the entity identifier and the transfer amount to a central authority system; receiving a response message from the central authority system, the response message including an indication of approval or rejection of the proposed private transfer; and executing the smart contract using the response message as input, resulting in (i) adding a private blockchain transaction if the response message includes an indication of approval, or (ii) rejecting the proposed private transfer.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to processing private transactions, and in particular to processing private transactions on a public blockchain with a central authority, in a secure manner and without the risk of double spend when using smart contracts.

[0002] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Patent Application No. 17 / 453,402, filed November 3, 2021, the entire contents of which are incorporated by reference for all purposes. [Background technology]

[0003] Blockchain was originally created as a storage mechanism used to make payment transactions using cryptocurrencies. Its use offers several benefits, such as decentralization, distributed computing, and transaction transparency, while providing anonymity for the individuals or entities involved in the transactions. A relatively favorable property of blockchain is the immutability of its records: all transactions made part of the chain are stored and are immutable due to the computational power and bandwidth limitations required, especially as the chain grows and the blockchain network adds more nodes.

[0004] While early blockchains were completely public, several varieties of blockchains have been created that allow only authorized entities to participate in the blockchain. These blockchains are called "permissioned" blockchains and often involve one or more entities providing such authorization. Transactions on these blockchains are still largely public to authorized participants, and each participant can see all transactions. While transactions do not necessarily reveal the identities of each participant, because transactions are made through blockchain wallets, some participants may be able to learn the identities of other participants behind each blockchain wallet. Even when identities are indeterminate, participants may wish to keep their transaction history private, for example, to avoid revealing transaction frequency or the amounts of currency involved.

[0005] However, traditional blockchains lack such a feature. Some blockchains have been developed that allow participants to join exclusive groups, also known as "privacy groups," where transactions made within such groups are visible only to members of the group and controlled by nodes within the blockchain. While this may provide participants with the desired privacy, complete privacy over transactions creates opportunities for participants to double-spend blockchain currency, for example, if the same blockchain currency is transferred simultaneously between two different privacy groups. Privacy can also lead to violations of regulations, making it difficult to ensure compliance with applicable regulations.

[0006] Therefore, improvements are needed on existing blockchain technology to provide private transactions between participants, prevent unauthorized entities from viewing transaction data, as well as protect against double-spending and achieve compliance with all applicable rules and regulations. Summary of the Invention

[0007] This disclosure describes a system and method for facilitating secure private transfers in a blockchain. When a first participant in a blockchain wishes to transfer currency to a second participant, an initiation message is submitted by the first participant, which is used as input to a smart contract, which is stored in a privacy group that includes both the first and second participants. Execution of the smart contract with the input results in an event message being sent to a central authority associated with the blockchain. The central authority maintains balances for each participant in the blockchain and inspects the event message to see if the first participant has enough unspent currency to provide for the transfer. The central authority sends a response message to the blockchain node to be used as input to the smart contract, which is executed with the input to either facilitate the private blockchain transaction in the privacy group if approved or reject the transaction if not. As a result, transactions can remain private and remain within the privacy group, but participants are prohibited from double-spending blockchain currency, and this is achieved through the use of a central authority and smart contracts in the privacy group.

[0008] A method for facilitating secure private transfers in a blockchain includes the steps of: receiving, by a receiver of a node in a blockchain network, from a first computing device, an initiation message for a proposed private transfer, the initiation message including at least a private group identifier, an entity identifier, and a transfer amount; executing, by a processor of the node, a smart contract stored in a blockchain associated with the blockchain network using the received initiation message as input, the smart contract including transmitting, by a transmitter of the node, an event message including at least the entity identifier and the transfer amount to a central authority system; receiving, by the receiver of the node, a response message from the central authority system, the response message including an indication of approval or rejection of the proposed private transfer; and executing, by the processor of the node, the smart contract using the received response message as input, wherein executing the smart contract includes (i) if the response message includes an indication of approval, adding a private blockchain transaction to the blockchain to transfer the transfer amount from a first blockchain wallet associated with the entity identifier to a second blockchain wallet in the private group associated with the private group identifier, or (ii) rejecting the proposed private transfer.

[0009] A system for facilitating secure private transfers in a blockchain includes: a blockchain network including a node and a plurality of additional blockchain nodes; a first computing device; and a central authority system, wherein the node includes a receiver that receives an initiation message for a proposed private transfer from the first computing device, the initiation message including at least a private group identifier, an entity identifier, and a transfer amount; and a processor that executes a smart contract stored in a blockchain associated with the blockchain network using the received initiation message as input, the execution of the smart contract including at least the entity identifier and the transfer amount in response to a transmitter of the node. and a processor for transmitting the proposed private transfer amount to the central authority system by a receiver, wherein the receiver receives a response message from the central authority system, the response message including an indication of approval or rejection of the proposed private transfer, and the processor executes the smart contract using the received response message as input, wherein executing the smart contract includes (i) adding a private blockchain transaction to the blockchain to transfer the transfer amount from a first blockchain wallet associated with the entity identifier to a second blockchain wallet in the private group associated with the private group identifier if the response message includes an indication of approval, or (ii) rejecting the proposed private transfer. [Brief explanation of the drawings]

[0010] The scope of the present disclosure is best understood from the following detailed description of exemplary embodiments when taken in conjunction with the accompanying drawings, in which:

[0011] [Figure 1] FIG. 1 is a block diagram illustrating a high-level system architecture for facilitating secure private transfers on a blockchain, according to an example embodiment. [Figure 2] FIG. 2 is a block diagram illustrating a blockchain node for facilitating secure private transfers in a blockchain within the system of FIG. 1 , according to an example embodiment. [Figure 3] 2 is a flow diagram illustrating a process for facilitating secure private transfers on a blockchain by a blockchain node in the system of FIG. 1 according to an example embodiment. [Figure 4] 1 is a flow diagram illustrating an example method for facilitating secure private transfers in a blockchain, according to an example embodiment. [Figure 5] FIG. 1 is a block diagram illustrating a computer system architecture, according to an exemplary embodiment.

[0012] Further areas of applicability of the present disclosure will become apparent from the following detailed description. The detailed description of exemplary embodiments is intended for purposes of illustration only and is not intended to necessarily limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0013] A system that facilitates secure private transfers using blockchain FIG. 1 illustrates a system 100 for facilitating secure private transfers on a blockchain using privacy groups, smart contracts, and a third-party authority.

[0014] The system 100 may include a blockchain network 102. The blockchain network 102 may be comprised of a plurality of blockchain nodes 104. Each blockchain node 104 may be a computing system, such as shown in FIG. 2 or FIG. 5, configured to perform functions related to blockchain processing and management, as detailed below, which may include, for example, generating blockchain data values, validating proposed blockchain transactions, verifying digital signatures, generating new blocks, validating new blocks, and maintaining copies of the blockchain.

[0015] A blockchain may be a distributed ledger comprising at least a plurality of blocks. Each block may include at least a block header and one or more data values. Each block header may include at least a timestamp, a block reference value, and a data reference value. The timestamp may be the time when the block header was created and may be represented using any suitable method (e.g., a UNIX timestamp, DateTime notation, etc.). The block reference value may be a value that references a preceding block in the blockchain (e.g., based on the timestamp). In some embodiments, the block reference value in the block header may be a reference to the block header of the most recently added block preceding the respective block. In an exemplary embodiment, the block reference value may be a hash value generated by hashing the block header of the most recently added block. Similarly, a data reference value may be a reference to one or more data values ​​stored in the block containing the block header. In an exemplary embodiment, the data reference value may be a hash value generated by hashing one or more data values. For example, the block reference value may be the root of a Merkle tree created using one or more data values.

[0016] The use of a block reference value and a data reference value in each block header results in immutability for the blockchain. Any attempted change to the data value requires the generation of a new data reference value for that block, which in turn requires the generation of a new block reference value for the subsequent block, which in turn requires the generation of a new block reference value for each subsequent block. For the change to be permanent, this must be performed and updated for every single blockchain node 104 in the blockchain network 102 before a new block is created and added to the blockchain. Computing and communication limitations can make such changes extremely difficult or even impossible, hence the blockchain's immutability.

[0017] In some embodiments, a blockchain can be used to store information about blockchain transactions made between two different blockchain wallets. A blockchain wallet can contain a private key of a cryptographic key pair, which can be used to generate a digital signature that can serve as a payer's authorization for the blockchain transaction, and the digital signature can be verified by the blockchain network 102 using the public key of the cryptographic key pair. In some cases, the term "blockchain wallet" can refer specifically to a private key. In other cases, the term "blockchain wallet" can refer to a computing device (e.g., participant system 106) that stores a private key for use in blockchain transactions. For example, each computing device can have its own private key for each cryptographic key pair and can be a blockchain wallet for use in transactions with a blockchain associated with the blockchain network. The computing device can be any type of device suitable for storing and utilizing a blockchain wallet, such as a desktop computer, laptop computer, notebook computer, tablet computer, mobile phone, smartphone, smartwatch, smart TV, wearable computing device, embedded computing device, etc.

[0018] Each blockchain data value stored in the blockchain may correspond to a blockchain transaction or other data storage, as appropriate. A blockchain transaction may include at least the following: a digital signature of the currency sender (e.g., a first participant system 106a) generated using the sender's private key, the blockchain address of the currency recipient (e.g., a second participant system 106b) generated using the recipient's public key, and the amount of blockchain currency to be transferred or other data to be stored. In some blockchain transactions, the transaction may also include: one or more sender blockchain addresses where the blockchain currency is currently stored (e.g., if a digital signature validates access to such currency); and an address for any changes to be maintained by the sender, generated using the sender public key. Addresses to which cryptocurrency that can be used in future transactions is sent are referred to as "output" addresses because they were previously used to capture the output of a previous blockchain transaction, and are also referred to as "unspent transactions" because there is currency sent to the address in a previous transaction where that currency has not yet been spent. In some cases, a blockchain transaction may also include a sender public key for use by entities to verify the transaction. For traditional processing of blockchain transactions, such data may be provided by either the sender or the recipient to a blockchain node 104 in the blockchain network 102. The node can verify the digital signature using the public key in the sender's wallet's cryptographic key pair and verify access to the sender's funds (e.g., if the unspent transaction has not yet been spent and was sent to an address associated with the sender's wallet), a process known as "confirming" the transaction, and the blockchain transaction is then included in a new block.In a traditional blockchain implementation, new blocks may be verified by other nodes in the blockchain network 102 before being added to the blockchain and distributed to all blockchain nodes 104 in the blockchain network 102. If the blockchain data value does not relate to a blockchain transaction but instead relates to the storage of other types of data, the blockchain data value may still include or otherwise involve the verification of a digital signature.

[0019] In system 100, the blockchain can be configured to store smart contracts. Smart contracts can be self-executable data objects, stored on the blockchain within blockchain data values, and executed when one or more conditions are met. The smart contract can monitor new blocks being added to the blockchain until expected data that satisfies a condition is added to the blockchain or until the condition is otherwise met. If the condition is met, the smart contract can self-execute, resulting in one or more actions related to the blockchain, which can include, for example, submitting a new transaction for the transfer of digital currency or submitting new data for storage in a new blockchain data value on the blockchain. In some cases, a single smart contract can be executed multiple times to perform different functions, for example, as a result of different inputs or other criteria.

[0020] In the system 100, the blockchain can include one or more privacy groups 110. A privacy group 110 can be a group of at least two participant systems 106, such that transfers, smart contracts, or other blockchain data stored in the blockchain assigned to the privacy group 110 are viewable only by members of that privacy group 110. For example, a first privacy group 110a can include a first participant system 106a and a second participant system 106b. The privacy group 110a can be assigned a unique identifier that is unique to the privacy group 110a among all privacy groups 110 in the blockchain, which can be referred to as a “group identifier,” “privacy group identifier,” or “private group identifier.” A blockchain data item in the blockchain can be associated with a privacy group 110a by including the privacy group identifier in the blockchain data item.

[0021] Each blockchain node 104 in the blockchain network 102 can maintain a profile for each privacy group 110, or can use a central public directory service that includes an identifier (e.g., a blockchain wallet public key, a device identifier, a serial number, or other unique value) for each participant system 106 in the group in addition to its privacy group identifier. When a participant system 106 requests blockchain data from a blockchain node 104, the blockchain node 104 can identify each privacy group 110 to which the participant system 106 belongs based on its provided identification information and group profile. The blockchain node 104 can then provide the participant system 106 with only the blockchain data that the participant system 106 is authorized to view. In other words, the participant system 106 can be provided with blockchain data items that are public (e.g., not associated with a privacy group 110) as well as those blockchain data items that include the privacy group identifiers for the privacy groups 110 of which the participant system 106 is a member.

[0022] The system 100 may further include a central authority system 108. The central authority system 108 may be an entity configured to maintain balances for each participant system 106 and grant permission for new entities to join as participant systems 106 in the blockchain network 102. More information about the central authority system 108, also referred to as the “issuing authority,” is found in U.S. Patent Application No. 16 / 576,915, entitled “Method and System for Distributing a Consistent Ledger Across Multiple Blockchains,” filed September 20, 2019, by Steven C. Davis et al., which is incorporated herein by reference in its entirety. The central authority system 108 may store a balance of blockchain currency for each participant system 106 in the system 100 and may update the balance each time the participant system 106 participates in a public or private blockchain transaction in the blockchain network 102.

[0023] To facilitate private transfers on the blockchain while preventing double spending, a privacy group 110 can be created for every pair of participant systems 106 in the system 100. In other words, whenever a new participant system 106, such as participant system 106b, is granted permission to join the blockchain network 102 as a participant, a new privacy group 110 is created for every existing participant system 106 (e.g., privacy group 110b for participant systems 106b and 106c), including both the existing participant system 106 and the new participant system 106. As a result, the blockchain network 102 can always include at least (n(n-1)) / 2 privacy groups 110, where n is the number of participants 106. In some cases, additional privacy groups 110 can be included, including more than two participants 106, as desired by the participants 106, for example. Group creation can be deferred until the group is needed for a transfer, and inactive groups can be deleted.

[0024] Each privacy group 110 can have a smart contract associated with it that is stored on the blockchain and is only visible and accessible by that privacy group 110 (e.g., if the smart contract is stored in a blockchain data item that includes the privacy group identifier for the privacy group 110). The smart contract can be a single private smart contract that can be executed for every private transfer between participating systems 106 in the privacy group 110, or it can be a private smart contract that is utilized for a single transfer in the privacy group 110, and after each transfer a new private smart contract can be added to the blockchain and utilized for subsequent transfers.

[0025] When a first participant 106, such as participant 106a, wishes to make a private transfer to another participant 106, such as participant 106b, the first participant 106a can submit an initiation message to a blockchain node 104 in the blockchain network 102. The initiation message can include at least the amount of blockchain currency desired in the transfer, an entity identifier associated with the first participant 106a, and one of the following: an entity identifier associated with the second participant 106b, or a group identifier associated with the privacy group 110a to which the first participant 106a and the second participant 106b belong. The blockchain node 104 can receive the initiation message and can use the group identifier and / or entity identifier to identify the privacy group 110a and the second participant 106b, for example, to use the data to identify a group profile and other data in the group profile, etc.

[0026] The blockchain node 104 can identify the privacy group 110a and the private smart contract stored in the blockchain and associated with the privacy group 110a, for example, using the associated privacy group identifier. The initiation message can be provided as input to the smart contract, which can be executed. Execution of the smart contract can result in the generation of an event message, which can be electronically transmitted to the central authority system 108 using an appropriate communication network and method. The event message can include at least an entity identifier associated with the first participant system 106a and a transfer amount for the proposed private transaction. In some embodiments, the event message can also include an entity identifier associated with the second participant system 106b.

[0027] The central authority system 108 can receive the event message and identify the profile associated with the first participant system 106a using the associated entity identifier. The central authority system 108 can then determine whether the participant system 106a has a sufficient balance to transfer the specified transfer amount to the second participant system 106b. In some cases, the initiation message can specify one or more unspent transaction outputs to be used to effectuate the transfer. In such cases, the unspent transaction outputs can be included in the event message, and the determination by the central authority system 108 can include a determination as to whether the unspent transaction outputs are associated with the participant system 106a and correspond to a sufficient amount of blockchain currency for the desired transfer amount.

[0028] As a result of the determination, the central authority system 108 can approve or reject the proposed private transfer. For example, the central authority system 108 can reject the proposed private transfer if the participant system 106a does not provide the appropriate unspent transaction output or if the participant system 106a has already requested a private transfer of enough currency to make the newly proposed private transfer impossible. The central authority system 108 can generate a response message that is electronically transmitted to the blockchain nodes 104 in the blockchain network 102, including an indication of whether the proposed private transfer is approved or rejected. In some cases, the response message can include additional information for use in identifying the proposed private transfer, such as an entity identifier associated with the participant system 106a and a group identifier or session identifier associated with the privacy group 110a, or other value that is unique in relation to the proposed private transfer and can be generated and provided by, for example, the first participant system 106a or the blockchain node 104.

[0029] The blockchain node 104 can receive the response message and can provide the response message as input to the private smart contract in the privacy group 110a. The private smart contract can then self-execute and take action based on the response message. If the response message indicates that the proposed private transfer is rejected, the action can be to discard the initiation message and electronically send a notification message to the participant system 106a indicating that the proposed private transfer has been rejected. In some cases, the notification message can include a reason for the rejection, which can be provided in the response message by the central authority system 108 and included in the notification message upon execution of the smart contract. If the response message indicates that the proposed private transfer is accepted, the private transfer can be added to the blockchain. Adding a private transfer to the blockchain may include generating a new blockchain transaction by a smart contract, which may include, for example, a digital signature for the participant system (e.g., included in the initiation message, included in the smart contract, generated by the smart contract, etc.), one or more unspent transaction outputs, a destination address associated with the participant system 106b, and the amount transferred. In some cases, the amount of data included in the private transfer may depend on the architecture of the blockchain and the needs of the participant system 106 and / or the central authority system 108. The new blockchain transaction may be included in a new blockchain data item, which also includes a privacy group identifier for the privacy group 110a that is included and validated in a new block that is added to the blockchain.

[0030] In some embodiments, execution of the smart contract may further result in the generation of a notification message electronically sent to the central authority system 108, notifying the central authority system 108 that the private transfer was successfully added to the blockchain. In some cases, the notification message may include identifying information about the private transfer, such as a session identifier or other data. In some cases, the notification message may include a transaction identifier or other data stored in the blockchain data item, the blockchain data item itself, or other data as required or desired by the central authority system 108. The central authority system 108 may then update profiles for both the first participant system 106 a and the second participant system 106 b to update their available blockchain currency balances, unspent transaction outputs, and / or other data that can be used to make future decisions about proposed private transfers involving the first participant system 106 a or the second participant system 106 b.

[0031] The described systems and methods thus facilitate private transfers on the blockchain while eliminating the possibility of double-spending. By using smart contracts, private transfers can occur without any additional action by the participants 106 or blockchain nodes 104, allowing the methods and systems described in this disclosure to be implemented with minimal disruption to existing practices. Using a central authority system 108 to provide approval for each private transfer ensures that no participant can double-spend any blockchain currency or take other fraudulent actions that would be undetectable in a traditional blockchain network 102 utilizing privacy groups. As a result, all participants 106 can enjoy private transfers on the blockchain without exposing themselves to the risk of fraud by other participants 106, providing a significant improvement over existing systems.

[0032] Blockchain Node 2 illustrates an embodiment of a blockchain node 104. Those skilled in the art will appreciate that the embodiment of the blockchain node 104 illustrated in FIG. 2 is provided for illustrative purposes only and is not an exhaustive list of all possible configurations of a blockchain node 104 suitable for performing the functions of the present disclosure. For example, computer system 500 illustrated in FIG. 5 and described in more detail below may be a suitable configuration of a blockchain node 104. In some cases, additional components of system 100, such as participant system 106 and central authority system 108, may include components shown in FIG. 2 and described below.

[0033] The blockchain node 104 may include a receiving device 202. The receiving device 202 may be configured to receive data over one or more networks via one or more network protocols. In some examples, the receiving device 202 may be configured to receive data from other blockchain nodes 104, participant systems 106, the central authority system 108, and other systems and entities via one or more communication methods, such as radio frequency, a local area network, a wireless area network, a cellular communication network, Bluetooth, the Internet, etc. In some embodiments, the receiving device 202 may include multiple devices (e.g., different receiving devices receiving data over different networks (e.g., a first receiving device receiving data over a local area network and a second receiving device receiving data over the Internet)). The receiving device 202 may receive a transmitted electronic data signal. Upon receipt of the data signal by the receiving device 202, data may be superimposed on the data signal and may be decoded, parsed, read, or otherwise obtained. In some embodiments, the receiving device 202 may include an analysis module for analyzing the received data signal to obtain the data superimposed thereon. For example, the receiving device 202 may include an analysis program configured to receive and convert received data signals into usable input for functions performed by the processing device to implement the methods and systems of the present disclosure.

[0034] The receiving device 202 can be configured to receive data signals electronically transmitted by other blockchain nodes 104, which can be superimposed or encoded with blocks, blockchain data values, confirmation messages, cryptographic keys, smart contracts, entity identifiers, privacy group identifiers, etc. The receiving device 202 can also be configured to receive data signals electronically transmitted by participant systems 106, which can be superimposed or encoded with initiation messages, entity identifiers, blockchain wallet data, privacy group data, etc. The receiving device 202 can further be configured to receive data signals electronically transmitted by a central authority system 108, which can be superimposed or encoded with response messages, requests for notification messages, requests for blockchain data, entity identifiers, event data, privacy group data, etc.

[0035] The blockchain node 104 may also include a communications module 204. The communications module 204 may be configured to transfer data between modules, engines, databases, memory, and other components of the blockchain node 104 for use in performing the functions of the present disclosure. The communications module 204 may include one or more communication types and may use various communication methods for communication within a computing device. For example, the communications module 204 may include a bus, a connection pin connector, a wire, etc. In some embodiments, the communications module 204 may also be configured to communicate between internal components of the blockchain node 104 and external components of the blockchain node 104 (e.g., an externally connected database, display device, input device, etc.). The blockchain node 104 may also include a processing unit. The processing unit may be configured to perform the functions of the blockchain node 104 of the present disclosure, as would be apparent to one skilled in the art. In some embodiments, the processing unit may include multiple engines and / or modules (e.g., the query module 216, the generation module 218, the validation module 220, etc.) specifically configured to perform one or more functions of the processing unit. As used herein, the term "module" may refer to software or hardware that is specifically programmed to receive input, perform one or more operations using the input, and provide an output. The inputs, outputs, and operations performed by the various modules will be apparent to one of ordinary skill in the art based on this disclosure.

[0036] The blockchain node 104 may include a group database 206. The group database 206 may be configured to store multiple group profiles 208 using a suitable data storage format and schema. The group database 206 may be a relational database using Structured Query Language (SQL) to store, identify, modify, update, access, etc., stored structured data sets. Each group profile 208 may be a structured data set configured to store data related to a privacy group 110. The group profile 208 may include, for example, a privacy group identifier and may also include an entity identifier for each participating system 106 in the associated privacy group 110. In some cases, the group profile 208 may further include private smart contract data, blockchain wallet data for each participating system 106 in the associated privacy group 110, etc.

[0037] A blockchain node 104 may also include blockchain data 212, which may be stored in memory 214 of the blockchain node 104 or stored in or accessible by a separate area within the blockchain node 104. The blockchain data 212 may include a blockchain, which may comprise multiple blocks, and which may be associated with the blockchain network 102. In some cases, the blockchain data 212 may also include any other data associated with the blockchain and its management and performance, including, for example, block generation algorithms, digital signature generation and verification algorithms, communication data for the blockchain node 104, smart contracts, etc.

[0038] The blockchain node 104 may also include memory 214. The memory 214 may be configured to store data (e.g., public keys, private keys, symmetric keys, etc.) for use by the blockchain node 104 when performing the functions of the present disclosure. The memory 214 may be configured to store data using any suitable data formatting methodology and schema and may be any suitable type of memory (e.g., read-only memory, random-access memory, etc.). The memory 214 may include, for example, cryptographic keys and algorithms, communication protocols and standards, data formatting standards and protocols, program code for modules and processing unit application programs, and other suitable data used by the blockchain node 104 when performing the functions of the present disclosure. This will be apparent to those skilled in the art upon reading this disclosure. In some embodiments, the memory 214 may include a relational database using Structured Query Language (SQL) to store, identify, modify, update, access, etc., stored structured data sets. The memory 214 may be configured to store, for example, cryptographic keys, cryptographic key pairs, cryptographic algorithms, encryption algorithms, communication information, data formatting rules, signature generation algorithms, smart contract data, and the like.

[0039] The blockchain node 104 may include a query module 216. The query module 216 may be configured to run queries on a database to identify information. The query module 216 may receive one or more data values ​​or query strings and, based thereon, may run the query string on an indicated database (e.g., the group database 206 of the blockchain node 104) to identify information stored therein. The query module 216 may then output the identified information to an appropriate engine or module of the blockchain node 104, as needed. The query module 216 may, for example, run a query on the group database to identify the group profile 208 corresponding to the received initiation message and identify the privacy group identifier and / or entity identifier included therein for submission to the private smart contract.

[0040] The blockchain node 104 may also include a generation module 218. The generation module 218 may be configured to generate data for use by the blockchain node 104 when performing functions of the present disclosure. The generation module 218 may receive instructions as input, generate data based on the instructions, and output the generated data to one or more modules of the blockchain node 104. For example, the generation module 218 may be configured to generate blockchain data items, blocks, confirmation messages, cryptographic key pairs, digital signatures, functions and instructions for performing actions, smart contracts, smart contract submission data, event messages, notification messages, session identifiers, etc.

[0041] The blockchain node 104 may also include a validation module 220. The validation module 220 may be configured to perform validations for the blockchain node 104 as part of the functionality described in this disclosure. The validation module 220 may receive instructions as input, which may include data used to perform the validations, perform the validations as requested, and output the results of the validations to another module or engine of the blockchain node 104. The validation module 220 may be configured, for example, to verify digital signatures using appropriate signature generation algorithms and keys, to verify smart contract data, to verify new blockchain transactions, etc.

[0042] The blockchain node 104 may also include a transmitting device 222. The transmitting device 222 may be configured to transmit data over one or more networks via one or more network protocols. In some examples, the transmitting device 222 may be configured to transmit data to other blockchain nodes 104, participant systems 106, the central authority system 108, and other entities via one or more communication methods, such as a local area network, a wireless area network, cellular communication, Bluetooth, radio frequency, the Internet, etc. In some embodiments, the transmitting device 222 may include multiple devices (e.g., different transmitting devices for transmitting data over different networks (e.g., a first transmitting device transmitting data over a local area network and a second transmitting device transmitting data over the Internet)). The transmitting device 222 may electronically transmit a data signal having superimposed data, the data being analyzed by a receiving computing device. In some embodiments, the transmitting device 222 may include one or more modules for superimposing, encoding, or formatting data into a data signal suitable for transmission.

[0043] The sending device 222 can be configured to electronically send data signals to other blockchain nodes 104, on which may be superimposed or encoded blockchain data values, blocks, confirmation messages, requests for blockchain data, smart contract data, entity identifiers, privacy group identifiers, group profile 208 data, etc. The sending device 222 can also be configured to electronically send data signals to participant systems 106, on which may be superimposed or encoded requests for entity identifiers, requests for blockchain wallet data, blockchain data, notification messages, etc. The sending device 222 can further be configured to electronically send data signals to the central authority system 108, on which may be superimposed or encoded event messages, notification messages, entity identifiers, privacy group identifiers, group profile 208 data, etc.

[0044] A process to facilitate private transfers on the blockchain FIG. 3 illustrates a process 300 for facilitating private transfers in a blockchain that is protected against double spend when executed by a blockchain node 104 of the system 100 of FIG. 1 or FIG. 2.

[0045] At S302, the receiving device 202 of the blockchain node 104 can receive, using an appropriate communication network and method, an initiation message for a proposed private transfer sent from a first participant system 106a. The initiation message can include at least an entity identifier associated with the first participant system 106a, a transfer amount for the proposed private transfer, and at least one of the following: an entity identifier associated with a second participant system 106b to which the proposed private transfer is directed, and a group identifier associated with a privacy group 110a that includes the first participant system 106a and the second participant system 106b. In some cases, the initiation message can further include one or more unspent transaction outputs, a digital signature, and / or any additional data necessary for generating and verifying the proposed private transfer. At S304, the query module 216 of the blockchain node 104 may perform a query on the group database 206 of the blockchain node 104 to identify a group profile 208 that includes an entity identifier associated with the targeted privacy group 110, such as the first participant system 106a, and other data included in the initiation message (e.g., an entity identifier or group identifier associated with the second participant system 106b).

[0046] At S306, the blockchain node 104 may enter the initiation message and any additional data in the identified group profile 208 into a private smart contract stored in the blockchain and associated with the privacy group 110a, as appropriate. Entering the data into the smart contract may result in an event message being sent to the central authority system 108. The event message may include at least an entity identifier associated with the first participant system 106a and a transfer amount. If the initiation message includes one or more unspent transaction outputs and / or other data about the proposed private transfer, the event message may further include such additional data. At S307, the central authority system 108 may determine whether the proposed private transfer is approved or rejected, for example, based on the blockchain currency balance for the first participant system 106a, which may be tracked by the central authority system 108. At S308, the central authority system 108 can electronically transmit a response message to the blockchain node 104 indicating approval or rejection of the proposed private transfer, which can be received by the receiving device 202 of the blockchain node 104.

[0047] At S310, the blockchain node 104 can input the response message into the private smart contract. As a result, the private smart contract can be executed, which can include reading the data included in the response message. If the response message indicates that the proposed private transfer is rejected, then at S312, as a result of the execution of the smart contract, the proposed private transfer can be rejected by the blockchain node 104. As a result of the rejection of the proposed private transfer, the initiation message and any other associated data can be discarded by the blockchain node 104. In some cases, the sending device 222 of the blockchain node 104 can electronically send a notification message to the first participant system 106a, where the notification message can indicate that the proposed private transfer has been rejected. If the central authority system 108 includes an indication of the reason for the rejection in the response message, the notification message sent electronically to the first participant system 106a can include an indication of the reason.

[0048] At S310, if the smart contract determines based on the response message that the proposed private transfer is accepted, then at S314, the proposed private transfer can be processed by adding a new blockchain transaction for the private transfer to the blockchain. The new blockchain transaction can be generated by the smart contract using the data contained therein and input to the smart contract using the initiation message and / or the response message. The new blockchain transaction can be sent to the blockchain node 104 (e.g., received via internal communication, such as via the receiving device 202 or via the communication module 204), and the generation module 218 of the blockchain node 104 can generate a blockchain data item including the new blockchain transaction and a group identifier for the privacy group 110a, generate a new block including the new blockchain data item, and distribute the new block to multiple other blockchain nodes 104 in the blockchain network 102 for verification and confirmation for addition to the blockchain. At S316, the sending device 222 of the blockchain node 104 can electronically send a notification message to the central authority system 108 including instructions for adding the private transfer to the blockchain. Based on the notification message, the central authority system 108 can update data associated with the first participant system 106a and the second participant system 106b, for example, updating the blockchain currency balances associated therewith based on the transfer.

[0049] Exemplary Methods for Facilitating Secure Private Transfers on Blockchain FIG. 4 illustrates a method 400 for facilitating secure private transfers on a blockchain using a central authority and smart contracts to enable privacy while avoiding double spending of blockchain currency.

[0050] At S402, an initiation message for a proposed private transfer from a first computing device (e.g., first participant system 106a) can be received by a receiver (e.g., receiving device 202) of a node (e.g., blockchain node 104) in a blockchain network (e.g., blockchain network 102), the initiation message including at least a private group identifier, an entity identifier, and a transfer amount. At S404, a smart contract stored in a blockchain associated with the blockchain network can be executed by a processor of the node using the received initiation message as input, the execution of the smart contract including sending an event message by a transmitter (e.g., sending device 222) of the node to a central authority system (e.g., central authority system 108), the event message including at least the entity identifier and the transfer amount.

[0051] At S406, a response message can be received from the central authority system by a receiver at the node, the response message including an indication of approval or rejection of the proposed private transfer. At S408, a smart contract can be executed by a processor at the node using the received response message as input, where execution of the smart contract includes (i) adding a private blockchain transaction to the blockchain to transfer the transfer amount from a first blockchain wallet associated with the entity identifier to a second blockchain wallet in the private group associated with the private group identifier if the response message includes an indication of approval, or (ii) rejecting the proposed private transfer.

[0052] In one embodiment, the smart contract can be stored in a blockchain data item in the blockchain, further including the private group identifier. In some embodiments, method 400 can further include the following steps: receiving an event message by a receiver (e.g., receiving device 202) of a central authority system; identifying, by a processor (e.g., query module 216) of the central authority system, blockchain wallet data associated with the entity identifier; determining, by a processor (e.g., generating module 218) of the central authority system, approval or rejection of the proposed private transfer based at least on the blockchain wallet data and the transfer amount; generating, by a processor (e.g., generating module 218) of the central authority system, a response message including an indication of approval or rejection based on the decision; and transmitting, by a transmitter (e.g., sending device 222) of the central authority system, the generated response message to the node. In one embodiment, method 400 can further include, if the response message includes an indication of approval, sending, by the transmitter of the node, a notification message to the central authority, including a notification of the successful addition of the private blockchain transaction.

[0053] In some embodiments, method 400 may further include the steps of: receiving, by a receiver in a central authority system, a notification message from the node, where if the response message includes an indication of approval, the notification message includes a notification of the successful addition of the private blockchain transaction; and updating, by a processor in the central authority system, data in a blockchain wallet associated with the entity identifier based at least on the transfer amount included in the event message. In one embodiment, method 400 may further include the steps of: storing, in a memory (e.g., group database 206, memory 214, etc.) of the node, a plurality of privacy group profiles (e.g., group profile 208), each privacy group profile including at least a group identifier and two entity identifiers; and identifying, by a processor (e.g., query module 216) of the node, a particular privacy group profile from the plurality of privacy group profiles, where the included group identifier matches the private group identifier included in the initiation message, and where the second blockchain wallet is associated with a first of the two entity identifiers included in the particular privacy group profile, and where the second of the two entity identifiers matches the entity identifier included in the initiation message. In further embodiments, a private group can be associated with a particular privacy group profile. In some embodiments, a private blockchain transaction can be stored in a blockchain data item within the blockchain that includes a private group identifier.

[0054] Computer System Architecture 5 illustrates a computer system 500 in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code. For example, the blockchain nodes 104 of FIGS. 1-2 and the participant systems 106 and central authority system 108 of FIG. 1 may be implemented in the computer system 500 using hardware, non-transitory computer-readable media having stored instructions, or a combination thereof, and may be implemented in one or more computer systems or other processing systems. The hardware may embody modules and components used to implement the methods of FIGS. 3-4.

[0055] Where programmable logic is used, such logic may be executed on commercially available processing platforms configured with executable software code, and may be a special-purpose or dedicated device (e.g., a programmable logic array (PGA), an application-specific integrated circuit (ASIC), etc.). Those skilled in the art will appreciate that embodiments of the disclosed subject matter may be implemented in a variety of computer system configurations, including multi-core, multi-processor systems, minicomputers, mainframe computers, distributed functionality linked or clustered computers, and general-purpose or miniature computers that may be implemented in virtually any device. For example, at least one processor unit and memory may be used to implement the embodiments.

[0056] A processor unit or device of the present disclosure may be a single processor, multiple processors, or a combination thereof. A processor device may have one or more processor “cores.” The terms “computer program medium,” “non-transitory computer-readable medium,” and “computer-usable medium” of the present disclosure are used generally to refer to tangible media (e.g., removable storage unit 518, removable storage unit 522, and a hard disk installed in hard disk drive 512, etc.).

[0057] Various embodiments of the present disclosure are described with respect to this exemplary computer system 500. After reading this disclosure, it will be apparent to one skilled in the art how to implement the present disclosure using other computer systems and / or computer architectures. While operations are disclosed as sequential processes, some operations may in fact be performed in parallel, concurrently, and / or in distributed environments, where program code is stored locally or remotely for access by uniprocessor or multiprocessor machines. Furthermore, in some embodiments, the order of operations may be rearranged without departing from the spirit of the disclosed subject matter.

[0058] The processor unit 504 may be a special-purpose or general-purpose processor unit specially configured to perform the functions of the present disclosure. The processor unit 504 may be connected to a communications infrastructure 506 (e.g., a bus, a message queue, a network, a multi-core message passing scheme, etc.). The network may be any network suitable for performing the functions of the present disclosure and may include a local area network (LAN), a wide area network (WAN), a wireless network (e.g., Wi-Fi), a mobile communications network, a satellite network, the Internet, fiber optics, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will be apparent to those skilled in the art. The computer system 500 may also include a main memory 508 (e.g., random access memory, read-only memory, etc.) and may also include a secondary storage device 510. The secondary storage device 510 may include a hard disk drive 512 and a removable storage drive 514 (e.g., a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, etc.).

[0059] Removable storage drive 514 may read from and / or write to removable storage unit 518 in a well-known manner. Removable storage unit 518 may include a removable storage medium that can be read from and written to by removable storage drive 514. For example, if removable storage drive 514 is a floppy disk drive or a USB port, removable storage unit 518 may be a floppy disk or a portable flash drive, respectively. In one embodiment, removable storage unit 518 may be a non-transitory readable recording medium.

[0060] In some embodiments, secondary storage 510 may include alternative means for allowing computer programs or other instructions to be loaded into computer system 500 (e.g., removable storage unit 522 and interface 520). Examples of such means may include program cartridges and cartridge interfaces (e.g., found in video game systems), removable memory chips (e.g., EEPROM, PROM, etc.) and associated sockets, other removable storage units 522 and interfaces 520, as will be apparent to those skilled in the art.

[0061] Data stored in computer system 500 (e.g., in main memory 508 and / or secondary storage 510) may be stored on any type of suitable computer-readable medium, such as optical storage (compact disc, digital versatile disc, Blu-ray disc, etc.) or magnetic tape storage (e.g., hard disk drive). The data may be organized in any type of suitable database structure (e.g., a relational database, a Structured Query Language (SQL) database, a distributed database, an object database, etc.). Suitable structures and storage types will be apparent to those skilled in the art.

[0062] Computer system 500 may also include a communications interface 524. Communications interface 524 may allow software and data to be sent and received between computer system 500 and external devices. Exemplary communications interface 524 may include a modem, a network interface (e.g., an Ethernet card), a communications port, a PCMCIA slot and card, etc. The software and data transferred via communications interface 524 may be in the form of signals. The signals may be electronic, electromagnetic, optical, or other signals apparent to those skilled in the art. The signals propagate over communications path 526. The paths are configured to carry the signals and may be implemented using wire, cable, fiber optics, a telephone line, a cellular phone link, a radio frequency link, etc.

[0063] Computer system 500 may further include a display interface 502. Display interface 502 may be configured to allow data to be transferred between computer system 500 and an external display 530. Exemplary display interfaces 502 may include a high-definition multimedia interface (HDMI), a digital visual interface (DVI), a video graphics array (VGA), etc. Display 530 may be any suitable type of display for displaying data transferred via display interface 502 of computer system 500, including a cathode ray tube (CRT) display, a liquid crystal display (LCD), a light-emitting diode (LED) display, a capacitive touch display, a thin-film transistor (TFT) display, etc.

[0064] The computer program medium and computer usable medium may refer to memory (e.g., main memory 508 and secondary storage device 510), which may be semiconductor memory (such as DRAM). These computer program products may be means for providing software to computer system 500. Computer programs (e.g., computer control logic) may be stored in main memory 508 and / or secondary storage device 510. Computer programs may also be received via communications interface 524. Such computer programs, when executed, may enable computer system 500 to perform methods of the present disclosure. In particular, when executed, computer programs may enable processor unit 504 to implement the methods illustrated in FIGS. 3-4 as described herein. Thus, such computer programs represent the controller of computer system 500. The present disclosure is implemented using software. The software may be stored in a computer program product and loaded into computer system 500 using removable storage drive 514, interface 520, and hard disk drive 512 or communications interface 524.

[0065] The processor unit 504 may include one or more modules or engines configured to perform the functions of the computer system 500. Each module or engine may be implemented using hardware, or in some embodiments, software (e.g., corresponding to program code or programs stored in the main memory 508 or secondary storage device 510). In such embodiments, the program code may be compiled by the processor unit 504 (e.g., by a compilation module or engine) before execution by the hardware of the computer system 500. For example, the program code may be source code written in a programming language (e.g., assembly language or machine code) that is translated into a lower-level language for execution by the processor unit 504 and / or any additional hardware components of the computer system 500. The compilation process may include the use of lexical analysis, preprocessing, syntactic analysis, semantic analysis, syntax-driven translation, code generation, code optimization, or any other techniques suitable for translating program code into a lower-level language for control of the computer system 500 to perform the functions of the present disclosure. Those skilled in the art will appreciate that such processing results in computer system 500 being a specially configured computer system 500 that is uniquely programmed to perform the functions described above.

[0066] Among other features, technology consistent with the present disclosure provides systems and methods for facilitating secure private transfers on a blockchain. While various exemplary embodiments of the systems and methods of the present disclosure have been described above, it should be understood that they are presented by way of example only, and not by way of limitation. They are not exhaustive and do not limit the disclosure to the precise form disclosed. Modifications and variations are possible in light of the above teachings. Modifications and variations may be obtained from implementations of the present disclosure without departing from the scope or spirit of the present disclosure.

Claims

1. A method for facilitating secure private transfers on a blockchain, comprising: receiving, by a receiver of a node in a blockchain network, from a first computing device associated with a first participant system, an initiation message for a proposed private transfer between the first participant system and a second participant system, the initiation message including at least (i) an entity identifier associated with the first participant system, (ii) a transfer amount, and (iii) a private group identifier associated with a private group to which the first participant system and the second participant system belong; Identifying, by a processor of the node, a smart contract stored in the blockchain using the private group identifier included in the initiation message received from the first computing device, the smart contract being associated with the private group to which the first participant system and the second participant system belong; executing, by the processor of the node, the smart contract using the received initiation message as input, wherein the execution of the smart contract includes sending, by a transmitter of the node, an event message including at least the entity identifier associated with the first participant system and the transfer amount to a central authority system; executing, by the processor of the node, the smart contract, the execution of the smart contract including (i) adding a private blockchain transaction to the blockchain to transfer the transfer amount from a first blockchain wallet associated with the entity identifier to a second blockchain wallet in the private group associated with the private group identifier if the proposed private transfer is approved, or (ii) rejecting the proposed private transfer; A method comprising:

2. 2. The method of claim 1, wherein the smart contract is stored in a blockchain data item in the blockchain, the blockchain data item further including the private group identifier.

3. The method of claim 1 further comprising: receiving, by a receiver in the central authority system, the event message; identifying, by a processor of the central authority system, blockchain wallet data associated with the entity identifier; determining, by the processor of the central authority system, whether to approve or reject the proposed private transfer based on at least the data in the blockchain wallet and the transfer amount; generating, by the processor at the central authority system, a response message indicating the approval or denial based on the determination; transmitting, by a transmitter of the central authority system, the generated response message to the node; A method comprising:

4. The method of claim 1 further comprising: If the proposed private transfer is approved, sending, by the transmitter of the node, a notification message to the central authority system including a notification of the successful addition of the private blockchain transaction.

5. The method of claim 1 further comprising: receiving, by a receiver in the central authority system, a notification message from the node, where if the proposed private transfer is approved, the notification message includes a notification of successful addition of the private blockchain transaction; updating, by a processor of the central authority system, data in a blockchain wallet associated with the entity identifier based at least on the transfer amount included in the event message; A method comprising:

6. The method of claim 1 further comprising: storing, in a memory of the node, a plurality of privacy group profiles, each privacy group profile including at least a group identifier and two entity identifiers; and identifying, by the processor of the node, a particular privacy group profile of the plurality of privacy group profiles, the included group identifier matching the private group identifier included in the initiation message; the second blockchain wallet is associated with a first of the two entity identifiers included in the particular privacy group profile, and a second of the two entity identifiers matches the entity identifier included in the initiation message.

7. The method of claim 6 , wherein the private group is associated with the particular privacy group profile.

8. 2. The method of claim 1, wherein the private blockchain transaction is stored in a blockchain data item in the blockchain that includes the private group identifier.

9. A system for facilitating secure private transfers on a blockchain, the system comprising: a blockchain network including the node and a plurality of additional blockchain nodes; a first computing device associated with the first participating system; a central authority system; The node a receiver that receives from the first computing device an initiation message for a proposed private transfer between the first participant system and a second participant system, the initiation message including at least (i) an entity identifier associated with the first participant system, (ii) a transfer amount, and (iii) a private group identifier associated with a private group to which the first participant system and the second participant system belong; 1. A processor, comprising: Identifying a smart contract stored in the blockchain using the private group identifier included in the initiation message received from the first computing device, the smart contract being associated with the private group to which the first participant system and the second participant system belong; executing the smart contract using the received initiation message as input, the execution of the smart contract including sending an event message by a transmitter of the node to the central authority system, the event message including at least the entity identifier associated with the first participant system and the transfer amount; a processor that executes the smart contract, the execution of the smart contract including (i) adding a private blockchain transaction to the blockchain to transfer the transfer amount from a first blockchain wallet associated with the entity identifier to a second blockchain wallet in a private group associated with the private group identifier if the proposed private transfer is approved, or (ii) rejecting the proposed private transfer; Including, the system.

10. 10. The system of claim 9, wherein the smart contract is stored in a blockchain data item in the blockchain, the blockchain data item further including the private group identifier.

11. 10. The system of claim 9, wherein the central authority system comprises: a receiver for receiving the event message; 1. A processor, comprising: identifying blockchain wallet data associated with the entity identifier; determining whether to approve or reject the proposed private transfer based at least on the blockchain wallet data and the transfer amount; generating a response message indicating said approval or rejection based on said determination; a transmitter for transmitting the generated response message to the node; Including, the system.

12. 10. The system of claim 9, wherein if the proposed private transfer is approved, the transmitter of the node sends a notification message to the central authority system including a notification of the successful addition of the private blockchain transaction.

13. 10. The system of claim 9, wherein the central authority system comprises: a receiver that receives a notification message from the node, where if the proposed private transfer is approved, the notification message includes a notification of the successful addition of the private blockchain transaction; and and a processor that updates data in a blockchain wallet associated with the entity identifier based at least on the transfer amount included in the event message.

14. 10. The system of claim 9, the node further includes a memory storing a plurality of privacy group profiles, each privacy group profile including at least a group identifier and two entity identifiers; the processor of the node identifies a particular privacy group profile of the plurality of privacy group profiles, the included group identifier matching the private group identifier included in the initiation message; the second blockchain wallet is associated with a first of the two entity identifiers included in the particular privacy group profile, and a second of the two entity identifiers matches the entity identifier included in the initiation message.

15. 15. The system of claim 14, wherein the private group is associated with the particular privacy group profile.

16. 10. The system of claim 9, wherein the private blockchain transaction is stored in a blockchain data item in the blockchain that includes the private group identifier.

Citation Information

Patent Citations

  • Personal authentication and verification system and method

    JP3228339U

  • Method of charging electronic currency automatically based on blockchain and system thereof

    US20180293557A1

  • Transaction process using blockchain token smart contracts

    US20190303920A1

  • Blockchain-based transaction processing

    US20200201846A1