Method and system for data retention in a pruned blockchain
The Fountain Code algorithm allows verification of pruned blockchain transactions by encoding them into verifiable data chunks, ensuring transaction verification without full blockchain copies, thus maintaining reduced file sizes and pruning benefits.
Patent Information
- Application Number
- JP2024523547
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-10-19
- Filing Date
- 2022-09-12
- Publication Date
- 2025-08-06
- Estimated Expiration
- 2042-09-12
Smart Images

Figure 0007719961000001 
Figure 0007719961000002 
Figure 0007719961000003
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to verifying past transactions in a pruned blockchain, and in particular to using a Fountain Code algorithm to enable decryption of pruned blockchain transactions for verification without the need to repeatedly post the transactions on the blockchain.
[0002] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Patent Application No. 17 / 451,329, filed October 19, 2021, the entire disclosure of which is incorporated herein by reference. [Background technology]
[0003] Blockchain was originally created as a storage mechanism used to make payment transactions using cryptocurrencies. Its use offers several benefits, such as decentralization, distributed computing, and transaction transparency, while providing anonymity for the individuals or entities involved in the transactions. A relatively favorable property of blockchain is the immutability of its records: all transactions made part of the chain are stored and are immutable due to the computational power and bandwidth limitations required, especially as the chain grows and the blockchain network adds more nodes.
[0004] However, as more transactions are executed or other data is stored on the blockchain, the file size of the blockchain increases significantly. In many cases, there may be little need to retain old blockchain transactions because they may not be used in any future transaction validations if the currency transferred in those transactions has already been spent again. In some blockchain networks, some nodes may be allowed to prune their blockchain by removing such transaction data from their storage. In such cases, the blockchain itself is not altered; rather, the node simply loses data about the pruned transactions, which can result in a significant data size reduction for the node. Some nodes do not prune their copies of the blockchain, ensuring that the complete chain is maintained and available when needed.
[0005] Regardless, some entities may wish to verify past blockchain transactions that have been pruned from nodes accessible by the entity. In such cases, the transaction values for the pruned transactions may be completely unavailable to the blockchain nodes (and therefore to the entity wishing to verify the transactions). The only recourse for such entities is to identify a complete copy of the blockchain from a node where the complete blockchain is available and identify the transactions for verification. In such cases, making the complete blockchain available to the entity negates the benefits of pruning and also requires substantial data storage and available bandwidth for the entity for transferring blockchain data.
[0006] Thus, there is a need for a system that can allow entities to verify past blockchain transactions that have been pruned from the blockchain without having to obtain a full copy of the blockchain or communicate with nodes that have not pruned the blockchain. Summary of the Invention
[0007] This disclosure provides a description of systems and methods for posting verifiable data chunks for transactions on a pruned blockchain and verifying pruned blockchain transactions using the verifiable data chunks. For any transaction pruned from a blockchain, a Fountain Code algorithm is used to decode the transaction value for that transaction into a series of data chunks. These data chunks are identifiable using a set of authenticators for the transaction and are posted to the blockchain regularly; only a subset of the data chunks can be posted in any given block, and data chunks can be posted more than once. An entity wishing to verify a transaction can use the authenticators to identify the data chunks associated with the transaction, and once enough data chunks have been identified, the entity can decode the transaction using the Fountain Code algorithm. The entity can then verify the transaction value. The use of the Fountain Code algorithm and data chunks avoids the need to identify or use a complete copy on the blockchain node. Additionally, the blockchain can remain pruned, simply posting small data chunks in place of the pruned transaction value, and the data chunks themselves can be pruned over time. Thus, transactions remain verifiable while nodes enjoy the benefits of reduced file sizes on the blockchain.
[0008] A method for validating pruned blockchain transactions includes: receiving, by a receiver of a computing device, a subset of blocks included in a plurality of blocks that make up a blockchain, each block including one or more blockchain data values; receiving an authentication code by the receiver of the computing device; identifying, by a processor of the computing device, a plurality of data chunks in the subset of blocks using the authentication code, each data chunk of the plurality of data chunks being included in one of the one or more blockchain data values in a block of the subset of blocks; decrypting, by the processor of the computing device, a transaction value using at least the identified plurality of data chunks and a Fountain Code algorithm; and verifying, by the processor of the computing device, the decrypted transaction value.
[0009] A method for posting verifiable data chunks for a transaction on a pruned blockchain includes: receiving a transaction value by a receiver of a computing device; encoding, by a processor of the computing device, the transaction value into a plurality of data chunks using a Fountain Code algorithm; identifying, by the processor of the computing device, an authenticator corresponding to the plurality of data chunks, wherein each data chunk of the plurality of data chunks includes a portion of the authenticator; generating, by the processor of the computing device, at least two new blocks for the pruned blockchain, each of the at least two new blocks including a block header and one or more blockchain data values, wherein the plurality of data chunks and corresponding portions of the authenticator are stored across the one or more blockchain data values in each of the at least two new blocks; and transmitting, by a transmitter of the computing device, the generated at least two new blocks to a plurality of blockchain nodes in a blockchain network associated with the pruned blockchain.
[0010] A system for validating pruned blockchain transactions includes a computing device, the computing device including a receiver that receives a subset of blocks included in a plurality of blocks that constitute a blockchain, each block including one or more blockchain data values and an authentication code; and a processor that performs the steps of identifying a plurality of data chunks in the subset of blocks using the authentication code, each data chunk of the plurality of data chunks being included in one of the one or more blockchain data values in a block of the subset of blocks; decrypting a transaction value using at least the identified plurality of data chunks and a Fountain Code algorithm; and verifying the decrypted transaction value.
[0011] A system for posting verifiable data chunks for a transaction on a pruned blockchain includes: a computing device; a blockchain network associated with the pruned blockchain; and a plurality of blockchain nodes included in the blockchain network, the computing device including: a receiver that receives a transaction value; a processor that performs the steps of: encoding the transaction value into a plurality of data chunks using a Fountain Code algorithm; identifying an authenticator corresponding to the plurality of data chunks, each data chunk of the plurality of data chunks including a portion of the authenticator; and generating at least two new blocks for the pruned blockchain, each of the at least two new blocks including a block header and one or more blockchain data values, the plurality of data chunks and corresponding portions of the authenticator being stored across the one or more blockchain data values in each of the at least two new blocks; and a transmitter that transmits the generated at least two new blocks to the plurality of blockchains. [Brief explanation of the drawings]
[0012] The scope of the present disclosure is best understood from the following detailed description of exemplary embodiments when taken in conjunction with the accompanying drawings, in which:
[0013] [Figure 1] FIG. 1 is a block diagram illustrating a high-level system architecture for validation of pruned transactions in a blockchain, according to an example embodiment. [Figure 2] FIG. 2 is a block diagram of the computing system of FIG. 1 for posting and verifying verifiable data chunks in pruned blockchain transactions, according to an example embodiment. [Figure 3] 1 is a flow diagram illustrating a process for validation of pruned transactions in a blockchain, according to an example embodiment. [Figure 4] 1 is a flow diagram illustrating an example method for validation of pruned blockchain transactions, according to an example embodiment. [Figure 5] 1 is a flow diagram illustrating an example method for posting verifiable data chunks for a transaction on a pruned blockchain, according to an example embodiment. [Figure 6] FIG. 1 is a block diagram illustrating a computer system architecture, according to an exemplary embodiment.
[0014] 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
[0015] Glossary Blockchain: A public ledger of all transactions of a blockchain-based currency. 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, a 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, a blockchain may be verified and validated by the blockchain network by proof-of-work (PoW) and / or any other suitable verification technique 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, virtual, fiat, or other type of currency.
[0016] A system for validating pruned blockchain transactions FIG. 1 illustrates a system 100 for validating transactions pruned from a blockchain using the Fountain Code algorithm.
[0017] The system 100 can include one or more blockchain nodes 102. Each blockchain node 102 can be part of a blockchain network 104. Each blockchain node 102 can be a computing system, as shown in FIGS. 2 and 6 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.
[0018] 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 expressed using any suitable method (e.g., a UNIX timestamp, DateTime notation, etc.). The block reference value may be a value that references a previous 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 each 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 block reference value may be the root of a Merkle tree created using one or more data values.
[0019] 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. This must be performed and updated for every blockchain node 102 in the blockchain network 104 before a new block is created and added to the blockchain in order for the change to be permanent. Computing and communication limitations can make such changes extremely difficult or even impossible, hence the blockchain's immutability.
[0020] In some embodiments, a blockchain can be used to store information about blockchain transactions 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 specifically refer to a private key. In other cases, the term "blockchain wallet" can refer to a computing device (e.g., participant system 106) that stores a private key for use in blockchain transactions. For example, each computing device can have its own private key for each cryptographic key pair and can be a blockchain wallet for use in transactions with a blockchain associated with the blockchain network. The computing device can be any type of device suitable for storing and utilizing a blockchain wallet, such as a desktop computer, laptop computer, notebook computer, tablet computer, mobile phone, smartphone, smartwatch, smart TV, wearable computing device, embedded computing device, etc.
[0021] Each blockchain data value stored within a blockchain may correspond to a blockchain transaction or other data storage, as appropriate, and may also be referred to as a "transaction value." A blockchain transaction may include at least the following: a digital signature of the sender (e.g., a participant system 106) of the currency generated using the sender's private key; a blockchain address of the recipient (e.g., another 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 may be substituted for the currency amount. In some blockchain transactions, the transaction may also include the following: one or more blockchain addresses of the sender 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 and maintained by the sender for any changes. 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 verifying the transaction. For traditional processing of blockchain transactions, such data may be provided by either the sender or the receiver 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 access to the sender's funds (e.g., if the unspent transaction has not yet been spent and was sent to an address associated with the sender's wallet), a process known as "confirming" the transaction, and the blockchain transaction is then included in a new block. In traditional blockchain implementations, the new block may be confirmed by other nodes 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 a digital signature confirmation.
[0022] In some embodiments, the blockchain network 104 can operate and store a provenance blockchain. A provenance blockchain can be a blockchain that stores data related to a supply chain, and events in the supply chain can be stored therein. Such events can include, for example, the production of a product, its loading by a distribution entity, its transfer from one storage facility to another, its delivery to a retailer, its sale by a retailer, its resale by a consumer, the addition of a product to a product grouping, the separation of a product from a product grouping, a chargeback on a product, etc. In some cases, the blockchain data value stored in the provenance blockchain for such an event can include detailed information about the event. In other cases, the blockchain data value can include a hash value for detailed information about the event, which can be stored in a separate data storage. In some aspects, documents and other data can be stored within the blockchain data value, for example, directly or via a hash value that can be used to verify underlying data (e.g., an executed contract) that can be stored elsewhere, such as held by the entities involved in the executed contract. Additional information regarding the use and operation of Provenance Blockchain is found in U.S. Patent Application No. 16 / 875,154, filed May 15, 2020, entitled "Method and System for Generalized Provenance Solution for Blockchain Supply Chain Applications," Steven C. Davis et al., which is incorporated herein by reference in its entirety.
[0023] In the system 100, one or more blockchain nodes 102 can prune their local copies of the blockchain. Pruning a blockchain may include deleting one or more transaction values from local data storage as part of an effort to reduce the total data size of blockchain data stored by the blockchain node 102. Pruning transaction values may not have any impact on the blockchain itself, such as requiring modifications to any block headers or hash values. In some cases, transaction values may be pruned after a predetermined period of time, such as when a block reaches a particular age (e.g., three months, six months, one year, etc.). In other cases, transaction values may be pruned when they have not been accessed for a predetermined period of time. For example, if a transaction value is regularly accessed by the blockchain node 102 or requested by an external system, the transaction value may not be pruned.
[0024] However, there may be cases where a third party, such as verification system 108, is interested in verifying a blockchain transaction after the transaction value has already been pruned from the blockchain by blockchain node 102. For example, if the blockchain is a provenance blockchain, verification system 108 may be a consumer looking to purchase a luxury item secondhand and who wants to verify the authenticity of the product, which may have been initially purchased a long time ago, such that the transaction value for the luxury item has already been pruned from the blockchain by blockchain node 102. In such an example, verification system 108 may need to verify the pruned transaction value.
[0025] To enable verification of pruned transaction values, a fountain code algorithm can be used by a blockchain node 102. When a transaction value is pruned from the blockchain, a blockchain node 102 or a separate blockchain node 102, which may be configured to perform encoding operations on behalf of other blockchain nodes 102, can encode the transaction value into multiple verifiable data chunks using a fountain code algorithm such as a Raptor code or RaptorQ. These codes are fountain codes that encode a given source block of data with size symbols equal to k into a sequence of encoding symbols. Receipt of any k or more encoding symbols allows recovery of the source block with some non-zero probability. See: Amin Shokrollahi and Michael Luby (2011). "Raptor Codes". Foundations and Trends in Communications and Information Theory. Now Publishers. 6 (3-4):213-322. doi:10.1561 / 0100000060. A blockchain node 102 can generate multiple verifiable data chunks, also referred to as blocks, and post these data chunks to the blockchain, where a blockchain data value can include one or more verifiable data chunks for a pruned transaction value. In some cases, new blockchain data values can be posted periodically, such as hourly, daily, or weekly. In some aspects, the number of verifiable data chunks posted in a blockchain data value can be predetermined and / or consistent across new blockchain data values for a particular transaction value.
[0026] The verification system 108 can identify verifiable data chunks for the transaction value it wishes to verify. Once enough verifiable data chunks have been identified in the blockchain by the verification system 108, the verification system 108 can decode the transaction value using a Fountain Code algorithm. In an exemplary embodiment, the verification system 108 can be required to identify a slightly larger number of verifiable data chunks than the set of source symbols that make up the original transaction value. Decoding the verifiable data chunks to obtain the transaction value can depend on the Fountain Code algorithm used. For example, if RaptorQ is used, an XOR operation can be used on the data chunks for both encoding and decoding. Once the verification system 108 obtains the original transaction value, the verification system 108 can then verify the transaction value itself. For example, in the example above, the consumer can verify the authenticity of the luxury item they are purchasing, such as by securing the chain of custody to the seller.
[0027] In some embodiments, data chunks for pruned blockchain transactions can be posted only in response to a request, such as from a verification system 108. For example, the verification system 108 can request the transaction value for verification, and the blockchain node 102 can identify that it has been pruned from its blockchain data. The blockchain node 102 can then post verifiable data chunks for the pruned transaction to the blockchain across multiple new blocks. By posting data chunks instead of the complete transaction value, errors in blockchain processing that could result if the transaction value were re-posted (e.g., if the transaction value appears to consume blockchain currency that has already been transferred to another blockchain wallet) can be avoided, while still allowing the verification system 108 to verify the transaction value once a sufficient number of data chunks are identified. Additionally, data chunks can be pruned by the blockchain node 102, and can be done after a period of time, such as after a predetermined period of time, and / or when the verification system 108 indicates that the transaction value was successfully decrypted by the verification system 108.
[0028] In some embodiments, an authenticator can be used to assist in identifying data chunks for a particular transaction value. In such embodiments, an authenticator can be identified for pruned blockchain transactions. In some cases, an authenticator can be identified for all blockchain transactions. In some cases, an authenticator identified for a transaction value can be stored within the blockchain data value for that blockchain transaction. In some aspects, if a transaction value is pruned from the blockchain data, the authenticator can be retained in the blockchain data. The authenticator can be any value that is unique to and can be used to identify the transaction value, such as an integer or alphanumeric value of sufficient size. If the blockchain is a provenance blockchain, a unique product identifier such as a serial number can be used as the authenticator. In such embodiments, the verification system 108 can use the authenticator when requesting the transaction value or data chunk. In some cases, a blockchain data entry posted to the blockchain along with an encoded data chunk from the transaction value can be accompanied by an authenticator for the transaction value, allowing, for example, the verification system 108 to more easily identify the data chunk. In some aspects, the verification system 108 can identify an authenticator for the transaction value it wishes to verify on the blockchain itself, or can receive an authenticator from an external system, such as a participant system 106. For example, in the example above, the luxury goods seller can provide the authenticator (e.g., the luxury goods serial number, etc.) to the verification system 108, which can request the transaction value or use the authenticator to identify a data chunk for the transaction value.
[0029] In some embodiments, the system 100 can also use chaffing and winnowing when verifiable data chunks are posted to the blockchain to decode into the underlying transaction value. For example, a blockchain node 102 can add chaff data chunks into a blockchain data item along with verifiable data chunks obtained by encoding the transaction value, each data chunk including a code portion. The code portion included with the verifiable data chunk can be part of an authentication code for the transaction value, while the chaff data chunk can include a code portion that is randomly generated or does not correspond to an authentication code. In such embodiments, the verification system 108 can use the authentication code to identify authentic data in the blockchain data item and thereby ignore the chaff data packets. The verification system 108 can then decode the transaction value using authentic data chunks obtained from multiple different blockchain data values.
[0030] In some aspects, the authenticator used to identify a transaction value can be separate from the authenticator used to identify authentic data chunks using a chaffing and winnowing process. For example, an identification number can be identified for a transaction to use as the authenticator used to identify a blockchain data item corresponding to a particular transaction value, while a product serial number can be used to identify authentic data chunks in the identified blockchain data item.
[0031] The described methods and systems allow blockchain nodes 102 in a blockchain network 104 to prune old transaction values from local data storage while preserving the ability to provide requesting systems, such as validation system 108, with sufficient data to recover the pruned transaction values for their validation. The use of a Fountain Code algorithm ensures recovery of transaction values without re-posting the actual transaction values and without increasing data size, and can also prune the data chunks themselves, ensuring that local data storage for a blockchain node 102 is always less than it would be if the blockchain were not pruned. Thus, the described methods and systems can provide full validation of blockchain transactions while still allowing for pruning the blockchain to reduce overall data storage.
[0032] Computer Systems 2 illustrates an embodiment of a computing system 200 within system 100. Those skilled in the art will appreciate that the embodiment of computing system 200 illustrated in FIG. 2 is provided for illustrative purposes only and is not an exhaustive list of all possible configurations of computing system 200 suitable for performing the functions of the present disclosure. For example, computer system 600 illustrated in FIG. 5 and described in more detail below may be a suitable configuration of computing system 200. Blockchain nodes 102, participant systems 106, and validation systems 108 within system 100 of FIG. 1 may be implemented as computing systems 200 (e.g., computer systems 600) and may include one or more components shown in FIG. 2 or described below.
[0033] The computing system 200 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 the blockchain nodes 102, the participant systems 106, the verification system 108, and other systems and entities via one or more communication methods, such as radio frequency, a local area network, a wireless area network, a cellular communication network, Bluetooth, the Internet, etc. In some embodiments, the receiving device 202 may include multiple devices (e.g., different receiving devices receiving data over different networks (e.g., a first receiving device receiving data over a local area network and a second receiving device receiving data over the Internet)). The receiving device 202 may receive a transmitted electronic data signal. Upon receipt of the data signal by the receiving device 202, data may be superimposed on the data signal and may be decoded, parsed, read, or otherwise obtained. In some embodiments, the receiving device 202 may include an analysis module for analyzing the received data signal to obtain the data superimposed thereon. For example, the receiving device 202 may include an analysis program configured to receive and convert received data signals into usable input for functions performed by the processing device to implement the methods and systems of the present disclosure.
[0034] The receiving device 202 can be configured to receive data signals transmitted electronically by a blockchain node 102, which may be superimposed or encoded with a blockchain data value, a transaction value, a block, an authenticator, a verifiable data chunk, a confirmation message, etc. The receiving device 202 can be configured to receive data signals transmitted electronically by a participant system 106 or a verification system 108, which may be superimposed or encoded with a new transaction value, a request for a transaction value, a request for a verifiable data chunk, an authenticator, a notification about a decoded transaction value, etc.
[0035] Computer system 200 may also include a communications module 204. Communications module 204 may be configured to transfer data between modules, engines, databases, memory, and other components of computing system 200 for use in performing the functions of the present disclosure. Communications module 204 may include one or more communication types and may use various communication methods for communication within the computing device. For example, communications module 204 may include a bus, a connecting pin connector, wires, etc. In some embodiments, communications module 204 may also be configured to communicate between internal components of computing system 200 and external components of computing system 200 (e.g., externally connected databases, display devices, input devices, etc.). Computing system 200 may also include a processing unit. The processing unit may be configured to perform the functions of computing system 200 of the present disclosure, as would be apparent to one skilled in the art. In some embodiments, the processing unit may include multiple engines and / or modules (e.g., query module 214, generation module 216, encoding module 218, validation module 220, etc.) specifically configured to perform one or more functions of the processing unit. As disclosed herein, the term "module" may refer to software or hardware running on specifically programmed hardware to receive input, perform one or more operations using the input, and provide an output. The inputs, outputs, and operations performed by the various modules will be apparent to one of ordinary skill in the art based on this disclosure.
[0036] The computing system 200 may also include blockchain data 206, which may be stored in the memory 212 of the computing system 200 or stored in or accessible by a separate area within the computing system 200. The blockchain data 206 may include a blockchain, which may be comprised of multiple blocks, and which may be associated with the blockchain network 104. The blockchain data 206 may additionally or alternatively include any data associated with one or more blockchain wallets and used by the computing system 200, which may include: cryptographic key pairs, unspent transaction outputs, digital asset values, network identifiers for the blockchain network 104, smart contracts, signature generation algorithms, encryption algorithms, transaction account data, account balances, third-party communication information, etc. The blockchain data 206 may also include verifiable data chunks, authenticators, and other data described herein used in validating pruned transaction values. In some cases, blockchain data values and / or transaction values may be pruned from the blockchain data 206 at predetermined intervals or based on predetermined criteria, such as a predetermined time period since the time a block was added or a transaction value was accessed.
[0037] Computing system 200 may also include memory 212. Memory 212 may be configured to store data (e.g., public keys, private keys, symmetric keys, etc.) for use by computing system 200 in performing the functions of the present disclosure. Memory 212 may be configured to store data using any suitable data formatting methodology and schema and may be any suitable type of memory (e.g., read-only memory, random-access memory, etc.). 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 suitable data used by computing system 200 in performing the functions of the present disclosure. This will be apparent to those skilled in the art upon reading this disclosure. In some embodiments, memory 212 may include a relational database using Structured Query Language (SQL) to store, identify, modify, update, access, etc., stored structured data sets. The memory 212 may be configured to store, for example, cryptographic keys, salts, nonces, communication information for the blockchain nodes 102 and the blockchain network 104, address generation and verification algorithms, digital signature generation and verification algorithms, hashing algorithms for generating reference values, data for creating and executing smart contracts, configuration data, activation data, formatting standards, transaction processing rules, fountain code algorithms, chaff packet generation rules, etc.
[0038] The computing system 200 may also 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., memory 212 of the computing system 200) to identify information stored therein. The query module 214 may then output the identified information to an appropriate engine or module of the computing system 200 as needed. The query module 214 may, for example, run queries against the blockchain data 206 to identify transaction values for use in encoding to obtain verifiable data chunks.
[0039] Computing system 200 may also include a generation module 216. The generation module 216 may be configured to generate data used by computing system 200 when performing functions of the present disclosure. The generation module 216 may receive instructions as input values, generate data based on the instructions, and output the generated data to one or more modules of computing system 200. For example, the generation module 216 may be configured to generate blockchain data values, new blocks, block headers, reference values, smart contracts, transaction messages, trigger events, etc. The generation module 216 or other processing modules of computing system 200 may further be configured to take actions, such as through the execution of smart contracts, or other actions that may be necessary to maintain a trigger event or initiate an electronic payment transaction.
[0040] The computing system 200 may also include an encoding module 218. The encoding module 218 may be configured to perform encoding or decoding operations as part of the methods and systems of the present disclosure. The encoding module 218 may receive data for encoding or decoding as well as instructions for execution by the encoding module 218 in received data. The encoding module 218 may perform the encoding or decoding operations as instructed and output the resulting data to another module or engine of the computing system 200. The encoding module 218 may be configured, for example, to encode a transaction value to obtain verifiable data chunks using a Fountain Code algorithm. The encoding module 218 may also be configured to decode the identified verifiable data chunks using a Fountain Code algorithm to identify the transaction value.
[0041] Computing system 200 may also include a validation module 220. Validation module 220 may be configured to perform validations on computing system 200 as part of the functionality of the present disclosure. Validation module 220 may receive as input instructions, which may include data used in performing the validation, perform the validation upon request, and output the results of the validation to another module or engine of computing system 200. Validation module 220 may be configured to perform, for example, the following: verify a digital signature using an appropriate signature generation algorithm and key, verify a transaction value, verify a block reference hash, verify a data reference hash, etc.
[0042] The computing system 200 may also include a transmitting device 222. The transmitting device 222 may be configured to transmit data over one or more networks via one or more network protocols. In some examples, the transmitting device 222 may be configured to transmit data to the blockchain nodes 102, the participant systems 106, the verification system 108, and other entities via one or more communication methods, such as a local area network, a wireless area network, cellular communication, Bluetooth, radio frequency, the Internet, etc. In some embodiments, the transmitting device 222 may include multiple devices (e.g., different transmitting devices for transmitting data over different networks (e.g., a first transmitting device transmitting data over a local area network and a second transmitting device transmitting data over the Internet)). The transmitting device 222 may electronically transmit a data signal having superimposed data, the data being analyzed by a receiving computing device. In some embodiments, the transmitting device 222 may include one or more modules for superimposing, encoding, or formatting data into a data signal suitable for transmission.
[0043] The sending device 222 can be configured to electronically send a data signal to the blockchain node 102, which can be superimposed or encoded with a blockchain data value, a transaction value, a block, an authenticator, a verifiable data chunk, a confirmation message, a new transaction value, a request for a transaction value, a request for a verifiable data chunk, an authenticator, a notification about a decoded transaction value, etc. The sending device 222 can also be configured to electronically send a data signal to the verification system 108, which can be superimposed or encoded with a blockchain data value, a verifiable data chunk, an authenticator, etc.
[0044] A process to verify the pruned transaction value FIG. 3 illustrates a process for verifying transaction values pruned from a blockchain through the use of verifiable data chunks in the system 100 shown in FIG. 1 and described above.
[0045] At S302, the blockchain node 102 may prune its local copy of the blockchain (e.g., stored in blockchain data 206) by removing one or more transaction values from the data store. The blockchain node 102 may be instructed to post data chunks for the pruned blockchain transactions, for example, based on the passage of a predetermined period of time since the transaction values were pruned at S302, or upon receipt of a request for the transaction values (e.g., identified via an authenticator) from an external system, such as the validation system 108. At S304, the blockchain node 102 (e.g., via the encoding module 218) may encode the transaction values using a Fountain Code algorithm to identify multiple verifiable data chunks for the transaction value.
[0046] At S306, the blockchain node 102 (e.g., via the query module 214 or the generation module 216) can identify an authenticator for use in identifying identifiable data chunks for decryption of the transaction value. The authenticator can be divided into code portions, and each data chunk can be associated with a code portion. At S308, the verification system 108 can receive the authenticator, for example, directly from the blockchain node 102 (e.g., in response to a request for the transaction value) or as its identification in the blockchain data value.
[0047] At S310, the blockchain node 102 (e.g., via the generation module 216) can generate a new block for the blockchain using conventional methods and systems, where the new block can include one or more blockchain data values, and where identifiable data chunks and corresponding code portions can be stored across the blockchain data values. At S312, the new block can be added to the blockchain using conventional methods and systems, for example, where the new block is transmitted to multiple other blockchain nodes 102, where it can be verified, and where it is distributed to blockchain nodes 102 in the blockchain network 104.
[0048] To verify the transaction value, at S314, the verification system 108 can identify new blocks that have been added since the transaction value was pruned or since the request for the transaction value was submitted to the blockchain node 102, as appropriate. The verification system 108 can also use the authenticator to identify verifiable data chunks for the transaction value within the blockchain data item of the new block, such as by identifying verifiable data chunks with code portions that include the authenticator. At S316, the verification system 108 (e.g., via the encoding module 218) can decode the transaction value using the identified data chunks and the Fountain Code algorithm. Then, at S318, the verification system 108 (e.g., via the validation module 220) can verify the transaction value, for example, by ensuring the authenticity of a product within the prover blockchain or by verifying a transaction amount transferred from a first blockchain wallet to a second blockchain wallet.
[0049] Exemplary Method for Validating Pruned Blockchain Transactions FIG. 4 illustrates a method 400 for validation of blockchain transactions pruned from a blockchain through the use of a Fountain Code algorithm and verifiable data chunks.
[0050] At S402, a subset of blocks included in a plurality of blocks constituting a blockchain may be received by a receiver (e.g., receiving device 202) of a computing device (e.g., computing system 200, verification system 108, etc.). Each block includes one or more blockchain data values. At S404, an authenticator may be received by the receiver of the computing device. At S406, a plurality of data chunks may be identified within the subset of blocks by a processor (e.g., query module 214) of the computing device using the authenticator. Each data chunk of the plurality of data chunks is included in one of the one or more blockchain data values within the blocks of the subset of blocks.
[0051] At S408, the transaction value may be decoded by a processor of the computing device (e.g., encoding module 218) using at least the identified plurality of data chunks and the Fountain Code algorithm. At S410, the decoded transaction value may be verified by a processor of the computing device (e.g., verification module 220).
[0052] In one embodiment, method 400 may further include displaying results of the verification of the decrypted transaction value via a display device interfaced with the computing device. In some embodiments, the authenticator may be stored in one of the one or more blockchain data values within a block of the plurality of blocks. In some embodiments, verifying the decrypted transaction value may include verifying a digital signature included in the decrypted transaction value using the public key of the cryptographic key pair. In one embodiment, the authenticator may be a product identifier associated with the product, and the decrypted transaction value may include data indicating a transfer of ownership of the product. In some embodiments, the blockchain may be a pruned blockchain.
[0053] Exemplary Method for Posting Verifiable Data Chunks FIG. 5 illustrates a method 500 for posting verifiable data chunks for a transaction on a pruned blockchain, which can be used to decrypt the underlying transaction value using the Fountain Code algorithm.
[0054] At S502, a transaction value may be received by a receiver (e.g., receiving device 202) of a computing device (e.g., computing system 200, blockchain node 102, etc.). At S504, the transaction value may be encoded into a plurality of data chunks using a Fountain Code algorithm by a processor (e.g., encoding module 218) of the computing device. At S506, authenticators corresponding to the plurality of data chunks may be identified by a processor (e.g., query module 214, generation module 216, etc.) of the computing device. Each data chunk of the plurality of data chunks includes a portion of the authenticator.
[0055] At S508, at least two new blocks for the pruned blockchain may be generated by a processor (e.g., generation module 216) of the computing device. Each of the at least two new blocks includes a block header and one or more blockchain data values, and corresponding portions of the plurality of data chunks and authenticators are stored across the one or more blockchain data values of each of the at least two new blocks. At S510, the generated at least two new blocks may be transmitted by a transmitter (e.g., sending device 222) of the computing device to multiple blockchain nodes (e.g., blockchain node 102) in a blockchain network (e.g., blockchain network 104) associated with the pruned blockchain. In one embodiment, the two new blocks may be non-contiguous in the pruned blockchain.
[0056] Computer System Architecture 6 illustrates a computer system 600, in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code. For example, the blockchain node 102 and validation system 108 of FIG. 1 and the computing system 200 of FIG. 2 may be implemented in the computer system 600 using hardware, a non-transitory computer-readable medium having stored instructions, or a combination thereof, and may be implemented in one or more computer systems or other processing systems. The hardware may embody modules and components used to implement the methods of FIGS. 3-5.
[0057] 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.
[0058] 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 618, removable storage unit 622, and a hard disk installed in hard disk drive 612, etc.).
[0059] Various embodiments of the present disclosure are described with respect to this exemplary computer system 600. 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.
[0060] The processor unit 604 may be a special-purpose or general-purpose processor unit specially configured to perform the functions of the present disclosure. The processor unit 604 may be connected to a communications infrastructure 606 (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 600 may also include a main memory 608 (e.g., random access memory, read-only memory, etc.) and may also include a secondary storage device 610. The secondary storage device 610 may include a hard disk drive 612 and a removable storage drive 614 (e.g., a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, etc.).
[0061] Removable storage drive 614 may read from and / or write to removable storage unit 618 in a well-known manner. Removable storage unit 618 may include a removable storage medium that can be read from and written to by removable storage drive 614. For example, if removable storage drive 614 is a floppy disk drive or a USB port, removable storage unit 618 may be a floppy disk or a portable flash drive, respectively. In one embodiment, removable storage unit 618 may be a non-transitory readable recording medium.
[0062] In some embodiments, secondary storage 610 may include alternative means for allowing computer programs or other instructions to be loaded into computer system 600 (e.g., removable storage unit 622 and interface 620). Examples of such means may include program cartridges and cartridge interfaces (e.g., found in video game systems), removable memory chips (e.g., EEPROM, PROM, etc.) and associated sockets, other removable storage units 622 and interfaces 620, as will be apparent to those skilled in the art.
[0063] Data stored in computer system 600 (e.g., in main memory 608 and / or secondary storage 610) 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.
[0064] Computer system 600 may also include a communications interface 624. Communications interface 624 may allow software and data to be sent and received between computer system 600 and external devices. Exemplary communications interface 624 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 624 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 626. 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.
[0065] Computer system 600 may further include a display interface 602. Display interface 602 may be configured to allow data to be transferred between computer system 600 and an external display 630. Exemplary display interfaces 602 may include a high-definition multimedia interface (HDMI), a digital visual interface (DVI), a video graphics array (VGA), etc. Display 630 may be any suitable type of display for displaying data transferred via display interface 602 of computer system 600, 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.
[0066] Computer program medium and computer usable medium may refer to memory (e.g., main memory 608 and secondary storage device 610), which may be semiconductor memory (such as DRAM). These computer program products may be means for providing software to computer system 600. Computer programs (e.g., computer control logic) may be stored in main memory 608 and / or secondary storage device 610. Computer programs may also be received via communications interface 624. Such computer programs, when executed, may enable computer system 600 to perform methods of the present disclosure. In particular, computer programs, when executed, may enable processor unit 604 to implement the methods illustrated in FIGS. 3-5 as described herein. Thus, such computer programs represent the controller of computer system 600. The present disclosure is implemented using software. The software may be stored in a computer program product and loaded into computer system 600 using removable storage drive 614, interface 620, and hard disk drive 612 or communications interface 624.
[0067] Processor unit 604 may include one or more modules or engines configured to perform the functions of computer system 600. 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 608 or secondary storage 610). In such embodiments, the program code may be compiled by processor unit 604 (e.g., by a compilation module or engine) before execution by the hardware of computer system 600. 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 604 and / or any additional hardware components of computer system 600. The compilation process may include the use of lexical analysis, preprocessing, syntactic analysis, semantic analysis, syntax-driven translation, code generation, code optimization, or any other techniques suitable for translating program code into a lower-level language for control of computer system 600 to perform the functions of the present disclosure. Those skilled in the art will appreciate that such processing results in computer system 600 being a specially configured computer system 600 that is uniquely programmed to perform the functions described above.
[0068] Techniques consistent with the present disclosure provide, among other features, systems and methods for verifying pruned blockchain transactions and posting verifiable data chunks for transactions on the pruned blockchain. While various exemplary embodiments of the systems and methods of the present disclosure are 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 validation of pruned blockchain transactions, comprising: receiving, by a receiver of a computing device, a subset of blocks included in a plurality of blocks that make up the blockchain, each block including one or more blockchain data values; receiving, by the receiver of the computing device, an authentication code; using the authenticator, by a processor of the computing device, to identify a plurality of data chunks in the subset of blocks, each data chunk of the plurality of data chunks being included in one of the one or more blockchain data values in a block of the subset of blocks; decrypting, by the processor of the computing device, a transaction value using at least the identified plurality of data chunks and a Fountain Code algorithm; and verifying, by the processor of the computing device, the decrypted transaction value.
2. The method of claim 1 further comprising: displaying, by a display device interfaced with the computing device, a result of the verification of the decrypted transaction value.
3. 2. The method of claim 1, wherein the authenticator is stored in one of the one or more blockchain data values within a block of the plurality of blocks.
4. 2. The method of claim 1, wherein verifying the decrypted transaction value includes verifying a digital signature included in the decrypted transaction value using a public key of a cryptographic key pair.
5. 10. The method of claim 1, the authenticator is a product identifier associated with the product; The method, wherein the decrypted transaction value includes data indicating a transfer of possession of the product.
6. 10. The method of claim 1, wherein the blockchain is a pruned blockchain.
7. 1. A method for posting verifiable data chunks for a transaction on a pruned blockchain, comprising: receiving, by a receiver of the computing device, a transaction value; encoding, by a processor of the computing device, the transaction value into a plurality of data chunks using a Fountain Code algorithm; identifying, by the processor of the computing device, an authenticator corresponding to the plurality of data chunks, each data chunk of the plurality of data chunks including a portion of the authenticator; generating, by the processor of the computing device, at least two new blocks for the pruned blockchain, each of the at least two new blocks including a block header and one or more blockchain data values, and corresponding portions of the plurality of data chunks and the authenticator being stored across the one or more blockchain data values in each of the at least two new blocks; and transmitting, by a transmitter of the computing device, the generated at least two new blocks to a plurality of blockchain nodes in a blockchain network associated with the pruned blockchain.
8. 8. The method of claim 7, wherein the two new blocks are not consecutive blocks in the pruned blockchain.
9. 1. A system for validation of pruned blockchain transactions, comprising: The system includes a computing device; The computing device is a receiver, a subset of blocks included in a plurality of blocks constituting the blockchain, each block including one or more blockchain data values; a receiver for receiving an authentication code; 1. A processor, comprising: using the authenticator to identify a plurality of data chunks in the subset of blocks, each data chunk of the plurality of data chunks being included in one of the one or more blockchain data values in a block of the subset of blocks; decrypting a transaction value using at least the identified data chunks and a Fountain Code algorithm; and a processor that performs the steps of verifying the decrypted transaction value.
10. 10. The system of claim 9, further comprising: a display device interfaced with the computing device for displaying a result of the verification of the decrypted transaction value.
11. 10. The system of claim 9, wherein the authenticator is stored in one of the one or more blockchain data values within a block of the plurality of blocks.
12. 10. The system of claim 9, wherein verifying the decrypted transaction value includes verifying a digital signature included in the decrypted transaction value using a public key of a cryptographic key pair.
13. 10. The system of claim 9, the authenticator is a product identifier associated with the product; The system, wherein the decrypted transaction value includes data indicating a transfer of possession of the product.
14. 10. The system of claim 9, wherein the blockchain is a pruned blockchain.
15. 1. A system for posting verifiable data chunks for transactions on a pruned blockchain, comprising: a computing device; a blockchain network associated with the pruned blockchain; and a plurality of blockchain nodes included in the blockchain network; the computing device, a receiver that receives a transaction value; 1. A processor, comprising: encoding the transaction value into a plurality of data chunks using a Fountain Code algorithm; identifying an authenticator corresponding to the plurality of data chunks, each data chunk of the plurality of data chunks including a portion of the authenticator; generating at least two new blocks for the pruned blockchain, each of the at least two new blocks including a block header and one or more blockchain data values, and corresponding portions of the plurality of data chunks and the authenticator are stored across the one or more blockchain data values in each of the at least two new blocks; and a transmitter that transmits the generated at least two new blocks to the plurality of blockchain nodes.
16. 16. The system of claim 15, wherein the two new blocks are not consecutive blocks in the pruned blockchain.
Citation Information
Patent Citations
Accountably Redactable Data Structures
US20200174990A1
File provenance database system
US20200204376A1
Secure and transparent pruning for blockchains
US20210247908A1