Computer-implemented system and method for managing large distributed storage pools in blockchain network

By introducing a distributed storage pool management protocol into the blockchain network, the problems of data management and security in large distributed storage pools are solved, and the system's scalability and data consistency are achieved.

CN119441347APending Publication Date: 2025-02-14NCHAIN HLDG LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411439453.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2017-07-24
Filing Date
2018-07-16
Publication Date
2025-02-14

AI Technical Summary

Technical Problem

Existing blockchain networks face problems of data large block management, storage and security when dealing with large distributed storage pools, especially when the number of transactions waiting to be mined in the transaction pool is huge, resulting in data inconsistency and reduced security.

Method used

By introducing a distributed storage pool management protocol into the blockchain network, it allows verification of communication and data management between nodes and storage pool nodes to achieve secure deletion and data consistency of transactions, and adopts distributed hash tables and reversible Bronze searches Tables and other technologies to improve the scalability and security of the system.

Benefits of technology

Improves the capacity and distribution of blockchain networks, while alleviating the problem of data inconsistency and enhancing the security of data attacks in distributed storage pools.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119441347A_ABST
    Figure CN119441347A_ABST
Patent Text Reader

Abstract

A computer-implemented method implemented in a blockchain network is described. A verification node receives data regarding a newly mined block including a plurality of transactions and sends a deletion request to a distributed storage pool to delete the plurality of transactions from the distributed storage pool. A node storing the distributed storage pool stores a plurality of transactions forming at least a portion of the distributed storage pool of transactions waiting to be mined into a block of a blockchain. The computer-implemented method also includes receiving a deletion request from a verification node of the blockchain network, the deletion request identifying one or more transactions that have been included in a newly mined block, the deletion request indicating that the one or more transactions should be deleted from the distributed storage pool.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the patent application with Chinese application number 201880049013.4 (PCT international application number PCT / IB2018 / 055238), application date July 16, 2018, and name “Computer-implemented system and method for managing large distributed storage pools in blockchain networks”. Technical Field

[0002] The present application generally relates to computer-implemented methods and systems suitable for implementation in nodes of a blockchain network. A modified blockchain node structure, network architecture, and protocol for processing a large number of transactions and large transaction blocks are described. Background Art

[0003] In this document, the term "blockchain" is used to include all forms of electronic, computer-based distributed ledgers, including but not limited to blockchain and transaction chain technology, permissioned and unpermitted ledgers, shared ledgers and their variants. It should be noted that the present invention is not limited to use with a specific blockchain, and other blockchain implementations and protocols also fall within the scope of the present invention.

[0004] A blockchain is a consensus-based electronic ledger implemented as a decentralized, distributed computer-based system composed of blocks, which consist of transactions and other information. Each transaction is a data structure that encodes the transfer of control of digital assets 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 the blocks are linked together to create a permanent, unchangeable record of all transactions written to the blockchain since its inception. Transactions contain small programs, called scripts, embedded in the inputs and outputs of the transaction, which specify how and by whom the output of the transaction can be accessed. These scripts are written in a stack-based scripting language.

[0005] In order for a transaction to be written to the blockchain, it must be "verified". Some network nodes perform work to ensure that each transaction is valid, and invalid transactions are rejected by the network. For example, the software client installed on the node performs verification work on transactions that reference unspent transaction outputs (UTXO). Verification can be performed by executing its locking and unlocking scripts. If the execution of the locking and unlocking scripts evaluates to true (TRUE), and if certain specific conditions are met, the transaction is valid and can be written to the blockchain. Therefore, in order for a transaction to be written to the blockchain, the transaction must: i) be verified by the node that receives the transaction - if the transaction is verified, the node relays the transaction to other nodes in the network; ii) be added to a new block; iii) be mined, that is, added to the public ledger of past transactions. A transaction is considered confirmed when a sufficient number of blocks are added to the blockchain to make the transaction effectively irreversible.

[0006] Digital entrepreneurs have begun exploring the use of cryptographically secure systems and data that can be stored on blockchains to implement new systems. It would be extremely beneficial if blockchains could be used to automate tasks and processes. Such solutions would be able to leverage the advantages of blockchains (e.g., permanent tamper-proof records of events, distributed processing, etc.) while being more versatile in the application of said solutions.

[0007] One area of ​​research is the use of blockchain to implement "smart contracts". These smart contracts are computer programs designed to automatically execute the terms of a machine-readable contract or agreement. Unlike traditional contracts written in natural language, a smart contract is a machine-executable program that includes rules that process inputs to produce results, and the smart contract can perform actions based on those results.

[0008] Another area related to blockchain is the use of "tokens" to represent and transfer real-world entities through the blockchain. Potentially sensitive or confidential items can be represented by tokens that have no apparent meaning or value. The tokens thus act as identifiers that allow the real-world items to be referenced from the blockchain. Summary of the invention

[0009] The future of blockchain technology relies, at least in part, on proposals for new architectures that can increase the number of issued transactions per second. One requirement of such a new architecture is to remove the current restrictions on block size limits. In this context, one technical issue is how to manage large blocks of data and how to manage the storage of very large blockchains. Another technical issue is how to manage the pool of transactions waiting to be mined into blocks and incorporated into the blockchain. Local memory pools cannot provide sufficient storage capacity, so a new model of a distributed memory pool (DMP) needs to be designed. Once a transaction is included in the blockchain, it is desirable to remove the transaction from such a distributed memory pool. However, another technical issue is how to manage the removal of transactions from the distributed memory pool in a secure manner without creating data inconsistencies in the distributed memory pool. Another technical issue is how to mitigate the problem of data inconsistency while increasing security against attacks that attempt to corrupt data stored in the distributed memory pool.

[0010] The purpose of certain embodiments of the present invention is to solve these technical problems by providing the technical solutions described herein. In particular, the present application describes a communication and data management protocol between verification nodes and distributed storage pool nodes in a blockchain network, which allows pruning of distributed storage pools while mitigating data inconsistency issues within the distributed storage pools. Therefore, the present invention provides a technical contribution by increasing the capacity of a blockchain network while maintaining its distributed nature.

[0011] A computer-implemented method for a node of a blockchain network is described, the computer-implemented method comprising:

[0012] storing a plurality of transactions forming at least a portion of a distributed storage pool of transactions awaiting mining into a block of a blockchain; and

[0013] A deletion request is received from a verification node of the blockchain network, the deletion request identifying one or more transactions that have been included in a newly mined block, the deletion request indicating that the one or more transactions should be deleted from the distributed storage pool.

[0014] The foregoing method allows a verification node to communicate with a distributed storage pool to remove transactions that have been incorporated into the blockchain and can therefore be removed from the distributed storage pool. Sending / receiving an explicit delete request indicating that one or more transactions should be deleted from the distributed storage pool is different from notification of only mined transactions. In the configuration of the prior art, mined transactions are not removed from the storage pool until enough blocks have been mined on top to confirm the transaction. Therefore, the storage pool contains a large number of transactions that are unlikely to be needed for a considerable period of time after being mined into the blockchain. In addition, if the network nodes automatically delete transactions after a period of time without following a specific deletion request protocol, then in some cases this will lead to data inconsistencies. The present invention recognizes and solves these problems.

[0015] The method may also include marking the transaction as removed from the distributed storage pool when a first threshold number of deletion requests for the transaction are received. The method may also include physically removing the transaction from the distributed storage pool when a second threshold number of deletion requests for the transaction are received. The second threshold is greater than the first threshold. In addition, the first and second threshold numbers of deletion requests need to come from a threshold number of different verification nodes in the blockchain network. These features require a consensus level for marking transactions as deleted in the distributed storage pool, and a further consensus level is required before physically removing transactions from the distributed storage pool. This alleviates the problem of data inconsistency and also improves security against attacks that attempt to destroy data stored in the distributed storage pool. A transaction effectively includes three states with respect to the distributed storage pool: available; removed; and physically removed. If necessary, a transaction marked as removed can be restored to be available again in the distributed storage pool. Depending on the configuration of the system, physically removed transactions may not be recoverable.

[0016] A transaction may be physically removed from the distributed storage pool only after a threshold time has elapsed since the deletion request was received, during which no further data requests for the transaction were received. For example, the threshold time may correspond to at least 1, 2, 3, 4, 5, 6 or more blocks incorporated into the blockchain after the transaction was incorporated into the blockchain requested to be deleted from the distributed storage pool. Moreover, the transaction may be physically removed from the distributed storage pool in a decreasing chronological order since the deletion request was received, during which no further data requests for the transaction were received. The computer-implemented method also includes marking the transaction as removed from the distributed storage pool when the transaction depends on a previously removed transaction. These features further help mitigate data inconsistency issues and also improve security against attacks that attempt to corrupt data stored in the distributed storage pool.

[0017] The deletion request may be stored in a new deletion request database associated with the distributed storage pool. The deletion request received from a validator that has not verified the transaction may be discarded. The transaction is discarded only when the check verifier option is enabled. The number of data requests for transactions that have been marked as removed from the distributed storage pool may also be monitored. Using such a system, after receiving a threshold number of data requests for the transaction marked as removed from the distributed storage pool, the transaction may be marked as a candidate for restoration to the distributed storage pool. When a restoration request for the transaction is received or when a threshold number of restoration requests for the transaction is received, the transaction may be unmarked as removed from the distributed storage pool. The threshold number of restoration requests may require a threshold number of different verification nodes from the blockchain network. In response to a query for a transaction that has been removed from the distributed storage pool, a message indicating that the transaction has been removed from the distributed storage pool is sent. Moreover, such a message may indicate that the transaction has been removed from the distributed storage pool and the number of deletion messages received that have been removed. Again, these features further help mitigate the problem of data inconsistency and also improve security against attacks that attempt to destroy data stored in the distributed storage pool.

[0018] The above features of the distributed storage pool management protocol are described from the perspective of the distributed storage pool storage nodes in the blockchain network. From the perspective of the verification nodes in the blockchain network, a computer-implemented method is provided, the method comprising:

[0019] receiving data regarding a newly mined block including a plurality of transactions; and

[0020] A deletion request is sent to the distributed storage pool to delete the plurality of transactions from the distributed storage pool.

[0021] The deletion request should preferably contain a random number and / or a timestamp to avoid spreading fraudulent copies that could affect the consensus protocol. The deletion request is preferably signed using the private key of the verification node.

[0022] The node may store a record of transactions it has verified, and only send delete requests for transactions it has previously verified. When the check verifier option is enabled, delete requests may be sent for transactions that the node has previously verified. Also, restore requests may be sent to make the transaction available again in the distributed storage pool, for example, after a blockchain reorganization to maintain data consistency within the system.

