US20210233074A1 - Partitioning a blockchain network - Google Patents
Partitioning a blockchain network Download PDFInfo
- Publication number
- US20210233074A1 US20210233074A1 US17/051,083 US201917051083A US2021233074A1 US 20210233074 A1 US20210233074 A1 US 20210233074A1 US 201917051083 A US201917051083 A US 201917051083A US 2021233074 A1 US2021233074 A1 US 2021233074A1
- Authority
- US
- United States
- Prior art keywords
- transaction
- shard
- computer
- node
- blockchain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000638 solvent extraction Methods 0.000 title description 10
- 238000000034 method Methods 0.000 claims abstract description 76
- 238000010200 validation analysis Methods 0.000 claims abstract description 34
- 238000013515 script Methods 0.000 claims description 15
- 238000005192 partition Methods 0.000 claims 2
- 230000008901 benefit Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000000644 propagated effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
- G06Q20/0658—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
- G06Q20/3674—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
- G06Q20/3678—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business processing using cryptography
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Definitions
- the present disclosure relates to a method for partitioning a blockchain network and a method for validating transactions of a partitioned blockchain network, and relates particularly, but not exclusively, to a method for partitioning the unspent transaction output (UTXO) set of the Bitcoin blockchain and a method for validating transactions of a partitioned UTXO set of the Bitcoin blockchain.
- UTXO unspent transaction output
- blockchain to include all forms of electronic, computer-based, distributed ledgers. These include consensus-based blockchain and transaction-chain technologies, permissioned and un-permissioned ledgers, shared ledgers and variations thereof.
- the most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to herein for the purpose of convenience and illustration, it should be noted that the disclosure is not limited to use with the Bitcoin blockchain and alternative blockchain implementations and protocols fall within the scope of the present disclosure.
- the term “user” may refer herein to a human or a processor-based resource.
- the term “Bitcoin” is used herein to include any version or variation that derives from or is based on the Bitcoin protocol.
- a blockchain is a peer-to-peer, electronic ledger which is implemented as a computer-based decentralised, distributed system made up of blocks which in turn are made up of transactions.
- Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output.
- Each block contains a hash of the previous block so that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception.
- Transactions contain small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language.
- a transaction in order for a transaction to be written to the blockchain, it must be i) validated by the first node that receives the transaction—if the transaction is validated, the node relays it to the other nodes in the network; and ii) added to a new block built by a miner; and iii) mined, i.e. added to the public ledger of past transactions.
- a blockchain network for example the Bitcoin blockchain network
- Full nodes of the system persist and manage a copy of the entire blockchain, sending and receiving transactions, validating them, and adding blocks to the blockchain based on a shared decentralized consensus protocol.
- This approach while secure, does have scaling flaws related to the fact that each transaction is validated and stored by every full node. In terms of validation, this causes delays in network propagation of transactions, as each transaction needs to be validated before it can be propagated onwards towards a miner. Furthermore, delays attributed to validation renders the network and susceptible to “double-spend” related attacks, such as Sybil attacks.
- the present disclosure aims to improve the scalability, speed, reliability as well as security of the blockchain network through the use of horizontal partitioning, also known as sharding, as well as associated techniques or protocols for allocating and/or validating transactions on a sharded blockchain network.
- horizontal partitioning also known as sharding
- associated techniques or protocols for allocating and/or validating transactions on a sharded blockchain network.
- Partitioning in the art considers two specific dimensions: horizontal and vertical.
- shards In the partitioned sections of a horizontally-partitioned database, known as shards, there are effectively multiple instances of a specific database schema, with data spread across each of these instances, discounting instance redundancy.
- Vertical partitioning however is the splitting of a given database schema across multiple nodes, whereby attributes of a specific object are spread using normalisation.
- the blockchain itself is a set of linked transactions which mark specific changes in the ownership of coins which are mined at the creation of a block.
- one of the checks required is to check that there has not been a double spend.
- a double spend is when a transaction output has been referenced in a transaction input either already in the Bitcoin mempool, or confirmed on the blockchain.
- a mempool is a known to be a reference to a memory pool or area for Bitcoin transactions that each full node maintains for itself.
- the current state of the network is kept within an independent structure known as the UTXO set.
- This structure contains each transaction output which is yet to be spent by a transaction, which can include coinbase and standard transactions.
- a computer-implemented method of partitioning a blockchain network into shards comprises: identifying a transaction id of a blockchain transaction; and allocating the transaction to a shard based on the transaction id.
- Partitioning a blockchain network into shards enables users to choose their own level of involvement with the blockchain network.
- Each user can choose to be a member of one or more shards.
- a user who is a member of fewer than all shards requires less storage space to store all of the transactions allocated to the shards of which the user is a member.
- Allocating a transaction to a shard based on its transaction id provides the advantage that the resulting shard sizes will be approximately equal, thereby avoiding placing undue burden on members of a larger shard relative to members of a smaller shard, while at the same time enabling the transactions and associated verifications to be performed accurately, and without any undue delays.
- the users referred herein may be associated with one or more nodes or computing devices, and these nodes may also be referred to as client entities in the partitioned blockchain network.
- a reference to a user may be also understood to be a reference to the node or entity associated with the user (that may own or control the node or entity that is part of the sharded or partitioned blockchain network).
- Each node may be communicatively coupled with at least one or more other nodes in the partitioned blockchain network.
- the sharded network structure or architecture and associated methods described herein for allocation of transactions and validation of such allocated transactions within the sharded blockchain network enable novel techniques for data flow, data storage and UTXO validation checks. Furthermore, these techniques advantageously prevent double spend attacks, such as Sybil attacks in the Bitcoin blockchain in view of the structure and data communication/validation protocols.
- the method may further comprise the step of performing an operation using the transaction id.
- the step of allocating the transaction to a shard may be based on the result of the operation.
- the operation may comprise a modulo operation.
- a further computer-implemented method of partitioning a blockchain network into shards comprises: identifying a parent blockchain transaction, the parent transaction defined by an output which corresponds to an input of a child blockchain transaction; and allocating the parent transaction and the child transaction to the same shard.
- Partitioning a blockchain network into shards enables users to choose their own level of involvement with the blockchain network.
- Each user can choose to be a member of one or more shards.
- a user who is a member of fewer than all shards requires less storage space to store all of the transactions allocated to the shards of which the user is a member.
- Allocating a transaction to a shard based on identifying a parent blockchain transaction, the parent transaction defined by an output which corresponds to an input of a child blockchain transaction, and allocating the parent transaction and the child transaction to the same shard provides the advantage that validation operations performed by users who are members of a particular shard may be performed while requiring less information to be transmitted to and from users who are members of different shards, because a child transaction being validated will always have a parent transaction which is a member of the same shard.
- a parent transaction may be identified using an input of a plurality of inputs of the child blockchain transaction.
- the input used may be selected on the basis of its index.
- the index may be 1, in which case the input used is the first input of the plurality of inputs.
- This provides the advantage of enabling a child transaction having multiple inputs to be allocated to a shard.
- a parent transaction may be identified using a largest subset of inputs of a plurality of inputs of the child blockchain transaction. For example, in the instance where a child transaction has five inputs, where two of the five refer to two outputs of an earlier transaction, and each of the remaining three inputs refer to three different earlier transactions, the parent transaction is defined as the earlier transaction to which the two inputs both refer as they are the largest subset of inputs.
- This provides the advantage that, for a child transaction having multiple inputs, the amount of information required from users who are members of different shards is reduced.
- a computer-implemented method for validating a blockchain transaction comprises: requesting at least one UTXO referenced by at least one respective input of the transaction from a member node of at least one shard comprising at least one UTXO; obtaining validity data of at least one UTXO from at least one node; and performing a validation check on at least one input using the validity data.
- This method enables validation of a blockchain transaction to take place in a sharded blockchain network.
- the advantage provided by this method is that each user can choose to be a member of one or more shards, and a user who is a member of fewer than all shards requires less computing power to validate all of the transactions allocated to the shards of which the user is a member.
- a computer-implemented method for validating a blockchain transaction comprises: identifying at least one shard comprising at least one UTXO referenced by at least one respective input of the transaction; transmitting the transaction to at least one member node of at least one shard; and performing a validation check on at least one input using validity data of the UTXO.
- This method enables validation of a blockchain transaction to take place in a sharded blockchain network.
- the advantage provided by this method is that each user can choose to be a member of one or more shards, and a user who is a member of fewer than all shards requires less computing power to validate all of the transactions allocated to the shards of which the user is a member.
- the present disclosure relates to a computer-implemented method for validating a blockchain transaction, associated with a blockchain network, wherein the blockchain network is partitioned into a plurality of shards, each shard comprising at least one member node, and wherein each node in the blockchain network is member of least one shard among the plurality of shards, the method comprising the steps of: responsive to receiving a given transaction at a node, determining that at least one UTXO associated with the node is referenced by at least one respective input of the transaction, wherein the node is associated with a set of UTXOs that relate to one or more transactions allocated to each shard that that the node is a member of; based on a determination that the at least one input of the given transaction is associated with a shard that the node is a member of, performing a validation check on at least one input using validity data associated with the UTXO; based on a determination that the transaction is valid, adding the transaction to
- Any of the above methods may further comprise the step of communicating a request for shard membership information of a node to another node.
- Any of the above methods may further comprising the step of communicating shard membership information of a node to another node.
- This provides a mechanism for shard membership information of nodes to be transferred between nodes, thereby providing the advantage of decreasing the likelihood that a node performing a validation operation will fail.
- the methods includes the step of communicating or broadcasting shard membership information of a node to all other nodes in the shard associated with the node and/or one or more other nodes in the network.
- the method may also include that the communication is performed using a modified addr message, wherein the modified addr message includes an indication of one or more shards that the node is associated with.
- the communication may be performed using a modified addr message.
- This provides the advantage of providing a more secure mechanism for exchanging shard membership information between nodes.
- the disclosure also provides a system, comprising:
- the disclosure also provides a non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to at least perform an embodiment of the computer-implemented method described herein.
- FIGS. 1 a and 1 b illustrate a comparison between a traditional blockchain network ( FIG. 1 a ) and a sharded blockchain ( FIG. 1 b ) network according first embodiment of the present disclosure
- FIG. 2 illustrates node usage rotation used in relation to a second embodiment of the present disclosure
- FIG. 3 illustrates a method of allocating a transaction to a shard according to a third embodiment of the present disclosure.
- FIG. 4 illustrates a method of allocating a transaction to a shard according to a fourth embodiment.
- FIG. 5 illustrate a UTXO data structure of the prior art
- FIG. 6 illustrates a fifth embodiment of the present disclosure
- FIGS. 7 a and 6 b illustrate a sixth embodiment of the present disclosure.
- FIGS. 8 a and 8 b illustrate a seventh embodiment of the present disclosure.
- FIG. 9 is a schematic diagram illustrates a computing environment in which various embodiments of the present disclosure can be implemented.
- nodes are connected peer-to-peer in a largely unstructured fashion (with the exception of a number of hardcoded network seeds within the Bitcoin client to aid node discovery). These nodes communicate to share valid transactions, blocks, and information regarding other nodes.
- FIG. 1 b depicts a structure of a sharded blockchain network according to the present disclosure.
- FIG. 1 a shows a structure of the existing, i.e. prior art blockchain network.
- parties may be allowed to be members of any number of shards of a sharded blockchain network.
- This approach accommodates entities or parties that may require transaction history security, for instance to ensure that these parties that want or need greater security may be able to validate and store every transaction in the blockchain, while other parties or entities that may not wish to or require the same (greater) level or may want a lighter weight involvement, may also participate in the same sharded blockchain network of FIG. 1 b and may store just a subset of the blockchain.
- a particular node can be a member of one or more shard groups. This is seen by the shaded lines shown in this figure, where a node within the shaded area is a member of both, shard 2 as well as shard 3 .
- a list of available peers i.e. nodes in the network, holds information regarding nodes it can connect to, distribute to, and receive from.
- additional information is held, including of which shard each node is a member.
- each node may communicate with at least a single node from each shard to propagate their transactions destined for a different shard.
- the information held by each node may be in the form of a data structure to indicate nodes it can connect to, distribute to, receive from, and the shard that it belongs to in the sharded network seen in FIG. 1 b .
- Other details pertaining to the node, such as an identifier, entity association etc. may also be held.
- This data structure may be held within a memory associated with each node, or may be held in a memory associated with the shard, for instance.
- a technique where the nodes communicate with multiple other nodes within a single shard is explained.
- This technique advantageously prevents a “Sybil style” attack within a blockchain network
- a Sybil attack is an attack where a single adversary or malign entity may be controlling multiple nodes on a network, unknown to the network.
- an adversary may create multiple computers and IP addresses, and may also can create multiple accounts/nodes in an attempt to pretend that they all exist.
- the manifestation of such an attack may be seen by the following example implementations. If an attacker attempts to fill the network with clients that they control, then a node may then be very likely to connect only to attacker nodes.
- the attacker can refuse to relay blocks and transactions for a node, effectively disconnecting that particular node from the network. This can also be manifested by the attacker relaying blocks that they create, effectively putting a node or entity on a separate network, thereby leaving a node and transactions associated with that node or the entity it represents open to double-spending attacks. Sybil attacks are thus a problem for existing blockchain networks.
- nodes are configured to communicate with multiple or all other nodes within a single shard, according to the second embodiment.
- Sybil attacks can effectively disregard transactions sent from a particular node, preventing their propagation further through the network. Therefore, in the second embodiment of the present disclosure, a technique by which nodes in a given shard can exchange information regarding nodes in other shards, and rotate their usage, as is seen in FIG. 2 .
- each node in the sharded network can broadcast every transaction to each other. If a given node is not a member of the shard that is associated with a transaction (this association is described below with reference to the third and fourth embodiments), then instead of doing a full transaction validation, it performs basic transaction-level checks before propagating onwards. It is noted that in some implementations, the protocols and rules discussed above in relation to the second embodiment are related to and considered to be part of one or more or all of the other embodiments of the present disclosure discussed herein.
- addr protocol messages An implementation of addr messages that currently exist as part of the Bitcoin protocol is used to list or identify one or more IP addresses and ports. For example, a getaddr request may be used to obtain an addr message containing a bunch of known-active peers (for bootstrapping, for example). addr messages often contain only one address, but sometimes contain many more, and in some examples, up to a 1000. In some examples, all nodes broadcast an addr containing their own IP address periodically, i.e. every 24 hours.
- Nodes may then relay these messages to their peers, and can store the addresses relayed, if new to them. This way, the nodes in the network may have a reasonably clear picture of which IPs are connected to the network at the moment of, or after connecting to the network. In most cases the IP address gets added to everyone's address database because of an initial addr broadcast.
- An implementation of a modified addr protocol according to the present disclosure in addition to the above may be capable of transmitting additional information on which to shard or shards a particular node belongs.
- a node in a shared network such as FIG. 1 b joins a particular shard in the network
- what is broadcast as part of the addr message may also include a field identifying the one or more shards it is a member of.
- This information is also therefore returned in response to a getaddr request from a peer in the network of FIG. 1 b .
- such information may be based on a data structure associated with each node and/or each shard to which the node is associated with.
- the modified addr protocol may also include the status of the shards of which the node is a member of and/or the status of the node itself. For instance, details of the number of nodes in each member shard may be identified, or if a particular shard is active, or the number of active nodes in a given shard may also be identified.
- transactions are not validated and stored by every node, but instead they are allocated to one or more specific shards. Therefore, a strategy for allocating transactions to different shards is required.
- Two possible embodiments will be described below and are referred to as “transaction id-based” sharding according to a third embodiment of the present disclosure and “input-based” sharding, according to a fourth embodiment of the present disclosure.
- the existing Bitcoin protocol would be likely to undergo a fork in order to initiate either scheme.
- nodes in a given shard may check it has been sent to the correct shard. This approach provides balancing of transactions across shards.
- Either sharding method may be applied to the blockchain retroactively, and to any extent. That is, either method may be applied such that a sharded network is defined as existing from the time of the first block in the blockchain (the so-called genesis block in the case of the Bitcoin blockchain) all the way through to an arbitrarily chosen block number in the future.
- the sharding methods described below may be applied a multiple number of times in sequence, and in any order. For example, transaction-id sharding may be performed in the first instance, and input-based sharding may be performed at a later date. Furthermore, either one of the methods may be applied retroactively, as described above, and further to this, either method may be subsequently applied.
- the number of shards, n may be chosen each time a sharding method is applied and allows the protocol to scale by increasing the number of nodes. The number of nodes may be chosen based on the number of total nodes on the network, the size of the blockchain, and/or on other characteristics. For both of the sharding methods described below, the manner in which the transactions are stored by each node once sharding has taken place will also be described.
- step 302 the transaction id for a given transaction is created, indicated as txid.
- this txid is obtained as a result of applying a SHA256 function to the transaction data.
- step 304 using this transaction id, an operation is carried out based on the txid and the available number of shards in the sharded network.
- step 306 the result of step 304 then corresponds to the shard to which the given transaction is allocated.
- step 308 once allocated in step 306 , the transaction is distributed to the identified shard, i.e. the transaction is to be distributed to nodes comprised in the identified shard in step 306 .
- nodes in a given shard receive a transaction, they can easily check it has been sent to the correct shard.
- such checking may be facilitated based on data structures associated with each node that include information associated with the node, as discussed above in the first embodiment.
- this approach provides an even balancing of transactions across shards.
- Shard count on the network can be arbitrarily chosen on the basis of a number of parameters, including:
- step 402 an input of a given transaction is identified. In some implementations, this is the first input for the transaction.
- step 404 an output of an earlier transaction to which the input in step 402 refers to is identified.
- step 406 the results of step 402 and 404 , i.e. the corresponding input, and the output from an earlier transaction, are both allocated to the same shard in the sharded network as seen in FIG. 1 b .
- this step includes identifying the shard to allocate both the transactions to.
- this may be a shard that is associated with the earlier transaction, in case this has already been allocated.
- a modified addr broadcast or a response to a getaddr request for either the given or earlier transaction may be used to identify the shard.
- a shard may be selected on a random or a prescribed, i.e. rotation based, basis for both transactions, as long as both are assigned to the same shard. This may be applied for instance if a parent transaction is not identified, i.e. if it is a coinbase transaction that is received.
- Step 408 shows that the above process in steps 402 to 406 is iterated to generate chains of transactions linked by their first inputs.
- a transaction whose output is referred to by a first input of a subsequent transaction is referred to in this context as a “parent” transaction, and the subsequent transaction is referred to as a “child” transaction.
- the usage of the first input to define a parent in step 402 is not essential to the method; as any input may be chosen to perform the method if a plurality of inputs are present in a given transaction.
- an earlier transaction may be defined as a parent of a child transaction if a particular number of inputs of the child transaction refer to outputs of transactions in the same shard as the parent.
- the number of inputs may define a majority number of inputs of the child transaction.
- the shard that is allocated will be the same as that of the identified parent based on either the number of inputs or indeed the first or any other prescribed particular input to be considered.
- the above two sharding methods of the third and fourth embodiments may be performed sequentially, in any order, and that the two methods may be performed multiple times as desired.
- a blockchain network may be forked in accordance with Input-Based distribution of the fourth embodiment, and subsequently one or more of the resulting forks may be sharded in accordance with Transaction ID-Based distribution of the third embodiment.
- every node maintains its own UTXO set, which is checked and updated during validation.
- An example of a UTXO set is shown in FIG. 5 .
- each member node of one or more shards has a UTXO set related to the transactions which are related to each shard of which the node is a member.
- FIG. 6 depicts the nodes that are members of more than one shard. These are seen by the overlapping distinctly shaded regions in this figure.
- sharded UTXO's in relation to the fifth embodiment may relate to and considered to be part of one or more or all of the other embodiments of the present disclosure discussed herein.
- each node on the sharded blockchain such as in FIG. 1 b , is associated with or maintains a list of nodes on the network, including information of which shard they are members. This is discussed above, in relation to the first embodiment.
- Transaction validation Two methods are described below for transaction validation according to the present disclosure, which can be used for checking the UTXO set. These are named Transaction Shard Validation, according to the sixth embodiment; and UTXO Shard Validation, according to the seventh embodiment of the disclosure, respectively.
- transaction validation is carried out by the shard to which the transaction is allocated.
- transactions are distributed to a shard using the result of a modulo function applied to the transaction id. Because a transaction can have inputs from different shards, validation nodes communicate with other shards for UTXO checks.
- a node in Shard 4 makes a request to the nodes in Shard 1 that are known to it to fetch the UTXO. This is seen in step 702 .
- the shard numbers are specified for illustration only, and any given node associated with any given shard may perform this request.
- step 704 The validity of the response received is then assessed in step 704 . If none of the nodes have the UTXO, a null response is given. In this case, the transaction in question is deemed invalid in step 706 . No further propagation of the transaction will take place, in this case. In some cases, a transaction is also deemed invalid if there is a script error, for instance, or any indication that the UTXO is not available.
- the transaction input is deemed as valid in step 708 .
- software clients or programs or applications installed on nodes may perform this validation on a UTXO by executing its locking and unlocking scripts. In some implementations, this is referred to as the validity data for the transactions. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain.
- one of the validity checks is to check that there has not been a double spend. In some implementations, when a node receives a transaction, it will look up the UTXOs that the transaction spends in a data structure associated with the node, or of the associated shard.
- step 710 the transaction in question is then added to shard 4 's or the node on shard 4 's mempool.
- step 712 the transaction is then propagated to other nodes in shard 4 .
- transactions are propagated to the shards (of a sharded network as seen in FIG. 1 b ) containing the UTXOs of a given transaction.
- FIG. 8 a illustrates a spending transaction (Tx) created by a node in Shard 4 being propagated to each of the shards containing the UTXOs of that transaction.
- the node sends the transaction to both Shard 1 and 2 .
- the process is further illustrated in FIG. 8 b.
- this step may further include determining at least one shard comprising that at least one UTXO associated with the node is referenced by at least one respective input of the given transaction.
- the node is associated with a set of UTXOs that relate to one or more transactions allocated to each shard that that the node is a member of.
- step 804 it is checked if the given transaction's input is associated with the same shard.
- the transaction may be allocated to a shard as discussed above, according to the fourth embodiment. As discussed above, if the node is a member of more than one shard, then the “same” shard check in this step will apply to any of such shard.
- Inputs that relate to UTXOs in a different shard are not validated, as seen in step 806 b .
- the validation of each input may be carried out much in the same way as validations may be currently carried out in the Bitcoin network. Otherwise, the node proceeds to validate the transaction in step 806 a.
- step 806 a the validity of an input associated with the given transaction is checked in step 808 .
- validation on an unspent transaction may be by executing its locking and unlocking scripts. In some implementations, this is referred to as the validity data for the transactions. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain.
- one of the validity checks is to check that there has not been a double spend. In some implementations, when a node receives a transaction, it will look up the UTXOs that the transaction spends in a data structure associated with the node, or with the shard of the node.
- the given transaction is dropped as seen in step 810 b . In this case, the given transaction is not propagated to other nodes in the same shard.
- step 810 a If the input is deemed valid, the transaction is identified as being valid in step 810 a.
- the transaction is then added to the node's mempool in step 812 .
- the transaction is propagated to other nodes in the shard associated with the node, in step 814 .
- FIG. 9 there is provided an illustrative, simplified block diagram of a computing device 2600 that may be used to practice at least one embodiment of the present disclosure.
- the computing device 2600 may be used to implement a node or a combination of nodes in one or more shards of the sharded blockchain network seen in FIG. 1 b , and/or any of the computer implemented systems, methods or protocols illustrated and described above when taken alone or when communicatively coupled to one or more other such nodes or systems.
- the computing device 2600 may be configured for use as a data server, a web server, a portable computing device, a personal computer, or any electronic computing device.
- the computing device 2600 may include one or more processors with one or more levels of cache memory and a memory controller (collectively labelled 2602 ) that can be configured to communicate with a storage subsystem 2606 that includes main memory 2608 and persistent storage 2610 .
- the main memory 2608 can include dynamic random-access memory (DRAM) 2618 and read-only memory (ROM) 2620 as shown.
- DRAM dynamic random-access memory
- ROM read-only memory
- the storage subsystem 2606 and the cache memory 2602 and may be used for storage of information, such as details associated with transactions and blocks as described in the present disclosure.
- the processor(s) 2602 may be utilized to provide the steps or functionality of any embodiment as described in the present disclosure.
- the processor(s) 2602 can also communicate with one or more user interface input devices 2612 , one or more user interface output devices 2614 , and a network interface subsystem 2616 .
- a bus subsystem 2604 may provide a mechanism for enabling the various components and subsystems of computing device 2600 to communicate with each other as intended. Although the bus subsystem 2604 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses.
- the network interface subsystem 2616 may provide an interface to other computing devices and networks.
- the network interface subsystem 2616 may serve as an interface for receiving data from, and transmitting data to, other systems from the computing device 2600 .
- the network interface subsystem 2616 may enable a data technician to connect the device to a network such that the data technician may be able to transmit data to the device and receive data from the device while in a remote location, such as a data centre.
- the user interface input devices 2612 may include one or more user input devices such as a keyboard; pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet; a scanner; a barcode scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems, microphones; and other types of input devices.
- user input devices such as a keyboard; pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet; a scanner; a barcode scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems, microphones; and other types of input devices.
- input device is intended to include all possible types of devices and mechanisms for inputting information to the computing device 2600 .
- the one or more user interface output devices 2614 may include a display subsystem, a printer, or non-visual displays such as audio output devices, etc.
- the display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), light emitting diode (LED) display, or a projection or other display device.
- CTR cathode ray tube
- LCD liquid crystal display
- LED light emitting diode
- output device is intended to include all possible types of devices and mechanisms for outputting information from the computing device 2600 .
- the one or more user interface output devices 2614 may be used, for example, to present user interfaces to facilitate user interaction with applications performing processes described and variations therein, when such interaction may be appropriate.
- the storage subsystem 2606 may provide a computer-readable storage medium for storing the basic programming and data constructs that may provide the functionality of at least one embodiment of the present disclosure.
- the applications programs, code modules, instructions
- the storage subsystem 2606 may additionally provide a repository for storing data used in accordance with the present disclosure.
- the main memory 2608 and cache memory 2602 can provide volatile storage for program and data.
- the persistent storage 2610 can provide persistent (non-volatile) storage for program and data and may include flash memory, one or more solid state drives, one or more magnetic hard disk drives, one or more floppy disk drives with associated removable media, one or more optical drives (e.g. CD-ROM or DVD or Blue-Ray) drive with associated removable media, and other like storage media.
- Such program and data can include programs for carrying out the steps of one or more embodiments as described in the present disclosure as well as data associated with transactions and blocks as described in the present disclosure.
- the computing device 2600 may be of various types, including a portable computer device, tablet computer, a workstation, or any other device described below. Additionally, the computing device 2600 may include another device that may be connected to the computing device 2600 through one or more ports (e.g., USB, a headphone jack, Lightning connector, etc.). The device that may be connected to the computing device 2600 may include a plurality of ports configured to accept fibre-optic connectors. Accordingly, this device may be configured to convert optical signals to electrical signals that may be transmitted through the port connecting the device to the computing device 2600 for processing. Due to the ever-changing nature of computers and networks, the description of the computing device 2600 depicted in FIG. 9 is intended only as a specific example for purposes of illustrating the preferred embodiment of the device. Many other configurations having more or fewer components than the system depicted in FIG. 9 are possible.
- the disclosure may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer.
- a device claim enumerating several means several of these means may be embodied by one and the same item of hardware.
- the mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Computer And Data Communications (AREA)
- Electrotherapy Devices (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
Abstract
Description
- The present disclosure relates to a method for partitioning a blockchain network and a method for validating transactions of a partitioned blockchain network, and relates particularly, but not exclusively, to a method for partitioning the unspent transaction output (UTXO) set of the Bitcoin blockchain and a method for validating transactions of a partitioned UTXO set of the Bitcoin blockchain.
- In this document we use the term ‘blockchain’ to include all forms of electronic, computer-based, distributed ledgers. These include consensus-based blockchain and transaction-chain technologies, permissioned and un-permissioned ledgers, shared ledgers and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to herein for the purpose of convenience and illustration, it should be noted that the disclosure is not limited to use with the Bitcoin blockchain and alternative blockchain implementations and protocols fall within the scope of the present disclosure. The term “user” may refer herein to a human or a processor-based resource. The term “Bitcoin” is used herein to include any version or variation that derives from or is based on the Bitcoin protocol.
- A blockchain is a peer-to-peer, electronic ledger which is implemented as a computer-based decentralised, distributed system made up of blocks which in turn are made up of transactions. Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output. Each block contains a hash of the previous block so that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception. Transactions contain small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language.
- In order for a transaction to be written to the blockchain, it must be “validated”. Network nodes (miners) perform work to ensure that each transaction is valid, with invalid transactions rejected from the network. Software clients installed on the nodes perform this validation work on an unspent transaction (UTXO) by executing its locking and unlocking scripts. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain. Thus, in order for a transaction to be written to the blockchain, it must be i) validated by the first node that receives the transaction—if the transaction is validated, the node relays it to the other nodes in the network; and ii) added to a new block built by a miner; and iii) mined, i.e. added to the public ledger of past transactions.
- Although blockchain technology is most widely known for the use of cryptocurrency implementation, digital entrepreneurs have begun exploring the use of both the cryptographic security system Bitcoin is based on and the data that can be stored on the Blockchain to implement new systems. It would be highly advantageous if the blockchain could be used for automated tasks and processes which are not limited to the realm of cryptocurrency. Such solutions would be able to harness the benefits of the blockchain (e.g. a permanent, tamper proof records of events, distributed processing etc.) while being more versatile in their applications.
- As discussed above, a blockchain network, for example the Bitcoin blockchain network, is a secure distributed computing system. Full nodes of the system persist and manage a copy of the entire blockchain, sending and receiving transactions, validating them, and adding blocks to the blockchain based on a shared decentralized consensus protocol. This approach, while secure, does have scaling flaws related to the fact that each transaction is validated and stored by every full node. In terms of validation, this causes delays in network propagation of transactions, as each transaction needs to be validated before it can be propagated onwards towards a miner. Furthermore, delays attributed to validation renders the network and susceptible to “double-spend” related attacks, such as Sybil attacks.
- The present disclosure aims to improve the scalability, speed, reliability as well as security of the blockchain network through the use of horizontal partitioning, also known as sharding, as well as associated techniques or protocols for allocating and/or validating transactions on a sharded blockchain network. Disclosed herein are:
-
- A network structure for a sharded blockchain; and
- a sharded UTXO and mempool structure.
- Partitioning in the art considers two specific dimensions: horizontal and vertical. In the partitioned sections of a horizontally-partitioned database, known as shards, there are effectively multiple instances of a specific database schema, with data spread across each of these instances, discounting instance redundancy. Vertical partitioning however is the splitting of a given database schema across multiple nodes, whereby attributes of a specific object are spread using normalisation.
- Different parties wanting to be involved in blockchain networks can possess a range of computing resources, ranging from small low-powered machines, to server farms. Participating parties are therefore limited by computing resources to a predetermined level of involvement in the blockchain network.
- In Bitcoin, the blockchain itself is a set of linked transactions which mark specific changes in the ownership of coins which are mined at the creation of a block. During transaction validation, one of the checks required is to check that there has not been a double spend. A double spend is when a transaction output has been referenced in a transaction input either already in the Bitcoin mempool, or confirmed on the blockchain. A mempool is a known to be a reference to a memory pool or area for Bitcoin transactions that each full node maintains for itself. Traditionally, after a transaction is verified by a node, it waits inside a mempool until inserted into a block. To make the validation of transactions more efficient in terms of checking transaction inputs, instead of validating the entire blockchain, the current state of the network is kept within an independent structure known as the UTXO set. This structure contains each transaction output which is yet to be spent by a transaction, which can include coinbase and standard transactions.
- According to an aspect of the present disclosure, there is provided a computer-implemented method of partitioning a blockchain network into shards. The method comprises: identifying a transaction id of a blockchain transaction; and allocating the transaction to a shard based on the transaction id.
- Partitioning a blockchain network into shards enables users to choose their own level of involvement with the blockchain network. Each user can choose to be a member of one or more shards. A user who is a member of fewer than all shards requires less storage space to store all of the transactions allocated to the shards of which the user is a member. Allocating a transaction to a shard based on its transaction id provides the advantage that the resulting shard sizes will be approximately equal, thereby avoiding placing undue burden on members of a larger shard relative to members of a smaller shard, while at the same time enabling the transactions and associated verifications to be performed accurately, and without any undue delays.
- The users referred herein may be associated with one or more nodes or computing devices, and these nodes may also be referred to as client entities in the partitioned blockchain network. Hereinafter, a reference to a user may be also understood to be a reference to the node or entity associated with the user (that may own or control the node or entity that is part of the sharded or partitioned blockchain network). Each node may be communicatively coupled with at least one or more other nodes in the partitioned blockchain network.
- These advantages discussed herein that are associated with this as well as other aspects of the present disclosure (discussed below) are attributed to the structure of the nodes and resulting network topology and architecture of the sharded blockchain network and protocols associated with the nodes of the network. Receiving, storing and/or validating UTXO's in such a sharded network is performed using the described and claimed methods, rules or protocols for communication, data storage, data sharing as well as validation techniques for nodes within each shard, as well as based on the rules and protocols associated for communication with nodes belonging to different shards.
- These specific structures, methods of data flow, transaction allocation and validation protocols will be further explained below with respect to the various embodiments of the present disclosure. Advantageously, the sharded network structure or architecture and associated methods described herein for allocation of transactions and validation of such allocated transactions within the sharded blockchain network enable novel techniques for data flow, data storage and UTXO validation checks. Furthermore, these techniques advantageously prevent double spend attacks, such as Sybil attacks in the Bitcoin blockchain in view of the structure and data communication/validation protocols.
- The method may further comprise the step of performing an operation using the transaction id. The step of allocating the transaction to a shard may be based on the result of the operation.
- This provides the advantage that the arrangement of the shards can be tailored dependent on the choice of the operation.
- The operation may comprise a modulo operation.
- This provides the advantage that a desired number of equal-sized shards can be more easily generated. According to the present disclosure, there is provided a further computer-implemented method of partitioning a blockchain network into shards. The method comprises: identifying a parent blockchain transaction, the parent transaction defined by an output which corresponds to an input of a child blockchain transaction; and allocating the parent transaction and the child transaction to the same shard.
- Partitioning a blockchain network into shards enables users to choose their own level of involvement with the blockchain network. Each user can choose to be a member of one or more shards. A user who is a member of fewer than all shards requires less storage space to store all of the transactions allocated to the shards of which the user is a member. Allocating a transaction to a shard based on identifying a parent blockchain transaction, the parent transaction defined by an output which corresponds to an input of a child blockchain transaction, and allocating the parent transaction and the child transaction to the same shard provides the advantage that validation operations performed by users who are members of a particular shard may be performed while requiring less information to be transmitted to and from users who are members of different shards, because a child transaction being validated will always have a parent transaction which is a member of the same shard.
- A parent transaction may be identified using an input of a plurality of inputs of the child blockchain transaction. The input used may be selected on the basis of its index. The index may be 1, in which case the input used is the first input of the plurality of inputs.
- This provides the advantage of enabling a child transaction having multiple inputs to be allocated to a shard.
- A parent transaction may be identified using a largest subset of inputs of a plurality of inputs of the child blockchain transaction. For example, in the instance where a child transaction has five inputs, where two of the five refer to two outputs of an earlier transaction, and each of the remaining three inputs refer to three different earlier transactions, the parent transaction is defined as the earlier transaction to which the two inputs both refer as they are the largest subset of inputs.
- This provides the advantage that, for a child transaction having multiple inputs, the amount of information required from users who are members of different shards is reduced.
- According to the present disclosure, there is also provided a computer-implemented method for validating a blockchain transaction. The method comprises: requesting at least one UTXO referenced by at least one respective input of the transaction from a member node of at least one shard comprising at least one UTXO; obtaining validity data of at least one UTXO from at least one node; and performing a validation check on at least one input using the validity data.
- This method enables validation of a blockchain transaction to take place in a sharded blockchain network. The advantage provided by this method is that each user can choose to be a member of one or more shards, and a user who is a member of fewer than all shards requires less computing power to validate all of the transactions allocated to the shards of which the user is a member.
- According to the present disclosure, there is further provided a computer-implemented method for validating a blockchain transaction. The method comprises: identifying at least one shard comprising at least one UTXO referenced by at least one respective input of the transaction; transmitting the transaction to at least one member node of at least one shard; and performing a validation check on at least one input using validity data of the UTXO.
- This method enables validation of a blockchain transaction to take place in a sharded blockchain network. The advantage provided by this method is that each user can choose to be a member of one or more shards, and a user who is a member of fewer than all shards requires less computing power to validate all of the transactions allocated to the shards of which the user is a member.
- Accordingly, the present disclosure relates to a computer-implemented method for validating a blockchain transaction, associated with a blockchain network, wherein the blockchain network is partitioned into a plurality of shards, each shard comprising at least one member node, and wherein each node in the blockchain network is member of least one shard among the plurality of shards, the method comprising the steps of: responsive to receiving a given transaction at a node, determining that at least one UTXO associated with the node is referenced by at least one respective input of the transaction, wherein the node is associated with a set of UTXOs that relate to one or more transactions allocated to each shard that that the node is a member of; based on a determination that the at least one input of the given transaction is associated with a shard that the node is a member of, performing a validation check on at least one input using validity data associated with the UTXO; based on a determination that the transaction is valid, adding the transaction to a mempool associated with the node; and propagating the transaction to other member nodes of the at least one shard that the node is a member of.
- Any of the above methods may further comprise the step of communicating a request for shard membership information of a node to another node.
- This provides the advantage that the node seeking shard membership information is provided with a mechanism for locating that information more easily.
- Any of the above methods may further comprising the step of communicating shard membership information of a node to another node.
- This provides a mechanism for shard membership information of nodes to be transferred between nodes, thereby providing the advantage of decreasing the likelihood that a node performing a validation operation will fail.
- In some embodiments, the methods includes the step of communicating or broadcasting shard membership information of a node to all other nodes in the shard associated with the node and/or one or more other nodes in the network. The method may also include that the communication is performed using a modified addr message, wherein the modified addr message includes an indication of one or more shards that the node is associated with.
- The communication may be performed using a modified addr message.
- This provides the advantage of providing a more secure mechanism for exchanging shard membership information between nodes.
- The disclosure also provides a system, comprising:
-
- a processor; and
- memory including executable instructions that, as a result of execution by the processor, causes the system to perform any embodiment of the computer-implemented method described herein.
- The disclosure also provides a non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to at least perform an embodiment of the computer-implemented method described herein.
- Preferred embodiments of the present disclosure are described below, in a general and not in a limitative sense, with reference to accompanying drawings, in which:
-
FIGS. 1a and 1b illustrate a comparison between a traditional blockchain network (FIG. 1a ) and a sharded blockchain (FIG. 1b ) network according first embodiment of the present disclosure; -
FIG. 2 illustrates node usage rotation used in relation to a second embodiment of the present disclosure; -
FIG. 3 illustrates a method of allocating a transaction to a shard according to a third embodiment of the present disclosure. -
FIG. 4 illustrates a method of allocating a transaction to a shard according to a fourth embodiment. -
FIG. 5 illustrate a UTXO data structure of the prior art; -
FIG. 6 illustrates a fifth embodiment of the present disclosure; -
FIGS. 7a and 6b illustrate a sixth embodiment of the present disclosure; and -
FIGS. 8a and 8b illustrate a seventh embodiment of the present disclosure. -
FIG. 9 is a schematic diagram illustrates a computing environment in which various embodiments of the present disclosure can be implemented. - In the current blockchain network, different nodes are connected peer-to-peer in a largely unstructured fashion (with the exception of a number of hardcoded network seeds within the Bitcoin client to aid node discovery). These nodes communicate to share valid transactions, blocks, and information regarding other nodes.
- Structure of a Sharded Network
- A first embodiment of the present disclosure can be seen in
FIG. 1b , which depicts a structure of a sharded blockchain network according to the present disclosure.FIG. 1a on the other hand shows a structure of the existing, i.e. prior art blockchain network. - According to the present disclosure, to reduce the reliance on having expensive and powerful computing resources for parties to participate in a predetermined level of involvement in the blockchain network, parties may be allowed to be members of any number of shards of a sharded blockchain network. This means small parties, including hobbyists, can choose to be members of a single shard of the network shown in
FIG. 1b , and large parties, such as financial institutions, can choose to be members of many or even all shards of the sharded blockchain network ofFIG. 1b . This approach accommodates entities or parties that may require transaction history security, for instance to ensure that these parties that want or need greater security may be able to validate and store every transaction in the blockchain, while other parties or entities that may not wish to or require the same (greater) level or may want a lighter weight involvement, may also participate in the same sharded blockchain network ofFIG. 1b and may store just a subset of the blockchain. - As can be seen in
FIG. 1b , a particular node can be a member of one or more shard groups. This is seen by the shaded lines shown in this figure, where a node within the shaded area is a member of both,shard 2 as well asshard 3. For communication, in the current Bitcoin network and Bitcoin SV (BSV) client, a list of available peers, i.e. nodes in the network, holds information regarding nodes it can connect to, distribute to, and receive from. In a sharded blockchain according to the first embodiment, additional information is held, including of which shard each node is a member. In some implementations, for handling transaction propagation across the network, each node shown in the sharded network inFIG. 1b arranged or configured such that it may communicate with at least a single node from each shard to propagate their transactions destined for a different shard. In some implementations, the information held by each node may be in the form of a data structure to indicate nodes it can connect to, distribute to, receive from, and the shard that it belongs to in the sharded network seen inFIG. 1b . Other details pertaining to the node, such as an identifier, entity association etc. may also be held. This data structure may be held within a memory associated with each node, or may be held in a memory associated with the shard, for instance. - In a second embodiment that relates to a sharded network as seen in
FIG. 1b , a technique where the nodes communicate with multiple other nodes within a single shard is explained. This technique advantageously prevents a “Sybil style” attack within a blockchain network A Sybil attack is an attack where a single adversary or malign entity may be controlling multiple nodes on a network, unknown to the network. For example, an adversary may create multiple computers and IP addresses, and may also can create multiple accounts/nodes in an attempt to pretend that they all exist. The manifestation of such an attack may be seen by the following example implementations. If an attacker attempts to fill the network with clients that they control, then a node may then be very likely to connect only to attacker nodes. For example, the attacker can refuse to relay blocks and transactions for a node, effectively disconnecting that particular node from the network. This can also be manifested by the attacker relaying blocks that they create, effectively putting a node or entity on a separate network, thereby leaving a node and transactions associated with that node or the entity it represents open to double-spending attacks. Sybil attacks are thus a problem for existing blockchain networks. - To prevent Sybil attacks in a sharded blockchain network such as seen in
FIG. 1b , nodes are configured to communicate with multiple or all other nodes within a single shard, according to the second embodiment. As discussed above, Sybil attacks can effectively disregard transactions sent from a particular node, preventing their propagation further through the network. Therefore, in the second embodiment of the present disclosure, a technique by which nodes in a given shard can exchange information regarding nodes in other shards, and rotate their usage, as is seen inFIG. 2 . - According to the second embodiment, each node in the sharded network can broadcast every transaction to each other. If a given node is not a member of the shard that is associated with a transaction (this association is described below with reference to the third and fourth embodiments), then instead of doing a full transaction validation, it performs basic transaction-level checks before propagating onwards. It is noted that in some implementations, the protocols and rules discussed above in relation to the second embodiment are related to and considered to be part of one or more or all of the other embodiments of the present disclosure discussed herein.
- At different or specific times/instances, details about other nodes can also be shared between nodes in specific shards. This is performed according to the second embodiment of the present disclosure using a modified version of addr protocol messages. An implementation of addr messages that currently exist as part of the Bitcoin protocol is used to list or identify one or more IP addresses and ports. For example, a getaddr request may be used to obtain an addr message containing a bunch of known-active peers (for bootstrapping, for example). addr messages often contain only one address, but sometimes contain many more, and in some examples, up to a 1000. In some examples, all nodes broadcast an addr containing their own IP address periodically, i.e. every 24 hours. Nodes may then relay these messages to their peers, and can store the addresses relayed, if new to them. This way, the nodes in the network may have a reasonably clear picture of which IPs are connected to the network at the moment of, or after connecting to the network. In most cases the IP address gets added to everyone's address database because of an initial addr broadcast.
- An implementation of a modified addr protocol according to the present disclosure, in addition to the above may be capable of transmitting additional information on which to shard or shards a particular node belongs. For instance, in the modified addr protocol, when a node in a shared network such as
FIG. 1b joins a particular shard in the network, then what is broadcast as part of the addr message may also include a field identifying the one or more shards it is a member of. This information is also therefore returned in response to a getaddr request from a peer in the network ofFIG. 1b . As discussed in the first embodiment, such information may be based on a data structure associated with each node and/or each shard to which the node is associated with. In some embodiments, the modified addr protocol may also include the status of the shards of which the node is a member of and/or the status of the node itself. For instance, details of the number of nodes in each member shard may be identified, or if a particular shard is active, or the number of active nodes in a given shard may also be identified. - Allocating Transactions to Shards in a Sharded Network
- As described above, in a sharded blockchain network, transactions are not validated and stored by every node, but instead they are allocated to one or more specific shards. Therefore, a strategy for allocating transactions to different shards is required. Two possible embodiments will be described below and are referred to as “transaction id-based” sharding according to a third embodiment of the present disclosure and “input-based” sharding, according to a fourth embodiment of the present disclosure.
- In some implementations, it is possible that the existing Bitcoin protocol would be likely to undergo a fork in order to initiate either scheme. When nodes in a given shard subsequently receive a transaction, they may check it has been sent to the correct shard. This approach provides balancing of transactions across shards.
- Either sharding method may be applied to the blockchain retroactively, and to any extent. That is, either method may be applied such that a sharded network is defined as existing from the time of the first block in the blockchain (the so-called genesis block in the case of the Bitcoin blockchain) all the way through to an arbitrarily chosen block number in the future.
- The sharding methods described below may be applied a multiple number of times in sequence, and in any order. For example, transaction-id sharding may be performed in the first instance, and input-based sharding may be performed at a later date. Furthermore, either one of the methods may be applied retroactively, as described above, and further to this, either method may be subsequently applied. The number of shards, n, may be chosen each time a sharding method is applied and allows the protocol to scale by increasing the number of nodes. The number of nodes may be chosen based on the number of total nodes on the network, the size of the blockchain, and/or on other characteristics. For both of the sharding methods described below, the manner in which the transactions are stored by each node once sharding has taken place will also be described.
- Transaction Id Based Shard Distribution
- In a horizontally-partitioned blockchain, as each shard does not contain and handle all transactions on the network, a strategy for allocating transactions to different shards is required. Furthermore, any sharding method needs to be capable of performing further sharding. In a third embodiment of the present disclosure, as explained with the help of
FIG. 3 , transaction distribution across shards is handled based on a transaction id (txid). - In
step 302, the transaction id for a given transaction is created, indicated as txid. In some implementations, this txid is obtained as a result of applying a SHA256 function to the transaction data. - In
step 304, using this transaction id, an operation is carried out based on the txid and the available number of shards in the sharded network. In some implementations, a modulus of the number of shards currently active on the blockchain network is applied to the transaction id, i.e. shard number=txid mod n, where n is the (desired or active) number of shards. - In
step 306, the result ofstep 304 then corresponds to the shard to which the given transaction is allocated. - In
step 308, once allocated instep 306, the transaction is distributed to the identified shard, i.e. the transaction is to be distributed to nodes comprised in the identified shard instep 306. - Therefore, when nodes in a given shard receive a transaction, they can easily check it has been sent to the correct shard. In some embodiments, such checking may be facilitated based on data structures associated with each node that include information associated with the node, as discussed above in the first embodiment. Advantageously, this approach provides an even balancing of transactions across shards.
- Shard count on the network can be arbitrarily chosen on the basis of a number of parameters, including:
-
- Number of total nodes on the network; and
- The size of the blockchain.
- Input-Based Shard Distribution
- A sharding method according to a fourth embodiment of the present disclosure as explained with the help of the flow diagram in
FIG. 4 . - In this embodiment, in
step 402, an input of a given transaction is identified. In some implementations, this is the first input for the transaction. - In
step 404, an output of an earlier transaction to which the input instep 402 refers to is identified. - In
step 406, the results ofstep FIG. 1b . In some implementations, this step includes identifying the shard to allocate both the transactions to. In one example, this may be a shard that is associated with the earlier transaction, in case this has already been allocated. In another example, as discussed above, a modified addr broadcast or a response to a getaddr request for either the given or earlier transaction may be used to identify the shard. In other examples, a shard may be selected on a random or a prescribed, i.e. rotation based, basis for both transactions, as long as both are assigned to the same shard. This may be applied for instance if a parent transaction is not identified, i.e. if it is a coinbase transaction that is received. - Step 408 shows that the above process in
steps 402 to 406 is iterated to generate chains of transactions linked by their first inputs. - A transaction whose output is referred to by a first input of a subsequent transaction is referred to in this context as a “parent” transaction, and the subsequent transaction is referred to as a “child” transaction.
- It is to be noted that the usage of the first input to define a parent in
step 402 is not essential to the method; as any input may be chosen to perform the method if a plurality of inputs are present in a given transaction. For example, an earlier transaction may be defined as a parent of a child transaction if a particular number of inputs of the child transaction refer to outputs of transactions in the same shard as the parent. The number of inputs may define a majority number of inputs of the child transaction. Thus, in some implementations discussed above instep 406 the shard that is allocated will be the same as that of the identified parent based on either the number of inputs or indeed the first or any other prescribed particular input to be considered. - It is to be noted that the above two sharding methods of the third and fourth embodiments may be performed sequentially, in any order, and that the two methods may be performed multiple times as desired. For example, a blockchain network may be forked in accordance with Input-Based distribution of the fourth embodiment, and subsequently one or more of the resulting forks may be sharded in accordance with Transaction ID-Based distribution of the third embodiment.
- UTXO Set/Mempool Sharding
- In the Bitcoin network currently, every node maintains its own UTXO set, which is checked and updated during validation. An example of a UTXO set is shown in
FIG. 5 . - In accordance with a fifth embodiment of the present disclosure, in a sharded blockchain (such as shown in
FIG. 1b ), each member node of one or more shards has a UTXO set related to the transactions which are related to each shard of which the node is a member. This is further illustrated inFIG. 6 , which depicts the nodes that are members of more than one shard. These are seen by the overlapping distinctly shaded regions in this figure. It will be understood that in some implementations, such UTXO sets, hereinafter referred to as sharded UTXO's, in relation to the fifth embodiment may relate to and considered to be part of one or more or all of the other embodiments of the present disclosure discussed herein. - Transaction Validation
- For transactions to validate, the UTXO set needs to be checked and updated in the Bitcoin network. The present disclosure provides a new version of this process for implementing validation for a sharded blockchain, when the UTXO set is sharded. As described above, each node on the sharded blockchain, such as in
FIG. 1b , is associated with or maintains a list of nodes on the network, including information of which shard they are members. This is discussed above, in relation to the first embodiment. - Two methods are described below for transaction validation according to the present disclosure, which can be used for checking the UTXO set. These are named Transaction Shard Validation, according to the sixth embodiment; and UTXO Shard Validation, according to the seventh embodiment of the disclosure, respectively.
- Transaction Shard Validation
- In the sixth embodiment, transaction validation is carried out by the shard to which the transaction is allocated. As described above in relation to the third embodiment, transactions are distributed to a shard using the result of a modulo function applied to the transaction id. Because a transaction can have inputs from different shards, validation nodes communicate with other shards for UTXO checks.
- Referring to
FIG. 7a , the UTXO set check carried out between nodes in different shards will now be described. This process is also explained in relation toFIG. 7 b. - According to the sixth embodiment, a node in
Shard 4 makes a request to the nodes inShard 1 that are known to it to fetch the UTXO. This is seen instep 702. The shard numbers are specified for illustration only, and any given node associated with any given shard may perform this request. - The validity of the response received is then assessed in
step 704. If none of the nodes have the UTXO, a null response is given. In this case, the transaction in question is deemed invalid instep 706. No further propagation of the transaction will take place, in this case. In some cases, a transaction is also deemed invalid if there is a script error, for instance, or any indication that the UTXO is not available. - Where a UTXO of the given transaction is received, the transaction input is deemed as valid in
step 708. As discussed in the background section, it is known that software clients or programs or applications installed on nodes may perform this validation on a UTXO by executing its locking and unlocking scripts. In some implementations, this is referred to as the validity data for the transactions. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain. Furthermore, as also discussed above, one of the validity checks is to check that there has not been a double spend. In some implementations, when a node receives a transaction, it will look up the UTXOs that the transaction spends in a data structure associated with the node, or of the associated shard. - In
step 710 the transaction in question is then added toshard 4's or the node onshard 4's mempool. - In step 712, the transaction is then propagated to other nodes in
shard 4. - UTXO Shard-Based Validation
- In the seventh embodiment, transactions are propagated to the shards (of a sharded network as seen in
FIG. 1b ) containing the UTXOs of a given transaction. -
FIG. 8a illustrates a spending transaction (Tx) created by a node inShard 4 being propagated to each of the shards containing the UTXOs of that transaction. In this embodiment, the node sends the transaction to bothShard FIG. 8 b. - When a node within a shard receives a given transaction in
step 802, it proceed to then validate the transaction based on inputs which are within the same shard in this embodiment. In some implementations, responsive to receiving a given transaction at a node, this step may further include determining at least one shard comprising that at least one UTXO associated with the node is referenced by at least one respective input of the given transaction. As discussed above, the node is associated with a set of UTXOs that relate to one or more transactions allocated to each shard that that the node is a member of. - In
step 804, it is checked if the given transaction's input is associated with the same shard. The transaction may be allocated to a shard as discussed above, according to the fourth embodiment. As discussed above, if the node is a member of more than one shard, then the “same” shard check in this step will apply to any of such shard. - Inputs that relate to UTXOs in a different shard are not validated, as seen in
step 806 b. In some implementations, the validation of each input may be carried out much in the same way as validations may be currently carried out in the Bitcoin network. Otherwise, the node proceeds to validate the transaction instep 806 a. - Further to step 806 a, the validity of an input associated with the given transaction is checked in
step 808. As discussed above, and also insteps FIG. 7b , validation on an unspent transaction (UTXO) may be by executing its locking and unlocking scripts. In some implementations, this is referred to as the validity data for the transactions. If execution of the locking and unlocking scripts evaluate to TRUE, the transaction is valid and the transaction is written to the blockchain. Furthermore, as also discussed above, one of the validity checks is to check that there has not been a double spend. In some implementations, when a node receives a transaction, it will look up the UTXOs that the transaction spends in a data structure associated with the node, or with the shard of the node. - In the case where an input is invalid, such as when the UTXO does not exist, or the value is greater than the UTXO, or if there is a script error; then the given transaction is dropped as seen in
step 810 b. In this case, the given transaction is not propagated to other nodes in the same shard. - If the input is deemed valid, the transaction is identified as being valid in
step 810 a. - The transaction is then added to the node's mempool in
step 812. - The transaction is propagated to other nodes in the shard associated with the node, in
step 814. - Turning now to
FIG. 9 , there is provided an illustrative, simplified block diagram of acomputing device 2600 that may be used to practice at least one embodiment of the present disclosure. In various embodiments, thecomputing device 2600 may be used to implement a node or a combination of nodes in one or more shards of the sharded blockchain network seen inFIG. 1b , and/or any of the computer implemented systems, methods or protocols illustrated and described above when taken alone or when communicatively coupled to one or more other such nodes or systems. - For example, the
computing device 2600 may be configured for use as a data server, a web server, a portable computing device, a personal computer, or any electronic computing device. As shown inFIG. 9 , thecomputing device 2600 may include one or more processors with one or more levels of cache memory and a memory controller (collectively labelled 2602) that can be configured to communicate with astorage subsystem 2606 that includesmain memory 2608 andpersistent storage 2610. Themain memory 2608 can include dynamic random-access memory (DRAM) 2618 and read-only memory (ROM) 2620 as shown. Thestorage subsystem 2606 and thecache memory 2602 and may be used for storage of information, such as details associated with transactions and blocks as described in the present disclosure. The processor(s) 2602 may be utilized to provide the steps or functionality of any embodiment as described in the present disclosure. - The processor(s) 2602 can also communicate with one or more user
interface input devices 2612, one or more userinterface output devices 2614, and anetwork interface subsystem 2616. - A
bus subsystem 2604 may provide a mechanism for enabling the various components and subsystems ofcomputing device 2600 to communicate with each other as intended. Although thebus subsystem 2604 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses. - The
network interface subsystem 2616 may provide an interface to other computing devices and networks. Thenetwork interface subsystem 2616 may serve as an interface for receiving data from, and transmitting data to, other systems from thecomputing device 2600. For example, thenetwork interface subsystem 2616 may enable a data technician to connect the device to a network such that the data technician may be able to transmit data to the device and receive data from the device while in a remote location, such as a data centre. - The user
interface input devices 2612 may include one or more user input devices such as a keyboard; pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet; a scanner; a barcode scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems, microphones; and other types of input devices. In general, use of the term “input device” is intended to include all possible types of devices and mechanisms for inputting information to thecomputing device 2600. - The one or more user
interface output devices 2614 may include a display subsystem, a printer, or non-visual displays such as audio output devices, etc. The display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), light emitting diode (LED) display, or a projection or other display device. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from thecomputing device 2600. The one or more userinterface output devices 2614 may be used, for example, to present user interfaces to facilitate user interaction with applications performing processes described and variations therein, when such interaction may be appropriate. - The
storage subsystem 2606 may provide a computer-readable storage medium for storing the basic programming and data constructs that may provide the functionality of at least one embodiment of the present disclosure. The applications (programs, code modules, instructions), when executed by one or more processors, may provide the functionality of one or more embodiments of the present disclosure, and may be stored in thestorage subsystem 2606. These application modules or instructions may be executed by the one ormore processors 2602. Thestorage subsystem 2606 may additionally provide a repository for storing data used in accordance with the present disclosure. For example, themain memory 2608 andcache memory 2602 can provide volatile storage for program and data. Thepersistent storage 2610 can provide persistent (non-volatile) storage for program and data and may include flash memory, one or more solid state drives, one or more magnetic hard disk drives, one or more floppy disk drives with associated removable media, one or more optical drives (e.g. CD-ROM or DVD or Blue-Ray) drive with associated removable media, and other like storage media. Such program and data can include programs for carrying out the steps of one or more embodiments as described in the present disclosure as well as data associated with transactions and blocks as described in the present disclosure. - The
computing device 2600 may be of various types, including a portable computer device, tablet computer, a workstation, or any other device described below. Additionally, thecomputing device 2600 may include another device that may be connected to thecomputing device 2600 through one or more ports (e.g., USB, a headphone jack, Lightning connector, etc.). The device that may be connected to thecomputing device 2600 may include a plurality of ports configured to accept fibre-optic connectors. Accordingly, this device may be configured to convert optical signals to electrical signals that may be transmitted through the port connecting the device to thecomputing device 2600 for processing. Due to the ever-changing nature of computers and networks, the description of thecomputing device 2600 depicted inFIG. 9 is intended only as a specific example for purposes of illustrating the preferred embodiment of the device. Many other configurations having more or fewer components than the system depicted inFIG. 9 are possible. - It should be noted that the above-mentioned embodiments illustrate rather than limit the disclosure, and that those skilled in the art will be capable of designing many alternative embodiments without departing from the scope of the disclosure as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the claims. The word “comprising” and “comprises”, and the like, does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. In the present specification, “comprises” means “includes or consists of” and “comprising” means “including or consisting of”. The singular reference of an element does not exclude the plural reference of such elements and vice-versa. The disclosure may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
- It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. Although the disclosure has been described with reference to specific example implementations, it will be recognized that the disclosure is not limited to the implementations described but can be practiced with modification and alteration within the scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (20)
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1806930.2 | 2018-04-27 | ||
GB1806911.2 | 2018-04-27 | ||
GBGB1806909.6A GB201806909D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GBGB1806911.2A GB201806911D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GBGB1806930.2A GB201806930D0 (en) | 2018-04-27 | 2018-04-27 | Computer-implemented systems and methods |
GBGB1806907.0A GB201806907D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GB1806907.0 | 2018-04-27 | ||
GB1806909.6 | 2018-04-27 | ||
GB1806914.6 | 2018-04-27 | ||
GBGB1806914.6A GB201806914D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
PCT/IB2019/053382 WO2019207503A1 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
Publications (1)
Publication Number | Publication Date |
---|---|
US20210233074A1 true US20210233074A1 (en) | 2021-07-29 |
Family
ID=66397390
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/050,836 Active US11856100B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/051,070 Active US11743045B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/051,083 Pending US20210233074A1 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/050,837 Active 2040-12-28 US12028453B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/051,075 Active 2040-03-27 US11973869B2 (en) | 2018-04-27 | 2019-04-24 | Maintaining blocks of a blockchain in a partitioned blockchain network |
US18/221,325 Pending US20240048378A1 (en) | 2018-04-27 | 2023-07-12 | Partitioning a blockchain network |
US18/388,498 Pending US20240154807A1 (en) | 2018-04-27 | 2023-11-09 | Partitioning a blockchain network |
US18/610,073 Pending US20240348442A1 (en) | 2018-04-27 | 2024-03-19 | Maintaining blocks of a blockchain in a partitioned blockchain network |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/050,836 Active US11856100B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/051,070 Active US11743045B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/050,837 Active 2040-12-28 US12028453B2 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
US17/051,075 Active 2040-03-27 US11973869B2 (en) | 2018-04-27 | 2019-04-24 | Maintaining blocks of a blockchain in a partitioned blockchain network |
US18/221,325 Pending US20240048378A1 (en) | 2018-04-27 | 2023-07-12 | Partitioning a blockchain network |
US18/388,498 Pending US20240154807A1 (en) | 2018-04-27 | 2023-11-09 | Partitioning a blockchain network |
US18/610,073 Pending US20240348442A1 (en) | 2018-04-27 | 2024-03-19 | Maintaining blocks of a blockchain in a partitioned blockchain network |
Country Status (9)
Country | Link |
---|---|
US (8) | US11856100B2 (en) |
EP (5) | EP3785208A1 (en) |
JP (9) | JP7362654B2 (en) |
KR (5) | KR20210003214A (en) |
CN (6) | CN112041873B (en) |
SG (5) | SG11202008896QA (en) |
TW (6) | TWI816781B (en) |
WO (5) | WO2019207500A1 (en) |
ZA (2) | ZA202005969B (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200074458A1 (en) * | 2018-08-30 | 2020-03-05 | International Business Machines Corporation | Privacy preserving transaction system |
US20220300257A1 (en) * | 2019-05-24 | 2022-09-22 | nChain Holdings Limited | In-Script Functions Within a Blockchain Transaction |
US20220337437A1 (en) * | 2019-09-12 | 2022-10-20 | nChain Holdings Limited | Blockchain transactions including portions of code in different languages for complex validation |
US12045830B2 (en) | 2019-05-24 | 2024-07-23 | Nchain Licensing Ag | Protocol for validating blockchain transactions |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10419225B2 (en) | 2017-01-30 | 2019-09-17 | Factom, Inc. | Validating documents via blockchain |
US10411897B2 (en) | 2017-02-17 | 2019-09-10 | Factom, Inc. | Secret sharing via blockchains |
US10817873B2 (en) | 2017-03-22 | 2020-10-27 | Factom, Inc. | Auditing of electronic documents |
US10783164B2 (en) | 2018-05-18 | 2020-09-22 | Factom, Inc. | Import and export in blockchain environments |
US11134120B2 (en) | 2018-05-18 | 2021-09-28 | Inveniam Capital Partners, Inc. | Load balancing in blockchain environments |
US11170366B2 (en) | 2018-05-18 | 2021-11-09 | Inveniam Capital Partners, Inc. | Private blockchain services |
US12093247B2 (en) * | 2018-06-25 | 2024-09-17 | Redbelly Blockchain Holdings Pty Ltd | Blockchain system and method |
US11989208B2 (en) | 2018-08-06 | 2024-05-21 | Inveniam Capital Partners, Inc. | Transactional sharding of blockchain transactions |
US11328290B2 (en) | 2018-08-06 | 2022-05-10 | Inveniam Capital Partners, Inc. | Stable cryptocurrency coinage |
US11334874B2 (en) | 2018-08-06 | 2022-05-17 | Inveniam Capital Partners, Inc. | Digital contracts in blockchain environments |
US11301590B2 (en) * | 2018-09-05 | 2022-04-12 | International Business Machines Corporation | Unfalsifiable audit logs for a blockchain |
US12095934B2 (en) * | 2018-09-13 | 2024-09-17 | International Business Machines Corporation | Sparse peer with transient participation |
KR102712518B1 (en) * | 2018-11-20 | 2024-10-02 | 서강대학교산학협력단 | Method for distributing transaction load between shard based on ethereum sharding envirionment |
BR112019015423A8 (en) * | 2018-12-13 | 2023-03-28 | Advanced New Technologies Co Ltd | COMPUTER-IMPLEMENTED METHOD TO PROTECT SENSITIVE DATA STORED IN A TRUST PROTOCOL MAINTAINED BY A TRUST PROTOCOL NETWORK, A NON-TRANSITORY STORAGE MEDIA, READABLE BY COMPUTER AND SYSTEM |
US11483143B2 (en) * | 2019-04-15 | 2022-10-25 | Smart Security Systems, Llc | Enhanced monitoring and protection of enterprise data |
US20220200973A1 (en) * | 2019-04-15 | 2022-06-23 | Bear System, LLC | Blockchain schema for secure data transmission |
US11711202B2 (en) | 2019-05-29 | 2023-07-25 | International Business Machines Corporation | Committing data to blockchain based on approximate hash verification |
US11539527B2 (en) | 2019-05-29 | 2022-12-27 | International Business Machines Corporation | Peer node recovery via approximate hash verification |
US11429738B2 (en) | 2019-05-29 | 2022-08-30 | International Business Machines Corporation | Blockchain endorsement with approximate hash verification |
US11516000B2 (en) * | 2019-05-29 | 2022-11-29 | International Business Machines Corporation | Approximate hash verification of unused blockchain output |
US11570002B2 (en) | 2019-05-29 | 2023-01-31 | International Business Machines Corporation | Reduced-step blockchain verification of media file |
CN110958324B (en) * | 2019-12-12 | 2023-12-19 | 度小满科技(北京)有限公司 | Data processing method and device of block chain network |
US11343075B2 (en) | 2020-01-17 | 2022-05-24 | Inveniam Capital Partners, Inc. | RAM hashing in blockchain environments |
WO2021145606A1 (en) * | 2020-01-17 | 2021-07-22 | Samsung Electronics Co., Ltd. | User apparatus and manager apparatus included in blockchain network and controlling method thereof |
WO2021150163A1 (en) * | 2020-01-22 | 2021-07-29 | The Flowchain Foundation Limited | Storage virtualization architecture with hybrid blockchain and the method thereof |
CN111428275B (en) * | 2020-03-13 | 2021-03-26 | 华东师范大学 | Alliance chain-oriented service non-stop fragment increasing method |
CN111488202B (en) * | 2020-04-07 | 2023-08-15 | 百度国际科技(深圳)有限公司 | Transaction processing method, device, equipment, system and medium of multi-chain system |
US11720453B2 (en) * | 2020-04-28 | 2023-08-08 | Akamai Technologies, Inc. | High performance distributed system of record with unspent transaction output (UTXO) database snapshot integrity |
WO2021232295A1 (en) * | 2020-05-20 | 2021-11-25 | 新华三技术有限公司 | Method and apparatus for monitoring software license information, and server and storage medium |
US20220006641A1 (en) * | 2020-07-03 | 2022-01-06 | Inveniam Capital Partners, Inc. | Distribution of Blockchain Validation |
US11853291B2 (en) | 2020-07-06 | 2023-12-26 | International Business Machines Corporation | Privacy preserving architecture for permissioned blockchains |
US11741083B2 (en) | 2020-07-24 | 2023-08-29 | International Business Machines Corporation | Cross-shard private atomic commit |
KR102337760B1 (en) * | 2020-08-27 | 2021-12-08 | 연세대학교 산학협력단 | Apparatus and method for adaptively managing sharded blockchain network based on Deep Q Network |
CN112559204A (en) * | 2020-12-08 | 2021-03-26 | 中山市当下科技有限公司 | Application data communication structure in UTXO account model block chain |
CN112615826A (en) * | 2020-12-08 | 2021-04-06 | 中山市当下科技有限公司 | MetaID protocol format structure applied to UTXO block chain |
CN112269423B (en) * | 2020-12-21 | 2021-03-19 | 支付宝(杭州)信息技术有限公司 | Method for locking global clock in blockchain system and blockchain system |
CN112839086B (en) * | 2021-01-06 | 2022-02-08 | 中山大学 | Network resource allocation method and device based on block chain fragmentation technology, terminal equipment and storage medium |
EP4057173B1 (en) * | 2021-03-09 | 2023-10-11 | SW7 Ventures (H.K.) Limited | System and method of securely establishing control of a resource |
US12008526B2 (en) | 2021-03-26 | 2024-06-11 | Inveniam Capital Partners, Inc. | Computer system and method for programmatic collateralization services |
GB202105020D0 (en) * | 2021-04-08 | 2021-05-26 | Nchain Licensing Ag | Uniform resource identifier |
CN113360951B (en) * | 2021-05-12 | 2022-08-16 | 电子科技大学 | Electronic evidence preservation method based on partitioned block chain |
CN113067904B (en) * | 2021-06-02 | 2021-09-14 | 支付宝(杭州)信息技术有限公司 | Method for building block chain sub-network and block chain system |
US12007972B2 (en) | 2021-06-19 | 2024-06-11 | Inveniam Capital Partners, Inc. | Systems and methods for processing blockchain transactions |
US12107966B2 (en) * | 2021-06-26 | 2024-10-01 | Ceremorphic, Inc. | Device authentication using blockchain |
KR20230004216A (en) * | 2021-06-30 | 2023-01-06 | 주식회사 아티프렌즈 | Token issuance service apparatus and method for media content based on blockchain |
US11968311B2 (en) * | 2021-07-16 | 2024-04-23 | The Regents Of The University Of California | Multi-shard transactions in a Byzantine computing environment |
KR20230018876A (en) | 2021-07-30 | 2023-02-07 | 서강대학교산학협력단 | Method for distributed-storing data based on shard and a blockchain network system using the method |
WO2023177358A1 (en) * | 2022-03-18 | 2023-09-21 | National University Of Singapore | Distributed verifiable ledger database |
KR102596700B1 (en) * | 2022-06-03 | 2023-11-09 | 주식회사 블룸테크놀로지 | System and method for inter shard transaction in blockchain network |
KR102628759B1 (en) * | 2022-06-14 | 2024-01-23 | 주식회사 블룸테크놀로지 | System and method for changing a working-shard of an account in blockchain network |
CN117422549A (en) * | 2022-07-11 | 2024-01-19 | 汇丰软件开发(广东)有限公司 | UTXO-based slicing method used in supervised cryptocurrency scene |
KR20240024465A (en) * | 2022-08-17 | 2024-02-26 | 주식회사 블룸테크놀로지 | Dynamic sharding system and method in blockchain network |
KR20240057605A (en) * | 2022-10-25 | 2024-05-03 | 주식회사 블룸테크놀로지 | System and method for creating an account in blockchain network |
KR102682674B1 (en) * | 2022-11-03 | 2024-07-16 | 주식회사 블룸테크놀로지 | System and method for distributing nodes across two shards in blockchain network |
US11914616B1 (en) | 2022-12-16 | 2024-02-27 | Alchemy Insights, Inc. | Systems and methods for creating a consistent blockchain including block commitment determinations |
US11769143B1 (en) | 2022-12-22 | 2023-09-26 | Alchemy Insights, Inc. | System and method for high performance providing fresh NFT metadata |
US11728976B1 (en) | 2022-12-22 | 2023-08-15 | Alchemy Insights, Inc. | Systems and methods for efficiently serving blockchain requests using an optimized cache |
US11750711B1 (en) | 2022-12-22 | 2023-09-05 | Alchemy Insights, Inc. | Systems and methods for adaptively rate limiting client service requests at a blockchain service provider platform |
US11816021B1 (en) | 2022-12-22 | 2023-11-14 | Alchemy Insights, Inc. | System and method for intelligent testing of blockchain applications using a shadow system |
US11811955B1 (en) * | 2022-12-23 | 2023-11-07 | Alchemy Insights, Inc. | Systems and methods for improving reliability in blockchain networks using sharding |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758257A (en) * | 1994-11-29 | 1998-05-26 | Herz; Frederick | System and method for scheduling broadcast of and access to video programs and other data using customer profiles |
GB9426341D0 (en) * | 1994-12-29 | 1995-03-01 | At & T Global Inf Solution | A transaction terminal |
DE10104713A1 (en) * | 2001-02-02 | 2002-08-08 | Siemens Ag | Message accessing method e.g. for multi-media messaging service, allows initial message to by manipulated, called back or altered via transmission of second message |
US7590589B2 (en) | 2004-09-10 | 2009-09-15 | Hoffberg Steven M | Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference |
US7774010B2 (en) * | 2005-07-06 | 2010-08-10 | Nokia Corporation | Peer-to-peer group management framework and methodology |
US8874477B2 (en) | 2005-10-04 | 2014-10-28 | Steven Mark Hoffberg | Multifactorial optimization system and method |
US7702614B1 (en) | 2007-03-30 | 2010-04-20 | Google Inc. | Index updating using segment swapping |
JP2009000708A (en) | 2007-06-20 | 2009-01-08 | Nikon Corp | Light irradiation device, and laser beam machining apparatus equipped with the same |
US20110029319A1 (en) | 2009-07-29 | 2011-02-03 | Google Inc. | Impression forecasting and reservation analysis |
EP2973043A2 (en) * | 2013-03-15 | 2016-01-20 | James Webber | Method and apparatus for ensuring consistent outcomes in updates to distributed databases |
CN103268321B (en) * | 2013-04-19 | 2016-04-27 | 中国建设银行股份有限公司 | High concurrent transaction data processing method and device |
US11270298B2 (en) * | 2014-04-14 | 2022-03-08 | 21, Inc. | Digital currency mining circuitry |
WO2016161073A1 (en) * | 2015-03-31 | 2016-10-06 | Nasdaq, Inc. | Systems and methods of blockchain transaction recordation |
US10812274B2 (en) * | 2015-05-07 | 2020-10-20 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
US20160342989A1 (en) * | 2015-05-21 | 2016-11-24 | Mastercard International Incorporated | Method and system for processing blockchain-based transactions on existing payment networks |
EP3317775B1 (en) * | 2015-07-02 | 2022-02-16 | Nasdaq, Inc. | Systems and methods of secure provenance for distributed transaction databases |
US20170048235A1 (en) | 2015-07-14 | 2017-02-16 | Fmr Llc | Crypto Captcha and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems |
US20170091726A1 (en) * | 2015-09-07 | 2017-03-30 | NXT-ID, Inc. | Low bandwidth crypto currency transaction execution and synchronization method and system |
US20170116693A1 (en) | 2015-10-27 | 2017-04-27 | Verimatrix, Inc. | Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger |
US20170132626A1 (en) * | 2015-11-05 | 2017-05-11 | Mastercard International Incorporated | Method and system for processing of a blockchain transaction in a transaction processing network |
US20170236103A1 (en) * | 2016-02-12 | 2017-08-17 | D+H Usa Corporation | Peer-to-Peer Financial Transactions Using A Private Distributed Ledger |
US11120437B2 (en) * | 2016-02-23 | 2021-09-14 | nChain Holdings Limited | Registry and automated management method for blockchain-enforced smart contracts |
EP4167165A1 (en) * | 2016-02-23 | 2023-04-19 | nChain Licensing AG | Blockchain-based exchange with tokenisation |
AU2017225932C1 (en) | 2016-02-29 | 2021-06-24 | Securekey Technologies Inc. | Systems and methods for distributed identity verification |
EP3440823B1 (en) * | 2016-04-05 | 2020-09-02 | Zamna Technologies Limited | Method and system for managing personal information within independent computer systems and digital networks |
US10404469B2 (en) | 2016-04-08 | 2019-09-03 | Chicago Mercantile Exchange Inc. | Bilateral assertion model and ledger implementation thereof |
US10346428B2 (en) | 2016-04-08 | 2019-07-09 | Chicago Mercantile Exchange Inc. | Bilateral assertion model and ledger implementation thereof |
CN105931052A (en) * | 2016-04-21 | 2016-09-07 | 四川大学 | Virtual currency transaction validation method based on block chain multi-factor cross-validation |
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 |
WO2017194976A1 (en) * | 2016-05-13 | 2017-11-16 | De La Rue International Limited | Methods and systems for processing assets |
US10417188B2 (en) * | 2016-05-27 | 2019-09-17 | Mastercard International Incorporated | Method and system for transferring trust across block chain segments |
US20170357966A1 (en) * | 2016-06-09 | 2017-12-14 | Mastercard International Incorporated | Method and system for use of a proprietary private blockchain |
US10097344B2 (en) | 2016-07-15 | 2018-10-09 | Mastercard International Incorporated | Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains |
CN106251216B (en) * | 2016-07-18 | 2020-12-25 | 恒宝股份有限公司 | Method and system for relieving storage pressure of node |
CN107666388B (en) * | 2016-07-28 | 2019-11-01 | 郑珂威 | Block chain information encryption method based on complete homomorphic cryptography method |
US10417217B2 (en) | 2016-08-05 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
CN106302702B (en) * | 2016-08-10 | 2020-03-20 | 华为技术有限公司 | Data fragment storage method, device and system |
CN106372941B (en) * | 2016-08-31 | 2019-07-16 | 江苏通付盾科技有限公司 | Based on the ca authentication management method of block chain, apparatus and system |
WO2018050222A1 (en) | 2016-09-14 | 2018-03-22 | Innogy Se | System comprising an electrical producer arrangement |
CN106503053B (en) * | 2016-09-26 | 2019-07-16 | 江苏通付盾科技有限公司 | UTXO querying method and device |
US11128603B2 (en) * | 2016-09-30 | 2021-09-21 | Nec Corporation | Method and system for providing a transaction forwarding service in blockchain implementations |
JP6825296B2 (en) | 2016-10-11 | 2021-02-03 | 富士通株式会社 | Edge server and its encrypted communication control method |
JP6274680B1 (en) | 2016-10-18 | 2018-02-07 | 株式会社大和総研ビジネス・イノベーション | Transaction recording system and program |
CN107045518A (en) * | 2016-10-18 | 2017-08-15 | 北京天德科技有限公司 | A kind of extension design method of block chain |
US11004130B2 (en) * | 2016-10-26 | 2021-05-11 | International Business Machines Corporation | Computer implemented method, an apparatus and a non transitory computer readable storage medium for verifying reviews on a blockchain |
US10491378B2 (en) | 2016-11-16 | 2019-11-26 | StreamSpace, LLC | Decentralized nodal network for providing security of files in distributed filesystems |
CN106797389A (en) * | 2016-11-18 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | Block chain network, article trading method, device and node device |
US10540652B2 (en) | 2016-11-18 | 2020-01-21 | Intel Corporation | Technology for secure partitioning and updating of a distributed digital ledger |
CN106530072A (en) * | 2016-11-22 | 2017-03-22 | 天津米游科技有限公司 | Block chain consensus mechanism |
CN106559211B (en) * | 2016-11-22 | 2019-12-13 | 中国电子科技集团公司第三十研究所 | Privacy protection intelligent contract method in block chain |
CN106603198A (en) * | 2016-12-02 | 2017-04-26 | 深圳大学 | Blockchain distributed storage method and system with network coding |
US10396997B2 (en) | 2016-12-14 | 2019-08-27 | International Business Machines Corporation | Container-based operating system and method |
CN106897351B (en) * | 2016-12-29 | 2020-11-10 | 北京瑞卓喜投科技发展有限公司 | Generation method and system of directed acyclic graph block chain |
US10447480B2 (en) * | 2016-12-30 | 2019-10-15 | Guardtime Sa | Event verification receipt system and methods |
CN107018125B (en) * | 2017-02-17 | 2019-08-09 | 阿里巴巴集团控股有限公司 | A kind of block catenary system, date storage method and device |
CN107040582B (en) * | 2017-02-17 | 2020-08-14 | 创新先进技术有限公司 | Data processing method and device |
WO2018165044A1 (en) | 2017-03-08 | 2018-09-13 | Mcafee, Llc | Aggregate, index-based, real-time verification of node contents |
CN106936589B (en) * | 2017-04-21 | 2020-02-07 | 杭州秘猿科技有限公司 | Centerless license chain parallel fragmentation method and transaction method |
CN107239940A (en) * | 2017-05-11 | 2017-10-10 | 北京博晨技术有限公司 | Network trading method and device based on block catenary system |
US10397328B2 (en) | 2017-05-17 | 2019-08-27 | Nec Corporation | Method and system for providing a robust blockchain with an integrated proof of storage |
US11626993B2 (en) | 2017-05-22 | 2023-04-11 | Visa International Service Association | Network for improved verification speed with tamper resistant data |
US10740733B2 (en) | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
CN107273760A (en) * | 2017-06-09 | 2017-10-20 | 济南浪潮高新科技投资发展有限公司 | One kind is based on many CA application authentication methods of block chain |
KR102348418B1 (en) | 2017-07-11 | 2022-01-07 | 스월즈, 인크. | Methods and apparatus for efficiently implementing a distributed database within a network |
CN107392608B (en) * | 2017-07-11 | 2020-07-07 | 北京博晨技术有限公司 | Block chain system-based digital asset transaction method and block chain system |
CN107240018A (en) * | 2017-07-25 | 2017-10-10 | 成都励睿德企业管理有限公司 | A kind of method and system for being used to pay tranaction costs in block chain network |
CN107528886B (en) * | 2017-07-25 | 2020-07-31 | 中国科学院计算技术研究所 | Block chain full-network splitting method and system |
KR101852935B1 (en) * | 2017-07-31 | 2018-04-27 | 임종범 | System and method for transaction of electronic currency |
US10552556B2 (en) | 2017-08-03 | 2020-02-04 | Liquineq AG | System and method for performance testing of scalable distributed network transactional databases |
CN107563817A (en) * | 2017-09-11 | 2018-01-09 | 浙江华信区块链科技服务有限公司 | A kind of method of advertisement spreading and system for entering row energization to user's notice based on block chain |
CN107909369A (en) * | 2017-10-13 | 2018-04-13 | 布比(北京)网络技术有限公司 | Based on the common recognition method, apparatus merchandised across chain and storage medium |
CN107742210A (en) * | 2017-10-13 | 2018-02-27 | 布比(北京)网络技术有限公司 | Across the chain fund transfer system and method for a kind of different blocks interchain |
CN107862216B (en) * | 2017-10-13 | 2021-04-06 | 布比(北京)网络技术有限公司 | Privacy protection method, device and storage medium for anonymous cross-link transaction |
CN107766540A (en) * | 2017-10-31 | 2018-03-06 | 上海分布信息科技有限公司 | A kind of block chain network of subregion and its method for realizing partitioned storage |
CN107807984A (en) * | 2017-10-31 | 2018-03-16 | 上海分布信息科技有限公司 | A kind of block chain network of subregion and its method for realizing subregion common recognition |
US10567168B2 (en) | 2017-11-16 | 2020-02-18 | International Business Machines Corporation | Blockchain transaction privacy enhancement through broadcast encryption |
US10997125B2 (en) * | 2017-11-29 | 2021-05-04 | Technion Research & Development Foundation Limited | Proof of lottery (PoL) blockchain |
KR20190067581A (en) | 2017-12-07 | 2019-06-17 | 한국전자통신연구원 | Apparatus and method for distributed processing of blockchain transactions |
US10250708B1 (en) | 2017-12-26 | 2019-04-02 | Akamai Technologies, Inc. | High performance distributed system of record |
GB2572135B (en) * | 2018-03-07 | 2023-01-25 | The Maidsafe Found | Data transaction system and method |
CN108399572A (en) | 2018-03-22 | 2018-08-14 | 深圳市网心科技有限公司 | block chain transaction processing method, device and storage medium |
CN108596613A (en) | 2018-03-22 | 2018-09-28 | 深圳市网心科技有限公司 | block chain transaction processing method, device and storage medium |
CN108900321A (en) | 2018-06-06 | 2018-11-27 | 广州链块科技有限公司 | The method that a kind of block chain by stages carries out real-time atom transaction |
CN108769264B (en) | 2018-07-09 | 2021-06-04 | 中国联合网络通信集团有限公司 | Block chain domain division method |
CN108920723A (en) | 2018-08-01 | 2018-11-30 | 江苏恒宝智能系统技术有限公司 | A kind of nodal hierarchy partition management method |
US10826705B2 (en) | 2018-12-13 | 2020-11-03 | International Business Machines Corporation | Compact state database system |
-
2019
- 2019-04-24 CN CN201980028826.XA patent/CN112041873B/en active Active
- 2019-04-24 US US17/050,836 patent/US11856100B2/en active Active
- 2019-04-24 EP EP19724939.4A patent/EP3785208A1/en active Pending
- 2019-04-24 US US17/051,070 patent/US11743045B2/en active Active
- 2019-04-24 US US17/051,083 patent/US20210233074A1/en active Pending
- 2019-04-24 JP JP2020558031A patent/JP7362654B2/en active Active
- 2019-04-24 KR KR1020207033858A patent/KR20210003214A/en unknown
- 2019-04-24 US US17/050,837 patent/US12028453B2/en active Active
- 2019-04-24 CN CN201980028825.5A patent/CN112055864B/en active Active
- 2019-04-24 EP EP19724255.5A patent/EP3785206A1/en active Pending
- 2019-04-24 CN CN201980028786.9A patent/CN112041872A/en active Pending
- 2019-04-24 US US17/051,075 patent/US11973869B2/en active Active
- 2019-04-24 EP EP19724938.6A patent/EP3785207A1/en active Pending
- 2019-04-24 EP EP19724254.8A patent/EP3785205A1/en active Pending
- 2019-04-24 SG SG11202008896QA patent/SG11202008896QA/en unknown
- 2019-04-24 WO PCT/IB2019/053378 patent/WO2019207500A1/en active Application Filing
- 2019-04-24 CN CN201980028769.5A patent/CN112041870B/en active Active
- 2019-04-24 WO PCT/IB2019/053380 patent/WO2019207501A1/en active Application Filing
- 2019-04-24 CN CN201980028770.8A patent/CN112041871A/en active Pending
- 2019-04-24 JP JP2020557947A patent/JP2021522706A/en active Pending
- 2019-04-24 WO PCT/IB2019/053383 patent/WO2019207504A1/en active Application Filing
- 2019-04-24 JP JP2020557925A patent/JP2021522704A/en active Pending
- 2019-04-24 JP JP2020557911A patent/JP7379371B2/en active Active
- 2019-04-24 KR KR1020207033856A patent/KR20210003212A/en unknown
- 2019-04-24 SG SG11202008861TA patent/SG11202008861TA/en unknown
- 2019-04-24 WO PCT/IB2019/053382 patent/WO2019207503A1/en active Application Filing
- 2019-04-24 KR KR1020207034209A patent/KR20210003234A/en unknown
- 2019-04-24 SG SG11202008987RA patent/SG11202008987RA/en unknown
- 2019-04-24 SG SG11202009189XA patent/SG11202009189XA/en unknown
- 2019-04-24 JP JP2020558029A patent/JP2021522709A/en active Pending
- 2019-04-24 EP EP19721856.3A patent/EP3785204A1/en active Pending
- 2019-04-24 WO PCT/IB2019/053381 patent/WO2019207502A1/en active Application Filing
- 2019-04-24 KR KR1020207031800A patent/KR20210003132A/en not_active Application Discontinuation
- 2019-04-24 CN CN202410394956.8A patent/CN118396627A/en active Pending
- 2019-04-24 SG SG11202008894XA patent/SG11202008894XA/en unknown
- 2019-04-24 KR KR1020207033857A patent/KR20210003213A/en unknown
- 2019-04-25 TW TW108114530A patent/TWI816781B/en active
- 2019-04-25 TW TW108114531A patent/TWI848945B/en active
- 2019-04-25 TW TW108114532A patent/TW201946017A/en unknown
- 2019-04-25 TW TW112117670A patent/TWI836988B/en active
- 2019-04-25 TW TW108114533A patent/TWI820124B/en active
- 2019-04-25 TW TW108114535A patent/TWI809096B/en active
-
2020
- 2020-09-28 ZA ZA2020/05969A patent/ZA202005969B/en unknown
- 2020-10-14 ZA ZA2020/06380A patent/ZA202006380B/en unknown
-
2023
- 2023-07-12 US US18/221,325 patent/US20240048378A1/en active Pending
- 2023-10-04 JP JP2023172657A patent/JP2023168539A/en active Pending
- 2023-11-09 US US18/388,498 patent/US20240154807A1/en active Pending
-
2024
- 2024-02-02 JP JP2024014529A patent/JP2024032950A/en active Pending
- 2024-02-02 JP JP2024014543A patent/JP2024032953A/en active Pending
- 2024-02-02 JP JP2024014531A patent/JP2024032951A/en active Pending
- 2024-03-19 US US18/610,073 patent/US20240348442A1/en active Pending
Non-Patent Citations (3)
Title |
---|
FRANCO, "Understanding Bitcoin: Cryptography, Engineering and Economics," Wiley, ISBN: 978-1-119-01916-9, October 2014, 144pages. (Year: 2014) * |
KOKORIS-KOGIAS et al., "OmniLedger: A Secure, Scale-Out, Decentralized Ledger via Sharding," 2017, 16pages. (Year: 2017) * |
LUU et al., "A Secure Sharding Protocol For Open Blockchains," 2016, retrieved from https://web_archive.org/ eb/20190228023146/https:/www.comp.nus.edu.sg/~loiluu/papers/elastico.pdf [Archive Date February 28, 2019], 14 pages. (Year: 2016) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200074458A1 (en) * | 2018-08-30 | 2020-03-05 | International Business Machines Corporation | Privacy preserving transaction system |
US20220300257A1 (en) * | 2019-05-24 | 2022-09-22 | nChain Holdings Limited | In-Script Functions Within a Blockchain Transaction |
US12045830B2 (en) | 2019-05-24 | 2024-07-23 | Nchain Licensing Ag | Protocol for validating blockchain transactions |
US20220337437A1 (en) * | 2019-09-12 | 2022-10-20 | nChain Holdings Limited | Blockchain transactions including portions of code in different languages for complex validation |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11856100B2 (en) | Partitioning a blockchain network | |
EP3622433B1 (en) | Enclave pool shared key | |
CN110771127B (en) | Method and system for consistent distributed memory pools in a blockchain network | |
CN111213340A (en) | Selecting and securing attestation delegations for cryptographic functions | |
US11341192B2 (en) | Cross platform collaborative document management system | |
US20230134162A1 (en) | Method of processing information, electronic device, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION DISPATCHED FROM PREEXAM, NOT YET DOCKETED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: NCHAIN LICENSING AG, SWITZERLAND Free format text: CHANGE OF NAME;ASSIGNOR:NCHAIN HOLDINGS LTD;REEL/FRAME:063560/0375 Effective date: 20201125 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
AS | Assignment |
Owner name: NCHAIN LICENSING AG, SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KRAMER, DEAN;SEWELL, MARTIN;REEL/FRAME:066720/0442 Effective date: 20240311 Owner name: NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AMMAR, BASSEM;REEL/FRAME:066720/0363 Effective date: 20201102 Owner name: NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KRAMER, DEAN;SEWELL, MARTIN;AMMAR, BASSEM;SIGNING DATES FROM 20180503 TO 20180619;REEL/FRAME:066720/0333 Owner name: NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KRAMER, DEAN;SEWELL, MARTIN;AMMAR, BASSEM;SIGNING DATES FROM 20180503 TO 20180619;REEL/FRAME:066720/0266 Owner name: NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KRAMER, DEAN;SEWELL, MARTIN;AMMAR, BASSEM;SIGNING DATES FROM 20180503 TO 20180619;REEL/FRAME:066720/0220 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |