Trace resources and their components through blockchain
By recording the installation and update history of system components on the blockchain, the problem of difficult to trace the cause of system damage in the prior art is solved, and the security, immutability and traceability of component status are achieved.
Patent Information
- Application Number
- CN202411810865.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-04-15
- Filing Date
- 2019-09-30
- Publication Date
- 2025-04-08
AI Technical Summary
The prior art is difficult to securely record the installation and update of components of a system, database or application, resulting in system damage or damage that is difficult to trace.
Using blockchain technology, resource initiators create resource data blocks on the blockchain, and record components' addition, modification and historical data on the component state data blockchain.
It realizes safe, tamper-free and traceable records of resource components, and improves system reliability and maintenance efficiency.
Smart Images

Figure CN119783069A_ABST
Abstract
Description
[0001] This application is a divisional application of the PCT international application PCT / US2019 / 053815, filed on September 30, 2019, with the invention name “Tracing Resources and Their Components through Blockchain”, which entered the Chinese national phase patent application 201980072015.X. Technical Field
[0002] The present application specifically relates to tracing resources and their components through blockchain. Background Art
[0003] Systems are usually made up of many components, such as data subsets, subsystems, and modules. For example, a database is usually made up of many data subsets. For another example, a computer usually includes multiple hardware subsystems (e.g., motherboard, memory, BIOS, communication devices, etc.) and software subsystems (e.g., operating system (OS), device drivers, libraries, etc.). For another example, an application usually includes many modules and libraries.
[0004] Typically, many components of a system can be added, updated, or replaced. For example, a database can have many subsets or libraries of data that can be modified. In a computer, the BIOS can be updated, memory modules can be replaced, or the operating system can be replaced with a new version or patched. Applications can be updated. Libraries can be modified. Device drivers can be installed, modified, or removed.
[0005] Many different entities may be involved when adding or modifying components in a system. For example, a computer's original equipment manufacturer (OEM) typically adds the computer's motherboard, memory modules, and operating system. However, the operating system is often updated by the manufacturer of the OS, or device drivers are added by the manufacturer of the device that the user obtains and connects. As components are added or changed, it can be difficult to securely record the changes made by multiple entities.
[0006] When changes are made, systems are often damaged or broken. Therefore, it is sometimes beneficial to be able to trace these changes back to determine where the damage or disruption of the system occurred. Currently, it is difficult or impossible to know what changes have been made to a system throughout its lifecycle.
[0007] It is with these and other considerations that the disclosure herein is proposed. Summary of the invention
[0008] Technology is disclosed regarding a resource trusted model for securely recording component installations and updates of resources such as systems, databases, or applications using a blockchain, wherein the initiator of the resource creates a resource data block for the resource on the blockchain. Additions or modifications to components of the resource may be recorded in a component state data block on the blockchain linked to the resource data block of the resource. Subsequent modifications to the component may also be recorded in the component state data block. Modifications to the resource are securely recorded on the blockchain and can be traced.
[0009] The component state data blockchain can be established by the originator or source of component state data, such as digital audio, video, photo, image, text, or a streaming service for digital video, photo, image, or text. Alternatively, the component state data block can be generated from the source and linked to an existing blockchain, such as the ETHERIUM blockchain.
[0010] The source generates a component state data block that includes the component state data and includes methods for accessing the component state data. The component state data block may also include one or more desired uses defined by the source for the component state data, such as a specific user or assignee, a number of uses, a number of users, a geographic restriction of uses, or a device restriction of uses.
[0011] Examples of the disclosed technology relate to methods, systems, and media for storing component state data of components of a resource, the methods, systems, and media comprising generating a resource data block corresponding to the resource, wherein the resource data comprises one or more links and each link corresponds to one of the one or more components of the resource. This example of the disclosed technology also relates to: generating a first component state data block of a first component of the resource on a blockchain, wherein the first component state data block of the first component comprises a first set of state data corresponding to the first component; and setting a link corresponding to the first component to reference the first component state data block.
[0012] In some examples, the step of generating a resource data block corresponding to the resource includes generating a resource data block corresponding to the resource by a resource initiator entity, and the step of generating a first component state data block of a first component of the resource on the blockchain includes requiring the first component state data block to be signed by the resource initiator entity.
[0013] Other examples include: generating a second component state block for the first component, the second component state block for the first component including second state data corresponding to the first component; and linking the second component state data block to the first component state data block.
[0014] In certain examples, the step of generating a resource data block corresponding to the resource includes generating, by a resource initiator entity, the resource data block corresponding to the resource, and the step of generating a second component state data block for the first component includes generating, by a component provider entity, the second component state data block for the first component. These examples also include requiring the second component state data block to be signed by the resource initiator entity and the component provider entity.
[0015] Other examples include: generating a second component state data block of the second component on the blockchain, the second component state data block of the second component including the first state data of the second component; and setting a link corresponding to the second component in the resource data block to reference the first component state data block of the second component on the blockchain.
[0016] In yet another example, the step of generating a resource data block corresponding to a resource (wherein the resource data includes one or more links and each link corresponds to one of the one or more components of the resource) includes: generating an empty component state data block for each of the one or more components of the resource, and for each of the one or more components, setting a link corresponding to the component to reference the empty component state data block of the component. In this example, the step of setting a link corresponding to a first component to reference the first component state data block includes: linking the first component state data block to the empty component state data block of the first component.
[0017] In various examples, the resource may be a system and the first component is a subcomponent of the system, the resource may be a service and the first component is a component of the service, the resource may be a database and the first component is a subset of the data, the resource may be an operating system and the first component is one of a library, a management subsystem, or a device driver, or the resource may be an application and the first component is an update to the application.
[0018] It should be understood that the above subject matter may also be implemented as a computer-controlled device, a computer process, a computing system, or as an article such as a computer-readable medium. These and various other features will become apparent by reading the following detailed description and viewing the associated drawings. This summary is provided to introduce some concepts in a simplified form, which will be further described in the following detailed description.
[0019] This summary is neither intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. In addition, the claimed subject matter is not limited to implementations that solve any or all disadvantages pointed out in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] The detailed description is described with reference to the accompanying drawings. In the drawings, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears. The same reference numbers in different drawings indicate similar or identical items.
[0021] Figure 1 is an architectural diagram showing an illustrative example of a system for storing component state data of components of a resource using a blockchain;
[0022] Figure 2A is a data architecture diagram showing illustrative examples of a resource data blockchain and a component state data blockchain protecting resources and component state data of the resources;
[0023] Figure 2B is a data architecture diagram showing another illustrative example of a resource data blockchain having links to component state data blocks populated to a resource configuration;
[0024] Figure 2C is a data architecture diagram showing an illustrative example of a resource data block referencing a component state data block secured on a blockchain, wherein a series of modified component state data blocks for a component are stored on the blockchain;
[0025] Figure 3A is a data architecture diagram showing an illustrative example of a resource originator environment for creating a resource data block including a pointer to a component state data blockchain of a component showing an example of a series of modifications of a component recorded on the component state blockchain;
[0026] Figure 3B is a data architecture diagram showing an illustrative example of a resource data block including code for methods for initializing components of a resource, updating the components to a new state, and auditing the history of component state data of the components;
[0027] Figure 4A is a control flow diagram showing an illustrative example of a process by which a resource originator entity creates a resource data block on a resource data blockchain for a resource;
[0028] Figure 4B is a control flow diagram showing an illustrative example of a process by which a component provider creates a component state data block on a component state data blockchain to record a state update of a component, wherein a resource initiator maintains control over the state update;
[0029] Figure 4C is a control flow diagram illustrating an example of a process of auditing the history of component state updates of a component by tracing back a component state data blockchain of the component;
[0030] Figure 4D is a control flow diagram illustrating an example of a verification process for a block added to a resource data blockchain or a component state data blockchain assigned to an untrusted node;
[0031] Figure 5 is a data architecture diagram showing an illustrative example of a user using an application programming interface to access component state data on a component state data blockchain;
[0032] Fig. 6A is a data architecture diagram that shows the Figure 1 A simplified example of a blockchain ledger of a resource data block of a resource data blockchain or a component state data block of a component state data blockchain;
[0033] Figure 6B is a data architecture diagram showing illustrative examples of smart contract code, transactions, and messages that are bundled into blocks so that their integrity is cryptographically secure and can be appended to a blockchain ledger;
[0034] Figure 7 is a computer architecture diagram showing an illustrative computer hardware and software architecture of a computing system capable of implementing various aspects of the techniques and technologies presented herein;
[0035] Figure 8 is a diagram illustrating a distributed computing environment capable of implementing various aspects of the techniques and technologies presented herein; and
[0036] Fig. 9 is a computer architecture diagram illustrating a computing device architecture of a computing device capable of implementing various aspects of the techniques and technologies presented herein. DETAILED DESCRIPTION
[0037] In the context of resource state data, it is sometimes advantageous for a resource initiator entity or initiator of a resource (such as system hardware, a service, a database, a driver, or an application) to securely control and maintain a record of state data for one or more components of a resource (such as a subsystem, a data set, a data or code module, a library, or key data).
[0038] For example, when a problem is discovered in a component in a resource (e.g., a component is discovered to have failed or has been damaged or corrupted), it can be quite useful to be able to trace the history of the component to determine the source of the problem and assess the impact of the problem. For example, when a memory module fails, the component state data of the module can be used to identify the source of the failed module. Similarly, if a device driver is found to be defective, the component state data can be used to clarify when the device driver was installed in the resource and the resource initiator entity that provided the device driver, thereby isolating the fault. In another example, when a component is found to be damaged, it is important to examine the history of the component to determine when the component was damaged and the resource initiator entity of the damaged component, thereby isolating the security vulnerability.
[0039] It would also be advantageous to maintain component state data securely and immutably so that the data cannot be altered and is therefore reliable for auditing purposes. It would also be advantageous to have data about components configured on a system easily accessible to many entities who could use the data for auditing, fault or security vulnerability isolation, or other purposes.
[0040] Currently, there does not seem to be a good general solution for monitoring the state of a resource and its components. Some component state data can be collected and maintained by the original source of the resource, such as through product registration or account logs. However, these approaches are often split between multiple entities (such as the original source of the resource and multiple different providers of the component).
[0041] Such state data that does exist may not include historical data to enable forensic traceability of components. Furthermore, the security of the state data is generally unknown to external observers and therefore not known to be reliable. Furthermore, any component data that does exist between multiple entities is generally not accessible outside of the entity maintaining that specific component data.
[0042] In summary, the disclosed technology utilizes one or more blockchains to maintain a resource data block related to a resource, the resource data block including data of one or more components of the resource. When a component is configured in a resource, a component state data block is created and stored in the blockchain using metadata of the configured component, and a link to the component state data block of the component is stored in the resource data block. When a component is updated, replaced, or otherwise modified, another component state data block is created using metadata of the component, such as data indicating the modification to the component and an identifier of the entity that made the modification.
[0043] The following detailed description describes a technique for securely maintaining a record of state data of one or more components of a resource, where a resource originator entity of the resource can create a resource data block on a blockchain, which can include a definition of the components of the resource. The resource data block can also include a link for each component to a component state data blockchain, which stores state data related to the component and historical data about modifications to the components of the resource.
[0044] For example, a computer manufacturer may create a resource data block that includes the serial number of a computer that the manufacturer has produced and definitions of the components of the computer, such as a motherboard, memory components, power supplies, mass storage devices, sensors, user interfaces, network devices, video cards, operating systems, applications, etc. When a component is added to a resource (e.g., a memory card), a component state data block is created that includes metadata for the component, such as the manufacturer, model number, serial number, etc. A link to the component's component state data block is stored in the resource data block. When a component is modified or replaced, a new component state data block is created using metadata describing the modification, and a link to the new component state data block is stored in the resource data block.
[0045] Note that in some scenarios, different entities may provide the components of a resource. When configuring a component for a resource, in some examples, the provider of the component may create a component state data block and update the resource data block with a link to the component state data block. In some examples, modifications or additions to a resource's resource data block or additional component state data blocks may require a signature from the resource originator entity.
[0046] The resulting resource data block and associated component state data block may provide a record of the components configured on the resource as well as the component state data of the components and a traceable history of the components.
[0047] The resource originator entity of the resource can establish the resource data blockchain and the component state data blockchain, such as an original equipment manufacturer (OEM), an operating system provider, or an application developer. Alternatively, the resource data block and the component state data block can be generated by the resource originator entity and linked to an existing blockchain, such as the ETHERIUM blockchain.
[0048] Resource data in the blockchain or component state data in the blockchain can be encrypted so that it can only be accessed through methods of the block. Other content in the block (such as methods) can also be encrypted to prevent unauthorized access to the content or control access to the content. For example, resource data or component state data can be encrypted using a public-private key pair, where the public key of the resource initiator entity is used to encrypt the data and the corresponding private key is used to decrypt the data. In some examples, another entity (such as a component provider) can be provided with a key to access the data.
[0049] The technical advantages of the disclosed resource trust model for component state data technology include: securely maintaining data on a blockchain that can be widely accessed through the Internet. Another technical advantage of the disclosed component state data technology is the distributed nature of the blockchain, which prevents unauthorized entities from modifying or destroying component state data at any single point. Through the implementation of the technology disclosed in this article, other technical effects other than those mentioned in this article can also be achieved.
[0050] By using the techniques described herein, one or more blockchains can be used to securely maintain traceable state data about a resource and its components. In a resource data block on a blockchain, data about a resource is stored, which may include information about the resource and information about one or more components of the resource, the latter of which may include a link to a component state data block of the component containing the component state data. The component state data block can be stored in a component state data blockchain, thereby securely and immutably storing the component state data in a manner that provides broad access to the data, thereby making it easy for users with network access rights to the blockchain to access and trace the component state data.
[0051] As will be described in greater detail herein, it will be appreciated that implementation of the techniques and technologies described herein may include the use of solid-state circuits, digital logic circuits, computer components, and / or software executed on one or more input devices. The signals described herein may include analog and / or digital signals for communicating a changed state of a data file or other information related to a data file.
[0052] Although the subject matter described herein is presented in the general context of program modules executed in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in conjunction with other types of program modules. Typically, program modules include routines, programs, components, data structures, and other types of structures that perform specific tasks or implement specific abstract data types. In addition, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including multiprocessor systems, mainframe computers, microprocessor-based or programmable consumer electronics, minicomputers, handheld devices, and the like.
[0053] In the following detailed description, reference is made to the accompanying drawings which form a part of this detailed description and in which specific configurations or examples are shown by way of illustration. Now referring to the accompanying drawings, in which like numbers represent like elements throughout the several figures, various aspects of a computing system, a computer-readable storage medium, and a computer-implemented method for component state data blockchain ledgers will be described. As will be described in more detail below in conjunction with the accompanying drawings, there are many applications and services that can embody the functions and techniques described herein.
[0054] Figure 1 1 is an architectural diagram showing an illustrative example of a component state system 100 utilizing a resource data blockchain 140 and a component state data blockchain 150. The resource data blockchain can be used to securely maintain resource data about a resource, while the component state data blockchain can be used to securely maintain state data related to components of the resource. The resource data blockchain can also be used to control access to the resource data and component state data, as well as control modifications to the data. Figure 1 In an embodiment of the invention, each of blockchains 140 and 150 can be a publicly available blockchain that supports scripts, such as the ETHEREUM blockchain (which supports the SOLIDIFY scripting language) or BITCOIN (which supports a scripting language called SCRIPT). Blockchains 140 and 150 can also each be a private blockchain, or a combination of public and private blockchains can be utilized. Resource data block 142 and component state data block 152 can also reside on the same blockchain.
[0055] The resource initiator environment 110 (such as a client device, one or more servers, or remote computing resources) is controlled by a resource initiator entity that creates resources. In one example, the resource initiator environment 110 initiates the resource data blockchain 140 by creating a genesis block 142A, and initiates the component state data blockchain 150 by creating a genesis block 152A. In other examples, the resource data block 142 and the component state data block 152 can be added to an existing blockchain.
[0056] For the resource data blockchain, in this example, the resource data block 142A may include resource data about the resource, such as model, manufacturer or developer, serial number, activation code, version number, or other descriptive data. The resource data block may also include data about one or more components of the resource, such as the type of component and a link to a component status data block (with status information about the component).
[0057] For the component state data blockchain, in this example, the component state data block 142A may include component state data of the component, such as the manufacturer, developer or supplier, serial number or activation code, version number, update identifier, or other descriptive data. The component state data block 142 may also include a link to another component state data block related to a previous component or version of the component.
[0058] In some embodiments, resource initiator environment 110 may be replaced by another computing node, such as a computer on a peer-to-peer network, or other computing device.
[0059] exist Figure 1 In the example of , resource data is provided by resource originator environment 110 and protected on resource data blockchain 140. Component state data can be provided by resource originator environment 110 or a supplier of components and protected on component state data blockchain 140. The information in resource data block 142 and component state data block can be accessed by other entities, such as client / server 120A, 120B or 120C or blockchain platform 130. In this example, client / server 120 can communicate with resource originator environment 110 and a server network of blockchain platform 130 that supports and maintains blockchains 140 and 150. For example, the ETHERIUM blockchain platform of the Swiss ETHERIUM FOUNDATION provides a decentralized distributed computing platform and operating system that provides scripting capabilities.
[0060] In one example, the resource originator environment 110 owns and controls resource data blocks 142 in the resource data blockchain 140. Each resource data block 142 includes resource data related to a resource defined by a resource originator entity using the resource originator environment 110. For example, the resource originator entity may define a serial number and an array of components of a resource, including a link to a component state data block for each component.
[0061] In this example, the resource initiator environment 110 may also own and control component state data blocks 152 in the component state data blockchain 150. Each component state data block 152 includes component state data related to the component, such as a version or update number, a revision date, a vendor identifier, etc. When a component is configured for a resource, a component state data block is created, and a link corresponding to the component in the resource data block is set to link to the component state data block. When a component is modified or replaced, a new component state data block is created, linked to the previous component state data block, and a link corresponding to the component in the resource data block is set to link to the new component state data block.
[0062] Although the resource originator environment 110 maintains control of the component state data, at least initially, the component state data blockchain 150 may be accessed by other entities, such as the client / server 120, such that a supplier entity may provide component state data stored in a block in the blockchain. For example, a supplier entity providing a component or a revision to a component using the client / server 120 may create a component state data block related to the component or the revision.
[0063] In some examples, the method in the component state data block can provide that the resource originator entity maintains control over the component state data block by requiring the resource originator entity to sign the new component state data block. In other examples, the method in the component state data block can require both the resource originator entity and the vendor entity to sign the new component state data block.
[0064] In some examples, resource state data blockchain 140 and component state data blockchain 150 may be visible to other entities using an application that can access blockchain information. By providing access to resource state data blockchain 140 and component state data blockchain 150, the method allows users to easily access resource data and component state data maintained on resource state data blockchain 140 and component state data blockchain 150 under the control of a resource originator entity (e.g., a user of resource originator environment 110).
[0065] In another example, aspects of component state data blockchain 140 may be restricted to be visible only to entities authorized to access blockchains 140 and 150, such as resource originator environment 110 or a component vendor entity, e.g., an authorized user of one of client / servers 120. By limiting access to blockchains 140 and 150, resource originator entities may retain more control or greater security over resources and component state data.
[0066] Figure 2Ais a data architecture diagram that shows the Figure 1 1 is a simplified example of a resource data blockchain ledger 200 of blocks 142A-E of a resource data blockchain ledger 140 of FIG. 1 . Figure 2A The example of resource data blockchain ledger 200 is simplified to show the block headers, metadata and signatures of blocks 210A-E, thereby demonstrating the use of blockchain to store resource data. In general, the blockchain ledger can be a globally shared transaction database. In some examples, the signature can involve all or part of the data stored in blocks 142A-E, and can also involve a public key address corresponding to a resource initiating entity involved in the creation of the resource.
[0067] The blockchain ledger 200 may be arranged as a Merkle tree data structure, a linked list, or any similar data structure that can achieve cryptographic integrity. The blockchain ledger 200 allows verification that resource data and (similarly) component state data on the blockchain 150 have not been corrupted or tampered with, because any tampering attempt will change (or have) the message authentication code of the block, and other blocks pointing to that block will not correspond. Figure 2A In one embodiment, each block can point to another block. Each block can include a pointer to another block and a hash (or message authentication code function) of the other block.
[0068] Each block in a blockchain ledger may optionally contain a proof data field. The proof data field may represent a reward that is due. The proof may be a proof of work, a proof of stake, a proof of research, or any other data field that represents a reward that is due. For example, a proof of work may represent that computational work has been performed. As another example, a proof of stake may represent that a certain amount of cryptocurrency has been held for a certain amount of time. For example, if 10 units of cryptocurrency have been held for 10 days, the proof of stake may represent that 10*10=100 time units have been accumulated. A proof of research may represent that research has been performed. In one example, a proof of research may represent that a certain amount of computational work has been performed—for example, exploring whether molecules interact in some way during a computational search for an effective drug compound.
[0069] Figure 2A Block 210 of the resource data blockchain 200 in the example of FIG. 200 illustrates protecting resource data using a new resource data block on the blockchain. In one example, Figure 1The resource initiator environment 110 provides resource data and data identifying the owner of the resource data, an identifier of the resource, and one or more records related to the components of the resource, which may include an identifier of the component and a link to a component state data block having state data of the component when it creates the resource data block 210A. The resource initiator environment 110 signs the resource data block 210A, and the blockchain system in which the blockchain 200 is created verifies the resource data block based on the proof function.
[0070] Notice, Figure 1 The illustrated component state data blockchain 150 may take a similar form to the component state data block 152, which may include data related to the corresponding component, such as a serial number, model or version number, installation date, etc. Component state data blocks 152 for successive versions, updates, or replacements of a component may be linked together on the same or different blockchains, thereby using the blockchain to immutably and traceably store the history of components in a resource.
[0071] Note that various methods may be utilized consistent with the disclosed technology. In some examples related to resource data and component state data, a user of the resource initiator environment 110 is a required entity, or the only entity allowed to verify or validate the resource data block 142 or the component state data block 152. In other examples, other entities (such as an authorized component supplier entity) may verify or validate the component state data block 152.
[0072] exist Figure 2A In the example of , the resource data block 210 of the resource data blockchain 200 includes resource data (such as a resource identifier and component links of the components of the resource), and a signature of the resource originator. Figure 2A In the example of FIG. 2 , each resource data block 210 includes a set of component state pointers comp_state[n].ptr, which can be linked to a corresponding component state data block including state data of the components of the resource. Note that a resource initiator can create resource data blocks with different numbers of components depending on the resource.
[0073] To add new resource data to the resource data block, the resource initiator environment 110 creates a resource data block 210B that identifies the component state data (e.g., ResourceID_2) and the component state array (e.g., comp_state[n]) and links the block 210B to the block 210A. The resource initiator environment 110 signs the resource data block 210B and submits the block 210B to the blockchain 200 for verification by the blockchain platform.
[0074] To add more resource data blocks for additional resources, the resource initiator environment 110 creates resource data block 210C to protect the resource data of ResourceID_3 and the component state array. Similarly, the resource initiator environment 110 creates resource data block 242D to store the resource data of ResourceID_4 and creates resource data block 242E to store the resource data of ResourceID_5.
[0075] In addition, pointers may be created with null links that are updated to point to component status data blocks when components are configured in a resource. For example, a resource initiator entity may be an OEM manufacturer of a system with n components, where some or all pointers are null links. When the resource initiator entity configures a main controller board for a resource, it creates a component status data block that includes data about the main controller board and sets a corresponding pointer in the component status array to point to the component status data block. In some examples, the component status array may also include definition or requirement data identifying the corresponding component and the characteristics of the component, for example, a main controller board with a clock frequency of 2 GHz.
[0076] Figure 2B is a data architecture diagram showing another illustrative example of a resource data blockchain 240 having links populated for component state data blocks 252 configured to a resource. Resource data block 242A of resource ResourceID_1 includes a pointer Ptr1-1 pointing to component state data block 252A for Component1, a pointer Ptr1-2 pointing to component state data block 252B for Component2, and a pointer Ptr1-3 pointing to component state data block 252C for Component3. Component4, Component5, and Component6 have not yet been configured in ResourceID_1 and therefore have null pointers.
[0077] Similarly, the resource data block 242B of the resource ResourceID_2 includes a pointer Ptr2-1 pointing to the component status data block 252D for Component1 and a pointer Ptr2-2 pointing to the component status data block 252E for Component2. Component3, Component4, Component5 and Component6 have not yet been configured in the resource ResourceID_2, and therefore have null pointers. Similarly, the resource data block 242C of the resource ResourceID_3 includes a pointer Ptr3-1 pointing to the component status data block 252F for Component4 and a pointer Ptr3-2 pointing to the component status data block 252G for Component6. Component1, Component2, Component3 and Component5 have not yet been configured in the resource ResourceID_2, and therefore have null pointers.
[0078] Component state data blockchains (such as Figure 1 The blockchain 150 in enables component state data to be securely stored, thereby maintaining the state data of components in the resource as they are updated during the functional life of the resource and allocated according to usage constraints under the control of the resource originator entity. Figure 2C is a data architecture diagram showing a simplified illustrative example of using a component state data blockchain to securely store a traceable history of component state data of components of a resource.
[0079] In this example, component state data block 262A shows the initial state of the component state data block when initially created by resource initiator environment 110. Component state data block 262A includes an identifier for the component state data (e.g., ID(ComponentID1)), an identifier for the provider of the component (e.g., Provider(ProvID_1)), and the component state data itself (e.g., State(state_1)). For example, component state data block 262A may represent an initially configured video card, operating system, key, or database. In this example, the configuration of the component requires signatures from resource initiator ResourceID_1 and provider ProviderID_1.
[0080] Component state data block 262B represents an update to the initial component ComponentID1 represented by block 262A. Because the component is being updated rather than replaced, the ID is still set to ComponentID1, and the Provider is still set to ProviderID_1. State is set to state_2, which represents and records the update to ComponentID1. For example, an update to the firmware on a video card, an update to the operating system, an updated key, or an updated library. Component state data block 262B is linked to block 262A and signed by the resource initiator ResourceID_1 and the provider ProviderID_1.
[0081] Component state data block 262C represents the replacement component ComponentID2 that replaces the initial component ComponentID1. Because the component is being replaced rather than updated, the ID is set to ComponentID2 and the Provider is set to ProviderID_2. State is set to state_3, which represents and records the initial state of ComponentID2. For example, ComponentID2 can be a replacement video card, a new operating system, or a new library. Component state data block 262C is linked to block 262B and is signed by the resource initiator ResourceID_1 and the provider ProviderID_2.
[0082] Component state data block 262D represents an update to the replacement component ComponentID2 represented by block 262C. Because the component is being updated rather than replaced, the ID is still set to ComponentID2 and the Provider is still set to ProviderID_2. State is set to state_4, which represents and records the update to ComponentID2. Component state data block 262B is linked to block 262D and is signed by resource initiator ResourceID_1 and provider ProviderID_2.
[0083] Figure 3A is a data architecture diagram that shows the Figure 2CAn example of data flowing out of the resource provider and component provider entities in the example. At 302, the resource initiator environment 110 creates a resource data block 242A for the resource Resource ID_1 and signs block 242A. When ProviderID_1 configures component ComponentID1 to Component1 of ResourceID_1, ProviderID_1 creates a component state data block 262A at 310 by utilizing the client / server 120A, where ID=ComponentID1, Provider=ProviderID_1 and State=state_1. At 303, Component1(Ptr) in the resource data block 242A is set to point to block 262A, and at 304, the resource initiator environment 110 signs block 262A submitted to the component state data blockchain 260.
[0084] When ProviderID_1 updates Component1 using client / server 120A, ProviderID_1 creates and signs component state data block 262B at 312, where ID=ComponentID1, Provider=ProviderID_1, and State=state_2, which is signed by the resource originating entity using environment 110 at 306. Component state data block 262B is linked to component state data block 262A in component state data blockchain 260.
[0085] When ProviderID_2 replaces Component1 with client / server 120B, ProviderID_2 creates and signs component state data block 262C at 314, where ID=ComponentID2, Provider=ProviderID_2, and State=state_3, which is signed by the resource originating entity using environment 110 at 307. Component state data block 262C is linked to component state data block 262B in component state data blockchain 260.
[0086] When ProviderID_2 updates ComponentID2, ProviderID_2 uses client / server 120A to create and sign component state data block 262B at 312, where ID=ComponentID2, Provider=ProviderID_2 and State=state_4, which is signed by the resource originating entity using environment 110 at 309. Component state data block 262D is linked to component state data block 262C in component state data blockchain 260.
[0087] As shown in the example of component state data blockchain 260, the disclosed technology can be used to generate a component state data blockchain that can provide traceable and immutable state data related to Component1 of ResourceID_1. The component state data allows for an audit of Component1 that can identify changes made to the component and who made the changes to the component. If a date stamp is included in the component state data block, the date of the component change can be established. Other data can be included in the component state data block that can be useful for auditing or troubleshooting. In an implementation that requires the resource initiator to sign the component state data block 262, the resource initiator can maintain control of the component state data.
[0088] Figure 3B is a data architecture diagram showing an illustrative example of a resource data block 342 including code for a method for initializing a component of a resource, updating the component to a new state, and tracing the history of component state data of the component. The disclosed technology enables resource data and component state data to be securely stored and distributed on a blockchain. The blockchain can be widely accessed by users of the component state data. A blockchain platform that supports a blockchain storing resource data or component state data ensures the integrity of the data and method.
[0089] Scripts for initializing, updating, and auditing component state data can be stored in a blockchain (such as Figure 1 The resource data block 342 on the resource data blockchain 140 is protected and executed by the operating system of the decentralized distributed blockchain platform. Figure 3B An example of a resource data block 342 with code 354 providing initialization, update, and audit scripts is shown. A process 350 for creating a resource data block 342 in a blockchain environment is also shown. An example of a block state 352 defined for a resource data block 342 is also shown.
[0090] In this example, the resource initiator entity calls an initialization script to initialize the resource data block with an array, where each element of the array corresponds to a component of the resource. In this example, upon initialization, each element of the array has a null component identifier (e.g., ID=NULL), a null pointer (e.g., comp.ptr=NULL), and a null state (e.g., state=NULL).
[0091] Figure 3B The example also shows an update script, which is called by the component provider to add component state data to the component of the resource data block 342. In the example shown, a new component state data block is created by calling the update script, and the new component state data block has an identifier of the component provider, a pointer to the component state data block, and the new state of the component. The update script also obtains signatures for the component state data block from the resource initiator entity and the component provider entity.
[0092] An entity can use an audit script to trace the state history of a component by tracing back the component state data blocks in the blockchain and returning state information from each block. For example, the audit script can return the component identifier, component provider, component state, and date from each component state data block in the component's blockchain.
[0093] In an alternative implementation, the resource originator entity creates a resource data block with a pointer or link to each traced component expected for the resource. The resource originator entity also creates an initial component state data block for each traced component pointed to by the pointer in the resource data block.
[0094] When a component is configured in a resource, a new component state data block is created using the component state data and linked to the component's initial component state data block. Each subsequent update or replacement action of a component involves the creation of another component state data block that is linked to the previous component state data block in the blockchain.
[0095] It should also be noted that certain functions may alternatively be implemented in the component state data block, such as the update method described above in conjunction with the resource data block method 354. Additional functions may be included in the resource data block method or the component state data block, such as functions for controlling access to resource and component state data or encrypting or decrypting data. It will be appreciated that the disclosed technology may support many different implementations.
[0096] Figure 4Ais a control flow diagram showing an illustrative example of a process 400 for creating a resource data block for securely storing resource data on a blockchain according to the disclosed technology. This example involves creating a resource data block at 402, which is owned by a resource initiator of a resource and initialized with a resource identifier and a component pointer for each component in the resource. At 404, the resource data block created at 402 is linked to the blockchain, and at 406, the block is encrypted and signed by the resource initiator entity to submit the block to the data blockchain, such as Figure 1 Resource data in blockchain 140.
[0097] Figure 4B is a control flow diagram showing an illustrative example of a process 410 for a component provider to call an update method in a resource data block to add a component identifier and a component's state to a component state data block and set a pointer for the component in the resource data block to point to the component state data block. At 414, the component provider and the resource initiator sign the component state data block to verify the block and submit the block to a blockchain, such as Figure 1 Component status data blockchain 150, Figure 2C or Figure 3A Blockchain 250.
[0098] Figure 4C is a control flow diagram showing an illustrative example of a component data block audit process 420 for tracing back a component identified in a resource data block. At 422, from a caller (such as a call Figure 3B The audit method in the resource data block method 354 shown in FIG. 10 receives an audit request, which in this example has a component slot number of a resource associated with the resource data block. In other examples, the resource data block can store component identifier values of configured components of the resource, and the corresponding audit method can be called using the component identifier value of the component for which the audit is requested. Various methods consistent with the disclosed technology can be utilized.
[0099] At 424, the component data block pointer from the component slot in the resource data block is used to access the component state data blockchain for the component. At 426, the component state data blockchain (such as Figure 1 The blockchain 150 shown or Figure 2C and Figure 3A The first component state data block in the blockchain 260 shown obtains the component identifier and state data.
[0100] At 428, the link in the first component state data block to the next component state data blockchain is used to trace back to the next component state data block. If the next component state data block exists in the blockchain, at 430, control returns to 426 to return the component identifier and component state data from the next component state data block. This loop is completed to obtain the component state data for each block in the component state data blockchain of the component. When there are no blocks left in the component state data blockchain, control branches to 432 to complete the audit process 420.
[0101] Figure 4D is a control flow diagram illustrating an example of a verification process 480 for blocks that are added to a resource data blockchain ledger or a component state data blockchain ledger implemented using an untrusted blockchain node. In process 480, when Figure 1 When creating a resource data block 142 for the resource data blockchain 140 or a component state data block 152 for the component state data blockchain 150, at 482, the transaction is broadcast to the cluster of untrusted nodes. At 484, the nodes compete to compute a verification solution for the transaction. At 486, the winning node broadcasts the verification solution for the resource data block or component state data block and adds the data block to its copy of the corresponding data blockchain ledger, e.g., Figure 1 The resource data blockchain 140 or the component status data blockchain 150 in
[0102] At 488, in response to the winning node's broadcast, the other nodes add the resource data block or component state data block to their copies of the resource data blockchain ledger or component state data blockchain ledger in the transaction order established by the winning node. The decentralized verification protocol can maintain the integrity, immutability, and security of the resource data blockchain ledger or component state data blockchain ledger.
[0103] It should be understood that the procedures shown for the examples and that various other methods may be utilized without departing from the disclosed technology.
[0104] Depending on the scripting capabilities of the blockchain platform, data blocks of the resource data blockchain or component state data blockchain may include more extensive code execution capabilities. For example, a resource component state data system that allows multiple users to share access to component state data may require more extensive code execution capabilities in the blockchain compared to a component state system that restricts access to a single user. Similarly, a component state system based on the component state data blockchain that decrypts component state data or verifies it using information from a third party may require more extensive code execution capabilities in the blockchain.
[0105] It should be understood that in this context, the utilization of blockchain technology (such as scripting technology within smart contracts) provides a high degree of flexibility and variation in the configuration of implementations while not departing from the teachings of the present disclosure.
[0106] Note that the disclosed technology can be used to maintain resource state data for various types of resources and components. The technology can be used for secure storage and distribution of resource and component state data.
[0107] Figure 5 is a data structure diagram that shows the data used to manage and access resources in the blockchain (such as Figure 1 Blockchain 140 and 150, Figure 2A Blockchain 200 Figure 2B Blockchain in 240 or Figure 3A 260) in the blockchain 510). In this example, the application program interface (API) 510 provides an interface to a blockchain platform 520 that supports a resource data blockchain or a component state data blockchain. The blockchain platform 520 supports smart contracts 522, such as Figure 3B The resource data block 342 in the example embodiment includes a script 524 having code that, when executed by the blockchain platform 520, performs operations on the resource data and component state data blockchain.
[0108] exist Figure 5 In the example of , three scripts are defined in smart contract 522. Initialization script 524A allows the resource initiator entity to initialize the resource data block of the resource in order to maintain the component state data of the components configured in the resource. Update script 524B enables the component provider entity to create a component state data block on the blockchain, which includes the component state data of the components configured in the resource. The audit script is used to trace back the component state data blocks related to the components in the resource stored in the component state data blockchain to obtain the history of the components in the resource.
[0109] exist Figure 5 In the example of , the user of client / server 502 sends an audit request 504 to smart contract 522 through resource component state data API 510 to call audit script 524C at 526. The audit script traces back the component state data blockchain of the component to obtain the historical component state data of the component, and returns the historical component state data to client / server 502 at 506.
[0110] Blockchain ledger data structure
[0111] Fig. 6A is a data architecture diagram that shows the Figure 16 is a simplified example of a blockchain ledger 600 of blocks 142A-E of a resource data blockchain 140 or blocks 152A-E of a component state data blockchain 150. Fig. 6A The example of blockchain ledger 600 is simplified to show the block header, metadata and signature of block 142A-E or block 152A-E, thereby demonstrating the secure resource component state data ledger using blockchain. In general, a blockchain ledger can be a globally shared transaction database.
[0112] Fig. 6A is an illustrative example of a blockchain ledger 600 having a data tree that stores transaction data that is verified using cryptographic techniques. Fig. 6A In the example, each block 610 includes a block header 612 with information about previous and subsequent blocks, and stores a transaction root node 614 to a data tree 620 that holds transaction data. The transaction data may store smart contracts, data related to the transaction, or any other data. Elements of a smart contract may also be stored within a transaction node of a block.
[0113] exist Fig. 6A In the example of , the Merkle tree 620 is used to cryptographically protect transaction data. For example, the transaction Tx1 node 634A of the data tree 620A of the block 610A can be hashed to the Hash1 node 632A, and the transaction Tx2 node 638A can be hashed to the Hash2 node 636A. The Hash1 node 632A and the Hash2 node 636A can be hashed to the Hash12 node 630A. A similar subtree can be formed to generate the Hash34 node 640A. The Hash12 node 630A and the Hash34 node 640A can be hashed to the transaction root 614A hash sorted in the data block 610A. In the case of using a Merkle tree or any similar data structure, the integrity of the transaction can be checked by verifying that the hash is correct.
[0114] Figure 6B is a data architecture diagram showing an illustrative example of smart contract code, transactions, and messages that are bundled into blocks so that their integrity is cryptographically secure and can be appended to a blockchain ledger. Figure 6B In the example, smart contract 642 is a code executed on a computer. More specifically, the code of the smart contract can be stored in a blockchain ledger and executed by each node of the distributed blockchain platform at a given time. The results of the smart code execution can be stored in the blockchain ledger. Optionally, currency can be consumed when executing the smart contract code. Figure 6B In the example of , smart contract 642 is executed in a virtual machine environment, but this is optional.
[0115] exist Figure 6BIn , various aspects of smart contract 642 are stored in Fig. 6A In the transaction data node in the data tree 620 in the block 610 of the blockchain account book. Figure 6B In the example of box 610A, smart contract 642A is stored in data block Tx1 node 634A of data tree 620A, smart contract 642B is stored in Tx2 node 638A, contract account 654 associated with smart contract 642B is stored in Tx3 node 644A, and external account is stored in Tx4 node 648A.
[0116] Storage of smart contracts and transaction data in blockchain ledgers
[0117] To ensure that smart contracts are secure and generate secure data, the blockchain ledger must be kept up to date. For example, if a smart contract is created, the code associated with the smart contract must be stored in a secure manner. Similarly, when the smart contract code executes and generates transaction data, that transaction data must be stored in a secure manner.
[0118] exist Figure 6B In the example of FIG, two possible embodiments for maintaining a blockchain ledger are shown. In one embodiment, untrusted miner nodes ("miners") 680 can be rewarded for solving a cryptographic puzzle and are allowed to append blocks to the blockchain. Alternatively, a group of trusted nodes 690 can be used to append the next block to the blockchain ledger. Each node can execute the smart contract code, and then a winning node can append the next block to the blockchain ledger.
[0119] Although aspects of the technology disclosed herein are similar to smart contracts, in the present technology, the policy of the contract may determine how the blockchain ledger is maintained. For example, the policy may require that the verification or authorization process for blocks on the ledger is determined by centralized control of a cluster of trusted nodes. In this case, such centralized control may be that a trusted node (such as the resource initiator environment 110) is authorized to accept and sign the transaction block to verify it, and there may be no need for miners to verify it.
[0120] Alternatively, the policy may provide for a verification process determined by a decentralized cluster of untrusted nodes. Where the blockchain ledger is distributed to a cluster of untrusted nodes, mining of blocks in the chain may be employed to verify the blockchain ledger.
[0121] Blockchains can use various timestamping schemes, such as proof of work, to serialize changes. Alternative consensus methods, including proof of stake, proof of burn, and proof of research, can also be used to serialize changes.
[0122] As described above, in some examples, miners may validate the blockchain ledger to protect the blockchain. In this case, the miners may collectively agree on a validation solution to be utilized. However, if a small network (e.g., a private network) is utilized, the solution may be a Merkle tree, and mining for a validation solution may not be required. When a transaction block (e.g., a resource data block 142 of a resource data blockchain 140 or a component state data block 152 of a component state data blockchain 150) is created, the block is an unconfirmed and unidentified entity. As part of a recognized "currency," it may be added to the blockchain, and therefore, it involves the concept of a trusted cluster.
[0123] In a trusted cluster, when a data block 142 or 152 is added, each node competes to confirm the next "transaction" (e.g., a new block of resource data or component state data). In one example, the nodes compete to mine and obtain the lowest hash value: min {previous_hash, contents_hash, random_nonce_to_be_guessed}->result. The transaction order is protected by a computational race (trusting that no entity can beat the collective resources of the blockchain network). Mutually authenticated parameters are broadcast and confirmed to prevent duplicate accounting in the blockchain.
[0124] Alternatively, by broadcasting metadata used to authenticate a secure ledger over a restricted network (e.g., just broadcasting a signed hash), blockchain can reduce the risks associated with centrally stored data. Decentralized consensus makes blockchain suitable for recording secure transactions or events. To enable limited access, metadata that may contain information about the data file can also be encrypted so that the metadata does not reveal information about the data file.
[0125] The mining process (such as Figure 4D The verification process 480 of the decentralized blockchain can be used to prevent double-entry, overwrite or replay attacks, while at the same time, based on the "good faith" protocol, the community agrees that no one node can control the entire cluster. A working assumption of mining is that there is an equal distribution of power among honest parties, and these parties take precedence over dishonest or compromised parties. Each node or miner in a decentralized system has a copy of the blockchain. No centralized "official" copy exists, and no user is trusted more than any other user. At 482, the transaction is broadcast to the network using software. At 484, each mining node competes to calculate a verification solution to verify the transaction, and then broadcasts the completed block verification to other nodes at 486. At 488, each node adds the block to its copy of the blockchain using the transaction order established by the winning node.
[0126] Note that in a restricted network, stakeholders who are authorized to inspect or mine data files may or may not have access to the transaction blocks themselves, but still need to possess the key to the metadata (because they are members of the restricted network and are trusted) to obtain the details. Stakeholders can be segmented due to the application of keys to data with different data classifications.
[0127] Decentralized blockchains may also employ ad hoc secure messaging and distributed networking. In this example, the component state data blockchain ledger may differ from a conventional blockchain in that there is a centralized clearing house, such as an authorized central control for verification. In the absence of a mining process, a trusted cluster may be included in a centralized blockchain, rather than a public or democratic blockchain. One way to recognize this is that the decentralized part is as a "democracy of N honest parties" (a multi-party type of honest party is a cryptographic concept), and the centralized part is as a "trusted monarchy for blockchain information correction." For example, it may be beneficial to maintain data files as centrally authorized and kept offline.
[0128] In some examples, access to resource and component state data on the blockchain can be restricted to authorized servers through cryptographic means. Since the resource data or component state data blockchain ledger is distributed, the authorized server can verify it. The public key can be used as an address on the public blockchain ledger.
[0129] Note that the growth of decentralized blockchains may come with the risk of node centralization as the computer resources required to operate on larger data become increasingly expensive.
[0130] The present technology may involve operations that occur in one or more machines. As used herein, a "machine" refers to physical data storage and processing hardware that is programmed with instructions to perform specialized computing operations. It should be understood that two or more different machines may share hardware components. For example, the same integrated circuit may be part of two or more different machines.
[0131] Those of ordinary skill in the art will recognize that a wide variety of methods can be utilized and combined with the present method involving component state data blockchain ledgers. The specific examples of different aspects of component state data blockchain ledgers described herein are illustrative and are not intended to limit the scope of the technology shown.
[0132] Smart Contracts
[0133] Smart contracts are defined by code. As previously described, the terms and conditions of a smart contract can be encoded (e.g., by hashing) into a blockchain ledger. Specifically, a smart contract can be compiled into bytecode (if executed in a virtual machine), which can then be stored in a blockchain ledger, as previously described. Similarly, transaction data executed and generated by a smart contract can be stored in a blockchain ledger in the manner described above.
[0134] Computer architecture using smart contracts and blockchain ledgers
[0135] Notice, FIG. 4A to FIG. 4D at least a portion of processes 400, 410, 420, and 480, Figure 3B The script of resource data block 242, Figure 5 Smart Contract 522, Figure 6B The smart contracts 642 and other processes and operations related to the resource data and component state data blockchain ledger described herein can be performed on one or more servers (such as Figure 8 The computer environment 800 of the embodiment of the present invention is implemented in a computer environment 800 or in the cloud, and data defining the result of the user control input signal converted or interpreted as discussed herein can be transmitted to the user device for display. Alternatively, the component state data blockchain ledger process can be implemented in the client device. In other examples, some operations can be implemented in a set of computing resources (such as a server), while other steps can be implemented in other computing resources (such as a client device).
[0136] It should be understood that the methods described herein can be terminated at any time without being executed in full. As defined below, some or all of the operations and / or substantially equivalent operations of the methods described herein can be performed by executing computer-readable instructions included on a computer storage medium. The term "computer-readable instructions" and variations thereof used in the specification and claims are widely used herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. Computer-readable instructions can be implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, etc.
[0137] It should therefore be understood that the logical operations described herein are implemented as: (1) a series of computer-implemented actions or program modules running on a computing system, and / or (2) interconnected machine logic circuits or circuit modules within a computing system. The implementation is a matter of choice depending on the performance and other requirements of the computing system. Therefore, the logical operations described herein are variously referred to as states, operations, structural devices, actions, or modules. These operations, structural devices, actions, and modules may be implemented in software, firmware, dedicated digital logic, and any combination thereof.
[0138] As described herein, in conjunction with the figures described herein, the operations of the routines (e.g., FIG. 4A to FIG. 4D The processes 400, 410, 420 and 480, Figure 3B The script of resource data block 242, Figure 5 Smart Contract 522, Figure 6B Smart contracts 642) are described herein as being implemented at least in part by applications, components, and / or circuits. Although the following description involves Figure 1 , Figure 3B , FIG. 4A to FIG. 4D , Figure 5 and Figure 6B Components of the routine, but it is understood that the operations of the routine can also be implemented in many other ways. For example, the routine can be at least partially implemented by a computer processor or one or more processors of another computer. In addition, one or more operations of the routine can alternatively or additionally be at least partially implemented by a computer working alone or in combination with other software modules.
[0139] For example, the operation of a routine is described herein as being implemented at least in part by an application, component, and / or circuit, which are generally referred to herein as a module. In some configurations, a module may be a dynamic link library (DLL), a static link library, a function generated by an application programming interface (API), a compiled program, an interpreter, a script, or any other executable instruction set. Data and / or modules (such as the data and modules disclosed herein) may be stored in a data structure in one or more memory components. Data may be retrieved from a data structure by addressing a link or reference to the data structure.
[0140] Although the following description refers to components of the figures discussed above, it is understood that the operation of the routines (e.g., FIG. 4A to FIG. 4D The processes 400, 410, 420 and 480, Figure 3B The script of resource data block 242, Figure 5 Smart Contract 522, Figure 6BThe smart contract 642 of the present invention may also be implemented in many other ways. For example, the routine may be implemented at least in part by a processor of another remote computer or a local computer or circuit. In addition, one or more operations of the routine may alternatively or additionally be implemented at least in part by a chipset working alone or in combination with other software modules. Any service, circuit or application suitable for providing the technology disclosed herein may be used in the operations described herein.
[0141] Figure 7 A computer (such as devices 110 and 120A-C ( Figure 1 )) for other details of the example computer architecture 700. Thus, Figure 7 The computer architecture 700 shown shows the architecture of a server computer, a mobile phone, a PDA, a smart phone, a desktop computer, a netbook computer, a tablet computer, a car computer, a game console, and / or a portable computer. The computer architecture 700 can be used to perform any aspect of the software components presented herein.
[0142] Figure 7 The illustrated computer architecture 700 includes a central processing unit 702 ("CPU"), a system memory 704 (including random access memory 706 ("RAM") and read-only memory ("ROM") 708), and a system bus 710 that couples the memory 704 to the CPU 702. A basic input / output system containing basic routines that help to transfer information between sub-elements within the computer architecture 700 (such as during startup) is stored in the ROM 708. The computer architecture 700 also includes a mass storage device 712 for storing an operating system 707, data (such as a copy of the resource data blockchain data 720 or the component state data blockchain data 722), and one or more applications.
[0143] The mass storage device 712 is connected to the CPU 702 through a mass storage controller (not shown) connected to the bus 710. The mass storage device 712 and its associated computer-readable media provide non-volatile storage for the computer architecture 700. Although the description of computer-readable media contained herein refers to mass storage devices (such as solid-state drives, hard disks, or CD-ROM drives), those skilled in the art will understand that computer-readable media can be any available computer storage media or communication media that can be accessed by the computer architecture 700.
[0144] Communication media includes computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transmission mechanism, and includes any delivery medium. The term "modulated data signal" refers to a signal that changes or sets one or more of its characteristics in a manner that encodes the information in the signal. By way of example and not limitation, communication media include wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
[0145] By way of example and not limitation, computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. For example, computer media include, but are not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state storage technology, CD-ROM, digital versatile disk ("DVD"), HD-DVD, BLU-RAY or other optical storage, cassettes, magnetic tape, disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and can be accessed by the computer architecture 700. For the purposes of the claims, the phrases "computer storage medium", "computer readable storage medium" and variations thereof do not by themselves include waves, signals and / or other transient and / or intangible communication media.
[0146] According to various configurations, the computer architecture 700 can operate in a networked environment using logical connections to remote computers through the network 756 and / or another network (not shown). The computer architecture 700 can be connected to the network 756 through a network interface unit 714 connected to the bus 710. It should be understood that the network interface unit 714 can also be used to connect to other types of networks and remote computer systems. The computer architecture 700 can also include an input / output controller 716 for receiving and processing input from many other devices, including a keyboard, mouse, game controller, TV remote control, or electronic pen ( Figure 7 Similarly, the input / output controller 716 may provide output to a display screen, a printer, or other type of output device ( Figure 7 (not shown in the figure).
[0147] It should be understood that the software components described herein, when loaded into the CPU 702 and executed, can transform the CPU 702 and the entire computer architecture 700 from a general-purpose computing system to a special-purpose computing system, which is customized to facilitate the implementation of the functions proposed herein. The CPU 702 can be composed of any number of transistors or other discrete circuit elements, which can present any number of states individually or collectively. More specifically, in response to the executable instructions contained in the software modules disclosed herein, the CPU 702 can operate as a finite state machine. These computer executable instructions can transform the CPU 702 by specifying how the CPU 702 transitions between states, thereby transforming the transistors or other discrete hardware elements that constitute the CPU 702.
[0148] Encoding the software modules proposed herein may also transform the physical structure of the computer-readable medium proposed herein. In different implementations of this specification, the specific transformation of the physical structure may depend on various factors. Examples of such factors may include, but are not limited to: the technology used to implement the computer-readable medium, whether the computer-readable medium is characterized as primary storage or auxiliary storage, and the like. For example, if the computer-readable medium is implemented as a semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable medium by transforming the physical state of the semiconductor memory. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements that constitute the semiconductor memory. The software may also transform the physical state of such components in order to store data thereon.
[0149] As another example, magnetic or optical technology can be used to implement the computer-readable medium disclosed herein. In such an implementation, when the software is encoded therein, the software presented herein can transform the physical state of the magnetic or optical medium. These transformations can include changing the magnetic properties of a specific location in a given magnetic medium. These transformations can also include changing the physical characteristics or properties of a specific location in a given optical medium, and then changing the optical properties of those locations. Without departing from the scope and spirit of this specification, other transformations of physical media are possible, and the aforementioned examples are provided only for the convenience of this discussion.
[0150] In view of the above, it should be understood that many types of physical transformations occur in computer architecture 700 for the purpose of storing and executing the software components presented herein. It should also be understood that computer architecture 700 may include other types of computing devices, including handheld computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that computer architecture 700 may not include Figure 7 All components shown can be included in Figure 7Other components not explicitly shown in the drawings or may be used in conjunction with Figure 7 The architecture shown is a completely different architecture.
[0151] Figure 8 An illustrative distributed computing environment 800 is depicted that is capable of executing the software components described herein against a component state data blockchain ledger. Figure 8 The distributed computing environment 800 shown can be used to perform many aspects of the software components proposed herein. For example, the distributed computing environment 800 can be used to perform one or more aspects of the software components described herein. Moreover, the distributed computing environment 800 can represent the components of the distributed blockchain platform discussed above.
[0152] According to various implementations, the distributed computing environment 800 includes a computing environment 802 that operates on, communicates with, or is part of a network 804. The network 804 may be or may include the network 556 described above. The network 804 may also include various access networks. One or more client devices 806A to 806N (hereinafter collectively and / or generally referred to as "clients 806") may communicate with each other via the network 804 and / or other connections ( Figure 8 802). In one illustrated configuration, the client 806 includes: a computing device 806A, such as a laptop, desktop computer, or other computing device; a tablet or tablet computing device ("tablet computing device") 806B; a mobile computing device 806C, such as a mobile phone, smart phone, car computer, or other mobile computing device; a server computer 806D; and / or other devices 806N, which may include a hardware security module. It should be understood that any number of devices 806 can communicate with the computing environment 802. Reference herein to Figure 7 and Figure 8 Two example computing architectures are shown and described for device 806. It should be understood that the illustrated device 806 and the computing architectures shown and described herein are exemplary only and should not be construed as limiting in any way.
[0153] In the configuration shown, the computing environment 802 includes an application server 808, a data store 810, and one or more network interfaces 812. According to various implementations, the functionality of the application server 808 may be provided by one or more server computers that execute as part of the network 804 or in communication with the network 804. The application server 808 may host various services, virtual machines, portals, and / or other resources. In the configuration shown, the application server 808 hosts one or more virtual machines 814, which are used to host applications or other functions. According to various implementations, the virtual machine 814 hosts one or more applications and / or software modules for data management blockchain ledgers. It should be understood that this configuration is illustrative only and should not be interpreted as limiting in any way.
[0154] According to various implementations, the application server 808 also includes one or more resource data management services 820 and one or more blockchain services 822. The resource data management service 820 may include a resource data blockchain (such as Figure 1 The component state data management service 823 may include services for managing component state data blockchains (such as Figure 1 Blockchain services 822 may include services for participating in the management of one or more blockchains (such as by creating genesis blocks, resource data, or component state data blocks) and performing validation.
[0155] like Figure 8 As shown, the application server 808 may also host other services, applications, portals, and / or other resources ("other resources") 824. The other resources 824 may include, but are not limited to, data encryption, data sharing, or any other functionality.
[0156] As described above, the computing environment 802 may include a data store 810. According to various implementations, the functionality of the data store 810 is provided by one or more databases or data stores operating on or in communication with the network 804. The functionality of the data store 810 may also be provided by one or more server computers configured to host data for the computing environment 802. The data store 810 may include, host, or provide one or more real or virtual data warehouses 826A to 826N (hereinafter collectively and / or generally referred to as "data warehouses 826"). The data warehouse 826 is configured to host data and / or other data used or created by the application server 808. Various aspects of the data warehouse 826 may be associated with a service for a component state data blockchain. Although in Figure 8Not shown, the data warehouse 826 may also host or store web page documents, term documents, presentation documents, data structures, algorithms executed by the recommendation engine, and / or other data utilized by any application or another module.
[0157] The computing environment 802 may communicate with or be accessed by a network interface 812. The network interface 812 may include various types of network hardware and software for supporting communications between two or more computing devices, including, but not limited to, the client 806 and the application server 808. It should be appreciated that the network interface 812 may also be used to connect to other types of networks and / or computer systems.
[0158] It should be understood that the distributed computing environment 800 described herein can provide any aspect of the software elements described herein with any number of virtual computing resources and / or other distributed computing functions that can be configured to perform any aspect of the software components disclosed herein. According to various implementations of the concepts and technologies disclosed herein, the distributed computing environment 800 can use device 806 to provide the software functions described herein as a service to the client. It should be understood that the device 806 may include a real or virtual machine, including but not limited to: a server computer, a web server, a personal computer, a mobile computing device, a smart phone, and / or other devices that may include a user input device. In this way, various configurations of the concepts and technologies disclosed herein enable any device configured to access the distributed computing environment 800 to utilize the functions described herein to create and support component state data blockchain ledgers, as well as other aspects.
[0159] Now turn to Fig. 9 , an illustrative computing device architecture 900 of a computing device capable of executing various software components is described herein for a component state data blockchain ledger. The computing device architecture 900 is applicable to computing devices that can manage component state data blockchain ledgers. In some configurations, computing devices include, but are not limited to: mobile phones, vehicle computers, tablet devices, tablet devices, portable video game devices, traditional desktop computers, portable computers (e.g., laptops, notebooks, ultraportable devices, and netbooks), server computers, game consoles, and other computer systems. The computing device architecture 900 can be applied to Figure 1 The resource initiator environment 110, client / servers 120A-C, and blockchain platform 130 are shown as well as Figure 8 Computing devices 806A-N are shown.
[0160] Fig. 9The computing device architecture 900 shown includes a processor 902, a memory component 904, a network connection component 906, a sensor component 908, an input / output component 910, and a power supply component 912. In the configuration shown, the processor 902 is in communication with the memory component 904, the network connection component 906, the sensor component 908, the input / output ("I / O") component 910, and the power supply component 912. Fig. 9 No connections are shown between the various components shown, but these components can interact to perform device functions. In some configurations, the components are arranged to communicate via one or more buses (not shown).
[0161] The processor 902 includes a central processing unit ("CPU") configured to process data, execute computer-executable instructions of one or more application programs, and communicate with other components of the computing device architecture 900 to perform the various functions described herein. The processor 902 can be used to execute various aspects of the software components presented herein, particularly those that utilize secure data at least in part.
[0162] In some configurations, the processor 902 includes a graphics processing unit (“GPU”) configured to accelerate operations performed by the CPU, including, but not limited to, operations performed by executing secure computing applications, general scientific and / or engineering computing applications, and graphics-intensive computing applications such as high-resolution video (e.g., 620P, 1080P, and higher resolutions), video games, three-dimensional (“3D”) modeling applications, etc. In some configurations, the processor 902 is configured to communicate with a discrete GPU (not shown). In any case, the CPU and GPU can be configured according to a co-processing CPU / GPU computing model, in which sequential portions of an application are executed on the CPU and computationally intensive portions are accelerated by the GPU.
[0163] In some configurations, the processor 902 is a system on a chip ("SoC"), or is included in a SoC along with one or more other components described herein below. For example, the SoC may include the processor 902, a GPU, one or more network connection components 906, and one or more sensor components 908. In some configurations, the processor 902 is manufactured in part using package-on-package ("PoP") integrated circuit packaging technology. The processor 902 may be a single-core or multi-core processor.
[0164] The processor 902 may be created based on an ARM architecture licensed from ARM HOLDINGS of Cambridge, England. Alternatively, the processor 902 may be created based on an x86 architecture, such as available from INTELCORPORATION of Mountain View, California, and other companies. In some configurations, the processor 902 is a SNAPDRAGON SoC available from QUALCOMM of San Diego, California, a TEGRA SoC available from NVIDIA of Santa Clara, California, a HUMMINGBIRD SoC available from SAMSUNG of Seoul, South Korea, an Open Multimedia Application Platform ("OMAP") SoC available from TEXAS INSTRUMENTS of Dallas, Texas, a customized version of any of the above SoCs, or a proprietary SoC.
[0165] The memory component 904 includes random access memory (“RAM”) 914, read only memory (“ROM”) 916, integrated storage memory (“integrated storage”) 918, and removable storage memory (“removable storage”) 920. In some configurations, the RAM 914 or a portion thereof, the ROM 916 or a portion thereof, and / or some combination of the RAM 914 and ROM 916 are integrated into the processor 902. In some configurations, the ROM 916 is configured to store firmware, an operating system or a portion thereof (e.g., an operating system kernel), and / or a boot loader for loading an operating system kernel from the integrated storage 918 and / or the removable storage 920.
[0166] The integrated storage 918 may include a solid-state memory, a hard disk, or a combination of a solid-state memory and a hard disk. The integrated storage 918 may be soldered or otherwise connected to a logic board to which the processor 902 and other components described herein may also be connected. In this way, the integrated storage 918 is integrated into the computing device. The integrated storage 918 is configured to store an operating system or portions thereof, application programs, data, and other software components described herein.
[0167] Removable storage 920 may include solid-state memory, a hard disk, or a combination of solid-state memory and a hard disk. In some configurations, removable storage 920 is provided to replace integrated storage 918. In other configurations, removable storage 920 is provided as additional optional storage. In some configurations, removable storage 920 is logically combined with integrated storage 918, thereby making the total available storage available as the total combined storage capacity. In some configurations, the total combined capacity of integrated storage 918 and removable storage 920 is shown to the user, rather than the separate storage capacities of integrated storage 918 and removable storage 920.
[0168] Removable storage 920 is configured to be inserted into a removable storage memory slot (not shown) or other mechanism through which removable storage 920 is inserted and secured to facilitate a connection through which removable storage 920 can communicate with other components of the computing device, such as processor 902. Removable storage 920 can be embodied in various memory card formats, including but not limited to PC card, CompactFlash card, memory stick, secure digital ("SD"), miniSD, microSD, universal integrated circuit card ("UICC") (e.g., subscriber identity module ("SIM") or universal SIM ("USIM")), proprietary formats, etc.
[0169] It is understood that one or more memory components 904 can store an operating system. According to various configurations, the operating system can include, but is not limited to, server operating systems such as various forms of UNIX certified by The Open Group and LINUX certified by the Free Software Foundation, or various aspects of a software as a service (SaaS) architecture such as MICROSFT AZURE by Microsoft Corporation of Redmond, Washington or AWS by Amazon.com, Inc. of Seattle, Washington. The operating system can also include WINDOWS MOBILE OS by Microsoft Corporation of Redmond, Washington, WINDOWS PHONE OS by Microsoft Corporation, WINDOWS by Microsoft Corporation, MAC OS or IOS by Apple Inc. of Cupertino, California, and ANDROID OS by Google Inc. of Mountain View, California. Other operating systems are contemplated.
[0170] The network connection component 906 includes a wireless wide area network component ("WWAN component") 922, a wireless local area network component ("WLAN component") 924, and a wireless personal area network component ("WPAN component") 926. The network connection component 906 facilitates communication with a network 956 or another network, which may be a WWAN, a WLAN, or a WPAN. Although only the network 956 is shown, the network connection component 906 may facilitate communication with other networks including Fig. 9 The network connection component 906 can facilitate simultaneous communication with multiple networks including the network 956. For example, the network connection component 906 can facilitate simultaneous communication with multiple networks via one or more of a WWAN, a WLAN, or a WPAN.
[0171] The network 956 may be or may include a WWAN, such as a mobile telecommunication network that uses one or more mobile telecommunication technologies to provide voice and / or data services to computing devices utilizing the computing device architecture 900 via the WWAN component 922. The mobile telecommunication technologies may include, but are not limited to, Global System for Mobile Communications (“GSM”), Code Division Multiple Access (“CDMA”) ONE, CDMA7000, Universal Mobile Telecommunications System (“UMTS”), Long Term Evolution (“LTE”), and Worldwide Interoperability for Microwave Access (“WiMAX”). In addition, the network 956 may utilize various channel access methods (which may or may not be adopted by the above standards), including, but not limited to, Time Division Multiple Access (“TDMA”), Frequency Division Multiple Access (“FDMA”), CDMA, Wideband CDMA (“W-CDMA”), Orthogonal Frequency Division Multiplexing (“OFDM”), Space Division Multiple Access (“SDMA”), etc. Data communications may be provided using General Packet Radio Service ("GPRS"), Enhanced Data Rates for Global Evolution ("EDGE"), the High Speed Packet Access ("HSPA") family of protocols including High Speed Downlink Packet Access ("HSDPA"), Enhanced Uplink ("EUL") or other standards known as High Speed Uplink Packet Access ("HSUPA"), Evolved HSPA ("HSPA+"), LTE, and various other current and future wireless data access standards. Network 956 may be configured to provide voice and / or data communications using any combination of the above technologies. Network 956 may be configured or adapted to provide voice and / or data communications in accordance with future technologies.
[0172] In some configurations, the WWAN component 922 is configured to provide dual multi-mode connectivity to the network 956. For example, the WWAN component 922 can be configured to provide connectivity to a network 956 that provides services via GSM and UMTS technologies or via some other combination of technologies. Alternatively, multiple WWAN components 922 can be utilized to perform such functions, and / or provide additional functionality to support other incompatible technologies (i.e., that cannot be supported by a single WWAN component). The WWAN component 922 can facilitate similar connectivity to multiple networks (e.g., a UMTS network and an LTE network).
[0173] The network 956 may be a WLAN operating in accordance with one or more Institute of Electrical and Electronics Engineers ("IEEE") 802.11 standards, such as IEEE 802.11a, 802.11b, 802.11g, 802.11n, and / or future 802.11 standards (collectively referred to herein as WI-FI). Draft 802.11 standards are also contemplated. In some configurations, the WLAN is implemented using one or more wireless WI-FI access points. In some configurations, one or more wireless WI-FI access points are another computing device with connectivity to a WWAN, which acts as a WI-FI hotspot. The WLAN component 924 is configured to connect to the network 956 via a WI-FI access point. This connection may be protected via various encryption technologies, including, but not limited to, WI-FI Protected Access ("WPA"), WPA2, Wired Equivalent Privacy ("WEP"), and the like.
[0174] The network 956 may be a WPAN operating in accordance with the Infrared Data Association ("IrDA"), Bluetooth, wireless Universal Serial Bus ("USB"), Z-Wave, ZIGBEE, or some other short-range wireless technology. In some configurations, the WPAN component 926 is configured to facilitate communication with other devices (such as peripherals, computers, or other computing devices) via the WPAN.
[0175] The sensor assembly 908 includes a magnetometer 928, an ambient light sensor 930, a proximity sensor 932, an accelerometer 934, a gyroscope 936, and a global positioning system sensor (“GPS sensor”) 938. It is contemplated that other sensors, such as but not limited to temperature sensors or shock detection sensors, may also be included in the computing device architecture 900.
[0176] The I / O component 910 includes a display 940, a touch screen 942, a data I / O interface component ("data I / O") 944, an audio I / O interface component ("audio I / O") 946, a video I / O interface component ("video I / O") 948, and a camera 950. In some configurations, the display 940 and the touch screen 942 are combined. In some configurations, two or more of the data I / O component 944, the audio I / O component 946, and the video I / O component 948 are combined. The I / O component 910 may include a discrete processor configured to support the various interfaces described below, or may include processing functionality built into the processor 902.
[0177] The power supply assembly 912 shown includes one or more batteries 952, which can be connected to a battery gauge 954. The batteries 952 can be rechargeable or disposable. Rechargeable battery types include, but are not limited to: lithium polymer, lithium ion, nickel cadmium, and nickel metal hydride. Each battery 952 can be made of one or more battery cells.
[0178] The power supply component 912 may also include a power connector, which may be combined with one or more of the above-mentioned I / O components 910. The power supply component 912 may be connected to an external power system or charging device via the I / O component.
[0179] Examples of various implementations
[0180] Finally, although various configurations have been described using language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the appended representations is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed subject matter.
[0181] This disclosure is given under the following terms:
[0182] Clause 1. A computer-implemented method for storing component state data of a component of a resource, the method comprising: generating a resource data block corresponding to the resource, wherein the resource data includes one or more links and each link corresponds to one of the one or more components of the resource; generating a first component state data block of a first component of the resource on a blockchain, the first component state data block of the first component including first state data corresponding to the first component; and setting the link corresponding to the first component to reference the first component state data block.
[0183] Clause 2. A computer-implemented method according to Clause 1, wherein: the step of generating a resource data block corresponding to the resource includes generating a resource data block corresponding to the resource by a resource initiator entity; and the step of generating a first component state data block of a first component of the resource on the blockchain includes requiring the first component state data block to be signed by the resource initiator entity.
[0184] Clause 3. A computer-implemented method according to Clause 1, the method comprising: generating a second component status block for a first component, the second component status block for the first component comprising second status data corresponding to the first component; and linking the second component status data block to the first component status data block.
[0185] Clause 4. A computer-implemented method according to Clause 3, wherein: the step of generating a resource data block corresponding to a resource includes generating a resource data block corresponding to the resource by a resource initiator entity; the step of generating a second component status data block of a first component includes generating a second component status block of the first component by a component provider entity; and the method includes requiring the second component status data block to be signed by the resource initiator entity and the component provider entity.
[0186] Clause 5. A computer-implemented method according to Clause 1, the method comprising: generating a second component state data block of the second component on the blockchain, the second component state data block of the second component including first state data of the second component; and setting a link corresponding to the second component in the resource data block to reference the first component state data block of the second component on the blockchain.
[0187] Clause 6. A computer-implemented method according to Clause 1, wherein: the step of generating a resource data block corresponding to a resource (wherein the resource data includes one or more links and each link corresponds to one of one or more components of the resource) includes: generating an empty component status data block for each of the one or more components of the resource, and for each of the one or more components, setting a link corresponding to the component to reference the empty component status data block of the component; and the step of setting a link corresponding to the first component to reference the first component status data block includes linking the first component status data block to the empty component status data block of the first component.
[0188] Clause 7. A computer-implemented method according to clause 1, wherein at least one of the following: the resource includes a system and the first component includes a subcomponent of the system; the resource includes a service and the first component includes a component of the service; the resource includes a database and the first component includes a subset of the data; the resource includes an operating system and the first component includes one of a library, a management subsystem, or a device driver; and the resource includes an application and the first component includes an update to the application.
[0189] Clause 8. A system for storing component state data on a blockchain, the system comprising: one or more processors; and one or more memory devices in communication with the one or more processors, the memory devices having computer-readable instructions stored thereon, the computer-readable instructions, when executed by the processors, causing the processors to perform a method for storing component state data of components of a resource, the method comprising: generating a resource data block corresponding to the resource, wherein the resource data comprises one or more links and each link corresponds to one of the one or more components of the resource; generating a first component state data block of a first component of the resource on the blockchain, the first component state data block of the first component comprising first state data corresponding to the first component; and setting the link corresponding to the first component to reference the first component state data block.
[0190] Clause 9. A system according to clause 8, wherein: the step of generating a resource data block corresponding to the resource includes generating a resource data block corresponding to the resource by a first entity; and the step of generating a first component state data block of a first component of the resource on the blockchain includes requiring the first component state data block to be signed by the first entity.
[0191] Clause 10. According to the system described in Clause 8, the method includes: generating a second component status block for the first component, the second component status block for the first component includes second status data corresponding to the first component; and linking the second component status data block to the first component status data block.
[0192] Clause 11. A system according to Clause 10, wherein: the step of generating a resource data block corresponding to a resource includes generating a resource data block corresponding to the resource by a first entity; the step of generating a second component status data block of a first component includes generating a second component status block of the first component by a second entity; and the method includes requiring the second component status data block to be signed by the first entity and the second entity.
[0193] Clause 12. According to the system described in Clause 8, the method includes: generating a second component state data block of the second component on the blockchain, the second component state data block of the second component including the first state data of the second component; and setting a link corresponding to the second component in the resource data block to reference the first component state data block of the second component on the blockchain.
[0194] Clause 13. A system according to clause 8, wherein: the step of generating a resource data block corresponding to a resource (wherein the resource data includes one or more links and each link corresponds to one of one or more components of the resource) includes: generating an empty component status data block for each of the one or more components of the resource, and for each of the one or more components, setting a link corresponding to the component to reference the empty component status data block of the component; and the step of setting a link corresponding to the first component to reference the first component status data block includes linking the first component status data block to the empty component status data block of the first component.
[0195] Clause 14. A system according to clause 8, wherein the method includes: receiving an audit request for a requested component of a resource; and in response to the audit request: tracing back a component state data block corresponding to the requested component using a link corresponding to the requested component; and returning component state data in a component state data block corresponding to the requested component.
[0196] Clause 15. One or more computer storage media storing computer executable instructions, which when executed by one or more processors cause the processors to perform a method for storing component state data of components of a resource, the method comprising: generating a resource data block corresponding to the resource, wherein the resource data includes one or more links and each link corresponds to one of the one or more components of the resource; generating a first component state data block of a first component of the resource on the blockchain, the first component state data block of the first component including first state data corresponding to the first component; and setting the link corresponding to the first component to reference the first component state data block.
[0197] Clause 16. A computer storage medium according to clause 15, wherein: the step of generating a resource data block corresponding to the resource includes generating a resource data block corresponding to the resource by a first entity; and the step of generating a first component state data block of a first component of the resource on the blockchain includes requiring the first component state data block to be signed by the first entity.
[0198] Clause 17. According to the computer storage medium described in Clause 16, the method includes: generating a second component status block for the first component, the second component status block for the first component includes second status data corresponding to the first component; and linking the second component status data block to the first component status data block.
[0199] Clause 18. A computer storage medium according to clause 15, wherein: the step of generating a resource data block corresponding to a resource includes generating a resource data block corresponding to the resource by a first entity; the step of generating a second component status data block of a first component includes generating a second component status block of the first component by a second entity; and the method includes requiring the second component status data block to be signed by the first entity and the second entity.
[0200] Clause 19. According to the computer storage medium described in Clause 15, the method includes: generating a second component state data block of the second component on the blockchain, the second component state data block of the second component including the first state data of the second component; and setting a link corresponding to the second component in the resource data block to reference the first component state data block of the second component on the blockchain.
[0201] Clause 20. A computer storage medium according to clause 15, wherein: the step of generating a resource data block corresponding to a resource, wherein the resource data includes one or more links and each link corresponds to one of one or more components of the resource, comprises: generating an empty component status data block for each of the one or more components of the resource, and for each of the one or more components, setting a link corresponding to the component to reference the empty component status data block of the component; and the step of setting a link corresponding to a first component to reference the first component status data block comprises linking the first component status data block to the empty component status data block of the first component.
[0202] Although the subject matter presented herein has been described in language specific to computer structural features, methods and transformation acts, specific computing machines and computer-readable media, it should be understood that the subject matter set forth in the appended claims is not necessarily limited to the specific features, acts or media described herein. Rather, the specific features, acts and media are disclosed as example forms of implementing the claimed subject matter.
[0203] The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example configurations and applications shown and described and without departing from the scope of the present disclosure as set forth in the appended claims.
Claims
1. One or more computer storage media having computer executable instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform operations, the operations comprising: A first component state data block of a first component of a resource is stored on a first blockchain, wherein the first component state data block is linked to a resource data block of the resource on a second blockchain; generating a second component state data block of the first component, wherein the second component state data block of the first component includes state data corresponding to the first component; as well as The second component state data block is linked to the first component state data block on the first blockchain.
2. One or more computer storage media according to claim 1, wherein the resource is provided by a resource initiator entity; wherein the second component state data block of the first component is generated by a component provider entity; and wherein, The operations also include: The second component state data block is required to be signed by the resource initiator entity and the component provider entity.
3. The one or more computer storage media of claim 1, wherein the resource comprises a computer hardware system and the first component comprises a hardware component of the computer hardware system. 4 . The one or more computer storage media of claim 1 , wherein the resource comprises an application and the first component comprises an update to the application.
5. The one or more computer storage media of claim 1, wherein the resource comprises an operating system and the first component comprises a library, a management subsystem, or a device driver.
6. The one or more computer storage media of claim 1, wherein the resource comprises a service and the first component comprises a component of the service.
7. A system for tracking resources and their components via blockchain, comprising: one or more processors; and One or more storage devices in communication with the one or more processors, the one or more storage devices storing computer-readable instructions, which, when executed by the one or more processors, cause the one or more processors to perform operations, the operations comprising: A first component state data block of a first component of a resource is stored on a first blockchain, wherein the first component state data block is linked to a resource data block of the resource on a second blockchain; generating a second component state data block of the first component, the second component state data block of the first component including state data corresponding to the first component; and The second component state data block is linked to the first component state data block on the first blockchain.
8. The system of claim 7, wherein the resource is provided by a resource initiator entity; wherein the second component state data block of the first component is generated by a component provider entity; and wherein, The operations also include: The second component state data block is required to be signed by the resource initiator entity and the component provider entity.
9. The system of claim 7, wherein the resource comprises a computer hardware system and the first component comprises a hardware component of the computer hardware system.
10. The system of claim 7, wherein the resource comprises an application and the first component comprises an update to the application.
11. The system of claim 7, wherein the resource comprises an operating system and the first component comprises a library, a management subsystem, or a device driver.
12. The system of claim 7, wherein the resource comprises a service and the first component comprises a component of the service.
13. A method for tracking resources and their components via blockchain, comprising: A first component state data block of a first component of a resource is stored on a first blockchain, wherein the first component state data block is linked to a resource data block of the resource on a second blockchain; generating a second component state data block of the first component, wherein the second component state data block of the first component includes state data corresponding to the first component; as well as The second component state data block is linked to the first component state data block on the first blockchain.
14. The method according to claim 13, wherein the resource is provided by a resource initiator entity; wherein the second component state data block of the first component is generated by a component provider entity; and wherein, The method further comprises: The second component state data block is required to be signed by the resource initiator entity and the component provider entity.
15. The method of claim 13, wherein the resource comprises a computer hardware system and the first component comprises a hardware component of the computer hardware system.
16. The method of claim 13, wherein the resource comprises an application and the first component comprises an update to the application.
17. The method of claim 13, wherein the resource comprises an operating system and the first component comprises a library, a management subsystem, or a device driver.