[0023] The deletion request may be activated by one or more of the following:

[0024] Receive mined blocks;

[0025] said blockchain reorganization; and

[0026] Double spending or other forms of transaction conflicts.

[0027] Transaction pruning from the distributed storage pool may be activated by one or more of the following:

[0028] Manual pruning;

[0029] the expiry of the transaction; and

[0030] The transaction in the distributed storage pool has reached the storage limit.

[0031] The present invention may describe a computer-implemented method for a node of a blockchain network, the method being implemented by a processing resource, the method comprising: receiving processed data from the blockchain network corresponding to a plurality of verified transactions; assembling blocks based on the processed data; and, sending the assembled blocks to a storage entity for storage on the blockchain. The method also comprises: receiving transactions from the blockchain network; verifying the transactions received from the blockchain network; maintaining a distributed, decentralized storage of verified transactions with other nodes in the blockchain network; and, allocating data corresponding to the verified transactions (data corresponding to the verified transactions) to the blockchain network, the data comprising a list (one or more) of verified transactions in the form of a reversible Bloom filter lookup table. Wherein, the step of maintaining a distributed, decentralized storage of verified transactions with other transaction verification nodes in the blockchain network comprises: synchronizing the transaction verification nodes on the blockchain network to maintain an up-to-date list of verified transactions in a decentralized and distributed manner.

[0032] Optionally, the verified transactions are sorted in a defined order so as to use a common sorting system.

[0033] Optionally, the ordering system is a canonical ordering system.

[0034] Optionally, the step of distributing data corresponding to the verified transactions to the blockchain network includes: preparing data corresponding to a list of verified transactions.

[0035] Optionally, the list of verified transactions comprises a reversible Bloom lookup table.

[0036] Optionally, the step of distributing the data corresponding to the verified transactions to the blockchain network includes: generating a commitment transaction for the digital asset in exchange for providing the data corresponding to the list of verified transactions to a network node.

[0037] Optionally, the processed data includes a block header, and the block header corresponds to the verified transaction.

[0038] Optionally, the processed data includes a transaction for a digital asset in exchange for assembling and / or storing a block based on the processed data.

[0039] Optionally, the processed data may be data used to assemble a block. Optionally, the processed data may be mined data. Optionally, the allocating data corresponding to the verified transaction to the blockchain network may include: allocating data corresponding to the verified transaction to the blockchain network for mining.

[0040] Embodiments of the present invention may be provided in a variety of forms. For example, a computer-readable storage medium including computer-executable instructions may be provided, which, when executed, cause one or more processors to perform the methods described herein. An electronic device may also be provided, the electronic device comprising: an interface device; one or more processors connected to the interface device; a memory connected to the one or more processors, the memory storing computer-executable instructions, which, when executed, cause the one or more processors to perform the methods described herein. In addition, a node of a blockchain network may also be provided, the node being used to perform the methods described herein. BRIEF DESCRIPTION OF THE DRAWINGS

[0041] These and other aspects of the invention will become apparent and elucidated with reference to the embodiments described herein. Embodiments of the invention will now be described by way of example only and with reference to the accompanying drawings, in which:

[0042] Figure 1 The overall structure of the block is shown;

[0043] Figure 2 The steps from a user submitting a transaction to the transaction ending on the blockchain are shown in the form of an operation diagram;

[0044] Figure 3 A graph illustrating an example of the total size of transactions awaiting confirmation in a storage pool;

[0045] Figure 4 Shown are multiple nodes linked to an internal decentralized storage facility.

[0046] Figure 5 A configuration is shown in which each node is part of a distributed storage pool and a distributed storage facility;

[0047] Figure 6Shows how a new node structure fits into a blockchain network, showing a network configuration where validating nodes are members of storage pools that together form a decentralized distributed network;

[0048] Figure 7 The functionality of the new node is shown;

[0049] Figure 8 A new Merkle tree structure is shown, which constitutes a modification to the current protocol.

[0050] Fig. 9 shows the workflow for creating a Bloom filter;

[0051] Fig.10 A workflow illustrating how transactions are encoded in Invertible Bloom Filters (IBFs) and Invertible Bloom Lookup Tables (IBLTs) is shown;

[0052] Fig.11 A storage pool cluster including a validator node v and a storage pool node s is shown.

[0053] Fig.12 It shows that the validator node v n (0≤n<N) Receive updates about newly mined blocks - After verifying the block, the validator sends a DELETE request for the published transaction to the distributed storage pool (DMP). Each storage pool node s m (0≤m<M) Tracking S DB Storage requests and R on the table DB Removal requests on the form; and

[0054] Fig.13 Shows the transaction id i State diagram of _ — Depending on the type (i.e. STORE, REMOVE, REVERT) and amount (e.g. N, N*, N**) of messages received from validators, a transaction can change the state to Available, Removed, or Physically removed. DETAILED DESCRIPTION

[0055] Types of blockchain network nodes

[0056] A blockchain network can be described as a peer-to-peer open membership network that anyone can join without an invitation or consent from other members. Distributed electronic devices that run an instance of the blockchain protocol (under which the blockchain network runs) can participate in the blockchain network. Such distributed electronic devices can be called nodes.

[0057] The electronic devices that run the blockchain protocol and form nodes of the blockchain network can be of various types, including, for example, computers (such as desktop computers, laptops, tablets, servers, computer farms), mobile devices (such as smartphones), wearable computers (such as smart watches), or other electronic devices.

[0058] The nodes of the blockchain network are connected to each other using suitable communication technologies, which may include wired and wireless communication technologies. In many cases, the blockchain network is implemented at least in part on the Internet, and some nodes may be located in geographically dispersed locations.

[0059] Currently, nodes maintain a global ledger of all transactions on the blockchain, with all transactions grouped into multiple blocks, where each block contains a hash of the previous block on the blockchain. The global ledger is a distributed ledger, and each node can store a full copy or a partial copy of the global ledger. Transactions of nodes that affect the global ledger are verified by other nodes, thereby maintaining the validity of the global ledger. One of ordinary skill in the art will understand the details of implementing and operating a blockchain network.

[0060] Each transaction typically has one or more inputs and one or more outputs. The scripts embedded in the inputs and outputs specify how and who can access the output of the transaction. The output of a transaction can be an address to which the value is transferred as a result of the transaction. The value is then associated with the output address as an unspent transaction output (UTXO). Subsequent transactions can use the address as an input to spend or disperse the value.

[0061] Nodes can be of different types or categories depending on their functions. Four basic functions associated with nodes have been proposed: wallet, mining, full blockchain maintenance, and network routing. These functions may vary. Nodes may have multiple functions. For example, a "full node" provides all four functions. Lightweight nodes, such as those implemented in digital wallets, may only have wallet and network routing functions. Instead of storing the full blockchain, digital wallets may track block headers, which are used as indexes when querying blocks. Nodes communicate with each other using connection-oriented protocols such as the Transmission Control Protocol (TCP / IP).

[0062] An additional type or category of nodes may be provided: Merchant Node (sometimes referred to herein as "M-Node"). M-Nodes are designed to focus on the rapid propagation of transactions. M-Nodes may or may not store the full blockchain and do not perform mining functions. In this sense, M-Nodes are similar to lightweight nodes or wallets. However, M-Nodes include additional functionality to enable rapid propagation of transactions. The operation of M-Nodes focuses on the rapid verification and propagation of unconfirmed transactions, particularly to other M-Nodes, from which unconfirmed transactions are quickly pushed out to other nodes in the blockchain network. In order to facilitate this functionality, M-Nodes are allowed to make a greater number of incoming connections, particularly outgoing connections, which might otherwise be allowed to be used to manage nodes under the protocol.

[0063] M-nodes can be collectively referred to as merchant networks (M-nets) (or M-networks). The term "merchant" can be interpreted as "dedicated". M-nodes can be integrated into blockchain networks. Each M-node is a dedicated node on a blockchain network that meets specific hardware and performance capabilities to ensure that it can perform the functions of an M-node. In other words, an M-network can be considered a subnet within a blockchain network and distributed across the blockchain network. M-nodes can be set up to perform one or more dedicated functions or services.

[0064] In order for the M network to operate reliably and provide services at a certain level of security, the M nodes need to maintain a good overview of the entire M network, so an effective routing protocol needs to be established. Whenever an M node receives a start transaction, the M node needs to broadcast the transaction to several other M nodes and other nodes. In the context of the M network, this is equivalent to finding a solution to the Multiple Traveling Salesman Problem (MTSP). There are many solutions to the Multiple Traveling Salesman Problem, any of which can be applied to the M network. Each M node runs routing optimization in some form of state-of-the-art.

[0065] In some embodiments, the M network is implemented as a decentralized IP multicast type network. That is, in order to enable incoming transactions to quickly spread to the blockchain network, multicast can be used to ensure that the transaction is quickly broadcast throughout the M network, so that all M nodes focus on forwarding transactions to other nodes in the blockchain network.

[0066] The multicast network architecture allows the possibility to distribute data to a group of destination nodes simultaneously, without duplicating the data for each node interested in receiving the information. If a node wants to receive a multicast transmission, it joins the multicast group (registration phase), after which said node will be able to receive all data sent through the multicast group. IP multicast can be extended to a larger group of receivers without the need for a priori knowledge of how many receivers there are, and by requiring the source to send a packet only once, the network infrastructure can be efficiently utilized. Due to the nature of multicast networks, it is impractical to use connection-oriented protocols such as TCP due to the simultaneous communication with a large number of other nodes. Accordingly, connectionless protocols are used.

[0067] Some blockchain networks use TCP for node-to-node communication. Data packets sent using TCP have associated sequence numbers, which are used for ordering. In addition to this, the TCP protocol involves a three-way handshake process both when establishing a connection and when terminating a connection. Data packets sent over TCP have associated sequence numbers and a three-way handshake protocol. When establishing a connection, 128-136 bytes are transmitted, while closing a connection costs 160 bytes. Therefore, the handshake cost in packet transmission is as high as 296 bytes. In addition, when a node receives a new transaction, the node notifies other nodes through an inventory (INV) message containing the transaction hash. The node receiving the INV message checks whether the hash of the transaction has been seen before; if not, the node will request the transaction by sending a get data (GETDATA) message. The time required for a transaction to be transmitted from node A to node B is T1=verification+TCP(inv+getdata+tx), where TCP() represents the time overhead introduced by the TCP handshake procedure.

