Method and system for pruning blocks from a blockchain for data retention and storage scalability purposes
The system addresses blockchain data inefficiencies by using a state database and new genesis block configuration to enable block pruning, ensuring transaction validation and smart contract execution without full blockchain copies, thus reducing file size and maintaining functionality.
Patent Information
- Application Number
- JP2024525549
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-10-27
- Filing Date
- 2022-09-12
- Publication Date
- 2025-08-06
- Estimated Expiration
- 2042-09-12
AI Technical Summary
Existing blockchains face inefficiencies due to significant data size, which traditional methods fail to address effectively, as they often require all nodes to maintain a complete copy for transaction validation, limiting practicality and scalability.
A system and method for pruning blocks in a blockchain by using a state database to store unspent transaction outputs and smart contract states, allowing new transactions to be validated without requiring full block copies, and employing a new genesis block with configuration values to ensure immutability and functionality.
Enables continuous pruning of blocks, reducing file size significantly while maintaining transaction validation and smart contract execution, ensuring all nodes can verify transactions without full blockchain copies.
Smart Images

Figure 0007719963000001 
Figure 0007719963000002 
Figure 0007719963000003
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to pruning of a blockchain, and in particular to enabling continuous pruning of blocks in a blockchain without affecting immutability, smart contracts, and transaction validation using the current genesis block, configuration values, and state database.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Patent Application No. 17 / 452,492, filed October 27, 2021, the entire disclosure of which is incorporated herein by reference. [Background technology]
[0003] Blockchains were originally created as a storage mechanism used to make payment transactions using cryptocurrencies. Using a blockchain offers several benefits, such as decentralization, distributed computing, and transaction transparency, while providing a degree of anonymity for the individuals or entities involved in the transactions. A relatively favorable property of blockchains is the immutability of their records: all transactions that are part of the chain are stored and are immutable due to the computational power and bandwidth limitations required, especially as the chain grows and the blockchain network adds more nodes.
[0004] However, these attributes can cause blockchains to reach a significant data size, making transmission or local storage inefficient or impossible. For example, a blockchain with a sufficiently large number of blocks, or multiple blocks storing a significant amount of data, can consume gigabytes of space, which may become impractical over time. Due to immutability, traditional blockchains often cannot reduce data size in any meaningful way. As a result, several methods have been developed that may allow some nodes to remove blocks from storage. However, these methods often rely on at least some nodes maintaining a complete copy of the blockchain for use in validation, and nodes that do not maintain a complete copy may be unable to validate transactions whose inputs were not found on pruned blocks. In such methods, the reduced data size results in little to no benefit in many cases and may be impractical in others.
[0005] Therefore, there is a need for technological advancements to the blockchain that allow for block pruning while keeping all new transactions verifiable by all nodes, without requiring any node to hold a full copy of the blockchain. Summary of the Invention
[0006] This disclosure provides a description of systems and methods for processing new blockchain transactions and validating a new genesis block in a blockchain configured to enable pruning behind any given genesis block in the blockchain. A new current genesis block is periodically selected in a blockchain, and once selected, the current genesis block may contain aggregate configuration values for the current state of smart contracts or, in some cases, for unspent transaction outputs. Using the methods disclosed herein, the current genesis block allows new transactions or smart contract executions to be successfully validated and processed without requiring any preceding blocks, allowing all blockchain nodes to prune those blocks. In some cases, blockchain nodes can maintain a state database that stores unspent transaction outputs and associated data, which can enable the blockchain node to validate transactions (whose inputs may correspond to the outputs of transactions in pruned blocks) so that such transactions can be successfully validated and added to the blockchain, without requiring the inclusion of such data in the configuration data of the new genesis block. In either case, pruning of old blocks can be performed at all blockchain nodes in a blockchain network without adversely affecting the ability to validate new transactions and execute smart contracts, resulting in a significant reduction in file size at all nodes, and this can be done without any loss of associated functionality.
[0007] A method for processing new blockchain transactions in a blockchain configured to allow pruning ahead of a current genesis block, the method including: receiving the new blockchain transaction by a receiver at a blockchain node in a blockchain network, the new blockchain transaction including at least one or more transaction inputs and one or more transaction outputs; validating the new blockchain transaction by a processor at the blockchain node, where validating the new blockchain transaction includes verifying that each of the one or more transaction inputs is unspent; generating a new block by the processor at the blockchain node, the new block including at least a block header and one or more blockchain data values, one of the one or more blockchain data values including the new blockchain transaction; transmitting the generated new block by a transmitter at the blockchain node to a plurality of additional nodes in the blockchain network; and storing, in a memory of the blockchain node, the one or more transaction outputs in a state database associated with the blockchain.
[0008] A method for verifying the configuration of a new current genesis block in a blockchain, the blockchain configured to allow pruning before the new current genesis block, the method comprising: receiving, by a receiver of a blockchain node in a blockchain network, a genesis response message from another node in the blockchain network, the genesis response message including at least a configuration value and an ordinal value; identifying, by a processor in the blockchain node, a number of standard blocks in the blockchain that have been added after a previous genesis block that includes a value preceding the ordinal value; aggregating, by a processor of the blockchain node, smart contract state changes from each of the identified standard blocks; and verifying, by the processor of the blockchain node, the configuration value included in the received genesis response message based on the aggregated smart contract state changes. The aggregation of smart contract states can be performed by the processor of the blockchain node that constructs the new current genesis block or by another blockchain node.
[0009] 1. A system for processing new blockchain transactions in a blockchain configured to allow pruning beyond a current genesis block, the system including: a blockchain network; and a plurality of additional nodes within the blockchain network; blockchain nodes within the blockchain network including: a receiver that receives new blockchain transactions, the new blockchain transactions including at least one or more transaction inputs and one or more transaction outputs; a processor that validates the new blockchain transactions, wherein validating the new blockchain transactions includes verifying that each of the one or more transaction inputs is unspent and generating a new block, the new block including at least a block header and one or more blockchain data values, one of the one or more blockchain data values including the new blockchain transaction; a transmitter that transmits the generated new block to a plurality of additional nodes in the blockchain network; and a memory that stores the one or more transaction outputs in a state database associated with the blockchain.
[0010] 1. A system for verifying a configuration of a new current genesis block in a blockchain, the blockchain configured to allow pruning before the new current genesis block, the system comprising: a blockchain network; another node within the blockchain network; a blockchain node within the blockchain network, the receiver receiving a genesis response message from another node in the blockchain network, the genesis response message including at least a configuration value and an ordinal value; and a processor performing the steps of: identifying a plurality of standard blocks in the blockchain that have been added after a preceding genesis block that includes a value preceding the ordinal value; aggregating smart contract state changes from each of the identified plurality of standard blocks; and verifying the configuration value included in the received genesis response message based on the aggregated smart contract state changes. [Brief explanation of the drawings]
[0011] The scope of the present disclosure is best understood from the following detailed description of illustrative embodiments when taken in conjunction with the accompanying drawings, in which:
[0012] [Figure 1] FIG. 1 is a block diagram illustrating a high-level system architecture for validating genesis blocks and processing new transactions in a pruned blockchain, according to an example embodiment. [Figure 2] FIG. 2 is a block diagram illustrating a blockchain node of the system of FIG. 1 for validating a genesis block and processing new transactions in a pruned blockchain, according to an example embodiment. [Figure 3] 2 is a flow diagram illustrating a process for processing new blockchain transactions in a pruned blockchain in the system of FIG. 1 according to an example embodiment. [Figure 4] 1 is a flow diagram illustrating a process for validating a genesis block in a pruned blockchain, according to an example embodiment. [Figure 5] 1 is a flow diagram illustrating an example method for processing new blockchain transactions in a blockchain configured to allow pruning ahead of the current genesis block, according to an example embodiment. [Figure 6] 1 is a flow diagram illustrating an example method for verifying the configuration of a new genesis block in a blockchain configured to allow pruning before the new genesis block, according to an example embodiment. [Figure 7] FIG. 1 is a block diagram illustrating a computer system architecture, according to an exemplary embodiment.
[0013] Further areas of applicability of the present disclosure will become apparent from the following detailed description. The detailed description of exemplary embodiments is intended for purposes of illustration only and is not intended to necessarily limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0014] Glossary Blockchain: A blockchain-based shared ledger of all transactions, which may include currency, provenance, legal or medical records, or almost any other form of transaction. One or more computing devices may include a blockchain network, which may be configured to process and record transactions as part of blocks in the blockchain. Once a block is complete, it is added to the blockchain, thereby updating the transaction record. In many embodiments, the blockchain may be a chronological ledger of transactions or may be presented in any other order suitable for use by the blockchain network. In some embodiments, a transaction recorded in the blockchain may include a destination address and a currency amount. The blockchain thereby records how much currency belongs to a particular address. In some embodiments, transactions may or may not be financial-related and may include additional or different information (e.g., source address, timestamp, etc.). In some embodiments, the blockchain may additionally or alternatively include almost any type of data in the form of transactions that would or needs to be placed in a distributed database that maintains a continuously growing list of data records hardened against tampering or revision. Alternatively, the blockchain may be verified and validated by the blockchain network via proof-of-work (PoW) and / or any other suitable validation techniques associated therewith. In some cases, the data about a given transaction may further include additional data that is not directly part of the transaction that is appended to the transaction data. In some examples, the inclusion of such data in the blockchain may constitute a transaction. In some such examples, the blockchain may not be directly associated with a particular digital currency, virtual currency, fiat currency, or other type of currency, but rather a broad range of data transactions is contemplated.
[0015] A system for maintaining and utilizing pruned blockchains FIG. 1 illustrates a system 100 for validating genesis blocks and processing new blockchain transactions in a pruned blockchain through the use of a state database and configuration values.
[0016] The system 100 can include blockchain networks 104. Each blockchain network 104 can include multiple different blockchain nodes 102. In some embodiments, one or more blockchain nodes 102 can be nodes in one or more blockchain networks 104. Each blockchain node can be a computing system, as shown in FIGS. 2 and 7 and described in more detail below, configured to perform functions related to blockchain processing and management, which can include, for example, generating blockchain data values, validating proposed blockchain transactions, verifying digital signatures, generating new blocks, validating new blocks, and maintaining copies of the blockchain.
[0017] A blockchain may be a distributed ledger comprising at least a plurality of blocks. Each block may include at least a block header and one or more data values. Each block header may include at least a timestamp, a block reference value, and a data reference value. The timestamp may be the time when the block header was created and may be represented using any suitable method (e.g., a UNIX timestamp, DateTime notation, etc.). The block reference value may be a value that references a preceding block in the blockchain (e.g., based on the timestamp). In some embodiments, the block reference value in the block header may be a reference to the block header of the most recently added block preceding the respective block. In an exemplary embodiment, the block reference value may be a hash value generated by hashing the block header of the most recently added block. Similarly, the data reference value may be a reference to one or more data values stored in the block containing the block header. In an exemplary embodiment, the data reference value may be a hash value generated by hashing one or more data values. For example, the data reference value may be the root of a Merkle tree generated using one or more data values.
[0018] The use of a block reference value and a data reference value in each block header results in immutability for the blockchain. Any attempted change to the data value requires the generation of a new data reference value for that block, which in turn requires the generation of a new block reference value for the subsequent block, which in turn requires the generation of a new block reference value for each subsequent block. For the change to be permanent, this must be performed and updated for every single blockchain node 102 in the blockchain network 104 before a new block is created and added to the blockchain. Computing and communication limitations can make such changes extremely difficult or even impossible, hence the blockchain's immutability.
[0019] In some embodiments, a blockchain can be used to store information about blockchain transactions made between two different blockchain wallets. A blockchain wallet can contain a private key of a cryptographic key pair, which can be used to generate a digital signature that can serve as a payer's authorization for the blockchain transaction, and the digital signature can be verified by the blockchain network 104 using the public key of the cryptographic key pair. In some cases, the term "blockchain wallet" can refer specifically to a private key. In other cases, the term "blockchain wallet" can refer to a computing device (e.g., participant system 106) that stores a private key for use in blockchain transactions. For example, each computing device can have its own private key for each cryptographic key pair and can be a blockchain wallet for use in transactions with a blockchain associated with the blockchain network 104. The computing device can be any type of device suitable for storing and utilizing a blockchain wallet, such as a desktop computer, laptop computer, notebook computer, tablet computer, mobile phone, smartphone, smartwatch, smart TV, wearable computing device, embedded computing device, etc.
[0020] Each blockchain data value stored in the blockchain may correspond to a blockchain transaction or other data storage, as appropriate. A blockchain transaction may include at least the following: a digital signature of the sender (e.g., a first participant system 106) of the currency generated using the sender's private key, a blockchain address of the recipient (e.g., a second participant system 106) of the currency generated using the recipient's public key, and the amount of blockchain currency to be transferred or other data to be stored. If the blockchain is used for data storage purposes other than currency, such other data can be substituted for the currency amount. In some blockchain transactions, the transaction may also include: one or more sender blockchain addresses where the blockchain currency is currently stored (e.g., if a digital signature establishes access to such currency); and an address generated using the sender's public key for any changes to be maintained by the sender. Addresses to which cryptocurrency that can be used in future transactions is sent are called "output" addresses because they were previously used to capture the output of a previous blockchain transaction, and are also called "unspent transactions" because there is currency sent to the address in a previous transaction that has not yet been spent. In some cases, blockchain transactions may also include the sender's public key for entities to use in validating the transaction. For traditional processing of blockchain transactions, such data may be provided by either the sender or the recipient to a blockchain node 102 in the blockchain network 104.The node can verify the digital signature using the public key in the sender's wallet's cryptographic key pair and verify the sender's access to the funds (e.g., if the unspent transaction has not yet been spent and was sent to an address associated with the sender's wallet), a process known as "confirming" the transaction, and the blockchain transaction is then included in a new block. In traditional blockchain implementations, the new block may be verified by other nodes 102 in the blockchain network 104 before being added to the blockchain and distributed to all blockchain nodes 102 in the blockchain network 104. If the blockchain data value is not related to a blockchain transaction but instead relates to the storage of other types of data, the blockchain data value may still include or otherwise involve verification of the digital signature.
[0021] In some embodiments, a blockchain may utilize smart contracts. In such embodiments, the smart contract may be stored in a blockchain associated with the blockchain network 104. The smart contract may be a self-executing contract, and the result of the smart contract after execution may be a new blockchain data value, such as a new blockchain transaction, that is stored in the blockchain. The smart contract may be executed with one or more inputs, also referred to as dispatches, and a new blockchain data value is generated. The smart contract may be self-executing, and the smart contract will automatically trigger execution when a valid dispatch is identified or when certain criteria are met, resulting in a specific dispatch being provided to the smart contract as an input for execution. In an example embodiment, each dispatch for a smart contract will reference the previous blockchain data value on the blockchain, for example, by using a hash value or unique identifier of the blockchain data value, which is stored in the blockchain along with the blockchain data value. When a dispatch is fed as input into a smart contract, execution of the smart contract may result in new blockchain data values, such as blockchain transactions, which in some cases may depend on the dispatch itself, e.g., the values in the dispatch may result in different outputs than execution of the smart contract.
[0022] In the system 100, blockchain nodes 102 in the blockchain network 104 can be configured to prune the blockchain. Pruning the blockchain can include deleting older blocks in the blockchain from local data storage without affecting the current operation of the blockchain. As described in more detail below, the blockchain network 104 can utilize multiple genesis blocks and configuration values and state databases to enable validation of future transactions and maintain the immutability of the blockchain even with pruned blocks. Traditionally, a genesis block is the first block in a blockchain and can include a block header with a null block reference value or other value that does not represent the hash value of a previous block. In some cases, the genesis block may not contain any blockchain data values. In the system 100, a new genesis block can be created, verified, and added to the blockchain, and any blocks in the blockchain prior to the new genesis block can be pruned by the blockchain nodes 102. To ensure that new transactions can be successfully confirmed even when attempting to utilize unspent transaction outputs from pruned blocks, blockchain nodes 102 in system 100 can utilize a state database.
[0023] The state database may be a local database stored within or accessible by the blockchain node 102 and includes the current unspent transaction outputs in the blockchain. As blocks are added to the blockchain, the blockchain node 102 may analyze each new blockchain transaction stored therein (e.g., in the blockchain data values within the block) and update its state database with the unspent transaction outputs that have been consumed and any newly generated transaction outputs. The blockchain node 102 may analyze the new blockchain transaction and, in some cases, remove any included unspent transaction outputs from its state database or update the status of the unspent transaction outputs as spent. The blockchain node 102 may also analyze each new blockchain transaction and add any new unspent transaction outputs resulting from the transaction to its state database. In some cases, a state value indicating that a transaction output is unspent may be stored in a database associated with the transaction output. In some embodiments, the currency amount transferred to the transaction output may be stored along with the transaction output in the state database.
[0024] In some embodiments, an entry for an unspent transaction in the state database can also specify the block in which the unspent transaction was created. For example, each block in a blockchain can have an identification number associated with it, which can be random, pseudo-random, or sequential, such as the 15th block in a chain being given the identification number 15 (or alternatively, 14 if the initial genesis block was identified as zero). When an unspent transaction is stored in the state database, the identification number of the block in which the unspent transaction was created or last updated can be stored in the state database along with the unspent transaction. Such a value can be used to determine whether the unspent transaction was created in a block that was pruned from the blockchain, or for faster identification of unspent transactions in the chain itself.
[0025] When a new blockchain transaction is received by the blockchain node 102 for validation and inclusion in a new block in the blockchain, the blockchain node 102 can validate the transaction as described above. If the unspent transaction outputs in the new blockchain transaction were stored in a previous block pruned from the blockchain (e.g., identified using the block's identification value in the state database), the blockchain node 102 can utilize the state database. The blockchain node 102 can query the state database to determine whether the unspent transaction outputs referenced as transaction inputs in the new blockchain transaction exist in the state database and, if applicable, whether they are indicated as unspent. If currency amounts are stored in the state database, the blockchain node 102 can further verify that each unspent transaction output is associated with the currency amount indicated in the new blockchain transaction. If one or more unspent transaction outputs cannot be verified using the state database, the transaction is not validated and therefore not added to the blockchain. In some cases, the blockchain node 102 can provide a notification to the participant system 106 that submitted the blockchain transaction to indicate the validation failure. If each of the unspent transaction outputs is found in the state database and the blockchain node 102 confirms that the transaction outputs are still unspent, the transaction can be confirmed. The blockchain node 102 can then include the new blockchain transaction in a new block that is created and distributed to other blockchain nodes 102 in the blockchain network 104, which can be confirmed and added to the blockchain. The blockchain node 102 can then update its state database accordingly, as described above.
[0026] The state database ensures that all new blockchain transactions are successfully confirmed and verified, even if the transaction attempts to use transaction outputs from a pruned block. By only maintaining information about unspent transaction outputs, the state database file size remains consistently small and does not grow over time, and continuous pruning of the blockchain itself ensures that the blockchain file size remains reasonable. In an example embodiment, each blockchain node 102 in the blockchain network 104 can have its own state database, which should store the same data because the chain is immutable and consistent across all blockchain nodes 102. For example, the state database is updated at each blockchain node 102 when a new block is confirmed, and because the new block is distributed to all nodes in the blockchain, the state database should be consistent across all blockchain nodes 102.
[0027] When pruning is desired in the blockchain network 104, a new genesis block can be selected, its identity broadcast to all nodes in the blockchain network, and stored in a record, referred to as a "genesis block record," stored in the blockchain node 102. The genesis block record can be a record that indicates which block in the chain is the current genesis block. The record can be updated throughout the chain (e.g., when a transaction appears in a block in the chain, it identifies to the blockchain node which block has been selected as the new current genesis block). In some cases, a new genesis block record can be generated or selected periodically (e.g., after a specific amount of time, after a predetermined number of blocks, after a predetermined number of transactions, or when the blockchain reaches a predetermined file size). The genesis block record can include an ordinal value that indicates the value of the genesis block in relation to all previous genesis blocks (e.g., the 50th genesis block added to the blockchain can have an ordinal value of 50 or 51). The ordinal values can be used to ensure proper ordering of the blockchain, ensure consistency of pruning across blockchain nodes 102, and allow new blockchain nodes 102 to join the blockchain network 104 by starting them at the appropriate genesis block with the current state database without having to retrieve the entire blockchain.
[0028] When a new genesis block is created or selected, the blockchain node 102 can distribute the genesis block record to multiple other blockchain nodes 102 for validation and addition to the blockchain, and can do so using any suitable method and system. The current genesis block can be validated and added using the same process as a standard block (e.g., a standard block can be a block that has not been selected to serve as the genesis block in the genesis block record). In some cases, a standard block can be selected to serve as the genesis block record. In such cases, the standard block can include data in its block header that indicates the genesis block record, such as an ordinal value. For example, when generating the block header for that standard block, the ordinal value can be included in the block header to indicate that it has been selected as the genesis block. In some such cases, a block that is not a genesis block record can store a zero or null value for the ordinal value in the block header, and any block that has a non-zero value as its ordinal value can serve as the genesis block record for the blockchain. As part of validating the new genesis block record, the blockchain node 102 can ensure that the ordinal value is correct. Once a genesis block record is verified and added to a node in the blockchain, the blockchain node 102 may be free to prune any blocks preceding that genesis block record from its local data store. In some embodiments, the blockchain network 104 may be configured to retain blocks a predetermined distance from the newest or current genesis block record (e.g., all blocks going back to the current genesis block, ordinal value 5 before the current genesis block identified in the genesis blockchain record, etc.).
[0029] In some embodiments, the genesis block record may include a configuration value. The configuration value may include any data that may be needed to maintain the operation of the blockchain after pruning of blocks preceding the genesis block. As one example, the configuration value may include all current, unspent transaction outputs in the genesis block record (or a separate state database), and may be identified by the blockchain node 102 that generates the genesis block record, for example, using its state database. If the blockchain is configured to use smart contracts, the configuration value may include state information about smart contracts present on the blockchain. For example, smart contracts and their current inputs or dispatches may be stored in a configuration value in the genesis block record. In some cases, the configuration value may be a hash value for such data, such as unspent transaction outputs or state configuration data for pending smart contracts.
[0030] In some embodiments, each blockchain node 102 can use its state database to store state information about smart contracts in the blockchain in addition to unspent transaction outputs. In such embodiments, when a new block is added to the blockchain, the blockchain node 102 can analyze the blockchain data values therein to determine whether any smart contract state changes have been made, which may include adding input transactions to the blockchain, adding smart contract outputs to the blockchain, adding updates to the smart contract, etc. The blockchain node 102 can identify any such occasions and update the smart contract state in its state database accordingly. For example, a smart contract can be used as an escrow, where a payment from participant A is made to an escrow wallet and remains there until a contract executed by participant B is added to the blockchain, at which point the escrow wallet is used to pay participant B, or if the time period for adding the contract expires, the payment is returned to participant A. Blockchain node 102 can store state information about the smart contract as events related to the smart contract occur, for example, reflecting that it is waiting for a payment from participant A to the escrow wallet, including a transaction identifier or blockchain data item related to the payment from participant A to the escrow wallet, etc. If the blockchain is pruned down to the block containing the blockchain data item for the payment from participant A to the escrow wallet, blockchain node 102 using its state database can still determine the success of the payment and can, for example, execute the smart contract to facilitate the payment to participant B when the contract executed by participant B was added to the blockchain.
[0031] In some embodiments, when a new genesis block record is generated, the configuration value may comprise or include an aggregation of all smart contract state changes that have occurred in the blockchain since the previous genesis block record was selected. In some cases, the configuration value may include an ordered list of each state change. In other cases, the configuration value may include the root of a Merkle tree of state changes, and the state changes may be ordered within the Merkle tree in a known manner (e.g., using chronological ordering). When a new genesis block record is generated and distributed to other blockchain nodes 102, part of validating the new genesis block record may include validating the configuration value. A blockchain node 102 receiving a proposed new genesis block record may identify all state changes for the smart contract since the most recent genesis block record and use the aggregation of the identified state changes to generate a configuration value. The generated configuration value may be compared to the configuration value in the proposed genesis block record. If the configuration values match, the new genesis block record can be determined to be valid by the blockchain node 102, and the blockchain node 102 can respond to the proposed genesis block record with a confirmation message. If the configuration values do not match, the blockchain node 102 can reject the proposed blockchain node 102. As a result, the configuration values can be used to ensure the state of all pending smart contracts across each of the blockchain nodes 102 is up to date.
[0032] In some embodiments, configuration values can be used for state changes within other data in the blockchain separate from the smart contract. For example, in some cases, configuration values can also be used to store an aggregation of the blockchain node's 102 current state database when a new genesis block record is generated. In some such cases, the configuration value can include an aggregation of the smart contract state changes and an aggregation of the current state database separately. In other aspects of such cases, both aggregations can be further aggregated into a single resulting value that can be verified by any blockchain node 102 that receives the proposed genesis block record. Other state information that can be stored in configuration values associated with a blockchain can include, for example, genesis block record data, ordinal numbering data, node permission data, etc.
[0033] The methods and systems described herein may enable blockchain nodes 102 to periodically prune old blocks from the blockchain, dramatically reducing the file size and bandwidth used by the blockchain nodes 102 in the blockchain network 104. The use of a state database eliminates the possibility of double spending for any blockchain transactions and allows for continuous operation of the blockchain without requiring any nodes to maintain any pruned blocks. The use of a new genesis block record with ordinal values ensures that all blockchain nodes 102 are periodically kept up to date and facilitates the addition of new blockchain nodes 102 more quickly than with traditional blockchains. The use of configuration values in the genesis block record, which includes an aggregation of smart contract state changes, also ensures that smart contracts remain usable in a blockchain with such pruning. Thus, the methods and systems described herein provide all the functionality of existing blockchains while enabling significant pruning to dramatically reduce blockchain data size.
[0034] Blockchain Node 2 illustrates an embodiment of a blockchain node 102, such as the blockchain node 102 in the system 100. Those skilled in the art will appreciate that the embodiment of the blockchain node 102 illustrated in FIG. 2 is provided for illustrative purposes only and is not intended to be an exhaustive list of all possible configurations of a blockchain node 102 suitable for performing the functions of the present disclosure. For example, computer system 700 illustrated in FIG. 7 and described in more detail below may be a suitable configuration of a blockchain node 102.
[0035] The blockchain node 102 may include a receiving device 202. The receiving device 202 may be configured to receive data over one or more networks via one or more network protocols. In some examples, the receiving device 202 may be configured to receive data from other blockchain nodes 102, participating systems 106, and other systems and entities via one or more communication methods, such as radio frequency, a local area network, a wireless area network, a cellular communication network, Bluetooth, the Internet, etc. In some embodiments, the receiving device 202 may include multiple devices (e.g., different receiving devices receiving data over different networks (e.g., a first receiving device receiving data over a local area network and a second receiving device receiving data over the Internet)). The receiving device 202 may receive a transmitted electronic data signal. Upon receipt of the data signal by the receiving device 202, data may be superimposed on the data signal and may be decoded, parsed, read, or otherwise obtained. In some embodiments, the receiving device 202 may include an analysis module for analyzing the received data signal to obtain the data superimposed thereon. For example, the receiving device 202 may include an analysis program configured to receive and convert received data signals into usable input for functions performed by the processing device to implement the methods and systems of the present disclosure.
[0036] The receiving device 202 can be configured to receive data signals electronically transmitted by a blockchain node 102, which may be superimposed or encoded with blockchain data values, blocks, blockchain transaction data, proposed genesis block records, state database data, smart contract state data, confirmation messages, etc. The receiving device 202 can also be configured to receive data signals electronically transmitted by a participant system 106, which may be superimposed or encoded with new blockchain data values, smart contracts, etc.
[0037] The blockchain node 102 may also include a communications module 204. The communications module 204 may be configured to transfer data between modules, engines, databases, memory, and other components of the blockchain node 102 for use in performing the functions of the present disclosure. The communications module 204 may include one or more communication types and may use various communication methods for communication within a computing device. For example, the communications module 204 may include a bus, a connection pin connector, a wire, etc. In some embodiments, the communications module 204 may also be configured to communicate between internal components of the blockchain node 102 and external components of the blockchain node 102 (e.g., an externally connected database, a display device, an input device, etc.). The blockchain node 102 may also include a processing unit. The processing unit may be configured to perform the functions of the blockchain node 102 of the present disclosure, as will be apparent to those skilled in the art. In some embodiments, the processing unit may include multiple engines and / or modules (e.g., a query module 214, a generation module 216, a validation module 218, etc.) specifically configured to perform one or more functions of the processing unit. As used herein, the term "module" may refer to software or hardware that is specifically programmed to receive input, perform one or more operations using the input, and provide an output. The inputs, outputs, and operations performed by the various modules will be apparent to one of ordinary skill in the art based on this disclosure.
[0038] The blockchain node 102 may include a state database 206. The state database 206 may be configured to store state information about unspent transaction outputs on the blockchain and, if applicable, state information for smart contracts, using any suitable data storage format and schema. The state database 206 may be a relational database that uses a structured query language to store, identify, modify, update, access, etc., stored structured data sets. The state information may include unspent transaction outputs, associated currency amounts, state changes for transaction outputs, input values for smart contracts, outputs for smart contracts, smart contract dispatch data, etc.
[0039] The blockchain node 102 may also include blockchain data 210, which may be stored in the memory 212 of the blockchain node 102 or stored in or accessible by a separate area within the blockchain node 102. The blockchain data 210 may include a blockchain, which may comprise multiple blocks, and which may be associated with the blockchain network 104. The blockchain data 210 may additionally or alternatively include any data associated with one or more blockchain wallets and usable by the blockchain node 102, which may include: cryptographic key pairs, unspent transaction outputs, digital asset amounts, network identifiers for the blockchain network 104, smart contracts, signature generation algorithms, encryption algorithms, third-party communication information, etc. The blockchain data 210 may also include data regarding the aggregation of data in the state database 206, data for the generation of new genesis block records, etc.
[0040] The blockchain node 102 may also include memory 212. The memory 212 may be configured to store data (e.g., public keys, private keys, symmetric keys, etc.) for use by the blockchain node 102 when performing the functions of the present disclosure. The memory 212 may be configured to store data using appropriate data formatting methods and schemas and may be any appropriate type of memory (e.g., read-only memory, random-access memory, etc.). The memory 212 may include, for example, cryptographic keys and algorithms, communication protocols and standards, data formatting standards and protocols, program code for modules and processing unit application programs, and other appropriate data used by the blockchain node 102 when performing the functions of the present disclosure. This will be apparent to those skilled in the art upon reading this disclosure. In some embodiments, the memory 212 may include a relational database using Structured Query Language (SQL) to store, identify, modify, update, access, etc., stored structured data sets. Memory 212 may be configured to store, for example, cryptographic keys, salts, nonces, communication information for other computing systems, generation algorithms, cryptographic key pairs, algorithms for calculating currency amounts, and the like.
[0041] The blockchain node 102 may include a query module 214. The query module 214 may be configured to run queries on a database to identify information. The query module 214 may receive one or more data values or query strings, and based thereon, may run a query string on an indicated database (e.g., the state database 206 of the blockchain node 102) to identify information stored therein. The query module 214 may then output the identified information to an appropriate engine or module of the blockchain node 102, as needed. The query module 214 may, for example, run a query on the state database 206 to look for unspent transaction outputs in received and proposed blockchain transactions to determine whether the transactions can be verified.
[0042] The blockchain node 102 may also include a generation module 216. The generation module 216 may be configured to generate data used by the blockchain node 102 when performing the functions of the present disclosure. The generation module 216 may receive instructions as input, generate data based on the instructions, and output the generated data to one or more modules of the blockchain node 102. For example, the generation module 216 may be configured to generate cryptographic key pairs, generate digital signatures, generate blockchain data values, generate new blocks, generate block and data reference values, aggregate state changes, generate genesis block records, etc.
[0043] The blockchain node 102 may also include a validation module 218. The validation module 218 may be configured to perform validations on the blockchain node 102 as part of the functionality of the present disclosure. The validation module may receive instructions as input, which may include data to be used in performing the validation, perform the validation on demand, and output the results of the validation to another module or engine of the blockchain node 102. The validation module 218 may be configured to, for example, verify digital signatures using appropriate signature generation algorithms and keys, verify new blockchain transactions, verify smart contracts, verify configuration values in a proposed genesis block record, etc.
[0044] The blockchain node 102 may also include a transmitting device 220. The transmitting device 220 may be configured to transmit data over one or more networks via one or more network protocols. In some examples, the transmitting device 220 may be configured to transmit data to other blockchain nodes 102, participant systems 106, and other entities via one or more communication methods, such as a local area network, a wireless area network, cellular communication, Bluetooth, radio frequency, the Internet, etc. In some embodiments, the transmitting device 220 may include multiple devices (e.g., different transmitting devices for transmitting data over different networks (e.g., a first transmitting device transmitting data over a local area network and a second transmitting device transmitting data over the Internet)). The transmitting device 220 may electronically transmit a data signal having superimposed data, the data being analyzed by a receiving computing device. In some embodiments, the transmitting device 220 may include one or more modules for superimposing, encoding, or formatting data into a data signal suitable for transmission.
[0045] The transmitter 220 can be configured to electronically transmit data signals to other blockchain nodes, which may be superimposed or encoded with blockchain data values, blocks, blockchain transaction data, proposed genesis block records, state database data, smart contract state data, confirmation messages, etc. The transmitter 220 can also be configured to electronically transmit data signals to participant systems 106, which may be superimposed or encoded with transaction notifications, transaction identifiers, etc.
[0046] Processing for processing new blockchain transactions FIG. 3 illustrates a process 300 for processing new blockchain transactions in the system 100 by a blockchain node 102 in a pruned blockchain.
[0047] At S302, the receiving device 202 of the blockchain node 102 can receive a new blockchain transaction from a participant system 106. The new blockchain transaction can include at least one unspent transaction output as input for the new blockchain transaction, one or more output addresses, and a corresponding currency amount for each output address. In some cases, each unspent transaction output can also include a corresponding currency amount. In other cases, the corresponding currency amount for an unspent transaction output can be omitted because all currency associated with the unspent transaction output will be transferred as part of the blockchain transaction. At S304, the blockchain node 102 can determine whether an unspent transaction output in the new blockchain transaction is included in its locally stored copy of the blockchain (e.g., whether it is included in a pruned block). This determination can utilize transaction identifiers or information in the state database 206.
[0048] If the blockchain node 102 determines at S304 that the unspent transaction outputs were included in a block that was pruned from the blockchain and therefore are not stored on the pruned chain, then at S306 the query module 214 of the blockchain node 102 may perform a query on the state database 206 of the blockchain node 102 to identify each unspent transaction output therein and / or to identify whether each transaction output is still unspent according to its stored state information. If the blockchain node 102 determines at S304 that the unspent output was not included in a block that was pruned from the blockchain and therefore is stored on the pruned chain, then the process 300 skips S306 and proceeds directly to S308. At S308, the validation module 218 of the blockchain node 102 may validate the transaction outputs to determine whether each is still unspent and validate the transaction to ensure that sufficient blockchain currency is associated with the transaction inputs to allow the transaction output indicated in the new blockchain transaction. At S310, the blockchain node 102 can determine whether the transaction is valid, which can be done as a result of the validations performed at S308. If one or more validations fail (e.g., if sufficient currency is not available, if one or more inputs have already been spent, if the digital signature is not successfully verified, etc.), at S312 the blockchain node 102 can reject the new blockchain transaction and process 300 is complete. In some cases, the sending device 220 of the blockchain node 102 can electronically send a notification message to the participant systems 106 that submitted the transaction informing them about the validation and, in some cases, the reason for the validation failure.
[0049] If the blockchain transaction is successfully verified, at S314, the generation module 216 of the blockchain node 102 may generate a new block including the verified blockchain transaction, and the sending device 220 of the blockchain node 102 may electronically transmit the new block to multiple additional nodes 102 in the blockchain network 104. The additional blockchain nodes 102 may verify the new block, and if the block is successfully verified, a confirmation message may be returned to the blockchain node 102. At S316, the blockchain node 102 may determine whether the new block has been verified by a majority of the additional blockchain nodes 102, which may be determined based on the number of confirmation messages received. If the new block is not successfully verified, the process 300 may end, and the blockchain node 102 may generate a new block or wait for the new block from another blockchain node 102 for confirmation. If the new block is successfully validated, at S318, the query module 214 of the blockchain node 102 may run one or more queries on the state database 206 to update the state database to exclude or indicate consumption of transaction outputs used as inputs for each of the blockchain transactions in the validated block and to add transaction outputs for each of the blockchain transactions in the validated block. Then, process 300 may be completed.
[0050] The process to verify the new genesis block record FIG. 4 illustrates a process 400 for validation of a new genesis block record in a blockchain network 104 by a blockchain node 102 in a system 100.
[0051] At S402, the receiver 202 of the blockchain node 102 can receive a genesis block record response message from another blockchain node 102 in the blockchain network 104. The response message includes a new genesis block record or data to include in the new genesis block record, including at least the genesis block record's ordinal value and configuration value. At S404, the query module 214 of the blockchain node 102 can perform a query on the blockchain data 210 of the blockchain node 102 to identify any intervening blocks added to the blockchain between the most recent genesis block record and the proposed new genesis block record (e.g., according to the ordinal value).
[0052] At S406, the creation module 216 of the blockchain node 102 may identify and aggregate state changes of all smart contracts in the blockchain, as shown in the intervening block. The creation module 216 may use the aggregated state changes and generate a test configuration value therefrom, for example, by generating a Merkle tree using the state changes, where the test configuration value is the root of the Merkle tree. At S408, the validation module 218 of the blockchain node 102 may attempt to validate the configuration value received in the genesis response message using the test configuration value. If the test configuration value and the received configuration value do not match, the process 400 may terminate. In some cases, the sending device 220 of the blockchain node 102 may return a notification indicating a failed validation to the blockchain node 102 that submitted the response message. If the test configuration value and the received configuration value match, at S410, the query module 214 of the blockchain node 102 may execute one or more queries on the state database 206 to apply the identified state changes and store the smart contract state information. In this way, the genesis block record can be verified, and the blockchain node 102 can update the blockchain data 210 accordingly as needed.
[0053] Exemplary Methods for Processing New Blockchain Transactions FIG. 5 illustrates a method 500 for processing new blockchain transactions in a blockchain configured to allow pruning ahead of the current genesis block.
[0054] At S502, a new blockchain transaction may be received by a receiver (e.g., receiving device 202) of a blockchain node (e.g., blockchain node 102) in a blockchain network (e.g., blockchain network 104). The new blockchain transaction may include at least one or more transaction inputs and one or more transaction outputs. At S504, the new blockchain transaction may be validated by a processor (e.g., validation module 218) of the blockchain node. Validating the new blockchain transaction may include verifying that each of the one or more transaction inputs is unspent.
[0055] At S506, a new block may be generated by a processor (e.g., generation module 216) of the blockchain node. The new block may include at least a block header and one or more blockchain data values, one of which may include a new blockchain transaction. At S508, the generated new block may be transmitted by a transmitter (e.g., sending device 220) of the blockchain node to multiple additional nodes (e.g., blockchain node 102) in the blockchain network. At S510, the one or more transaction outputs may be stored in a memory (e.g., memory 212) of the blockchain node, in a state database (e.g., state database 206) associated with the blockchain.
[0056] In one embodiment, method 500 may further include receiving, by the blockchain node receiver, confirmation messages from many of the plurality of additional nodes before storing the one or more transaction outputs. In some embodiments, verifying that each of the one or more transaction inputs is associated with a corresponding currency amount in the blockchain may include identifying one or more prior blockchain data values stored in one or more prior blocks in the blockchain that include the one or more transaction outputs. In one embodiment, verifying that each of the one or more transaction inputs is associated with a corresponding currency amount in the blockchain may include identifying each of the one or more transaction inputs and the corresponding currency amount in a state database. In some embodiments, verifying that each of the one or more transaction inputs is associated with a corresponding currency amount in the blockchain may include identifying each of the one or more transaction inputs and the corresponding currency amount in a configuration value in a recent genesis block in the blockchain.
[0057] Exemplary Methods for Verifying Configuration in a Blockchain FIG. 6 illustrates a method 600 for verifying the formation of a new genesis block in a blockchain configured to allow pruning before the new genesis block.
[0058] At S602, a receiver (e.g., receiving device 202) of a blockchain node (e.g., blockchain node 102) in a blockchain network (e.g., blockchain network 104) can receive a genesis response message from another node in the blockchain network. The genesis response message includes at least a configuration value and an ordinal value. At S604, a processor (e.g., query module 214) can identify in the blockchain node a number of standard blocks that have been added subsequent to the preceding genesis block, including a number preceding the ordinal value.
[0059] At S606, the smart contract state changes may be aggregated from each of the identified standard blocks by a processor (e.g., generation module 216). At S608, the configuration values included in the received genesis response message may be validated by a processor (e.g., validation module 218) of the blockchain node based on the aggregated smart contract state changes.
[0060] In one embodiment, method 600 may further include applying, by a processor of the blockchain node, the state changes of the aggregated smart contracts to one or more corresponding smart contracts in a state database (e.g., state database 206) associated with the blockchain stored in a memory (e.g., memory 212) of the blockchain node. In some embodiments, method 600 may further include generating a Merkle root by a processor of the blockchain node using the state changes of the aggregated smart contracts. Validating the configuration values may include comparing the configuration values to the generated Merkle root for a match.
[0061] Computer System Architecture 7 illustrates a computer system 700, in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code. For example, the blockchain node 102 of FIGS. 1 and 2 may be implemented in the computer system 700 using hardware, a non-transitory computer-readable medium having stored instructions, a combination thereof, or may be implemented in one or more computer systems or other processing systems. The hardware may embody modules and components used to implement the methods of FIGS. 3-6.
[0062] Where programmable logic is used, such logic may be executed on commercially available processing platforms configured with executable software code, and may be a special-purpose or dedicated device (e.g., a programmable logic array (PGA), an application-specific integrated circuit (ASIC), etc.). Those skilled in the art will appreciate that embodiments of the disclosed subject matter may be implemented in a variety of computer system configurations, including multi-core, multi-processor systems, minicomputers, mainframe computers, distributed functionality linked or clustered computers, and general-purpose or miniature computers that may be implemented in virtually any device. For example, at least one processor unit and memory may be used to implement the embodiments.
[0063] A processor unit or device of the present disclosure may be a single processor, multiple processors, or a combination thereof. A processor device may have one or more processor “cores.” The terms “computer program medium,” “non-transitory computer-readable medium,” and “computer-usable medium” of the present disclosure are used generally to refer to tangible media (e.g., removable storage unit 718, removable storage unit 722, and a hard disk installed in hard disk drive 712, etc.).
[0064] Various embodiments of the present disclosure are described with respect to this exemplary computer system 700. After reading this disclosure, it will be apparent to one skilled in the art how to implement the present disclosure using other computer systems and / or computer architectures. While operations are disclosed as sequential processes, some operations may in fact be performed in parallel, concurrently, and / or in distributed environments, where program code is stored locally or remotely for access by uniprocessor or multiprocessor machines. Furthermore, in some embodiments, the order of operations may be rearranged without departing from the spirit of the disclosed subject matter.
[0065] The processor unit 704 may be a special-purpose or general-purpose processor unit specially configured to perform the functions of the present disclosure. The processor unit 704 may be connected to a communications infrastructure 706 (e.g., a bus, a message queue, a network, a multi-core message passing scheme, etc.). The network may be any network suitable for performing the functions of the present disclosure, and may include a local area network (LAN), a wide area network (WAN), a wireless network (e.g., Wi-Fi), a mobile communications network, a satellite network, the Internet, fiber optics, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will be apparent to those skilled in the art. The computer system 700 may also include a main memory 708 (e.g., random access memory, read-only memory, etc.) and may also include a secondary storage device 710. The secondary storage device 710 may include a hard disk drive 712 and a removable storage drive 714 (e.g., a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, etc.).
[0066] Removable storage drive 714 may read from and / or write to removable storage unit 718 in a well-known manner. Removable storage unit 718 may include a removable storage medium that can be read from and written to by removable storage drive 714. For example, if removable storage drive 714 is a floppy disk drive or a USB port, removable storage unit 718 may be a floppy disk or a portable flash drive, respectively. In one embodiment, removable storage unit 718 may be a non-transitory readable recording medium.
[0067] In some embodiments, secondary storage 710 may include alternative means for allowing computer programs or other instructions to be loaded into computer system 700 (e.g., removable storage unit 722 and interface 720). Examples of such means may include program cartridges and cartridge interfaces (e.g., as found in video game systems), removable memory chips (e.g., EEPROM, PROM, etc.) and associated sockets, other removable storage units 722 and interfaces 720, as will be apparent to those skilled in the art.
[0068] Data stored in computer system 700 (e.g., in main memory 708 and / or secondary storage 710) may be stored on any type of suitable computer-readable medium, such as optical storage (compact disc, digital versatile disc, Blu-ray disc, etc.) or magnetic tape storage (e.g., hard disk drive). The data may be organized in any type of suitable database structure (e.g., a relational database, a Structured Query Language (SQL) database, a distributed database, an object database, etc.). Suitable structures and storage types will be apparent to those skilled in the art.
[0069] Computer system 700 may also include a communications interface 724. Communications interface 724 may allow software and data to be sent and received between computer system 700 and external devices. Exemplary communications interface 724 may include a modem, a network interface (e.g., an Ethernet card), a communications port, a PCMCIA slot and card, etc. The software and data transferred via communications interface 724 may be in the form of signals. The signals may be electronic, electromagnetic, optical, or other signals apparent to those skilled in the art. The signals propagate over communications path 726. The paths are configured to carry the signals and may be implemented using wire, cable, fiber optics, a telephone line, a cellular phone link, a radio frequency link, etc.
[0070] Computer system 700 may further include a display interface 702. Display interface 702 may be configured to allow data to be transferred between computer system 700 and an external display 730. Exemplary display interfaces 702 may include a high-definition multimedia interface (HDMI), a digital visual interface (DVI), a video graphics array (VGA), etc. Display 730 may be any suitable type of display that displays data transferred via display interface 702 of computer system 700, including a cathode ray tube (CRT) display, a liquid crystal display (LCD), a light-emitting diode (LED) display, a capacitive touch display, a thin-film transistor (TFT) display, etc.
[0071] Computer program medium and computer usable medium may refer to memory (e.g., main memory 708 and secondary storage 710), which may be semiconductor memory (such as DRAM). These computer program products may be means for providing software to computer system 700. Computer programs (e.g., computer control logic) may be stored in main memory 708 and / or secondary storage 710. Computer programs may also be received via communications interface 724. Such computer programs, when executed, may enable computer system 700 to perform methods of the present disclosure. In particular, computer programs, when executed, may enable processor unit 704 to implement the methods illustrated in FIGS. 3-6 as described herein. Thus, such computer programs represent the controller of computer system 700. The present disclosure is implemented using software. The software may be stored in a computer program product and loaded into computer system 700 using removable storage drive 714, interface 720, and hard disk drive 712 or communications interface 724.
[0072] Processor unit 704 may include one or more modules or engines configured to perform the functions of computer system 700. Each module or engine may be implemented using hardware, or in some embodiments, software (e.g., corresponding to program code or programs stored in main memory 708 or secondary storage 710). In such embodiments, the program code may be compiled by processor unit 704 (e.g., by a compilation module or engine) before execution by the hardware of computer system 700. For example, the program code may be source code written in a programming language (e.g., assembly language or machine code) that is translated into a lower-level language for execution by processor unit 704 and / or any additional hardware components of computer system 700. The compilation process may include the use of lexical analysis, preprocessing, syntax analysis, semantic analysis, syntax-driven translation, code generation, code optimization, or any other techniques suitable for translating program code into a lower-level language for control of computer system 700 to perform the functions of the present disclosure. Those skilled in the art will appreciate that such processing results in computer system 700 being a specially configured computer system 700 that is uniquely programmed to perform the functions described above.
[0073] Techniques consistent with the present disclosure provide, among other features, systems and methods for verifying the composition of a new genesis block within a blockchain configured to process new blockchain transactions and enable pruning ahead of the current genesis block. While various exemplary embodiments of the disclosed systems and methods have been described above, it should be understood that they are presented by way of example only, and not by way of limitation. They are not exhaustive and do not limit the disclosure to the precise form disclosed. Modifications and variations are possible in light of the above teachings. Modifications and variations may be obtained from implementations of the present disclosure without departing from the scope or spirit of the disclosure.
Claims
1. 1. A method for verifying the formation of a new genesis block in a blockchain, the blockchain being configured to allow pruning before the new genesis block, the method comprising: receiving, by a receiver of a blockchain node in a blockchain network, a genesis response message from another node in the blockchain network, the genesis response message including at least a configuration value and an ordinal value; Identifying, by a processor within the blockchain node, a number of blocks in the blockchain that have been added subsequent to a preceding genesis block that includes a value preceding the ordinal value; aggregating, by the processor of the blockchain node or a processor of another blockchain node within the same blockchain, state changes from each of the identified plurality of blocks; and validating, by the processor of the blockchain node, the configuration value included in the received genesis response message based on the aggregated state changes.
2. The method of claim 1 further comprising: applying, by the processor of the blockchain node, the aggregated state changes to one or more corresponding smart contracts in a state database associated with the blockchain that is stored in a memory of the blockchain node.
3. The method of claim 1 further comprising: generating, by the processor of the blockchain node, a Merkle root using the aggregated state changes; The method, wherein validating the configuration value includes comparing the configuration value to the generated Merkle root for a match.
4. 1. A system for verifying the formation of a new genesis block in a blockchain, the blockchain being configured to allow pruning ahead of a current genesis block, the system comprising: Blockchain network and Another node in the blockchain network; A blockchain node in the blockchain network, a receiver that receives a genesis response message from another node in the blockchain network, the genesis response message including at least a configuration value and an ordinal value; 1. A processor, comprising: identifying a plurality of blocks in the blockchain that have been added subsequent to a preceding genesis block that includes a value preceding the ordinal value; aggregating state changes from each of the identified plurality of blocks; a processor that performs the steps of: verifying the configuration value included in the received genesis response message based on the aggregated state changes; and Including, the system.
5. 5. The system of claim 4, wherein the processor of the blockchain node further applies the aggregated state changes to one or more corresponding smart contracts in a state database associated with the blockchain stored in a memory of the blockchain node.
6. 5. The system of claim 4, The processor of the blockchain node further generates a Merkle root using the aggregated state changes; The system, wherein validating the configuration value includes comparing the configuration value to the generated Merkle root for a match.
Citation Information
Patent Citations
Block chain system, approval terminal, user terminal, personal history management method and personal history management program
JP2020170296A
A decentralized, privately subspaced blockchain data structure that manages secure access restrictions
JP2020522796A
Data backup method, computer program and computing device
JP2021521556A
Secure and transparent pruning for blockchains
US20200125269A1