ABSTRACT
Abstract
A computer system is provided that communicates with a distributed blockchain computing system that includes multiple computing nodes. The exchange stores an order book and a plurality of digital wallets associated with different clients. The computer system receives new data transaction requests that are added to the order book. A match is identified between data transaction requests and hashes associated with the digital wallets associated with the respective data transaction requests are generated. The counterparties receive the hashes of the other party along with information on the match and each party causes blockchain transactions to be added to the blockchain of the blockchain computing system. The computing system then monitors the blockchain to determine if both sides of the match has been added to the blockchain.
Description
CROSS REFERENCE(S) TO RELATED APPLICATION(S)
This application is a continuation of U.S. patent application Ser. No. 17/395,236, filed Aug. 5, 2021, now allowed; which is a continuation of U.S. patent application Ser. No. 15/086,801, filed Mar. 31, 2016, now U.S. Pat. No. 11,200,564, issued Dec. 14, 2021; which claims the benefit of U.S. Patent Application No. 62/140,802, filed Mar. 31, 2015, the entire contents of which are incorporated herein by reference.
TECHNICAL OVERVIEW
The technology herein relates to distributed transaction computer systems. More particularly, the technology herein relates to computer systems and processes that interface with a blockchain.
INTRODUCTION
Blockchain technology (sometimes simply referred to as blockchain) is a relatively new technology that has been used in digital currency implementations. It is described in a 2008 article by Satoshi Nakamoto, called âBitcoin: A Peer-to-Peer Electronic Cash System,â the entire contents of which are hereby incorporated by reference. The blockchain is a data structure that stores a list of transactions and can be thought of as a distributed electronic ledger that records transactions between source identifier(s) and destination identifier(s). The transactions are bundled into blocks and every block (except for the first block) refers back to or is linked to a prior block in the chain. Computer nodes maintain the blockchain and cryptographically validate each new block and thus the transactions contained in the corresponding block. This validation process includes solving a computationally difficult problem that is also easy to verify and is sometimes called a âproof-of-work.â
The integrity (e.g., confidence that a previously recorded transaction has not been modified) of the entire blockchain is maintained because each block refers to or includes a cryptographic hash value of the prior block. Accordingly, once a block refers to a prior block, it becomes difficult to modify or tamper with the data (e.g., the transactions) contained therein. This is because even a small modification to the data will affect the hash value of the entire block. Each additional block increases the difficultly of tampering with the contents of an earlier block. Thus, even though the contents of a blockchain may be available for all to see, they become practically immutable.
The identifiers used for blockchain transactions are created through cryptography such as, for example, public key cryptography. For example, a user may create a destination identifier based on a private key. The relationship between the private key and the destination identifier can later be used to provide âproofâ that the user is associated with the output from that created transaction. In other words, the user can now create another transaction to âspendâ the contents of the prior transaction. Further, as the relationship between the destination identifier and the corresponding private key is only known by the user the user has some amount of anonymity as they can create many different destination identifiers (which are only linked through the private key). Accordingly, a user's total association with multiple transactions included in the blockchain may be hidden from other users. While the details of a transaction may be publically available on the distributed ledger, the underlying participants to those transactions may be hidden because the identifiers are linked to private keys known only to the corresponding participants.
While blockchain technology has the potential to offer new benefits, it also poses problems for certain types of implementations. For example, a decentralized and anonymous transaction ledger can be problematic for certain types of environments that desire or require transparency and/or auditability for the transactions. There is thus a need in the art to address these and other problems.
SUMMARY
In certain example embodiments, a computer system communicates with a blockchain computer system (e.g., one or more nodes that store a distributed ledger). The computer system includes data storage (e.g., a memory), a transceiver that communicates with remote computing devices, and a processing system that includes a hardware processor. The data storage stores one or more (usually two) ordered lists of data transaction requests per type identifier. The data transaction requests are received (via the transceiver) from remote computing devices. The data storage also stores digital wallets that are each associated with a different client account. Each digital wallet includes or is linked to a corresponding private key and an identifier that has been generated using the private key. Generally, the identifiers may be used as blockchain addresses for sending and/or receiving transactions.
When a new data transaction request is received at the computer system from a remote computing devices, the request is added to an ordered list that corresponds to the request's type identifier. The processing system is configured to execute a matching engine to identify matches between data transaction requests. In other words, the processing system identifies a match between a data transaction request stored in one of the ordered lists with another data transaction request (e.g., a newly received data transaction request). Once a match is identified, new identifiers are generated that are based on the data (e.g., the private key) of the digital wallets associated with the matched data transaction requests. The new identifiers are sent to the respective clients that then generate blockchain transactions using those identifiers. The computer system that identified the match then monitors the blockchain to determine when both blockchain transactions have been incorporated/included into the blockchain.
The features described herein may be combined to form additional embodiments and sub-elements of certain embodiments may form yet further embodiments. This summary is provided to introduce a selection of concepts that are further described below in the detailed description. This summary is intended neither to identify key features or essential features of the claimed subject matter, nor to be used to limit the scope of the claimed subject matter; rather, this summary is intended to provide an overview of the subject matter described in this document. Accordingly, it will be appreciated that the above-described features are merely examples, and that other features, aspects, and advantages of the subject matter described herein will become apparent from the following detailed description, figures, and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features and advantages will be better and more completely understood by referring to the following detailed description of example non-limiting illustrative embodiments in conjunction with the drawings of which:
FIG. 1 illustrates a non-limiting example function block diagram of a computer-implemented exchange system that interfaces with a blockchain according to certain example embodiments;
FIGS. 2 A- 2 D is a series of flow charts of an example process that may be implemented using example blockchain based exchange techniques according to certain example embodiments
FIGS. 3 A- 3 I is a series of illustrative diagrams that show processes that may be performed as part of a blockchain based exchange system;
FIG. 4 illustrates a process to performing transactions against a blockchain according to certain example embodiments; and
FIG. 5 is an example computer system according to certain example embodiments.
DETAILED DESCRIPTION
In the following description, for purposes of explanation and non-limitation, specific details are set forth, such as particular nodes, functional entities, techniques, protocols, etc. in order to provide an understanding of the described technology. It will be apparent to one skilled in the art that other embodiments may be practiced apart from the specific details described below. In other instances, detailed descriptions of well-known methods, devices, techniques, etc. are omitted so as not to obscure the description with unnecessary detail.
Sections are used in this Detailed Description solely in order to orient the reader as to the general subject matter of each section; as will be seen below, the description of many features spans multiple sections, and headings should not be read as affecting the meaning of the description included in any section.
Overview
In certain example embodiments, a computer system (i.e., an exchange computer system) stores two sorted lists of received electronic data messages that include data transaction requests (e.g. orders). When a match is identified between two (or more) orders, the exchange generates new blockchain identifiers to facilitate the blockchain transactions that will be generated. These identifiers are used by the respective clients associated with the matched orders to generate and submit blockchain transactions to a blockchain for verification thereon. Meanwhile the exchange monitors the blockchain to determine when both transactions have been verified by the blockchain (e.g., incorporated/included into one or more verified blocks of the blockchain).
FIG. 1 illustrates a non-limiting example function block diagram of an exchange computer system coupled via a network to a client system configured to create and place orders with the exchange. The exchange interacts with a blockchain. FIGS. 2 A- 2 D an example process performed by an exchange computing system, client devices, trading parties, and a blockchain. FIGS. 3 A- 3 I show another illustration of how client devices, exchange, and the blockchain perform the example processes described herein. FIG. 4 is another diagram that shows the example process discussed in connection with FIGS. 2 A- 3 I . FIG. 5 shows an example hardware architecture used, in some embodiments, to implement the features shown in FIG. 1 through FIG. 4 .
FIG. 1
By way of introduction, FIG. 1 shows a block diagram of an exchange computer system 100 that interfaces with a blockchain 116 and one or more user computing devices 120 A and 120 B via a network 110 (e.g., the Internet).
Exchange computer system 100 (which may also be termed an exchange computing system, computing system, or computer system) includes a hardware processor 102 (e.g., one or more CPUs) coupled to electronic data storage (e.g., volatile or non-volatile memory) that includes digital wallet 104 and order book 106 . Digital wallet 104 and/or order book 106 may be data structures or other logical structures used to store associated data on common or dedicate electronic data storage (e.g., RAM, or a hard-drive). In certain example embodiments, dedicated hardware devices, such as a hardware security module (HSM), may be used to store information associated with digital wallet 104 or order book 106 . In certain example embodiments, wallet memory may be stored on a dedicated storage hardware externally provided and in communication with exchange computer system 100 .
Digital wallet 104 stores blockchain wallet information for users of user device 1 and user device 2 (and other clients or users that user the functionality provided by exchange computer system 100 ). A digital wallet is software and hardware, or specifically designed hardware, that stores information that allows an individual to make electronic commerce transactions that use, for example, a blockchain. The digital wallet can include or store a data structure that holds a private key (e.g., that is known to the holder of the wallet) and a series of identifiers (sometimes call wallet identifiers or walletIDs herein) that have been generated based on the private key. These identifiers are used to allow other users to âsendâ transactions, which are recorded on the blockchain, to that identifier. Software (e.g., a digital wallet application) associated with the stored information in the wallet may then be used to query the blockchain to determine what unspent transactions (e.g., those transaction outputs not used as input for another transaction) are associated with the identifiers that are in the wallet. Such software may then present a holistic view (e.g., via a graphical user interface) of what is âownedâ by the holder of the wallet. For example, one hundred different blockchain transactions, which are each associated with 1 share of a company, may each be associated with different identifiers that have been generated using the same private key. While each transaction may appear (from the perspective of an outside third party) to be associated with a different identifier, the holder of the private key (and corresponding digital wallet) may be able to use the digital wallet to identify each the one-hundred separate transactions and belong in their wallet. The digital wallet may be programmed to provide a holistic view of all transactions that are associated with identifiers generated from the one or more private keys of a given digital wallet. Accordingly, in this example, a user may be presented with a view that they hold 100 shares of the company (as opposed to 100 separate transactions of 1 share). Thus, the identifiers that are used and/or included in the digital wallet 104 may provide blockchain transparency from the perspective of the user of the digital wallet.
In certain example embodiments, a digital wallet and its contents (e.g., private key and generated identifiers) are stored on a user controlled device 120 A or 120 B. In such an example, user devices 120 A may transmit the identifiers and/or private key to the exchange computer system 100 for use thereby. Various elements of the digital wallet may thus be provided on the device of a user (e.g., that is owned by the user), the exchange computer system 100 , or another third party system (e.g., a cloud based system that stores digital wallets and the information therein).
Wallet identifiers (and/or the private key of the wallet) that are stored in digital wallet 104 allow exchange computer system 100 to interact with blockchain 116 on behalf of the âownerâ of the wallet. In certain example embodiments, the entity running the exchange computer system 100 may also store a digital wallet that includes a private key and wallet identifiers that allow customers to send payments to the exchange (e.g., transaction fees).
In certain example embodiments, the transactions on the blockchain 116 may include so-called âcolored-coins.â Colored coins are added on top of a traditional blockchain transaction and are used to identify additional digital data, which may in turn be associated with a tradable asset (e.g., a digital representation thereof). The mapping between a colored coin and additional information regarding the tradable asset may be stored in database 118 of exchange computer system 100 . Tradable assets can include securities or other types of tradable goods or financial products. In certain instances, tradable assets can also include digital (Bitcoin) and real currency (e.g., U.S. dollars).
Order book 106 stores electronic data messages that have been received from order submitting clients (such as clients controlling a remote computing device such as user device 1 or 2 ). In certain example embodiments, order book 106 stores a list of electronic data messages. In certain implementations, two separately ordered lists are stored and maintained per type identifier (e.g., per ticker symbol or other asset identifier). The two lists may corr
CROSS REFERENCE(S) TO RELATED APPLICATION(S)
This application is a continuation of U.S. patent application Ser. No. 17/395,236, filed Aug. 5, 2021, now allowed; which is a continuation of U.S. patent application Ser. No. 15/086,801, filed Mar. 31, 2016, now U.S. Pat. No. 11,200,564, issued Dec. 14, 2021; which claims the benefit of U.S. Patent Application No. 62/140,802, filed Mar. 31, 2015, the entire contents of which are incorporated herein by reference.
TECHNICAL OVERVIEW
The technology herein relates to distributed transaction computer systems. More particularly, the technology herein relates to computer systems and processes that interface with a blockchain.
INTRODUCTION
Blockchain technology (sometimes simply referred to as blockchain) is a relatively new technology that has been used in digital currency implementations. It is described in a 2008 article by Satoshi Nakamoto, called âBitcoin: A Peer-to-Peer Electronic Cash System,â the entire contents of which are hereby incorporated by reference. The blockchain is a data structure that stores a list of transactions and can be thought of as a distributed electronic ledger that records transactions between source identifier(s) and destination identifier(s). The transactions are bundled into blocks and every block (except for the first block) refers back to or is linked to a prior block in the chain. Computer nodes maintain the blockchain and cryptographically validate each new block and thus the transactions contained in the corresponding block. This validation process includes solving a computationally difficult problem that is also easy to verify and is sometimes called a âproof-of-work.â
The integrity (e.g., confidence that a previously recorded transaction has not been modified) of the entire blockchain is maintained because each block refers to or includes a cryptographic hash value of the prior block. Accordingly, once a block refers to a prior block, it becomes difficult to modify or tamper with the data (e.g., the transactions) contained therein. This is because even a small modification to the data will affect the hash value of the entire block. Each additional block increases the difficultly of tampering with the contents of an earlier block. Thus, even though the contents of a blockchain may be available for all to see, they become practically immutable.
The identifiers used for blockchain transactions are created through cryptography such as, for example, public key cryptography. For example, a user may create a destination identifier based on a private key. The relationship between the private key and the destination identifier can later be used to provide âproofâ that the user is associated with the output from that created transaction. In other words, the user can now create another transaction to âspendâ the contents of the prior transaction. Further, as the relationship between the destination identifier and the corresponding private key is only known by the user the user has some amount of anonymity as they can create many different destination identifiers (which are only linked through the private key). Accordingly, a user's total association with multiple transactions included in the blockchain may be hidden from other users. While the details of a transaction may be publically available on the distributed ledger, the underlying participants to those transactions may be hidden because the identifiers are linked to private keys known only to the corresponding participants.
While blockchain technology has the potential to offer new benefits, it also poses problems for certain types of implementations. For example, a decentralized and anonymous transaction ledger can be problematic for certain types of environments that desire or require transparency and/or auditability for the transactions. There is thus a need in the art to address these and other problems.
SUMMARY
In certain example embodiments, a computer system communicates with a blockchain computer system (e.g., one or more nodes that store a distributed ledger). The computer system includes data storage (e.g., a memory), a transceiver that communicates with remote computing devices, and a processing system that includes a hardware processor. The data storage stores one or more (usually two) ordered lists of data transaction requests per type identifier. The data transaction requests are received (via the transceiver) from remote computing devices. The data storage also stores digital wallets that are each associated with a different client account. Each digital wallet includes or is linked to a corresponding private key and an identifier that has been generated using the private key. Generally, the identifiers may be used as blockchain addresses for sending and/or receiving transactions.
When a new data transaction request is received at the computer system from a remote computing devices, the request is added to an ordered list that corresponds to the request's type identifier. The processing system is configured to execute a matching engine to identify matches between data transaction requests. In other words, the processing system identifies a match between a data transaction request stored in one of the ordered lists with another data transaction request (e.g., a newly received data transaction request). Once a match is identified, new identifiers are generated that are based on the data (e.g., the private key) of the digital wallets associated with the matched data transaction requests. The new identifiers are sent to the respective clients that then generate blockchain transactions using those identifiers. The computer system that identified the match then monitors the blockchain to determine when both blockchain transactions have been incorporated/included into the blockchain.
The features described herein may be combined to form additional embodiments and sub-elements of certain embodiments may form yet further embodiments. This summary is provided to introduce a selection of concepts that are further described below in the detailed description. This summary is intended neither to identify key features or essential features of the claimed subject matter, nor to be used to limit the scope of the claimed subject matter; rather, this summary is intended to provide an overview of the subject matter described in this document. Accordingly, it will be appreciated that the above-described features are merely examples, and that other features, aspects, and advantages of the subject matter described herein will become apparent from the following detailed description, figures, and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features and advantages will be better and more completely understood by referring to the following detailed description of example non-limiting illustrative embodiments in conjunction with the drawings of which:
FIG. 1 illustrates a non-limiting example function block diagram of a computer-implemented exchange system that interfaces with a blockchain according to certain example embodiments;
FIGS. 2 A- 2 D is a series of flow charts of an example process that may be implemented using example blockchain based exchange techniques according to certain example embodiments
FIGS. 3 A- 3 I is a series of illustrative diagrams that show processes that may be performed as part of a blockchain based exchange system;
FIG. 4 illustrates a process to performing transactions against a blockchain according to certain example embodiments; and
FIG. 5 is an example computer system according to certain example embodiments.
DETAILED DESCRIPTION
In the following description, for purposes of explanation and non-limitation, specific details are set forth, such as particular nodes, functional entities, techniques, protocols, etc. in order to provide an understanding of the described technology. It will be apparent to one skilled in the art that other embodiments may be practiced apart from the specific details described below. In other instances, detailed descriptions of well-known methods, devices, techniques, etc. are omitted so as not to obscure the description with unnecessary detail.
Sections are used in this Detailed Description solely in order to orient the reader as to the general subject matter of each section; as will be seen below, the description of many features spans multiple sections, and headings should not be read as affecting the meaning of the description included in any section.
Overview
In certain example embodiments, a computer system (i.e., an exchange computer system) stores two sorted lists of received electronic data messages that include data transaction requests (e.g. orders). When a match is identified between two (or more) orders, the exchange generates new blockchain identifiers to facilitate the blockchain transactions that will be generated. These identifiers are used by the respective clients associated with the matched orders to generate and submit blockchain transactions to a blockchain for verification thereon. Meanwhile the exchange monitors the blockchain to determine when both transactions have been verified by the blockchain (e.g., incorporated/included into one or more verified blocks of the blockchain).
FIG. 1 illustrates a non-limiting example function block diagram of an exchange computer system coupled via a network to a client system configured to create and place orders with the exchange. The exchange interacts with a blockchain. FIGS. 2 A- 2 D an example process performed by an exchange computing system, client devices, trading parties, and a blockchain. FIGS. 3 A- 3 I show another illustration of how client devices, exchange, and the blockchain perform the example processes described herein. FIG. 4 is another diagram that shows the example process discussed in connection with FIGS. 2 A- 3 I . FIG. 5 shows an example hardware architecture used, in some embodiments, to implement the features shown in FIG. 1 through FIG. 4 .
FIG. 1
By way of introduction, FIG. 1 shows a block diagram of an exchange computer system 100 that interfaces with a blockchain 116 and one or more user computing devices 120 A and 120 B via a network 110 (e.g., the Internet).
Exchange computer system 100 (which may also be termed an exchange computing system, computing system, or computer system) includes a hardware processor 102 (e.g., one or more CPUs) coupled to electronic data storage (e.g., volatile or non-volatile memory) that includes digital wallet 104 and order book 106 . Digital wallet 104 and/or order book 106 may be data structures or other logical structures used to store associated data on common or dedicate electronic data storage (e.g., RAM, or a hard-drive). In certain example embodiments, dedicated hardware devices, such as a hardware security module (HSM), may be used to store information associated with digital wallet 104 or order book 106 . In certain example embodiments, wallet memory may be stored on a dedicated storage hardware externally provided and in communication with exchange computer system 100 .
Digital wallet 104 stores blockchain wallet information for users of user device 1 and user device 2 (and other clients or users that user the functionality provided by exchange computer system 100 ). A digital wallet is software and hardware, or specifically designed hardware, that stores information that allows an individual to make electronic commerce transactions that use, for example, a blockchain. The digital wallet can include or store a data structure that holds a private key (e.g., that is known to the holder of the wallet) and a series of identifiers (sometimes call wallet identifiers or walletIDs herein) that have been generated based on the private key. These identifiers are used to allow other users to âsendâ transactions, which are recorded on the blockchain, to that identifier. Software (e.g., a digital wallet application) associated with the stored information in the wallet may then be used to query the blockchain to determine what unspent transactions (e.g., those transaction outputs not used as input for another transaction) are associated with the identifiers that are in the wallet. Such software may then present a holistic view (e.g., via a graphical user interface) of what is âownedâ by the holder of the wallet. For example, one hundred different blockchain transactions, which are each associated with 1 share of a company, may each be associated with different identifiers that have been generated using the same private key. While each transaction may appear (from the perspective of an outside third party) to be associated with a different identifier, the holder of the private key (and corresponding digital wallet) may be able to use the digital wallet to identify each the one-hundred separate transactions and belong in their wallet. The digital wallet may be programmed to provide a holistic view of all transactions that are associated with identifiers generated from the one or more private keys of a given digital wallet. Accordingly, in this example, a user may be presented with a view that they hold 100 shares of the company (as opposed to 100 separate transactions of 1 share). Thus, the identifiers that are used and/or included in the digital wallet 104 may provide blockchain transparency from the perspective of the user of the digital wallet.
In certain example embodiments, a digital wallet and its contents (e.g., private key and generated identifiers) are stored on a user controlled device 120 A or 120 B. In such an example, user devices 120 A may transmit the identifiers and/or private key to the exchange computer system 100 for use thereby. Various elements of the digital wallet may thus be provided on the device of a user (e.g., that is owned by the user), the exchange computer system 100 , or another third party system (e.g., a cloud based system that stores digital wallets and the information therein).
Wallet identifiers (and/or the private key of the wallet) that are stored in digital wallet 104 allow exchange computer system 100 to interact with blockchain 116 on behalf of the âownerâ of the wallet. In certain example embodiments, the entity running the exchange computer system 100 may also store a digital wallet that includes a private key and wallet identifiers that allow customers to send payments to the exchange (e.g., transaction fees).
In certain example embodiments, the transactions on the blockchain 116 may include so-called âcolored-coins.â Colored coins are added on top of a traditional blockchain transaction and are used to identify additional digital data, which may in turn be associated with a tradable asset (e.g., a digital representation thereof). The mapping between a colored coin and additional information regarding the tradable asset may be stored in database 118 of exchange computer system 100 . Tradable assets can include securities or other types of tradable goods or financial products. In certain instances, tradable assets can also include digital (Bitcoin) and real currency (e.g., U.S. dollars).
Order book 106 stores electronic data messages that have been received from order submitting clients (such as clients controlling a remote computing device such as user device 1 or 2 ). In certain example embodiments, order book 106 stores a list of electronic data messages. In certain implementations, two separately ordered lists are stored and maintained per type identifier (e.g., per ticker symbol or other asset identifier). The two lists may correspond to the buy and sell or bid and ask âsidesâ of an order book for a ticker symbol. The messages may be sorted according to one or more of: price, size, order submitting entity, time, time in the order book, etc. In certain examples, an order book is divided into two sides (side x and side y, which may be buy and sell sides). As an example, in some embodiments, the order book 106 stores, for a given type identifier (e.g., âAAPLâ), an ordered list of buy orders for that type identifier and an ordered list of sell orders for that type identifier, where the two ordered lists are ordered according to factors such as price, size, and/or time, etc., An electronic data message that includes a new data transaction request (also referred to as an order in this and other examples herein) is received by the exchange computer system 100 via network interface 108 from an order submitting client (e.g., user device 1 or user device 2 ). Upon reception of the message, the hardware processor 102 may attempt to match the order included in the newly received electronic data message to existing orders stored in the order book 106 . Alternatively, or in addition (e.g., if no match is found), the received electronic data message and/or its order is stored to the order book 106 for matching against future incoming electronic data messages that include orders.
Once a potential match is identified by the exchange computer system 100 , then the matched orders are âtradedâ and settled by using blockchain 116 . Exchange computer system 100 monitors the blockchain 116 to confirm the trades have taken place and based on this monitoring further processing may be performed (e.g., satisfying regulatory requirements, auditing, logging, etc. . . . ).
Exchange computer system 100 may be coupled to (or include) database 118 . Database 118 may hold account information, audit information, mappings between blockchain transactions, colored coin mappings (e.g., a list of asset or type identifiers and the asset or type that those identifiers correspond to), and other data. In certain example embodiments, each asset may have or correspond to a private key. The private key may control the new creation of ânewâ instances of the asset on the blockchain (just like the private key of a client controls the creation of new blockchain addresses based on that private key).
FIGS. 2 A- 2 D
FIG. 2 A shows a diagram of an example process that may be implemented according to certain example embodiments. FIG. 2 A includes a user device for trading party A 120 A (sometimes referred to as computing device A), a user device for trading party B (sometimes referred to as computing device B), a blockchain computer system 214 that stored a distributed ledger or blockchain (e.g., blockchain 116 ), and exchange computer system 100 . Blockchain computer system 214 may be a public blockchain system that includes many different individual computer systems that are operated by different entities that maintain a single blockchain. Alternatively, blockchain computer system 214 may include one or more individual computer systems that are all operated by a single entity (e.g., a private or closed blockchain computer system). In certain examples, the entity that operates the exchange computer system 100 may also operate and maintain the blockchain computer system 214 (or a portion thereof) and the blockchain 116 that is maintained by those systems.
The blockchain computer system 214 includes multiple different computer nodes that each operate to âmineâ and thereby validate transactions submitted to the blockchain 116 . Generally, only one of the nodes needs to âreceiveâ a transaction that has been submitted from a client. Once one node receives a transaction it may propagate the transaction to other nodes within the blockchain computer system 214 .
Each transaction (or a block of transactions) is incorporated/included into the blockchain 116 via a proof-of-work mining process. The mining process may involve solving a computationally difficult problem that is also easy to verify. For example, each node may attempt to âmineâ a solution to the hash of a block or a transaction. Hashes (also referred to herein as âhash functions,â âcryptographic hash functions,â and the like) include functions that map an initial input data set to an output data set. The output from a hash function may be referred to herein as a âhash identifier,â âhash value,â âhash data set,â or simply, a âhashâ). Generally, the output values from a given hash function have the same fixed length. Generally, if the same hash function is used on the same input data it will result in the same output data value. With some hash functions (including those used in the context of blockchain techniques and/or the subject matter of this application) the input value is computationally difficult to determine when only the output value is known. In certain examples, the input value for the hash function is supplemented with some additional random data. For example, an input value of âblockchainâ for a hash function may include addition random data such as three random characters. Accordingly, the data value that is hashed may be âblockchaina5hâ instead of simply âblockchain.â The additional random data is sometimes called a ânonce.â
In order to validate a new block into the blockchain, the proof of work process (or hash operation process) that is performed may include finding an input hash value (i.e., the block) that results in an output hash value that meets a given condition. As the data related to the blockchain transactions in the block are fixed, miners (e.g., nodes on the blockchain) modify the nonce value that is included as part of the block being validated until the output value of the hash function meets the given condition. For example, a target output value may have 5 zeros as the first four numbers of the hash. This is a problem that may be computationally difficult to determine, yet relatively easy to verify. Each node that is part of the blockchain may also keep a copy or a portion of the blockchain 116 in storage (e.g., on disk or in RAM) that is local to the corresponding node.
Computing devices A and B ( 120 A and 120 B respectively) may include user systems (e.g., a user device such as smart phone, tablet, computer, or other computing device as described in connection with FIG. 5 or FIG. 1 ). In certain example embodiments, computing device A 120 A and computing device B 120 B may be a computer system that is controlled or operated by a traditional broker or other âmiddle-man.â In certain example embodiments, computing devices A and B may be used by a human end user (e.g., the entity or person that ultimately will âownâ the asset in question or a person that is affiliated with the entity that will ultimately own the asset in question). Alternatively, and/or in addition, computing devices A and/or B may be included as part of the exchange computer system 100 and be part of a computer system that is operated by users, clients, customers, etc., of the exchange computer system 100 . For example, computing devices A and/or B may be hosted in the cloud or with the computing resources of exchange computer system 100 ). In other words, the processing resources that are used to carry out functionality that is described in connection with computing device A 120 A and computing device B 120 B may be remotely located from a computing device to which a user provides input this may be a âhostedâ computing option.
At step 230 , the trading party A's computing device 120 A sends a request (e.g., that is carried in an electronic data message) to the electronic exchange computing system 100 to create a new wallet for a corresponding trading party account. A trading party (as opposed to the device used by the trading party) can represent a user (e.g., a person), organization (e.g., a corporation), or other entity that is assigned an account (a trading party account) for electronically interacting with the electronic exchange computer system 100 . In certain example embodiments, step 230 may be an internal API call within the exchange computer system 100 (e.g., that is triggered based on a request from a user device controlled by a user).
In response to reception of the wallet request, the exchange computer system 100 executes a process that includes creation or assignment of a digital wallet (wallet) 232 that is or will be used by the trading party to trade assets as described herein. As also discussed herein, the digital wallet usually does not âholdâ assets, but rather includes unique identifier(s) and one or more private key(s) are used to identify which trading party owns or is associated with a particular transaction that is part of the blockchain 116 (e.g., a blockchain transaction). The unique identifiers in the blockchain transaction may be used to link, identify, represent, or otherwise indicate which asset record (e.g., stored separately from blockchain 116 that is stored on blockchain computer system 214 ) belongs âinâ which digital wallet.
As a variation of what is described above, in some embodiments, instead of step 230 involving in the creation of a new digital wallet, step 230 may instead involve the registration of previously-created wallet with the electronic exchange computing system 100 . In such an embodiment, computing device A may receive user input from the user that indicates, for example, a walletID (e.g., a bitcoin address), a corresponding public key, and/or a corresponding private key; and at step 230 , this information (i.e., the walletID, public key, private key, or other information) is transmitted by computing device A to the electronic exchange computing system 100 for storage in the digital wallet database 104 .
Once the digital wallet is created (or otherwise registered) at step 232 , the wallet information (or confirmation in the case of registration) may be transmitted to computing device A 120 A for storage therewith. For example, the private, public, and/or generated blockchain addresses maybe transmitted to computing device A 120 A. This data may be used later to generate and submit a transaction to blockchain computer system 214 and blockchain 116 . As with other transmissions, to/from computing device A and B, those transmissions or steps may be to/from an intermediary computer system (e.g., the is operated by a broker) or may be internal API transmissions that are part of exchange computer system 100 .
At step 236 , computer device A transmits an electronic data message to the exchange computing system 100 . The electronic data message includes a data transaction request for the exchange computer system 100 to carry out one or more tasks based on the content of the electronic data message. In certain examples, the data transaction request may be or include an order to âbuyâ or âsellâ certain assets.
In certain example embodiments, the exchange stores a list of asset or type identifiers in database 118 and each of these identifiers corresponds to one or more types of assets or âtypesâ of transactions that may be subject to an electronic data transaction request and/or order contained therein. In certain instances, all newly received orders reference or indicate one of the stored asset types and may thus be associated with the colored coins as discussed herein. In certain example embodiments the asset identifier may be a ticker symbol. In other example embodiments, the asset identifier may be a globally unique identifier (GUID) that corresponds to a ticker symbol. The order may also include information that indicates the trading party (i.e., the trading party account on whose behalf the order is submitted); this information may be or include a reference to a particular digital wallet of the trading party (e.g., Joe's wallet), and/or a specific walletID (e.g., a cryptographically generated identifier that is stored in the wallet). The order may also include the amount that is to be transacted, specific handling instructions for the order (e.g., a limit order, a market order, etc. . . . ), an amount of asset(s) the trading party wishes in return (this could include another type of asset, e.g., 10 shares of stock A for 10 shares of stock B, money such $10, an amount of crypto-currency, or other tradable items).
In step 238 , the exchange computer system 100 performs a validation process on the order indicated in the received electronic data message. In some embodiments, this includes the exchange computer system 100 checking that the trading party for the order is associated with the items that the order is offering to trade. For example, if the order indicates that 100 shares of AAPL should be sold, then the exchange computing system 100 will query the blockchain system 214 to ensure that the trading party associated with the order owns (or has access to) 100 shares of AAPL. In other words, the exchange computer system 100 may automatically determine if there an unspent transaction (or multiple transactions) on the blockchain that the trading party (or its walletIDs) is associated with that meets or exceeds the 100 shares of AAPL. In connection with step 238 , if this validation process fails (e.g., the trading party does not own 100 shares of AAPL), then the submitted order is rejected and a corresponding message is sent to computing device A 120 A in step 240 .
In certain example embodiments, the validation process of step 238 may alternatively or additionally include validations related to the particular asset. For example, the validation process may determine if the asset is one traded on the exchange computer system 100 . The validation process may determine if the quantity or the price associated with the order or trade request is a valid value. In certain examples, the validations (e.g., the minimum/maximum price or quantity) may be based on the particular type of the asset which the order seeks to trade.
In step 242 , if the order is valid, and as part of the order booking process, the exchange computer system 100 saves the newly submitted order to the order book 106 . The exchange computer system 100 may then produce data associated with orders that are pending in the order book (see FIG. 3 D ). The exchange computer system 100 may also store the wallet information associated with the submitted order for later use by the exchange computer system 100 . The wallet information may be stored as part of digital wallet 104 or in database 118 (e.g., that stores an express link between wallet information and data transactions requests).
In step 243 , the exchange computer system 100 generates market data based on the order book (e.g., every time there is a change to the order book) and transmits the market data to computing device A 120 A and/or other 3rd party computer systems. It will be appreciated that the market data feed may be a continuing process that is triggered whenever there is a change to the order book (e.g., a modification to an existing order, the addition of a new order, the match of two or more orders, etc. . . . ). Accordingly, new messages that are part of the market data feed may be generated and transmitted throughout the process of receiving, matching, or otherwise modifying orders that are present in the order book 104 .
Turning to FIG. 2 B , in step 244 , a match process may be run against orders in the order book. The matching process identifies if there is a match between two or more orders in the order book. For example, a new received order âAâ that is of size 10 may be matched against two contra-side orders that are each of size 5 . In certain examples, each of the three parties to the identified trade may construct and submit a blockchain traction to the blockchain for validation thereon. In certain examples, the match process may be run each time a new order is received (either before or after the order is added to the order book). For example, a matching engine may be executed by hardware processor 102 .
In step 246 , should the newly received order (or a current order in the order book) be identified to match another order stored in the order book (e.g., based upon order handling and matching rules implemented by the exchange computer system 100 for the asset(s) being traded for), then the exchange computer system 100 notifies (in steps 248 and 249 ) each trading party (e.g., a computer device associated with users that corresponds to the trading parties) that a match has been identified and a trade will/is going to take place. This information may then cause (e.g., by using application software installed on the corresponding device) the client computer system (or other computer system) to generate and submit a blockchain transaction to the blockchain based on the received information. The notification includes details of the trade or transaction that is to be recorded (e.g., where one transaction represents a transaction from A to B, another transaction represents a transaction from B to A, and a trade is a collection or group of transactions, such as, B sends A quantity X of an asset and A sends B digital currency or another asset). In certain examples, the trade information includes an asset identifier and a quantity. The asset identifier and quantity may be included in the generated blockchain transaction. In certain example embodiments, the trade information may be associated with a unique identifier (a GUID) that is used to identify the trade that has been identified between A and B (e.g., a trade identifier). This information may be used by the exchange computer system 100 to subsequently correlate (e.g., as part of step 262 ) verified blockchain transactions to records stored by the exchange that the trade is pending or awaiting verification.
Then, the exchange computer system 100 applies a cryptographic hash to the wallet associated with trading party A (or to some data, such as the private key, contained within the wallet associated with trading party A), to generate wallet A hashed information. In step 251 , the exchange computer system 100 transmits wallet A hashed information to computing device B 120 B. Similarly, the exchange system 100 applies a cryptographic hash to the wallet associated with trading party B (or to some data contained within the wallet associated with trading party B), to generate wallet B hashed information. In step 250 , the exchange computer system 100 transmits the wallet B hashed information to computing device A 120 A. In certain examples, the hash that is used by the exchange computer system 100 may be based on information about the trade itself to verify that the parties exchange the agreed assets with each other. For example, the hash may be a function of data from wallet A and data from trade A.
In certain example embodiments, the electronic exchange computer system 100 transmits additional information to each of computing device A 120 B and computing device B 120 B that may include, for example, pending trade information regarding the trade agreed to by the trading parties. The information that is transmitted to computing device A 120 B and computing device B 120 B may then cause the corresponding computing device to generate and submit a blockchain transaction based on the received information.
In an alternative embodiment, the exchange computer system 100 communicates the hashed wallet information through an internal process such that when a transaction is submitted to the blockchain system 214 it is submitted from the exchange computer system 100 rather than, for example, computing device A 120 A. In such an instance, the functional elements that are executed by computing device A 120 A and computing device B 120 B may be processed or executed by the exchange computer system 100 or another computer system that is operated by the entity operating the exchange computer system 100 . For example, once a user has submitted an order from their corresponding device (or through the computer system of a broker), the exchange 100 may perform the subsequent steps related to completion of a trade and recordation in blockchain 116 .
Should step 244 , which includes the match process, fail to find a valid match for the order submitted by trading party 210 , then the exchange computer system 100 may add the order to the order book 106 at step 252 and send an acknowledgement data message to computing device A 120 A that the order is booked in the order book 106 of the exchange computer system 100 at step 254 where the process ends and the exchange computer system 100 may return to waiting for another order to be submitted (e.g., to step 236 or 238 ).
In certain examples, the exchange computer system 100 may also require a transaction fee. This fee may be generated as an additional blockchain transaction that is between trading party A or trading party B and an account that represents exchange computer system 100 . In certain examples, this transaction may be completed and entered in the blockchain 116 . For example, computing device A 120 A may receive information (e.g., the public key of the digital wallet of exchange) from exchange computer system 100 to generate a blockchain transaction that will âtransfer,â for example, Bitcoin or some other asset from the digital wallet of trading party A to the digital wallet of the exchange. This generated blockchain transaction may then be submitted from computing device A 120 A. The transaction fee may vary based on the type of asset being traded. In certain examples, the exchange computing system may support order modification and cancelation.
Returning to FIG. 2 B , once computing devices 120 A and 120 B receive the trade and/or wallet information in steps 248 , 249 , 250 , and 251 , both devices begin the process of transferring the agreed upon assets to each other.
In FIG. 2 C and in step 256 , computing device A 120 A generates a blockchain transaction using the previously received trade and/or wallet information (e.g., that includes information of trading party B's digital wallet) and transmits the generated blockchain transaction to blockchain computer system 214 at step 257 . Similarly, computing device B 120 B (the counter party) generates a blockchain transaction at step 258 and transmits the transaction to blockchain computer system 214 at step 259 . For example, a transaction message is generated that specifies the transfer of assets (e.g., 100 shares of AAPL) from one trading party (e.g., A) to the hashed wallet information that is associated with the counter party (e.g., B). The counter-transaction (e.g., generated by computing device B 120 AB) may specify the transfer of some other assets (e.g., USD, bitcoin, other asset types, etc. . . . ). The transaction and the counter-transaction make up the trade that was identified by the exchange computer system 100 in step 246 .
In certain examples, the cryptographically hashed wallet information allows the trading parties to anonymously send the assets to each other by using the blockchain. Anonymity is maintained because the sending trading party will not be able to determine the receiving trading party because it is mathematically infeasible for a third party to determine the underlying wallet (e.g., the trading party) that the hashed wallet information is associated with. Instead, only the exchange computing system and the trading party (along with 3 rd parties notified by either of these entities) will know who is associated with the hashed wallet information. Further, hashed wallet information may be generated for each new potential match. Thus, a wallet may be associated with many different blockchain transactions and/or hashes to make up the whole of what is âownedâ by a given trading party. For example, the wallet associated with Trading Party A may have a different blockchain address generated for each of the identified matches. Only Trading Party A (and the exchange system and any party notified by the exchange system or trading party A) may have a complete view as to what transactions or assets are associated with the digital wallet of Trading Party A.
In certain example embodiments, the exchange computer system 100 may formulate and submit the transactions to the blockchain computer system 214 for inclusion into the maintained blockchain 116 . In other words, the exchange computer system 100 may act on behalf of the trading parties to complete the trade and write the trade to the distributed ledger that is the blockchain 116 . In certain example embodiments, a trading party (e.g., a user, a broker, etc. . . . ) provides input to a computing device (e.g., computing device A 120 A) and a corresponding electronic data message is generated using a software application installed on that device. The generated electronic data message is then transmitted to, for example, exchange computer system 100 . Similarly, a trading party that âreceivesâ electronic data messages in fact receives such messages on a corresponding computing device that is being used by the trading party.
In step 260 , the transactions submitted by computing device A 120 A and computing device B 120 B are âminedâ by individual nodes that make up the blockchain computer system 214 to validate the submitted transactions and are eventually written to the blockchain 116 (e.g., the public or private ledger). Generally, once a blockchain transaction is submitted for verification it is received by one or more of the computer nodes (e.g., individual computers that may each correspond to the architecture shown in FIG. 5 ) within the blockchain computer system 214 . Once received by a node, that node will propagate the blockchain transaction to other nodes within the blockchain computer system. Each node then performs a mining process on the transaction (or a group of transactions called âblocksâ). The mining process is a process for solving a computationally difficult problem that is also easy to verify. In some embodiments, this includes solving a cryptographic hash algorithm or function. The solution to the problem is generally called a proof of work and is included with the transaction or block of transactions as a record that transaction has been âsolvedâ or verified. Accordingly, once a new block for the submitted transactions is generated and verified into the blockchain it is part of the blockchain.
In step 262 , the exchange computer system 100 monitors (e.g., continuously monitors) the blockchain of the blockchain computer system 214 for trades that are pending (e.g., marked as pending by the exchange computer system 100 ) and have been submitted to the trading parties for completion on the blockchain. For example, when a new block of the blockchain is completed (and thus published to all nodes of the blockchain system), the exchange computer system 100 determines if the earlier provided hashed wallet information, which may now be part of the new block of the blockchain is present therein. In certain example embodiments, the exchange computer system maintains a local copy of the blockchain in local memory for this process. For example, the exchange computer system 100 includes processing resources (e.g., CPUs, GPUs) that are used to âmineâ blockchain transactions. Accordingly, one or more nodes of the exchange computer system may be included in the exchange computer system 100
In step 264 , the exchange computer system 100 determines if both trading parties have exchanged the correct assets. In other words, the exchange computer system 100 determines if transactions exist in the blockchain 116 that show transactions that correspond the previously matched orders.
In conjunction with verifying the blockchain data (e.g., if an exchange has taken place), the exchange computer system 100 also updates a transaction log, appropriate ledgers, and creates new audit log entries in step 265 . This information can then be used to produce Consolidated Audit Trail (CAT) information that may be stored in database 118 .
In FIG. 2 D and in step 266 , if the exchange computer system 100 determines that either trading party has failed to transfer the agreed to assets in an agreed upon timeframe, the exchange computer system 100 may issue a data instruction to the blockchain that revokes any partial or failed transaction in step 270 , which then returns the assets to their original owners. In certain example embodiments, this revocation process may be built into the submitted transactions (e.g., as a script that is part of the generated blockchain transactions) or may be another transaction that transfers an asset back to the original owner.
In certain example embodiments, the electronic exchange computer system 100 indicates the âbrokenâ trade to each party and removes the pending trade from the order book (e.g., both orders may be placed back into the order book as normal). In certain examples, the time frame for completion of an order will be determined by the electronic exchange computer system 100 based on the type of asset or may be provided in the order handling instructions received from a trading party. For example, if the exchange computer system 100 has not verified a complete trade (e.g., one transaction from A to B and another from B to A), it may automatically generate a new blockchain transaction that revokes any portions of the trade. For example, if a transaction from A to B is included in the blockchain, but a transaction from B to A is not present, the exchange computer system may generate a counter blockchain transaction that returns the assets that were âtransferredâ as a result of the A to B transaction.
In step 272 , if the correct assets have been exchanged, the electronic exchange computer system 100 removes the pending trades associated with this completed trade from the order book 106 , marks the trade complete, produces market data indicated the trade (e.g., step 243 ), and/or reports clearing and settlement to the depository of the given asset(s). In certain example embodiments, the exchange computer system 100 may wait for a certain number of blocks to be subsequently generated after the block that includes the transactions. For example, the exchange may wait until the block with the transactions in questions are at least five levels deep in the blockchain. These subsequent blocks act to further verify transactions have been completed and cannot be tampered with (due to the verification of every block depending on the proof-of-work of the prior block).
As part of the blockchain process, a miner's computer system may update its wallet with a mining fee associated with the transactions that have been mined for the blockchain. In certain examples, the blockchain system may be privately operated (e.g., by the operator of the exchange) and this fee may be a transaction fee charged by the exchange computing system 100 (as described above).
In steps 274 and 276 , each trading party monitors the blockchain and updates the view that the respective wallets provide of the blockchain to indicate the assets now held by the corresponding trading party.
FIGS. 3 A- 3 I
FIGS. 3 A- 3 I is a series of illustrative diagrams that show processes that may be performed as part of a blockchain based exchange computer system according to certain example embodiments.
In FIG. 3 A , exchange computer system 100 includes order book 104 , which stores pending orders, and digital wallet storage 104 that is stored in volatile or non-volatile storage (e.g., RAM or on disk). A digital wallet 306 for client1 includes a wallet identifier 310 . As described herein a digital wallet (e.g., 306 and 308 ) is a software program that can be installed on a client computer system operated by a (e.g., user device 120 A), a broker computer system, the exchange computer system 100 , or some other computer system that allow a client or trading party to interact with the contents of the wallet (e.g., wallet identifier 310 or a private key). Similarly, digital wallet 308 for client2 includes wallet identifier 312 . Both wallet 306 and 308 contain assets that are associated with that wallet. As explained herein, the wallets do not actually âcontainâ the assets in question (e.g., like a physical wallet would contain a $10 bill), but rather hold a key that is used to show proof of ownership for a transaction that is part of the blockchain. The assets in question may be associated with particular transactions within the blockchain that are tracked and managed by exchange computing system 100 .
In the following examples, digital wallets 306 and 308 are stored on client computer system (e.g. user device 120 A or 120 B, which may also correspond to a computer described in connection with FIG. 5 ). Accordingly, when a wallet sends or receives data messages (or client1 or client2 âsendâ or âreceiveâ), the sending and receiving functions may be performed by a corresponding transceiver of the user computer system that is storing the digital wallet data and executing the digital wallet application program. However, as explained herein and in alternative embodiments, digital wallets may also be stored and executed on exchange computer system 100 .
In FIG. 3 B , wallet 306 sends an electronic data message to exchange computer system 100 with an instruction to sell 10 AAPL @ 100 EUR. Exchange computer system 100 responds to this message with a small transaction fee of 0.001 BTC, which the client computer system of client1 submits to the blockchain, thus transferring 0.001 BTC to the digital wallet of exchange computer system 100 . Also included in the electronic data message transmitted exchange computer system 100 is wallet identifier 310 . As explained herein wallet identifier 310 may include the private key or other identifier or data. For example, the wallet identifier 310 may be or have been generated based on the private key (e.g., generated as a result of an elliptical curve encryption algorithm) of client 1's digital wallet.
In certain examples, a view of a digital wallet is provided on a client computer system (e.g., a smart phone) and the digital wallet (e.g., that contains public/private keys, identifiers, etc. . . . ) is stored on exchange computing system 100 . Thus, electronic data messages transmitted from a computing device of a trading party may simply provide an order to sell an amount of shares of stock A and the exchange computing system 100 (or another computing system) may determine the specific blockchain related elements that need to be generated and formatted in order for the order to be successfully placed according to the techniques described herein.
In FIG. 3 C , the electronic data message sent from client1 (or the contents thereof) is stored to the exchange computer system 100 . In particular, the order to sell 10 AAPL @ 100 EUR is added to the order book and the wallet identifier 310 is added to wallet management of the exchange 100 .
In certain examples, the wallet storage of exchange 100 may be backed by hardware that is integrated with an enterprise hardware security module (HSM).
In FIG. 3 D , data (e.g., market data) regarding orders or electronic messages that are in the order book 104 may be produced by exchange computing system 100 and delivered to remote computing clients via market data hub 314 . In certain examples embodiments, a real-time feed such as TotalView-ITCH from Nasdaq may be used. Such a marke
CLAIMS
Claims ( 20 )
The invention claimed is:
1. A system comprising:
electronic data storage configured to:
store a plurality of data transaction requests; and
store a plurality of digital wallets that are each associated with at least one corresponding private cryptographic key and at least one blockchain address that has been generated based on the at least one private cryptographic key;
at least one hardware processor that is configured to execute executable instructions that are configured to cause the at least one hardware processor to perform operations comprising:
communicating with at least one computing node of a distributed blockchain computer system that includes multiple computing nodes, each computing node storing a copy, or a portion thereof, of a blockchain of the distributed blockchain computer system;
processing a first data transaction request that has been received, the first data transaction request associated with a first digital wallet of the plurality of digital wallets, the first data transaction request including a request to swap a first resource for a second resource;
processing a second data transaction request that has been received, the second data transaction request associated with a second digital wallet of the plurality of digital wallets, the second data transaction request including a request to swap the second resource for the first resource;
performing a trading process that includes generating a trade transaction between the first resource and the second resource that is based on at least the first data transaction request of the plurality of data transaction requests and the second data transaction request of the plurality of data transaction requests;
based on performance of the trading process that generates the trade transaction between the first resource and the second resource:
(a) generating a first hash identifier based on data included in the first digital wallet;
(b) generating a second hash identifier based on data included in the second digital wallet;
(c) generating a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; and
(d) generating a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated second blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system;
determining that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid; and
based on verification that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid, updating at least one record of a database that is separate from the blockchain of the distributed blockchain computing system.
2. The system of claim 1 , wherein a node of the distributed blockchain computer system includes the at least one hardware processor, wherein the operations further comprise:
executing, in connection with the performance of the trading process, a smart contract process.
3. The system of claim 1 , wherein at least one of the first blockchain transaction and the second blockchain transaction includes a script configured to trigger a revocation process.
4. The system of claim 1 , wherein at least one of the first blockchain transaction and the second blockchain transaction includes a conditional trigger to unlock blockchain transaction outputs.
5. The system of claim 4 , wherein the conditional trigger is based on an amount of time.
6. The system of claim 1 , wherein the first and second blockchain transactions are each generated to require at least two cryptographic keys in order to use outputs from the respective blockchain transactions in further blockchain transactions.
7. The system of claim 6 , where one of the at least two cryptographic keys is a cryptographic key of a party that operates the trading process.
8. The system of claim 1 , wherein the operations further comprise:
storing a list of asset records that are each associated with a corresponding type identifier; and
determining whether a data value that represents or is the corresponding type identifier is included in a blockchain transaction that is being verified.
9. The system of claim 1 , wherein the generated first blockchain transaction or the generated second blockchain transaction includes a type identifier that is associated therewith and a quantity value that is associated therewith.
10. The system of claim 1 , wherein at least one of the first data transaction request and the second data transaction request is stored to an order book data structure.
11. The system of claim 1 , wherein the operations further comprise:
executing a matching engine process, wherein the performed trading process is based on the matching engine process.
12. The system of claim 1 , wherein a new hash identifier is generated for each match that is determined between the first data transaction request and another data transaction request.
13. The system of claim 1 , wherein a new, different, hash identifier is generated each time a data transaction request that is associated with the first digital wallet is matched.
14. A method that is performed on a computer system, the method comprising:
storing, to electronic data storage, a plurality of data transaction requests;
storing, to the electronic data storage, a plurality of digital wallets that are each associated with at least one corresponding private cryptographic key and at least one blockchain address that has been generated based on the at least one private cryptographic key;
communicating with at least one computing node of a distributed blockchain computer system that includes multiple computing nodes, each computing node storing a copy, or a portion thereof, of a blockchain of the distributed blockchain computer system;
processing, using at least one hardware processor, a first data transaction request that has been received, the first data transaction request associated with a first digital wallet of the plurality of digital wallets, the first data transaction request including a request to swap a first resource for a second resource;
processing, using the at least one hardware processor, a second data transaction request that has been received, the second data transaction request associated with a second digital wallet of the plurality of digital wallets, the second data transaction request including a request to swap the second resource for the first resource;
performing a trading process that includes generating a trade transaction between the first resource and the second resource that is based on at least the first data transaction request of the plurality of data transaction requests and the second data transaction request of the plurality of data transaction requests;
based on performance of the trading process that generates the trade transaction between the first resource and the second resource:
(a) generating a first hash identifier based on data included in the first digital wallet;
(b) generating a second hash identifier based on data included in the second digital wallet;
(c) generating a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; and
(d) generating a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated second blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system;
determining that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid; and
based on verification that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid, updating at least one record of a database that is separate from the blockchain of the distributed blockchain computing system.
15. The method of claim 14 , wherein a node of the distributed blockchain computer system includes the at least one hardware processor, the method further comprising:
executing, in connection with the performance of the trading process, a smart contract process.
16. The method of claim 14 , wherein at least one of the first blockchain transaction and the second blockchain transaction includes a script configured to trigger a revocation process.
17. The method of claim 14 , wherein at least one of the first blockchain transaction and the second blockchain transaction includes a conditional trigger to unlock blockchain transaction outputs.
18. The method of claim 17 , wherein the conditional trigger is based on an amount of time.
19. The method of claim 14 , further comprising:
executing a matching engine process, wherein the performed trading process is based on the matching engine process.
20. A non-transitory computer readable storage medium having stored thereon computer readable instructions for use with a computer system that includes at least one processor, and a memory, the stored computer readable instructions comprising instructions that, when executed by the computer system, cause the computer system to perform operations comprising:
storing, to electronic data storage, a plurality of data transaction requests;
storing, to the electronic data storage, a plurality of digital wallets that are each associated with at least one corresponding private cryptographic key and at least one blockchain address that has been generated based on the at least one private cryptographic key;
communicating with at least one computing node of a distributed blockchain computer system that includes multiple computing nodes, each computing node storing a copy, or a portion thereof, of a blockchain of the distributed blockchain computer system;
processing, using at least one hardware processor, a first data transaction request that has been received, the first data transaction request associated with a first digital wallet of the plurality of digital wallets, the first data transaction request including a request to swap a first resource for a second resource;
processing, using the at least one hardware processor, a second data transaction request that has been received, the second data transaction request associated with a second digital wallet of the plurality of digital wallets, the second data transaction request including a request to swap the second resource for the first resource;
performing a trading process that includes generating a trade transaction between the first resource and the second resource that is based on at least the first data transaction request of the plurality of data transaction requests and the second data transaction request of the plurality of data transaction requests;
based on performance of the trading process that generates the trade transaction between the first resource and the second resource:
(a) generating a first hash identifier based on data included in the first digital wallet;
(b) generating a second hash identifier based on data included in the second digital wallet;
(c) generating a first blockchain transaction that is based on the first hash identifier and the second data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated first blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system; and
(d) generating a second blockchain transaction that is based on the second hash identifier and the first data transaction request and submitting, to at least one node of the distributed blockchain computing system, the generated second blockchain transaction for inclusion into the blockchain of the distributed blockchain computing system;
determining that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid; and
based on verification that the first blockchain transaction and the second blockchain transaction that have been submitted to the blockchain are valid, updating at least one record of a database that is separate from the blockchain of the distributed blockchain computing system.
US18/344,547
2015-03-31
2023-06-29
Systems and methods of blockchain transaction recordation
Active
2036-10-13
US12443942B2
( en )
Priority Applications (2)
Application Number
Priority Date
Filing Date
Title
US18/344,547
US12443942B2
( en )
2015-03-31
2023-06-29
Systems and methods of blockchain transaction recordation
US19/336,012
US20260017641A1
( en )
2015-03-31
2025-09-22
Systems and methods of blockchain transaction recordation
Applications Claiming Priority (4)
Application Number
Priority Date
Filing Date
Title
US201562140802P
2015-03-31
2015-03-31
US15/086,801
US11200564B2
( en )
2015-03-31
2016-03-31
Systems and methods of blockchain transaction recordation
US17/395,236
US11734675B2
( en )
2015-03-31
2021-08-05
Systems and methods of blockchain transaction recordation
US18/344,547
US12443942B2
( en )
2015-03-31
2023-06-29
Systems and methods of blockchain transaction recordation
Related Parent Applications (1)
Application Number
Title
Priority Date
Filing Date
US17/395,236
Continuation
US11734675B2
( en )
2015-03-31
2021-08-05
Systems and methods of blockchain transaction recordation
Related Child Applications (1)
Application Number
Title
Priority Date
Filing Date
US19/336,012
Continuation
US20260017641A1
( en )
2015-03-31
2025-09-22
Systems and methods of blockchain transaction recordation
Publications (2)
Publication Number
Publication Date
US20230351367A1
US20230351367A1 ( en )
2023-11-02
US12443942B2
true
US12443942B2 ( en )
2025-10-14
Family
ID=57006280
Family Applications (4)
Application Number
Title
Priority Date
Filing Date
US15/086,801
Active
2036-09-18
US11200564B2
( en )
2015-03-31
2016-03-31
Systems and methods of blockchain transaction recordation
US17/395,236
Active
2036-06-14
US11734675B2
( en )
2015-03-31
2021-08-05
Systems and methods of blockchain transaction recordation
US18/344,547
Active
2036-10-13
US12443942B2
( en )
2015-03-31
2023-06-29
Systems and methods of blockchain transaction recordation
US19/336,012
Pending
US20260017641A1
( en )
2015-03-31
2025-09-22
Systems and methods of blockchain transaction recordation
Family Applications Before (2)
Application Number
Title
Priority Date
Filing Date
US15/086,801
Active
2036-09-18
US11200564B2
( en )
2015-03-31
2016-03-31
Systems and methods of blockchain transaction recordation
US17/395,236
Active
2036-06-14
US11734675B2
( en )
2015-03-31
2021-08-05
Systems and methods of blockchain transaction recordation
Family Applications After (1)
Application Number
Title
Priority Date
Filing Date
US19/336,012
Pending
US20260017641A1
( en )
2015-03-31
2025-09-22
Systems and methods of blockchain transaction recordation
Country Status (9)
Country
Link
US
( 4 )
US11200564B2
( en )
EP
( 1 )
EP3278287A4
( en )
JP
( 1 )
JP6364132B2
( en )
CN
( 1 )
CN107615317A
( en )
AU
( 4 )
AU2016242888A1
( en )
CA
( 1 )
CA2981511C
( en )
HK
( 1 )
HK1249791A1
( en )
SG
( 1 )
SG11201708000PA
( en )
WO
( 1 )
WO2016161073A1
( en )
Families Citing this family (622)
* Cited by examiner, â Cited by third party
Publication number
Priority date
Publication date
Assignee
Title
IT1228468B
( en )
1989-01-16
1991-06-19
Pirelli Cavi Spa
ELEMENT OF A DEVICE FOR MAKING AN ELECTRIC CABLES JOINT, ELECTRIC CABLES JOINT WITH IT OBTAINED AND COATING OF THE CONNECTION OF ELECTRIC CABLES CONDUCTORS FOR THAT JOINT.
AU6219890A
( en )
1989-10-16
1991-04-18
Minnesota Mining And Manufacturing Company
Elastomeric covering having conformable interior
JP3366725B2
( en )
1994-04-21
2003-01-14
ããã½ã¿ ãã¤ãã³ã° ã¢ã³ã ããã¥ãã¡ã¯ãã£ãªã³ã° ã«ã³ããã¼
Connection part covering member
US8874477B2
( en )
2005-10-04
2014-10-28
Steven Mark Hoffberg
Multifactorial optimization system and method
US12093426B2
( en )
2013-11-01
2024-09-17
Anonos Ip Llc
Systems and methods for functionally separating heterogeneous data for analytics, artificial intelligence, and machine learning in global data ecosystems
US11030341B2
( en )
2013-11-01
2021-06-08
Anonos Inc.
Systems and methods for enforcing privacy-respectful, trusted communications
US12591709B2
( en )
2013-11-01
2026-03-31
Anonos Innovations Llc
Systems and methods for functionally separating geospatial information for lawful and trustworthy analytics, artificial intelligence and machine learning
US10592985B2
( en )
2015-03-02
2020-03-17
Dell Products L.P.
Systems and methods for a commodity contracts market using a secure distributed transaction ledger
US9967333B2
( en )
2015-03-02
2018-05-08
Dell Products Lp
Deferred configuration or instruction execution using a secure distributed transaction ledger
US9967334B2
( en )
2015-03-02
2018-05-08
Dell Products Lp
Computing device configuration and management using a secure decentralized transaction ledger
US10484168B2
( en )
*
2015-03-02
2019-11-19
Dell Products L.P.
Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger
US9965628B2
( en )
2015-03-02
2018-05-08
Dell Products Lp
Device reporting and protection systems and methods using a secure distributed transactional ledger
US10535063B2
( en )
*
2015-03-13
2020-01-14
First Data Corporation
Systems and methods for securing digital gift cards with a public ledger
SI3073670T1
( en )
2015-03-27
2021-07-30
Black Gold Coin, Inc.
System and procedure for personal identification and verification
SG11201708000PA
( en )
2015-03-31
2017-10-30
Nasdaq Inc
Systems and methods of blockchain transaction recordation
EP3281163B1
( en )
*
2015-04-05
2023-12-13
Digital Asset (Switzerland) GmbH
Digital asset intermediary electronic settlement platform
US11188899B2
( en )
*
2015-04-07
2021-11-30
Dmg Blockchain Solutions Inc.
Off network identity tracking in anonymous cryptocurrency exchange networks
US10200198B2
( en )
*
2015-06-11
2019-02-05
PeerNova, Inc.
Making cryptographic claims about stored data using an anchoring system
US20170004575A1
( en )
*
2015-07-01
2017-01-05
Chicago Mercantile Exchange Inc.
Dissemination of order status information present on an electronic exchange
US20170011460A1
( en )
*
2015-07-09
2017-01-12
Ouisa, LLC
Systems and methods for trading, clearing and settling securities transactions using blockchain technology
US10504080B2
( en )
*
2015-09-14
2019-12-10
OX Labs Inc.
Cryptographically managingtelecommunications settlement
US11308121B2
( en )
2015-11-04
2022-04-19
Thrive Bioscience, Inc.
Method and system for cell operations using a blockchain data network
US10269012B2
( en )
*
2015-11-06
2019-04-23
Swfl, Inc.
Systems and methods for secure and private communications
US20170132615A1
( en )
*
2015-11-11
2017-05-11
Bank Of America Corporation
Block chain alias for person-to-person payments
WO2017091530A1
( en )
*
2015-11-24
2017-06-01
Gartland & Mellina Group
Blockchain solutions for financial services and other transaction-based industries
US10833843B1
( en )
2015-12-03
2020-11-10
United Services Automobile Association (USAA0
Managing blockchain access
CN108701325B
( en )
*
2015-12-21
2022-11-22
æè¶ç¦å ¬å¸
Self-adjusting transaction system and method therefor
US10116667B2
( en )
*
2016-01-26
2018-10-30
Bank Of America Corporation
System for conversion of an instrument from a non-secured instrument to a secured instrument in a process data network
GEP20207163B
( en )
*
2016-02-08
2020-10-12
Guy Scott
A system and method for document information authenticity verification
US10438209B2
( en )
2016-02-10
2019-10-08
Bank Of America Corporation
System for secure routing of data to various networks from a process data network
US10129238B2
( en )
2016-02-10
2018-11-13
Bank Of America Corporation
System for control of secure access and communication with different process data networks with separate security features
US10142347B2
( en )
2016-02-10
2018-11-27
Bank Of America Corporation
System for centralized control of secure access to process data network
US11374935B2
( en )
2016-02-11
2022-06-28
Bank Of America Corporation
Block chain alias person-to-person resource allocation
US20170243193A1
( en )
*
2016-02-18
2017-08-24
Skuchain, Inc.
Hybrid blockchain
US10135870B2
( en )
2016-02-22
2018-11-20
Bank Of America Corporation
System for external validation of secure process transactions
US10475030B2
( en )
2016-02-22
2019-11-12
Bank Of America Corporation
System for implementing a distributed ledger across multiple network nodes
US10140470B2
( en )
2016-02-22
2018-11-27
Bank Of America Corporation
System for external validation of distributed resource status
US10387878B2
( en )
2016-02-22
2019-08-20
Bank Of America Corporation
System for tracking transfer of resources in a process data network
US10636033B2
( en )
2016-02-22
2020-04-28
Bank Of America Corporation
System for routing of process authorizations and settlement to a user in a process data network
US10026118B2
( en )
2016-02-22
2018-07-17
Bank Of America Corporation
System for allowing external validation of data in a process data network
US10178105B2
( en )
2016-02-22
2019-01-08
Bank Of America Corporation
System for providing levels of security access to a process data network
US10679215B2
( en )
2016-02-22
2020-06-09
Bank Of America Corporation
System for control of device identity and usage in a process data network
US10496989B2
( en )
2016-02-22
2019-12-03
Bank Of America Corporation
System to enable contactless access to a transaction terminal using a process data network
US10142312B2
( en )
2016-02-22
2018-11-27
Bank Of America Corporation
System for establishing secure access for users in a process data network
US10318938B2
( en )
2016-02-22
2019-06-11
Bank Of America Corporation
System for routing of process authorization and settlement to a user in process data network based on specified parameters
US10607285B2
( en )
2016-02-22
2020-03-31
Bank Of America Corporation
System for managing serializability of resource transfers in a process data network
US10440101B2
( en )
2016-02-22
2019-10-08
Bank Of America Corporation
System for external validation of private-to-public transition protocols
US10762504B2
( en )
2016-02-22
2020-09-01
Bank Of America Corporation
System for external secure access to process data network
JP6799061B2
( en )
2016-02-23
2020-12-09
ã¨ããã§ã¼ã³ ãã¼ã«ãã£ã³ã°ã¹ ãªããããï¼®ï½ï½ï½ï½ï½ Hï½ï½ï½ï½ï½ï½ï½ Lï½ï½ï½ï½ï½ ï½
Secure multi-party loss resistant storage and transfer of cryptographic keys for blockchain-based systems combined with wallet management systems
CN109314637B
( en )
2016-02-23
2021-09-10
åºå龿§è¡æéå ¬å¸
Method and apparatus for efficient transfer of cryptocurrency over a blockchain
KR102753027B1
( en )
2016-02-23
2025-01-14
ìì²´ì¸ íë©ì¤ 리미í°ë
Method and system for secure transfer of entities on blockchain
KR102871871B1
( en )
2016-02-23
2025-10-15
ìì²´ì¸ ë¼ì´ì¼ì± ìê²
Method and system for securing computer software using a distributed hash table and blockchain
EP3268914B1
( en )
2016-02-23
2018-06-20
Nchain Holdings Limited
Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
JP6528008B2
( en )
2016-02-23
2019-06-12
ã¨ããã§ã¼ã³ ãã¼ã«ãã£ã³ã°ã¹ ãªããããï¼®ï½ï½ï½ï½ï½ Hï½ï½ï½ï½ï½ï½ï½ Lï½ï½ï½ï½ï½ ï½
Personal Device Security Using Elliptic Curve Cryptography for Secret Sharing
GB2571367A
( en )
2016-02-23
2019-08-28
Nchain Holdings Ltd
Tokenisation method and system for implementing exchanges on a blockchain
KR102777896B1
( en )
*
2016-02-23
2025-03-10
ìì²´ì¸ íë©ì¤ 리미í°ë
Blockchain-based exchange method using tokenization
EP4209983A1
( en )
*
2016-02-23
2023-07-12
nChain Licensing AG
Methods and systems for the efficient transfer of entities on a blockchain
EP3748903A1
( en )
2016-02-23
2020-12-09
Nchain Holdings Limited
Universal tokenisation system for blockchain-based cryptocurrencies
BR112018016782A2
( en )
2016-02-23
2018-12-26
Nchain Holdings Ltd
computer-implemented system and method configured to control a blockchain transfer
US11347838B2
( en )
2016-02-23
2022-05-31
Nchain Holdings Ltd.
Blockchain implemented counting system and method for use in secure voting and distribution
SG11201806781SA
( en )
2016-02-23
2018-09-27
Nchain Holdings Ltd
Registry and automated management method for blockchain-enforced smart contracts
KR102890466B1
( en )
2016-02-23
2025-11-21
ìì²´ì¸ ë¼ì´ì¼ì± ìê²
Encryption method and system for secure extraction of data from blockchain
EP3420674B1
( en )
2016-02-23
2021-03-24
Nchain Holdings Limited
Blockchain-implemented method for control and distribution of digital content
JP6869250B2
( en )
2016-02-23
2021-05-12
ã¨ããã§ã¼ã³ ãã¼ã«ãã£ã³ã°ã¹ ãªããããï¼®ï½ï½ï½ï½ï½ Hï½ï½ï½ï½ï½ï½ï½ Lï½ï½ï½ï½ï½ ï½
Methods and systems for efficient transfer of entities in peer-to-peer distributed ledgers using blockchain
GB2548802A
( en )
*
2016-03-22
2017-10-04
Bitcred Ltd
Methods for creating and verifying an electronic user identity
CN109155731B
( en )
*
2016-03-23
2022-02-11
诺åºäºææ¯æéå ¬å¸
Management of cryptographic transactions
GB201605032D0
( en )
2016-03-24
2016-05-11
Eitc Holdings Ltd
Recording multiple transactions on a peer-to-peer distributed ledger
US10068397B2
( en )
*
2016-04-06
2018-09-04
Guardtime IP Holdings, Ltd.
System and method for access control using context-based proof
US11164165B1
( en )
*
2016-04-08
2021-11-02
Greenberg & Lieberman, Llc
Multi-asset blockchain network platform
CA3019275A1
( en )
2016-04-11
2017-10-19
nChain Holdings Limited
Computer-implemented methods and systems for validating tokens for blockchain-based cryptocurrencies
US10366388B2
( en )
*
2016-04-13
2019-07-30
Tyco Fire & Security Gmbh
Method and apparatus for information management
SG11201809115RA
( en )
2016-04-29
2018-11-29
Nchain Holdings Ltd
Implementing logic gate functionality using a blockchain
GB201607477D0
( en )
2016-04-29
2016-06-15
Eitc Holdings Ltd
A method and system for controlling the performance of a contract using a distributed hash table and a peer to peer distributed ledger
WO2017189027A1
( en )
2016-04-29
2017-11-02
Digital Asset Holdings
Digital asset modeling
US11373183B2
( en )
*
2016-05-06
2022-06-28
Mastercard International Incorporated
Method and system for instantaneous payment using recorded guarantees
CN107438003B
( en )
2016-05-27
2022-08-09
ç´¢å°¼å ¬å¸
Electronic device, method for electronic device, and information processing system
US12406318B2
( en )
*
2016-06-06
2025-09-02
Chicago Mercantile Exchange Inc.
Data payment and authentication via a shared data structure
US10580100B2
( en )
*
2016-06-06
2020-03-03
Chicago Mercantile Exchange Inc.
Data payment and authentication via a shared data structure
US10341309B1
( en )
2016-06-13
2019-07-02
Allstate Insurance Company
Cryptographically protecting data transferred between spatially distributed computing devices using an intermediary database
US10942912B1
( en )
*
2016-06-24
2021-03-09
Amazon Technologies, Inc.
Chain logging using key-value data storage
US10826685B1
( en )
*
2016-06-28
2020-11-03
Amazon Technologies, Inc.
Combined blockchain integrity
GB201611698D0
( en )
2016-07-05
2016-08-17
Eitc Holdings Ltd
Blockchain-implemented control method and system
US10097344B2
( en )
2016-07-15
2018-10-09
Mastercard International Incorporated
Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains
WO2018019364A1
( en )
*
2016-07-26
2018-02-01
NEC Laboratories Europe GmbH
Method for controlling access to a shared resource
US10417217B2
( en )
*
2016-08-05
2019-09-17
Chicago Mercantile Exchange Inc.
Systems and methods for blockchain rule synchronization
US10915969B2
( en )
*
2016-08-11
2021-02-09
Jpmorgan Chase Bank, N.A.
Systems and methods for enhanced organizational transparency using a credit chain
CN106897348B
( en )
*
2016-08-19
2020-10-27
åæ°å è¿ææ¯æéå ¬å¸
Method and device for data storage, data verification, and data traceability
US10361869B2
( en )
*
2016-08-23
2019-07-23
International Business Machines Corporation
Event ledger
DE102016215917A1
( en )
*
2016-08-24
2018-03-01
Siemens Aktiengesellschaft
Secured processing of a credential request
US10402796B2
( en )
*
2016-08-29
2019-09-03
Bank Of America Corporation
Application life-cycle transition record recreation system
US10055926B2
( en )
2016-09-09
2018-08-21
Tyco Integrated Security, LLC
Architecture for access management
US11282137B2
( en )
*
2016-10-07
2022-03-22
The Toronto-Dominion Bank
Secure element method for distributed electronic ledger
CN106411901B
( en )
*
2016-10-08
2018-01-23
åäº¬ä¸æªä¿¡å®ç§æå屿éå ¬å¸
A kind of digital identity mark management method and system
US10747744B2
( en )
2016-10-10
2020-08-18
AlphaPoint
Distributed ledger comprising snapshots
CN107085582A
( en )
*
2016-10-12
2017-08-22
é·çä¼ä¸ç®¡çï¼ä¸æµ·ï¼æéå ¬å¸
Block chain digital asset visualization rendering method, system and server apparatus
CA3038124A1
( en )
*
2016-10-15
2018-04-19
Walmart Apollo, Llc
Vendor payment sharing system
MX2019004423A
( en )
*
2016-10-15
2019-11-25
Walmart Apollo Llc
Courier shopping system.