[0068] M-nodes can be used to communicate with other nodes authorized by existing protocols using TCP. However, M-nodes can use connectionless protocols such as User Datagram Protocol (UDP) to communicate from M-node to M-node in multicast situations, or even more appropriately from M-node to multiple M-nodes. Unlike TCP, UDP does not involve a handshake protocol, so M-nodes are able to propagate transactions faster. This can also prevent malicious nodes from bundling other nodes by sending repeated INV messages instead of sending actual transactions.

[0069] The lightweight nature of UDP is associated with certain tradeoffs. There is less error checking and no error recovery. In some implementations, these limitations of UDP can be overcome at the application level by making error recovery, sequencing, and retransmission functions of the application layer. Putting error checking at the application level eliminates the overhead of the network.

[0070] In one example scenario, a regular node on a blockchain network generates a transaction (e.g., a merchant-based payment) that it wishes to process through the M network. The regular node can send the transaction to an M node, which then broadcasts the transaction to other M nodes using multicast, or can send the transaction directly to multiple M nodes if the regular node knows the IP multicast address of the M node. In some examples, all M nodes of an M network are members of a single multicast address, so all transactions sent to that address are received by all M nodes. However, in some cases, there may be multiple multicast addresses associated with an M network, and the receiving M node can evaluate from the routing information whether the transaction needs to be further broadcast to other multicast addresses to propagate the transaction to the entire M network.

[0071] Multicast helps ensure rapid initial propagation of new transactions to all M nodes; however, multicast solutions do not necessarily address the scalability issues of blockchain networks caused by increased transaction throughput. Each node in the network typically maintains a storage pool (Mempool) containing unconfirmed transactions it has seen that have not yet been merged into the blockchain by the network nodes that have completed the proof of work. A significant increase in the number of transactions used in payment processing can increase the number of transactions stored in each storage pool. Therefore, although nodes in the M network are able to receive new transactions almost simultaneously, the nodes may have storage capacity limitations for large and rapidly changing storage pools.

[0072] To solve this problem, M nodes can use a shared storage pool implemented through a distributed hash table (DHT) as an alternative to using multicast.

[0073] Assuming an average transaction (TX) size of 500 bytes and a transaction rate of approximately 104 transactions / second, the M network can receive approximately 400GB of daily incoming data. All of this data needs to be stored in a storage pool of unconfirmed transactions for varying periods of time. Therefore, the M network requires a lot of storage space and the ability to store data quickly. In order not to place too many demands on each individual M node, the M nodes implement a shared storage pool that relies on DHT. Instead of having each M node save all incoming transactions in its own storage pool, each M node only stores a certain portion of the total, as well as the hash and associated key values ​​for the rest.

[0074] DHTs are a class of decentralized distributed systems that allow for the partitioning of membership of key sets between nodes, enabling messages to be sent only to the owner of a given key in an efficient and optimized manner. Each node of the network can be seen as a cell of an array of hash tables. DHTs are designed to manage a large number of nodes, allowing new nodes to join the network, old nodes to leave the network or crash, without compromising the integrity of the shared data. DHTs ensure decentralization (there is no central authority and no central coordination), scalability (the system has efficient behavior with millions of nodes), and fault tolerance (the system is reliable and is able to manage nodes that join and leave the network or crash). Each node in the network can be in contact with only a few other nodes, so the network is not overloaded when changes or new data appear.

[0075] This concept can also be applied to the UTXO database, which contains the set of all unspent outputs on the blockchain. The UTXO database can be built using a DHT to share the contents among a group of nodes.

[0076] Many possible DHT structures and protocols can be used to implement a shared storage pool for an M network. One example is Pastry TM , and there are many other examples. TM A protocol designed to maintain an overlay network capable of storing and transmitting information on a distributed system. TM Each node in the network is assigned a 128-bit identifier that indicates the node's position in a circular node identifier (ID) space (ranging from 0 to 2). 128 -1). When a node joins the network, the ID is randomly assigned. Each node maintains a routing table, a neighbor set, and a leaf set.

[0077] One factor to consider when determining the dimensionality of a stable DHT is the number of replicas required to ensure robustness and reliability of the entire network. As mentioned earlier, nodes can join and leave the network, which should not affect the availability of data. If the node storing transaction A leaves the network, it is necessary to find transaction A in another part of the network. In existing blockchain networks, the number of networks or the number of blockchain replicas is equal to the number of full nodes in the network (5000 replicas on average), but this affects scalability.

[0078] In an M-network configuration, the storage pool is not fully replicated on each M-node, but is implemented via a DHT. To provide reliability, the DHT can be implemented with some overlap; that is, each transaction data item is replicated in multiple M-nodes, although not in every M-node. For example, the DHT can be implemented to specify a minimum number of 2 replicas, while assuming complete independence between the two nodes. This would potentially result in two nodes being down at any given time.

[0079] Therefore, a process for storing a new transaction in a distributed storage pool may include the following steps, wherein the distributed storage pool is implemented using a DHT. The process includes: a node sends a transaction to an M node. The M node hashes a transaction or a transaction ID according to the implementation to obtain a key value. The key value indicates the M node or multiple M nodes (in the case of replicated data) where the transaction is stored. The M node then stores the transaction in the distributed storage pool, which may include: routing the transaction to the correct M node where the transaction is to be stored based on the key value and the assigned ID of the M node in the M network. Depending on the DHT protocol involved, the M node may receive a confirmation. When the M node receives a new transaction from a regular node, the M node may perform certain verification operations to verify the authenticity of the transaction.

[0080] The transaction may be hashed to generate a key for the transaction. The key may indicate where in the DHT the transaction should be stored, which may be on a node other than the current M-node. The M-node evaluates whether the transaction is already in the running DHT. Based on the partitioning of the key space between the M-nodes that make up the M-network, each M-node has a portion of the stored transactions. In some configurations, the key space is divided between the participating M-nodes. The partitioning may involve overlapping to induce replication for network resiliency. In some embodiments (e.g., using Pastry TM ), each M-node is assigned a unique key or ID number, and transactions can be stored at that M-node or multiple M-nodes (in the case of replication) based on the proximity of the transaction key value. The M-node can have a stored portion of the transaction locally and a hash or key value of the rest. Therefore, the M-node is able to evaluate whether a new transaction is in the DHT based on running local data.

[0081] If the transaction is not in the DHT, then in operation, the M-node stores the transaction in the DHT according to its key value. In general, this can take the form of a put(k,tx) operation, where k is the key value and tx is the transaction. The applicable DHT routing protocol ensures that the transaction is sent to and stored at the appropriate M-node. Based on the selected implementation, the DHT can operate according to various protocols for distributed hash tables. Using the DHT to store transactions in the M-network avoids the use of inventory / get data (INV / GETDATA) messages in the M-network to route transactions to each M-node.

[0082] In the operation of this example, the M node can send the transaction to a regular node in the blockchain network according to the normal transaction forwarding protocol of the blockchain network. For example, the communication to the ordinary node can use TCP for node-to-node connection.

[0083] In one configuration, the M node includes a processor, a network interface, and a memory. The M node can be implemented using any suitable computing hardware that has network connectivity and sufficient processing and storage resources to perform the functions described herein. The M node may include processor executable instructions to implement the functions described herein. In some cases, the processor executable instructions may be referred to as a blockchain merchant node application, but it is understood that based on the hardware and operating system, the instructions may be implemented in one or more modules, applications, scripts, or other programming structures. The processor may include a multi-core processor and / or multiple processors.

[0084] The memory stores data based in part on its DHT key value (i.e., M node ID), including an allocated portion of a DHT-based storage pool. In this example embodiment, the memory also stores a routing table, a neighborhood set, and a leaf set. The routing table contains a list of specific routing destinations within the M network, and when a node receives a data packet, it will refer to the routing table to understand where to send the data. The routing table may also contain information about the distance between each destination and the M node. The neighborhood set (e.g., based on a proximity metric (ping delay)) contains information about M nodes that are close. The leaf set contains M nodes that are close in number. If the key value (node ​​ID) of the M node is close in number, then the node is close in number. The memory also includes an M node reputation table, which will be further described below.

[0085] In order to provide scalability, in addition to implementing storage pools using DHT, the M-network also allows nodes to join the M-network. The new node needs to have the address of at least one M-node that is already part of the M-network so that the new node can direct its joining request to one of the M-nodes. The M-node can perform certain verification actions, which may involve querying the new node. For example, the M-network can have a set of minimum standards associated with joining the M-network that is assigned to the M-node. For example, the standards may include minimum processing resources available, minimum free storage available, or connectivity requirements.

[0086] Assuming the M-node completes any verification operations performed to validate the new node, the M-node forwards a join request (Joinrequest()) to the DHT in accordance with any DHT protocol that controls the operation of the DHT. The DHT communicates with the new node to provide the new node with the routing table, key value (node ​​ID), and any other data to enable the new node to act as a new M-node on the M-network.

[0087] It should be understood that the ease with which nodes can join the M network makes it easy for malicious nodes to join the network. In order to identify and isolate potential malicious nodes, a configuration provides that the M node stores an M node reputation table for tracking and updating node behavior rankings. When a new node joins the network, the node can be added to the M node reputation table, as shown in the node ID field. In some embodiments, the table may also include the joining time. The table also includes the score or rating of the M node.

[0088] Scores can be adjusted up or down based on certain behavioral indicators. For example, if an M-node fails to forward transactions, remains silent for a period of time, floods the M-network with traffic determined to be non-transactional, or otherwise engages in negative behavior, then the ranking of the M-node may be lowered or decremented. If a node's score falls below a preset minimum, then the node may be excluded from the M-network.

[0089] The M-node reputation table maintained on a particular M-node may be limited to tracking the scores of its neighbors, rather than the entire M-network. Thus, when a new M-node joins the network at time t, the M-node reputation tables of its neighbors do not contain any information about the new node, but starting at time t, the neighbors begin to build the reputation of the new node, storing the information in the node registry. For example, if the new node is a silent node, meaning that the node does not transmit information received over the network, then all neighbors begin to record this behavior in their respective M-node reputation tables (e.g., assigning a negative value to the ID of the new node). After a certain time t+n, if the M-node reputation tables of all nodes that know the new node contain negative values, then the node may decide to isolate the new node and ban the new node from the network.

[0090] Transactions in the M network's distributed storage pool may have to wait a considerable amount of time before being confirmed, i.e. before being incorporated into a block that is added to the blockchain and confirmed. A block is considered "confirmed" when a sufficient number of subsequent blocks are added to the blockchain above it, such that it is computationally infeasible to reverse growth in the chain and remove blocks to change to a different branch or fork.

[0091] Due to the size and flexibility of the storage pool and the volume of transactions, a given transaction may remain unconfirmed longer than in some blockchain implementations. In traditional implementations, once a transaction is incorporated into a block, it is removed from the storage pool. This means that if the block ends up being orphaned, all transactions in the block are retransmitted across the network. In the case of fast transaction networks, this may not be practical or may result in long delays in the confirmation of certain transactions.

[0092] Thus, in some embodiments, the storage pool may track the number of confirmations of the block into which the transaction has been incorporated, i.e., the number of blocks added to the blockchain after the block into which the transaction has been incorporated. The transaction will only be removed from the storage pool after a predetermined number of confirmations have occurred. The predetermined number may be 4, 5, 6, 7, or any suitable number for a given embodiment. The storage pool data entry may be structured to include a transaction ID field, a transaction field, and a number of confirmations (NoC) field. In another embodiment, the storage pool data entry may simply record the number of blocks without tracking the NoC. Based on the current number of blocks in the blockchain, the storage pool data entry may assess how many confirmations have occurred from the number of blocks.

[0093] Once the necessary number of confirmations has occurred, the transaction can be safely removed from the storage pool. This way, there is no loss of transactions in the event of orphaned blocks, and after the necessary number of confirmations, the transaction is permanently deleted.

[0094] The solution described below in this specification utilizes a modified type of fast verification node as described above. A new full node configuration is described, which is actually an M-node verification architecture with large-scale storage capabilities and a modified operating protocol. M-nodes and storage nodes together form the core of the new full node. The new node structure is described in detail, including the necessary technical requirements and technical solutions, and a sustainable incentive model is provided.

[0095] Block size and storage requirements

[0096] The current block size is 1Mb. Currently, a block consists of a field containing a so-called magic number (always the same value), a value indicating the actual size of the block, a so-called block header, the number of transactions contained in the block, and a list of actual transactions. The list of actual transactions always starts with the coinbase transaction. Figure 1 , the overall structure of the block is shown.

[0097] The block header contains the following:

[0098] 1. Version number (4 bytes)

[0099] 2. Hash of the previous block header (32 bytes)

[0100] 3. Merkle root hash (32 bytes)

[0101] 4. Time (4 bytes)

[0102] 5. Target threshold (encoded as nBits–4 bytes)

[0103] 6. A non-repeating random number that is used only once (4 bytes)

[0104] Currently, blocks contain about 2,000 transactions and are mined approximately every 10 minutes (the 10-minute block time is set as a compromise between first confirmation time and time wasted on chain splits). This provides a transaction rate of about 3.5 transactions per second, with a theoretical maximum of 7 transactions per second. In comparison, VISA operates at a rate of about 10,000 transactions per second, and can reach more than 50,000 transactions per second.

[0105] Clearly, in order to build a competitive payment system, some circumvention of the current constraints is necessary. Since a 10 minute block time has been established, changes in block size and, therefore, changes in the blockchain itself must be considered. In this specification, a scalable solution is described that is capable of handling, for example, approximately 50,000 transactions per second.

[0106] Increasing the current block size, or even removing the limit altogether, is a much discussed and sometimes controversial topic. There appear to be strong arguments on both sides, as there are clear benefits and trade-offs to both keeping the current size and increasing it.

[0107] Assuming a transaction rate of r, we can calculate the necessary block size. Let's assume that the block time is (on average) 10 minutes. Therefore, let's assume that the number of transactions per block is T(r). We get

[0108] T(r)=r·6·10 2 block -1

[0109] If s Tx is the average transaction size (in bytes), then the block size B(r,s Tx ) can be expressed as

[0110] B(r,s Tx )=s Tx T(r)=s Tx ·r·6·10 2

[0111] Therefore, considering 50,000 transactions / second and s Tx = 500 bytes, a quick backtracking calculation yields:

[0112]

[0113] This in turn led to Storage requirements. Clearly, for blocks of this size, we need a slightly different approach to block propagation and storage. Table 1 below shows the relationship between transaction rate, average transaction size, block size, and the amount of storage space required per month and per year.

[0114]

[0115] Table 1: Relationship between transaction rate, average transaction size, block size, and the amount of storage space required per month and per year

[0116] New blockchain network

[0117] Figure 2 A schematic diagram showing the operation from user submission of a transaction to the completion of the transaction on the blockchain.

[0118] A system is provided in which special verification nodes (a shared storage pool between special verification nodes is maintained through a distributed hash table DHT) receive transactions, verify transactions, and distribute transactions in the storage pool. The verification node provides services to the network nodes, namely, a list of valid transaction hashes. The network nodes assemble pre-blocks (block skeletons) (BlockSkeletons) based on these hashes and try to solve hash puzzles. When a solution to the puzzle is found, the winning network node sends the block skeleton back to the verification node. The verification node verifies the block and ensures block storage. Initially, it is possible and feasible for the verification node to store the block itself. When the block size eventually exceeds a certain size threshold, the verification node will: a) expand its own storage capacity; or b) outsource storage to a dedicated storage node. These two architectures will be discussed below in this specification.

[0119] New full node

[0120] In order With the block size of , it seems no longer feasible to rely on PC-type nodes to provide the storage capacity for hosting the full image of the blockchain. Instead, or more storage devices (see Table 1). The challenge then becomes creating a system that can accommodate new blocks while maintaining the distributed, decentralized, and trustless nature of the network.

[0121] Two types of full node architectures are envisioned, as well as combinations of the two types:

[0122] 1. A validator node with an associated petabyte storage rack

[0123] 2. A verification node with an associated storage pool based on an internally decentralized distributed peer-to-peer (P2P) single-node network

[0124] Combination of 3.1 and 2

[0125] The proposed solution seeks to address the problem of keeping a distributed and decentralized record of the blockchain by introducing nodes similar to today’s so-called full nodes, but with the ability to scale as the size of blocks and the number of transactions increase.

[0126] The differences are not limited to purely architectural and hardware related issues. The new nodes proposed in this article will be dedicated nodes, compared to the home computer-based full nodes running at the time of writing. Said new nodes require a significant investment, and therefore, the incentives will be very different. In a scalable paradigm, both M-nodes (validation nodes) and new full nodes (combination of validation and storage nodes) will expect to be compensated for their services.

[0127] On the other hand, we have decentralized distributed storage solutions that are mostly composed of a single node. Storj (Wilkinson et al., 2016), Sia (NebulousLabs), and MaidSafe (maidsafe) are good examples.

[0128] As mentioned above, supernodes consisting of petabyte (Pb) racks and peer-to-peer (P2P) storage systems are also conceivable.

[0129] Obviously, it is important to compensate all full nodes, as the network will rely on their (winning) blocks to eventually make it into the public blockchain.

[0130] Nodes will be organized into pools, which act as supernodes. In order to maintain the distributed nature of the blockchain, there must be a certain number of such supernodes (≥100). Supernodes are connected but do not overlap.

[0131] Technical requirements

[0132] As mentioned above, there are two completely different architectures to consider when discussing new full nodes (see Table 2).

[0133] New full nodes need to maintain two types of storage:

[0134] 1) A distributed hash table (DHT) memory / storage similar to random access memory (RAM) of the storage pool.

[0135] 2) Persistent tape / disk storage of blockchain.

[0136] As mentioned above, for a transaction rate of 50,000 transactions / second, blocks are expected to be This means that the annual storage requirement is ~365×24×6×15Gb=7.9·105 Gb = 0.8Pb / yr (see Table 1).

[0137] Table 2 shows the comparison between current full nodes and future full nodes:

[0138]

[0139] At the same time, racks / clusters need to maintain a storage pool. This allows for fast recovery of chunks. The necessary size of the storage pool is more difficult to estimate. Currently, chunk sizes are around 1 megabyte. About 4 transactions per second The total size of transactions waiting in the storage pool ranges from 2 megabytes to about 70 megabytes. Fluctuates between. Figure 3 An example graph showing the total size of transactions awaiting confirmation in the storage pool.

[0140] As mentioned above, we envision two fundamentally different structures capable of storing large amounts of data, as well as a combination of the two structures. Figure 4 and Figure 5 Both structures are shown in . Figure 4 A configuration including multiple nodes capable of accessing an internal decentralized storage facility is shown. Figure 5 A configuration is shown in which each node is part of a distributed storage pool and a distributed storage facility. Figure 4 The described architecture seems suitable for larger entities that own and maintain multiple validating nodes, all of which have access to the entity’s own storage facilities. Figure 5 The architecture described in is fully decentralized. This solution is suitable for single nodes (such as home PCs with sufficient storage capacity) that want to join a shared distributed storage pool. There are already underlying storage technologies for this purpose (such as Storj, Sia, MaidSafe).

[0141] Figure 6 A network configuration is shown where validators are members of storage pools. Together, these pools form a decentralized distributed network.

[0142] Full Node Operation

[0143] In the large block scenario, we will face another situation, and not just due to space requirements. The storage pool should be able to hold the equivalent of one block, which is about 15 gigabytes (~15Gb), and preferably the equivalent of the next block to be mined. This will also be combined with the overhead that needs to be considered.

[0144] 1) The storage pool needs to be synchronized with other validating nodes. This involves exchanging reversible bloom filter lookup tables (Michael T. Goodrich, 2011)

[0145] 2) Need to double check IBLTs and retrieve lost transactions (Tx)

[0146] 3) Transactions that require additional retrieval for verification

[0147] 4) Assemble blocks based on block skeletons received from network nodes or other full nodes. The new full node keeps the latest storage pool. It does this by exchanging IBLTs and other validations with network nodes and new full nodes.

[0148] The network node sends a block skeleton (Tuple) containing the following:

[0149] 1. A non-repeating random number that is used only once, n

[0150] 2.IBLT

[0151] 3. Coinbase transactions

[0152] Based on this, the new full node sorts the transactions accordingly (according to a specific set of rules) and assembles the newly mined block. The new full node continues to store the block in its own storage and propagates the skeleton to other new full nodes. The protocol will be described in more detail later in this specification.

[0153] excitation

[0154] An important feature of a particular configuration is that incentives are built into the system to incentivize the provision of new node structures and services. Incentives are needed because storing a blockchain requires a lot of costs. Figure 7 The functionality of the new full node is shown.

[0155] [Transaction] Validation nodes will be compensated for transaction validation via a fee system.

[0156] The incentive is 100 block confirmation time T 100 .

[0157] 1) The network node needs to wait for a time t of approximately T 100 .

[0158] 2) The verification node needs to wait for approximately T 100 , in order to receive the fees for verifying the transactions in the block.

[0159] 3) The waiting time t for a new full node is about T 100 , in order to receive block assembly fees and storage fees depending on size.

[0160] Therefore, a confirmation time of 100 blocks will provide the necessary incentive for network nodes to propagate the skeleton block (including the payment) to a series of new full nodes, and incentivize new full nodes to propagate the skeleton block to other new full nodes.

[0161] It should also be noted that network nodes are free to choose the list of transactions they wish to include in a block. Therefore, we envision a market consisting of validating nodes that compete by compiling lists of verified transactions from which network nodes can select and purchase through commitment transactions.

[0162] Revisiting the Excavation

[0163] The network nodes collect transactions (Txs) from a storage pool (or, as envisioned in this article, from dedicated validation nodes), organize the transactions into blocks, and try to find a solution to a hash puzzle (a non-repeating random number used only once). The block header contains the hash of the previous block on the blockchain, the root of the Merkle tree of transactions, and a non-repeating random number used only once contained by the network node. The solution of the puzzle consists of calculating a double SHA256 hash of a non-repeating random number used only once (chosen iteratively) concatenated with the previous block hash and the Merkle root, and checking whether it is less than the so-called difficulty target. If it is less than the difficulty target, the puzzle is solved; if it is greater than the difficulty target, the iteration of non-repeating random numbers used only once continues. This remains unchanged in the new paradigm. What poses a challenge is the greatly enlarged block size and the distribution of mined blocks throughout the network. For gigabyte-sized blocks, broadcasting the entire block through the network is not necessarily feasible.

[0164] Instead, we propose a solution consisting of the following steps:

[0165] 1. The network node receives a list of verified transactions from the validating / M-node and / or the new full node.

[0166] 2. The network nodes themselves may or may not operate their own storage pool of transaction hash values ​​that follows a specific ordering convention.

[0167] 3. Network nodes solve the hash puzzle by determining a non-repeating random number n that is used only once.

[0168] 4. Next, the hash tree (Merkle tree, hereinafter referred to as HT) is calculated and the root of the Merkle tree is stored (see the next section).

[0169] 5. The transaction list is used to create an IBLT. IBLT can be used to calculate the content difference between two collections (such as storage pools) and to coordinate the two collections.

[0170] 6. The tuple {n; IBLT; CoinBase Tx; HT root} is broadcasted to the validation / M nodes.

[0171] 7. The new full node is the blockchain’s storage pool and storage operation DHT.

[0172] 8. The pool reassembles the block based on the tuple {n; IBLT; CoinBase Tx; HT root} and records the block on the blockchain by a) storing the block itself or b) by storing it on a dedicated storage node.

[0173] Avoid contention between network nodes

[0174] Network nodes are able to select a list of verified transactions from a market consisting of multiple validating nodes. Unless otherwise stated, it is reasonable to assume that network nodes will select the list that maximizes their potential revenue. A careful reader may point out that this can lead to network nodes predominantly selecting the same list from the same node. This, in turn, can lead to a situation where some network nodes compete with each other, trying to mine the same block. This favors the network nodes with the most hashing power.

[0175] We propose to add an extra field to the block header. Said field contains a random number chosen by each network node. This ensures that each network node starts from a different starting point, thus preventing solving a block from being attributed solely to hashing power. This in turn will simulate the current situation where network nodes tend to mine similar but independently chosen and slightly different blocks.

[0176] protocol

[0177] Here, we describe the protocols necessary to operate a new full node.

[0178] In order for the proposed system to work, the storage pools of the involved nodes (validators, new full nodes, ...) should follow a convention for ordering transactions. Here, we propose to use the canonical order proposed by Gavin Andresen. In said ordering, the ordering is related to the list of transactions in the block, but here, we propose an idea: all validators and new full nodes use the same convention for their storage pools.

[0179] The convention can be summarized as follows:

[0180] 1) Sort transactions in ascending order relative to the previous transaction hash.

[0181] 2) Add the first transaction from the sorted list that does not depend on subsequent transactions.

[0182] As mentioned before, blocks contain what is called a Merkle root hash. It is produced by hashing all transactions (including coinbase transactions) and then hashing the concatenated hashes until the Merkle root hash is reached. Obviously, if the network nodes are not producing coinbase transactions, the validating nodes can calculate the entire Merkle tree and thus the Merkle root and the corresponding hash.

[0183] Here, we propose a procedure to compute the Merkle tree in the following way:

[0184] The validator node calculates a Little Merkle Root. The procedure is the same as when calculating a standard Merkle root, with a few exceptions:

[0185] 1) Exclude coinbase transactions.

[0186] 2) Includes so-called commitment transactions.

[0187] 3) The network node creates a coinbase transaction and concatenates it with the small Merkle root hash to produce the Merkle root hash.

[0188] Figure 8 The new Merkle tree structure is shown. Note that the structure constitutes a modification to the current protocol.

[0189] Modify block header

[0190] As mentioned above, we propose to add an extra field to the block header containing a random number chosen by network nodes. Therefore, the solution to the hash puzzle changes as follows:

[0191] SHA256[SHA256[Prev.Block Hash∥Merkle Root∥nonce]]

[0192] SHA256[SHA256[RND∥Prev.Block Hash∥Merkle Root∥nonce]]

[0193] Therefore, we propose to enhance the block header of a newly mined block with an additional field containing a random number. The block header will contain the following:

[0194] 1. Version number (4 bytes)

[0195] 2. Hash of the previous block header (32 bytes)

[0196] 3. Merkle Root Hash (32 bytes)

[0197] 4. Time (4 bytes)

[0198] 5. Target threshold (encoded as nBits–4 bytes)

[0199] 6. A non-repeating random number that is used only once (4 bytes)

[0200] 7. Random number (4 bytes)

[0201] Verification → Network Node

[0202] Validation Node:

[0203] o Upon request, the validating node (which may or may not be a new full node) prepares a list of verified transactions to be mined.

[0204] oThe validator node creates a commitment transaction.

[0205] o Compute the so-called Little Merkle Root (see previous subsection), which includes the Commitment Transaction.

[0206] o The validator node prepares two IBLTs:

[0207] 1) for all transactions in the block (IBLT1); and

[0208] 2) All corresponding transaction identifiers (TxID) in the block (IBLT2)

[0209] oThe validator node sends to the network node:

[0210] 1) Little Merkel root.

[0211] 2)IBLT1.

[0212] 3) IBLT2 (optional - only if the network node runs with its own TxID- / storage pool).

[0213] 4) Previous block hash.

[0214] 5) The above hash checksum.

[0215] Network Nodes:

[0216] oAfter receiving the data from the validator node, the network node proceeds to create a coinbase transaction. In addition, the coinbase transaction contains an output field with a secret that matches the secret in the commitment transaction.

[0217] o The network node uses the small Merkle root received from the validator node and combines it with the coinbase transaction to create the Merkle root hash.

[0218] oNetwork nodes now have all the information they need to start solving the hash puzzle.

[0219] oExcavate as described above.

[0220] Network node → new full node

[0221] Network Nodes:

[0222] After mining a block, the network node sends the following to the new list of full nodes:

[0223] o a non-repeating random number that is used only once (the solution to the puzzle), n.

[0224] o Coinbase transactions.

[0225] o Block header.

[0226] o Merkle Root.

[0227] o Little Merkel Root.

[0228] o IBLT1.

[0229] o IBLT2 (optional).

[0230] oHash checksum.

[0231] New full node:

[0232] o Nodes check that received data is consistent by calculating a checksum (hash).

[0233] o Nodes use IBLT1 to ensure that transactions in a block are present in the storage pool.

[0234] o Using IBLT1 to query the storage pool, the node assembles the chunk. It then stores the chunk (see the section about new chunk nodes and storage).

[0235] oData received from network nodes will be broadcast to other new full nodes.

[0236] Customized transaction list

[0237] We envision a situation where the market for verified transactions will adapt to the needs of network nodes. Network nodes tend to choose listings that maximize their potential, and validating M-nodes will follow these trends.

[0238] In some cases, a network node may wish to customize its blocks by merging transactions from two or more lists. A set reconciliation can be performed between two sets by calculating the difference between two IBLTs. The network node then sends the IBLT containing the difference back to one of the providing nodes, in this way retrieving the information needed to make a list containing all transactions from both lists.

[0239] Obviously, if a network node wants to compile its own list based on several lists, this will introduce additional challenges. This article briefly describes the key points.

[0240] If network nodes want to merge lists from various validating nodes, it is unclear how to merge the Merkle roots. Here, we make the following suggestions:

[0241] Constructing a Big Little Merkle Root of multiple individual Little Merkle Roots; and

[0242] Combine big and small Merkle roots with coinbase transactions.

[0243] The additional fee is not proportional to the additional amount of transactions added to the list / block. Since it is reasonable to assume that the various storage pools overlap a lot, merging lists is equivalent to adding a few (relatively speaking) transactions from another list. However, in order to merge lists, network nodes must "buy" the full list from each validating node (via commitment transactions). Whether this is a profitable approach for network nodes remains to be seen.

[0244] Merging lists from multiple validating nodes requires a commitment between the network node and each providing validation node. It is conceivable that the network node could abuse the system. Currently, there is no rule / protocol that forces all committed transactions to end up in a block. One possibility is that the validating node could check each block and veto those that contain its transactions.

[0245] Summary of node structure and operation

[0246] With a significant increase in transaction volume, it may not be feasible to focus on mining. The solution described in this specification relegates various tasks to corresponding specialized nodes, and the network nodes themselves become more specialized. Compiling a list of verified transactions, reconstructing blocks based on block skeletons, and storage are all functions that require a lot of resources. We have described these issues in detail in this specification.

[0247] The elements described in this manual include:

[0248] o A new type of node structure, referred to in this article as a new full node or super node, may or may not be an extension of the validating M node.

[0249] o Nodes operate according to a protocol that efficiently allows the broadcast of gigabyte-sized blocks from validating nodes to network nodes and from network nodes to new full nodes.

[0250] o Two overall storage structures for storing the blockchain, which may or may not be part of the proposed new full nodes.

[0251] o Incentive model that allows for a market for pre-block lists of verified transactions to be assembled and stored in blocks after mining.

[0252] oThe new Merkle tree structure eliminates the need for network nodes to maintain their own storage pools.

[0253] o Adding an extra field in the block header with a random number chosen by network nodes to avoid mining becoming a competition based purely on hashing power.

[0254] According to one implementation, a computer-implemented method for a node of a blockchain network is provided, the computer-implemented method comprising:

[0255] receiving mined data from the blockchain network corresponding to a plurality of verified transactions;

[0256] Assembling blocks based on the mined data; and

[0257] The assembled blocks are sent to a storage entity for storage on the blockchain.

[0258] This approach enables nodes to construct large blocks to be stored on a storage entity without requiring network nodes to construct and store large blocks and transmit such blocks across the blockchain network. In addition, the described architecture allows the use of large storage entities dedicated to storing large and growing blockchains.

[0259] The computer-implemented method may further include:

[0260] Receiving the transaction from the blockchain network;

[0261] verifying the transaction received from the blockchain network;

[0262] Maintaining, together with other nodes in the blockchain network, a distributed, decentralized storage of the verified transactions; and

[0263] Data corresponding to the verified transactions are distributed to the blockchain network for mining, the data including a list of the verified transactions. Each list can provide a complete list of verified transactions to be mined into a block.

[0264] This computer-implemented method effectively eliminates the requirement for network nodes to perform verification functions while retaining a distributed, decentralized storage of verified transactions with other nodes in the blockchain network. In addition, the method enables transaction verification nodes to provide services to network nodes by preparing and distributing data corresponding to verified transactions to the blockchain network for mining. For example, the method can prepare and distribute a list of verified transactions.

[0265] The step of maintaining the distributed, decentralized storage of the verified transactions with other transaction verification nodes in the blockchain network may include synchronizing the transaction verification nodes on the blockchain network to maintain the latest list of the verified transactions in a decentralized and distributed manner. For example, the verification nodes may be synchronized by exchanging reversible bloom filter lookup tables. The verified transactions are sorted in a defined order so that a common sorting system is used on the transaction verification nodes in the blockchain network to maintain the distributed, decentralized storage of the verified transactions. For example, a canonical sorting system may be used to maintain the distributed, decentralized storage of the verified transactions. It has been found that this is a particularly effective method of ensuring that transaction data on the network is maintained in a consistent manner while maintaining a decentralized, distributed storage.

[0266] The step of distributing data corresponding to the verified transactions to the blockchain network for mining may include preparing data corresponding to the list of verified transactions (e.g., a reversible Bloom lookup table and any accompanying data corresponding to the list of verified transactions, wherein the verified transactions are included in the block). In addition, the step of distributing data corresponding to the verified transactions to the blockchain network for mining includes creating a commitment transaction for the digital asset in exchange for providing the data corresponding to the list of verified transactions to a network node. For example, a hash tree, a Patricia tree, or another type of radix tree is computed, and the commitment transaction is included.

[0267] After distributing and mining the data corresponding to the verified transaction by solving an associated cryptographic puzzle (e.g., a hash puzzle), the mined data is sent back to the transaction verification node, rather than being stored directly on the blockchain by the network nodes. The mined data can be assembled into (large) blocks and stored on storage entities and / or distributed storage systems that are specifically configured to store large amounts of data. As previously described, this enables the verification nodes to construct large blocks to be stored on the storage entities, without the need for network nodes to construct and store large blocks and transmit such blocks over the blockchain network. In addition, the described architecture allows the use of large storage entities dedicated to storing large and growing blockchains.

[0268] The mined data received from the blockchain network may include block headers corresponding to the verified transactions. The mined data may also include transactions for digital assets in exchange for assembling and / or storing blocks based on the mined data. In addition, the method may include a requirement to wait for a time period t associated with a minimum number of blocks before receiving the digital assets. This provides an incentive scheme for providing verification nodes, as providers will be rewarded for providing a list of verified transactions (e.g., in the form of a reversible Bloom lookup table). A minimum time is required before receiving a digital asset, incentivizing network nodes to propagate a skeleton block (including a payment) to a series of nodes, and incentivizing nodes to propagate the skeleton block to other nodes.

[0269] The step of assembling the blocks based on the mined data may involve assembling large blocks, each block having a size of, for example, at least 2, 4, 6, 8, 10, 50, 100, 500, 1000, or 10,000 megabytes. A nominal upper limit value of 1 PB may be specified, although the upper limit may increase over time. Each block may include, for example, at least 5,000, 10,000, 500,000, 100,000, 500,000, or 1,000,000 transactions. Although the upper limit may increase over time, a nominal upper limit value of 1000, 10000, 500,000, or 1,000,000 transactions may be specified. 12 As previously mentioned, the methods, nodes, and blockchain network architecture described herein enable large blocks to be constructed and stored on storage entities without requiring network nodes to construct and store a large number of transactions. This enables the system to cope with significantly increased transaction rates.

[0270] In the methods described herein, a block may be modified to include a block header that includes a random number provided by a network node. That is, a transaction verification node may be used to process a block that includes a block header that includes a random number provided by a network node when receiving a resolved transaction from a blockchain network. This constitutes a change to the block header, so that the network node may select or randomly generate a number to be inserted into the block header. This helps ensure that even if many network nodes select the same transaction list, the network nodes do not compete with each other when attempting to mine the same block.

[0271] The storage entity for storing the aforementioned large blocks of data can be shared among multiple transaction verification nodes on the blockchain network, and the multiple transaction verification nodes form a super node on the blockchain network, wherein the shared storage entity is a public storage node, distributed storage, or a combination of the two. This architecture enables the formation of a super node on the blockchain network and allows the provision of dedicated storage facilities to store blockchains and serve blockchain networks.

[0272] In view of the above, a super node of a blockchain network is also provided, and the super node includes:

[0273] A plurality of validating nodes as previously described; and

[0274] a shared storage entity for storing said blockchain,

[0275] Wherein, the shared storage entity is a public storage node, a distributed storage or a combination of the two, and

[0276] The blocks assembled by the multiple nodes are sent to and stored in the shared storage entity, whereby the shared storage entity maintains the blockchain.

[0277] This architecture is better suited to handle the large block sizes needed to achieve the desired increase in transaction rates, which is the purpose of the methods and configurations described herein. For example, the shared storage entity may be configured to have a storage capacity of at least 100G, and more preferably at least 1, 10, 100, or 1000GB. Although the upper limit will increase over time, 10 6 TB or even 10 6 Rated upper limit value of YB.

[0278] In terms of the overall network architecture, a blockchain network comprising a plurality of such supernodes may be provided. The supernodes may be connected (but not overlapping) on ​​the blockchain network, and a shared storage entity of each supernode is used to store a copy of the blockchain. A supernode actually comprises a group of nodes that form a pool serving as a supernode. In order to maintain the distributed nature of the blockchain, there should advantageously be a certain number of such supernodes (e.g., at least 10, 50, 100, or 1000, and optionally less than 100,000,000).

[0279] Bloom Filter and Invertible Bloom Lookup Table (IBLT)

[0280] In this section, we summarize the properties of so-called Bloom filters and an extension of these filters called reversible Bloom lookup tables.

[0281] In its simplest form, a Bloom filter is an array. The array has two parameters M and k associated with it. M is the number of bits in the array, and k is the number of different hash functions H. k The number of

[0282]

[0283] Where S 16 is a space of hexadecimal strings on which the hash function is applied. 0 Whether it belongs to the set targeted by the Bloom filter, we need to calculate H 1(Tx 0 )…Hk(Tx 0 ) and then checks if the corresponding bit in the array is set to 1. Fig. 9 Shows the workflow for creating a Bloom filter.

[0284] If one or more are No, then Tx 0 is definitely not in the queried set. However, Bloom filters do allow for false positives. This is because the probability that the hash function changes a bit to 1 is p = 1 / |size of array| = 1 / M. Therefore, there is no so-called given hash function used. Set the bit to 1.

[0285]

[0286] Therefore, if there are k hash functions, the probability that a given bit is not set to 1 is

[0287]

[0288] If n elements need to be inserted, the probability becomes

[0289]

[0290] An obvious drawback of a Bloom filter is that it neither tracks nor maintains any particular order. Clearly, if we wish to maintain an index of the items being filtered, we need to extend the functionality of the filter. This is where reversible Bloom filters (IBFs) and reversible Bloom lookup tables (IBLTs) come into play.

[0291] Instead of just activating bits in the array, the XOR sum of the key, the hash value (as before), and the total counter is stored in each field of the IBF. Fig.10 As shown, Fig.10 A workflow illustrating how a transaction is encoded in an IBF / IBLT is shown.

[0292] application

[0293] We assume that there are two nodes N 1 and N 2 , respectively maintain storage pool m 1 and m 2 Each storage pool contains a hexadecimal string S 16 We further assume that the storage pool follows the ordering convention proposed by Andresen and outlined earlier in this specification.

[0294] Now, N 1 Send m 1 Give N 2 , N2 Collection reconciliation can now be handled in two ways:

[0295] 1) Through △m=m 2 -m 1 Computing set differences (see (David Eppstein, 2011), (Michael T. Goodrich, 2011))

[0296] 2) Iteration m 2 , check whether the transaction exists in the storage pool of

[0297] We see that IBLT can be used for at least two purposes:

[0298] 1) Let nodes assemble mined blocks based on transactions already in their storage pool, helping to identify and retrieve blocks they do not have.

[0299] 2) Maintain a certain level of synchronization between storage pools belonging to different nodes.

[0300] Pruning on a distributed storage pool

[0301] As mentioned above, the future of blockchain technology relies, at least in part, on the proposal of a new architecture that can increase the number of issued transactions per second. One requirement of this new architecture is to remove the current restrictions on block size limits. In this case, local storage pools cannot provide sufficient storage capacity, so a new model of distributed storage pools (DMPs) needs to be designed. The modified architecture for managing distributed storage pools provides the following capabilities:

[0302] Global consensus on the validity of transactions stored in a distributed storage pool;

[0303] Consistency and integrity of stored information;

[0304] Fast read and write operations; and

[0305] Security mechanisms against routing and storage attacks in distributed storage pools.

[0306] Once a transaction is included in a newly mined block, the corresponding copy of the DMP no longer needs to be stored. In this section, we extend the previous framework by providing a protocol for securely deleting transactions from DMPs.

[0307] We provide an overview of the DMP architecture and distributed hash table operations. We also introduce a new mechanism to reach a distributed consensus to prune transactions inside the DMP. In addition, we introduce different policies for resolving data inconsistencies inside the DMP, including:

[0308] Transactions can be marked as removed but still stored locally in the storage pool node;

[0309] The same transaction can be marked as removed in one storage pool node and still be available in another storage pool node;

[0310] A blockchain reorganization may require storage of transactions that were previously removed from the storage pool.

[0311] A single node can be viewed as a cluster of nodes providing a distributed storage pool (DMP). The proposed DMP relies on a distributed hash table structure deployed in a network consisting of individual trust relationships between honest nodes. The connected set of nodes is built on a collection of routing and application-level information. No central authority is involved in the issuance or storage of trust certificates: each node maintains its own record of trusted peers.

[0312] Malicious entities need to join the network to perform some form of attack. For example, Sybil Attacks focus on creating a large number of false identities to disrupt the system [John R. Douceur, The Sybil Attack, First International Workshop on Peer-to-Peer Systems, Springer-Verlag, London, UK, 2002]. Sybil nodes connected to the network may interrupt or delay legitimate routing queries and propagate incorrect routing information. The distributed hash table routing protocol described in this paper has sublinear time and space complexity and is based on the following assumptions:

[0313] Nodes cannot distinguish between honest and malicious nodes;

[0314] Most honest nodes have more connections with other honest nodes; and

[0315] Each node is responsible for storing information about key space partitions.

[0316] The distributed hash table protocol provides two main functions:

[0317] update() is used to build the routing table and insert the key in each distributed hash table node; and

[0318] A DHT node x uses GET(x, k) to look up the target key-value record represented by key k.

[0319] Each DHT node x is usually represented by a public key P x and the current IP address addrx. This information is recorded with sign x (P x ,addr x ) secure link, where sign x() represents a signature with the corresponding private key. Node IDs are stored in the DHT using signed records. When a node changes location or receives a new IP address, a new record [P x ,addr x ] is stored in the DHT. Malicious nodes may insert incorrect key-value pairs. The GET method is responsible for verifying the signature in the returned key-value record.

[0320] The data routing network can be represented as an undirected graph. A malicious edge connects a malicious node to an honest node, while an honest edge connects two honest nodes. While creating an arbitrary number of Sybil identities is computationally affordable for a malicious entity, creating a malicious edge requires convincing an honest node to establish a trusted link to one of the Sybil-controlled identities. If there is no sparse cut that divides the honest region into two, a short random walk starting from an honest node may end at an honest node.

[0321] A node's routing table can be built by initiating independent random walks in the network. The node will collect one or more random key-value records from the receiving nodes on each walk. This routing information is used in the lookup process: if the local table does not contain the key in question, the lookup message is multicast to the set of nodes. One or more of the receiving nodes may have the queried key-value record stored locally. No direct requests to other nodes' tables are sent. Therefore, a malicious node cannot arbitrarily increase the number of incorrect entries in the remote table.

[0322] The keys are not stored in a shared space using deterministic functions (such as hashing) to prevent malicious nodes from brute-forcing the expected output and inserting a false key between two honest keys. Therefore, no function for measuring the distance between two keys will be defined. Each node x builds a long-distance routing table that contains pointers to other nodes whose IDs are evenly distributed in the key space. Pointers are stored by initiating random walks and collecting random IDs from the end nodes. The short-distance routing table contains key-value records. These keys are closest to the IDs of the nodes according to a predefined order.

[0323] The routing fabric is able to manage: (a) node failures, i.e., redundancy in the routing table provides alternative paths for retrieving key values; (b) key changes, i.e., adding or removing keys causes inconsistencies between key distribution and long-distance pointer distribution in the DHT space; and (c) changes in network connectivity, i.e., adding or removing trusted connections does not affect routing performance as long as no sparse cuts partition the honest network and no endpoints become malicious. Synchronization and availability of new keys is provided through periodic UPDATE calls.

[0324] The concept of trusted connections is critical to providing security and integrity in the DHT architecture. New edges can be created in the network using two different mechanisms.

[0325] Subjective ties are based on social or professional relationships between peers: for example, friendship, contracts, and trust with globally or locally known entities. For example, nonprofit organizations, research institutions, government entities, and private companies that sign a specific agreement can all be trusted relationships.

[0326] Transitive connections are based on logical properties and trust to increase the number of random paths on the network. The increased randomness in the hop-by-hop walks makes it harder for malicious nodes to exploit vulnerabilities in malicious edges. Signed messages can be exchanged between peers to learn about trusted connections between other nodes. Nodes can decide to assign different weights to their trusted connections in order to adjust the probability of selecting a single hop in a random walk, or to initialize new transitive connections. Each node is responsible for its own weight. Honest nodes will adjust the weight of their connections based on the routing behavior of their peers: if the key should fall into its short-distance routing table, the node may not be able to provide a valid key-value record. Therefore, new random walks can be organized through weak edges, and the influence of malicious nodes will decrease over time.

[0327] The DMP functionality is provided by a cluster of dedicated nodes. In the cluster, the validator nodes collect and verify new incoming transactions, while the storage pool nodes are responsible for persistent storage of verified transactions. Fig.11 The design of a storage pool cluster with validator nodes v and storage pool nodes s is shown. The functionality of these two types of nodes can be provided by the same physical entity or embedded in different entities.

[0328] DMP provides two basic operations: storage and retrieval of verified transactions. Given a transaction t i , identifier id(t i ) can be assigned as id i =H(t i ), where H represents the hash function. The identifier will be used as a key in the DMP. Using a specific multicast address, transactions can be received from multiple validators in the cluster. Each validator will then independently verify the transaction. However, the underlying DHT structure does not embed transaction IDs in the key space to prevent key clustering attacks. Therefore, transactions can be stored in random nodes in the DMP. For a given transaction or set of transactions, the validator node can send an R storage (RSTORE) message request to a random storage pool node, where R is the data replication factor.

[0329] Assume that N validators will independently verify transaction t i Each validator v maintains a DBEach entry in the database contains the transaction id i The identifier and binary decision for verification. Each validator will send a storage (STORE) (t i , id i ) or REJECT(id i )information

[0330] Each storage pool node s will store t only when it receives N / 2+1 storage messages. i Alternatively, once a node receives the first STORE message, it activates a timer to receive N / 2 more STORE messages required to reach the quota. If the timeout expires and not enough confirmations are received, the transaction is discarded. Each storage pool node s m It will also retain i The number of received confirmations N i,m >N / 2+1.

[0331] Retrieve verified transactions i Need to broadcast message query (QUERY) (id i ). Responsible for storing t i The storage pool node will send message data (DATA) to the query node (t i ). If M storage pool nodes are needed to store t i , the query node should receive at least M / 2+1 data messages to consider the consistency of the stored transactions. In addition, the query node can use the validity request (VALIDITY REQ) (t i ) message asks N / 2+1 random verifiers to DB Information Evaluation i effectiveness.

[0332] A scalable architecture for managing increasing transaction activity requires a storage infrastructure that operates with large amounts of data. For example, a transaction rate of 10K txn / s and an average transaction size of 1KB requires storing approximately 27TB of blocks per month.

[0333] In the M Network cluster, two different storage architectures (or their combination) are proposed. The first architecture is suitable for larger entities that own and maintain multiple verification nodes, all of which have access to centralized storage facilities. In contrast, the fully decentralized architecture is suitable for single nodes with sufficient storage capacity that wish to join a shared and distributed storage pool.

[0334] In the following, we use the following terms to represent transaction dependencies:

[0335] A transaction can spend the output of a previous transaction called the Parent transaction;

[0336] Transactions can create outputs for subsequent transactions called child transactions.

[0337] Transaction dependencies or chains of transactions can be created to represent complex transaction workflows that require children to be added before parents. When a transaction chain is transmitted over the network, the order in which data arrives may not match the order in which data is transmitted. In this case, the receiving node uses an Orphan Transaction Pool to store transactions that reference unknown parent transactions. Once the parent is known, any orphans that reference UTXOs created by said parent are released from the Orphan Pool and recursively revalidated. The entire transaction chain is then reconstructed in the correct order and included in the transaction pool. Therefore, when a new transaction is added to the storage pool, it has no children in the storage pool because those children will be orphans.

[0338] To prevent Denial-of-Service attacks, the number of orphan transactions stored in memory is limited. If the number of orphan transactions in the pool exceeds the maximum allowed, randomly selected orphan transactions will be evicted from the pool until the pool size returns to within the limit.

[0339] The local storage pool contains a collection of transactions that is consistent with the node's view of the blockchain. Transactions can be removed from the local storage pool for one of the following reasons:

[0340] Transactions in mined blocks are published. When a new block is verified, its transactions are removed from the storage pool.

[0341] Blockchain reorganization (reorg). If a block is disconnected from the blockchain, its transactions are moved back to the storage pool.

[0342] Conflict with transactions in the block (Double Spending). When validating a new block, all transactions that conflict with transactions in that block and all their related relationships will be removed from the storage pool.

[0343] Additionally, depending on the configuration of the local storage pool, the following additional scenarios may be considered:

[0344] Manual pruning;

[0345] expires; and

[0346] Local storage size limit.

[0347] When deleting a transaction and its children, the complete set of transactions must be computed before performing the actual removal, otherwise the storage may be left in an inconsistent state where parent transactions cannot be retrieved. All ancestors of a given transaction marked for removal need to be updated. Therefore, intermediate transactions in the chain cannot be removed before the state of all dependent transactions has been updated.

[0348] In case of a reorganization, new transactions may have pool child transactions, leading to inconsistent state, as there may be descendant transactions of the transaction from the disconnected block. In this case, the out-of-block descendants of the in-block transaction in the pool must be checked. The function UpdateForDescendants is used to update the descendants of a single transaction added to the pool and can have child transactions in the pool.

[0349] As mentioned before, the winning network node sends the block skeleton back to the validator node. The block skeleton consists of a random number, an invertible bloom filter lookup table (IBLT), and a coinbase transaction. Based on this, the validator node can:

[0350] 1. Ordering transactions according to a specific set of rules;

[0351] 2. Assemble newly mined blocks;

[0352] 3. Continue to store the block in its own memory;

[0353] 4. Propagate the skeleton to other new full nodes.

[0354] Therefore, the validator nodes are aware of newly published transactions. Each validator node can independently send a delete message containing a list of transaction IDs to the DMP. Validators can only send delete requests for previously verified transactions (with check_validator_send enabled). This information is stored in the database V DB (Validator Database). According to this model, storage pool nodes can discard deletion requests received from validators that have not verified transactions (check_validator_rcv is enabled). This information is stored in database S DB (Storage Database). The two check_validator_send and check_validator_rcv options can be hard-coded or independently configured. The deletion message is signed with the validator's private key. The message must contain a nonce or timestamp to avoid spreading fraudulent copies that could affect the consensus protocol.

[0355] Fig.12 Shows the validator node v n(0 ≤ n < N), this node receives updates regarding newly mined blocks. After validating the block, the validator sends a deletion request for the published transactions to the DMP. Each storage pool node s m (0 ≤ m < M) tracks the storage requests on S DB table and the deletion requests on R DB table. As Fig.12 shown, each storage pool node uses a new table R DB (Removal Database) to track the deletion requests for each stored transaction. Given a deletion request for transaction ti from validator n < N of storage pool node m < M, the local R DB (m) table will contain a boolean r mn value. For example, if N = 100, and each storage pool node stores 10M transactions every 10 minutes for 3 days, the size of R DB (m) can be limited to: 100 · 10 7 · 3 · 24 · 6 = 432GB. Note that this number represents an extremely unlikely worst-case scenario where all the transactions locally stored in the past 3 days have not been confirmed yet, and each table entry requires 1 byte. A table size at least one or two orders of magnitude smaller (e.g., approximately 4GB) may represent a more realistic scenario. However, since the storage pool nodes have the required high storage capacity, we do not impose any limit on the maximum size of the local table.

[0356] Let N MAX > N be the maximum number of validators that can send storage or deletion messages to the cluster. Depending on the selected distributed architecture, N MAX may correspond to the total number of validators in the network or may be proportional to the size of a specific DMP cluster. The size of the DMP cluster is given by the number of storage pool nodes and / or the total amount of transactions that can be locally stored.

[0357] We introduce some criteria to determine whether a transaction t m stored in the local storage pool node s i in the cluster should be deleted:

[0358] At least N* < N MAX validators send deletion requests. The validators can actually promote N*, depending on the check_validator_send and check_validator_rcv settings. If one or both options are set, N* ≈ N (approximate value) can be imposed. If no option is set, it is recommended to use N* > N in order to achieve the highest possible consensus.

[0359] t i depends on the previously removed transaction t jIf both transactions are stored in s m In, and t j is safely removed, then t i It can also be safely removed (if consensus is reached to remove the transaction, then the dependent transaction must be considered invalid and marked as removed). No signaling is required to other storage pool nodes.

[0360] We do not force the DMP to store a chain of transactions in a single storage pool node to prevent certain denial of service attacks. As a result, the storage pool node may be in an inconsistent state due to the state of the individual transactions in the chain. As long as the nodes that need data related to the chain of transactions learn about the inconsistency by issuing specific query requests to the DMP, there will be no problem. For example, a node requests a transaction t i This transaction depends on the second transaction t j After querying the DMP for the second transaction, the node finds that t j Therefore, even if it is still stored in some storage pool nodes of DMP, the node has the responsibility to consider t i Not available. Long term inconsistencies will be resolved by permanent pruning.

[0361] If consensus is reached, transaction t i will be marked locally as removed. However, for security reasons, the transaction may not be physically deleted. We introduce two criteria to determine when a transaction should be removed from s m To physically delete a transaction:

[0362] At least N**≥N* validators have sent pruning requests. The value of N** should be high enough to consider pruning consensus fully safe.

[0363] ΔT has passed since the last delete request was received i >ΔT*, and no forwarding pair t i The value of ΔT* should be high enough that the probability of a reorganization event can be ignored. According to the 6-block confirmation rule, a transaction can be safely considered accepted by the network approximately 1 hour after it is published in a newly mined block.

[0364] However, according to s m storage limit, even if the above criteria are not met, t i Can also be removed. Transactions can be sorted in descending order ΔT i Sort and choose to permanently delete. Belong to the chain and stored in s m Transactions in the chain must be removed immediately. There is no need to notify validators about the pruning of the transaction chain. Nodes that need data related to the transaction chain learn about inconsistencies by issuing specific query requests to the DMP.

[0365] Storage pool nodes can collect data requests for transactions that have been marked as removed. Receiving multiple data requests for a single transaction can have different implications:

[0366] Denial of service attacks that retain useless data;

[0367] Blockchain reorganization and the need to transfer transactions back to the DMP.

[0368] The storage pool node does not take any action due to the data request, as the request may not be legitimate. The data request counter can be used to mark removed transactions as candidates for recovery. These candidates can still be considered for physical pruning. In the case of a priority policy for physical pruning, a lower priority can be assigned to candidate transactions for recovery.

[0369] Transactions marked as removed but still stored locally can only be recovered if they receive a recovery message from a validator. If a chain reorganization occurs, it is the responsibility of the validator to signal this to the DMP. Storage pool nodes need to collect a certain number of unique recovery messages to make transactions available again. We recommend a number of messages as a function of the N, N*, and / or N** parameters. For example, the minimum number of recovery messages could be equal to the average between N and N*.

[0370] Table 1 summarizes the configurable parameters used by the pruning protocol.

[0371] Table 2: Configurable parameters.

[0372] parameter describe N A set of validators responsible for verifying a single transaction. <![CDATA[N MAX ]]> The full set of validators for the data cluster. N* The minimum number of validators required to trigger a proposed reversible pruning. N** The minimum number of validators required to trigger physical pruning of a transaction. M A collection of storage pool nodes in a data cluster. ΔT* The time window that triggers physical pruning of transactions.

[0373] The protocol governing transactions consists of the following messages.

[0374] Received(t i ). When receiving a new unverified transaction t i , triggers the validator's callback.

[0375] Storage(t i ,id i ). The validator stores the valid transaction t i and key id i Request.

[0376] Storage(id i ). The validator stores the valid transaction key id i Optimization request.

[0377] Query(id i ). The common node pair has a key id i Transaction request.

[0378] Data(t i). Storage pool node transaction t i Response to a query request.

[0379] VALIDITY_REQ(t i ). The general node requires rechecking of transaction t i effectiveness.

[0380] VALIDITY_ACK (t i ). The validator verifies the transaction t i Answer to validity request.

[0381] The extensions shown here require the following additional messages.

[0382] remove(id i ). The validator requests to remove the id i Identifies the transaction.

[0383] Restore(id i ). Validator requests to recover ID after chain reorganization i Identifies the transaction.

[0384] Removed(id i ). Storage pool node pair id i The reply to a query request for a removed transaction. If the information is still available, the message may contain the storage pool node with id i The number of remove messages received by the identified transaction.

[0385] Fig.13 Shown by id i The complete state graph of the transaction identified by the validator's request. Depending on the type (i.e., stored, removed, restored) and number (e.g., N, N*, N**) of messages received from the validator, the transaction can change state to available, removed, or physically deleted. It is not possible to restore the "physically deleted" transaction state. However, data may still be recoverable depending on the capabilities provided by the local file system and operating system.

[0386] It should be noted that the above embodiments illustrate rather than limit the present invention, and those skilled in the art will be able to design many alternative embodiments without departing from the scope of the present invention as defined by the appended claims. For example, it should be understood that a user may instead use the methods and systems described herein to exchange other resources (e.g., information, contracts, and tokens). A token represents an asset or resource in accordance with a smart contract associated with the token, such that control of the token has the ability to control the asset or resource. The smart contract itself may be stored outside the blockchain or in one or more transactions.

[0387] In the claims, any reference signs in brackets shall not be construed as limiting the claims. The words "comprising" and "comprises" etc. do not exclude the presence of other elements and steps as a whole, even if these elements and steps are not listed in any claim or in the specification. In this specification, "comprising" means "includes or consists of" and "comprising" means "including or consists of". The singular reference of an element does not exclude the plural reference of these elements and vice versa. The present invention may be implemented by means of hardware comprising several different elements and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by the same component of hardware. The indisputable fact that certain methods are enumerated in mutually different dependent claims does not mean that the combination of these methods cannot achieve beneficial results.

[0388] References

[0389] An Integrated World.(nd).Retrieved from https: / / www.anintegratedworld.com / whats-in-a-block /

[0390] David Eppstein,MT(2011).What's the Difference? Efficient SetReconciliation without Prior Context.ACM.

[0391] maidsafe.(nd).Retrieved from github.com:https: / / github.com / maidsafe / Whitepapers

[0392] Michael T.Goodrich,MM(2011).Invertible Bloom LookupTables.Communication,Control,and Computing(Allerton),2011 49th AnnualAllerton Conference on.

[0393] Retrieved from "https: / / github.com / NebulousLabs / Sia.(nd).

[0394] O(1)Block Propagation.(nd).Retrieved from github.com:https: / / gist.github.com / gift_address / e20c3b5a1d4b97f79ac2

[0395] Wikipedia.(nd).Retrieved from https: / / en.wikipedia.org / wiki / Distributed_hash_table

[0396] Wilkinson et al.(2016,December 15).Retrieved fromhttps: / / storj.io / storj.pdf

[0397] John R.Douceur.The Sybil Attack.First International Workshop onPeer-to-Peer Systems.Springer Publishing House,London,UK,2002。

Claims

1. A computer-implemented method for a node of a blockchain network, the method being implemented by a processing resource, the method comprising: receiving processed data from a blockchain network corresponding to a plurality of verified transactions; assembling blocks based on the processed data; and Sending the assembled block to a storage entity for storage on the blockchain; The method further comprises: receiving a transaction from the blockchain network; verifying the transaction received from the blockchain network; Maintaining, together with other nodes in said blockchain network, a distributed, decentralized store of verified transactions; and distributing data corresponding to the verified transactions to the blockchain network, the data comprising a list of verified transactions in the form of a reversible Bloom filter lookup table; Among them, the step of maintaining distributed and decentralized storage of verified transactions together with other transaction verification nodes in the blockchain network includes: synchronizing the transaction verification nodes on the blockchain network to maintain the latest list of verified transactions in a decentralized and distributed manner.

2. The method according to claim 1, wherein: The verified transactions are sorted in a defined order so that a common sorting system is used.

3. The method according to claim 2, wherein: The ranking system is a canonical ranking system.

4. A method according to any preceding claim, wherein: The step of distributing data corresponding to the verified transactions to the blockchain network includes preparing data corresponding to a list of verified transactions.

5. The method according to claim 4, wherein: The list of verified transactions includes a reversible Bloom lookup table.

6. A method according to any preceding claim, wherein: The step of distributing data corresponding to the verified transactions to the blockchain network includes generating a commitment transaction for the digital asset in exchange for providing the data corresponding to the list of verified transactions to a network node.

7. A method according to any preceding claim, wherein: The processed data includes a block header, and the block header corresponds to the verified transaction.

8. A method according to any preceding claim, wherein: The processed data includes a transaction for a digital asset in exchange for assembling and / or storing a block based on the processed data.

9. A method according to any preceding claim, wherein: The processed data is mined data; and the distributing of the data corresponding to the verified transaction to the blockchain network includes distributing the data corresponding to the verified transaction to the blockchain network for mining.

10. A computer-readable storage medium comprising computer-executable instructions for causing one or more processors to perform the method of any one of claims 1 to 9, the one or more processors being processing resources.

11. An electronic device, comprising: Interface devices; one or more processors connected to the interface device; A memory connected to the one or more processors, the memory storing computer executable instructions, the computer executable instructions causing the one or more processors to perform the method of any one of claims 1 to 9 when executed, the one or more processors being processing resources.

12. A node of a blockchain network, wherein the node is used to execute the method according to any one of claims 1 to 9.