Cloud computing offers convenient storage and access to data, often referred to as Infrastructure as a Service (IaaS) or Platform as a Service (PaaS). However, while such services offer a cost effective and convenient solution to data storage, security and data privacy are of concern, and prevent certain sectors of the business market from using these cloud storage solutions. These concerns are magnified by increasing news of hackers gaining access to personal data and selling it on a black market.
Over the last decade, new technology has enabled and accelerated movement towards cloud computing. The convergence of digital health innovations, advances in precision medicine, and the acceleration of machine intelligence are expected to usher in a new age in health, one in which everyone has access to the healthcare they need, one that improves the quality of life for everyone, and one in which many diseases will be eliminated.
Data about you (e.g., what you do, how you feel, where you live, what you eat, etc.) is becoming critically important to almost every application and service in the health economy. Consumer products, point-of-care services, and clinical research studies rely on health-related data to understand how to optimize patient care and operations. Health data is required to enable tools such as provider-facing decision support engines, patient engagement applications, wellness coaches, and more. In effect, health data is now the currency driving person-centric health. Corporations want to own this data, researchers need better access to it, and companies are building new solutions every day to collect more of it. As a result, the value of health data is increasing rapidly, and regulatory oversight and policies regarding ownership and control of health data are gaining momentum. The hackers on the dark web know it is valuable too; one in four security breaches are health related, creating a multibillion-dollar black market for health data and a multibillion-dollar economic remediation burden for health providers.
The increasing amount of health data, its critical importance to the industry, and the increasing regulation of its ownership and exchange, are all driving the need for new data management solutions that enable data to be securely owned and shared in a manner that is traceable, compliant with applicable regulations, and revocable. Traditional data management solutions, including both local (i.e., on-premise) and cloud-based solutions, can provide some level of secure and compliant storage, but lack the following requirements:
Data Security: Conventional cloud-based and on-premise data management solutions carry significant security vulnerabilities that hackers can exploit. In particular, managing access to core data assets using role-based access controls carries significant risk of breach as these roles can be mirrored or spoofed. Once a breach occurs, the hacker gains access to all data that is accessible to that role, which can be extensive in the case of administrative roles.
Data Ownership: Both in the United States and globally, new data privacy laws are defining legal ownership of data, and requiring that data owners have functional, rather than theoretical, control over their data assets. Given that health data is comprised of a complex mixture of patient clinical data, provider operational data, consumer lifestyle and Internet-of-things (IoT) data, clinical research data, and public (e.g., environmental and public records) data, establishing ownership of health data can be complex, requiring more robust data management tools than traditional systems can accommodate. In particular, a data management system would ideally include the ability to enforce ownership at highly granular levels (i.e., down to the individual data point level) and based on individual owners as opposed to types of owners (or roles). The system would also ideally support complex ownership structures (e.g., multiple owners of a single data asset, data custodian and escrow models), and be powerful enough to manage all of these requirements at scale (e.g., with terabytes of data).
Data Sharing: To ensure the secure exchange of data, traditional data management systems typically require direct integrations, secure file transfer systems, or similar methods for physically transferring data from one repository to another. These so-called “direct transfer systems” present several challenges. First, it can be difficult and expensive to implement such systems at scale, where thousands of endpoints, or more, need to exchange data. Second, if the data owner only has direct control over the “transfer from” repository and has no control of the “transfer to” repository, the act of transferring data will effectively cause the data owner to lose functional control over their data, including visibility into any changes to or downstream sharing of that data. This is a significant problem for data exchange systems needing to maintain compliance with data privacy laws.
To address the above challenges and limitations, the present embodiments include methods for consent-based data sharing within a blockchain using smart contracts. Referred to herein as “consent contracts”, these smart contracts enable data ownership at the level of individual and multiple owners. Consent contracts may be advantageously used, for example, by clinical researchers for collaborative research, federated learning across communities of anonymized contributors, and specific data exchange between stakeholders in a clinical study. The present embodiments also include a secure adaptive data storage platform with which the blockchain and consent contracts can be implemented. This secure adaptive data storage platform enables health-related organizations (e.g., providers, payers, technology service providers, and health information exchanges) to provide efficient and patient-centric care by making health data available to analytical tools and services, and by accessing new data sources that drive additional insight and value. With this platform, organizations, public agencies, researchers, and individuals can actively connect with each other throughout the world to form partnerships and relationships based on the secure and compliant exchange of data.
An owner consent contract is one type of smart contract in which a data owner grants, to other entities or a group of entities (e.g., individuals, companies, institutions, providers, etc.) having access to the blockchain, read-only access to assets (i.e., data) that are owned by the owner and stored in the blockchain. The consent contract answers the questions: “Which entity, if any, should get access to my data?” and “Which elements of that data should they see?” During a query performed on the blockchain, explicit rights determined by an owner consent contract are enforced in view of implicit rights (i.e., those inherent to the owner).
Each owner consent contract is stored in the blockchain as an asset in a consent block, similar to how each data asset (e.g., medical data, personal health information (PHI), personal identifying information (PII), etc.) in stored in the blockchain in a data block. Each consent block, once added to the blockchain, becomes part of the immutable record of data stored in the blockchain, and thus leaves an auditable trail of which entities currently have and previously had access to which data, when, and under what conditions.
In embodiments, a blockchain access method includes adding to a blockchain a consent block storing an owner consent contract containing one or more access rules that determine access, for an entity other than an owner of the owner consent contract, to a portion of an asset that is stored in another block of the blockchain and owned by the owner. The consent block also stores a hash value determined from at least the owner consent contract and a previous hash value of a block, of the blockchain, that immediately precedes the consent block. The owner consent contract and a position of the consent block in the blockchain are verifiable from the hash value.
In other embodiments, a blockchain access method includes searching, in response to a request from an entity, a blockchain formed from a series of blocks, each of the blocks storing an asset and having an owner. The searching identifies at least one owner consent contract containing one or more access rules that determine access for the entity to a portion of an asset that is stored in another block of the blockchain and owned by the owner of the at least one owner consent contract. The blockchain access method also includes querying the blockchain, based on the identified one or more access rules, to obtain a plurality of allowed blocks, of the blockchain, containing assets that the entity may access. Each allowed block has an owner different from the entity. The blockchain access method also includes retrieving, for each of the allowed blocks, a portion of the asset stored therein. The portion of the asset may consist of the entire asset.
Identical copies of the blockchain 100 may be stored on multiple computing nodes that cooperate as a peer-to-peer distributed computing network to implement the blockchain 100 as one type of distributed ledger. In this case, the nodes cooperate to add new blocks 102 to the blockchain 100 in a decentralized manner (i.e., without a central authority or trusted third party). Specifically, a consensus protocol may be implemented to validate data to be appended to the blockchain 100. Once validated by a node, the node broadcasts the validated data to all other nodes, which then update their local copy of the blockchain 100 by appending the validated data to the blockchain 100 as a new block 102. Validation may be implemented via proof-of-work, proof-of-stake, modified proof-of-stake, or another type of consensus protocol. Once a block 102 is added to the blockchain 100, it can only be modified via collusion of a majority of the nodes (i.e., a 51% attack). Since such collusion is considered highly unlikely, the blockchain 100 is secure by design.
The blockchain 100 is therefore similar to many blockchain-based cryptocurrencies (e.g., Bitcoin, Ethereum, etc.) that process and store data related to financial transactions. However, the blockchain 100 (specifically, the asset 106 stored in each block 102) may store any type of data without departing from the scope hereof. Advantageously, data stored in the blockchain 100 is essentially immutable, and thus can be readily verified during an audit. In the following discussion, the asset 106 includes personal health information (PHI) and personal identifying information (PII) that are encrypted. PHI includes any information about health status, provision of health care, and/or payment of health care, and can be linked to a specific individual. Examples of PHI include medical records and laboratory results. PHI may also include PII. Examples of PII include name, social security number, and date-of-birth. However, the asset 106 may store any other type of data without departing from the scope hereof. The asset 106 may alternatively be unencrypted, or a combination of encrypted and unencrypted.
Although not shown in
Advantageously, the current hash values 110 provide an efficient way to identify any change to any data stored in any block 102, thereby ensuring both the integrity of the data stored in the blockchain 100 and the order of the blocks 102 in the blockchain 100. To appreciate how the current hash values 110 enforce data integrity and block order, consider a change made to one or more of the header information 104(i), the asset 106(i), and the previous hash value 108(i) of the block 102(i) (where i is any integer between 1 and n). The change may be detected by rehashing the block 102(i) and comparing the result with the current hash value 110(i) stored in the block 102(i). Alternatively or additionally, the rehash may be compared to the previous hash value 108(i+1) stored in the subsequent block 102(i+1). Due to the change, the rehash value will not equal the current hash value 110(i) and the previous hash value 108(i+1). These unequal hash values can be used to identify an attempt to alter the block 102(i). Assuming no entity controls a majority of the voting power (i.e., no collusion), such attempts at modifying any data anywhere in the blockchain 100 will be rejected due to the consensus protocols described above.
Accordingly, the blockchain 100 may be verified via two steps. First, for each block 102(i), a rehash of the header information 104(i), asset 106(i), and previous hash value 108(i) may be compared to the current hash value 110(i) to ensure that the rehash equals the current hash value 110(i). This first step authenticates the data stored within each block 102. Second, for each block 102(i), the previous hash value 108(i) may be compared to the current hash value 110(i−1) of the previous block 102(i−1) to ensure that these values are equal. This second step authenticates the order of the blocks 102. Verification of the blockchain 100 may proceed “backwards”, i.e., sequentially verifying each block 102 starting from the most-recent block 102(n) and ending at the origin block 102(0). Alternatively, verification may proceed “forwards”, i.e., sequentially verifying each block 102 starting from the origin block 102(0) and ending with the most-recent block 102(n). Validation may occur periodically (e.g., once every hour or day), in response to one or more new blocks 102 being added to the blockchain 100, or according to a different schedule, different triggering events, or a combination thereof. For the origin block 102(0), the previous hash value 108(0) may be set to an arbitrarily-chosen value.
In
For clarity in
The header information 104 may also include an owner ID 208 that stores information identifying one or more entities (e.g., individuals, jurisdictions, companies, etc.) that own the asset 106, and thus control access to the asset 106. The owner ID 208 may be, for example, one or more publicly available address strings that uniquely identify the corresponding one or more entities that own the data block 202. The header information 104 may also include a voter ID 210 that stores information identifying the one node of the distributed computing network that first verified the data block 202. The voter ID 210 may be a publicly available address string that uniquely identifies the one node.
The header information 104 may also include a signature 212 that is formed when the owner of the data block 202 cryptographically signs the current hash 110 with a private key (e.g., from a RSA key pair). Advantageously, the signature 212 allows an entity to verify the integrity of the asset 106 (i.e., that the asset 106 has not been altered since it was added to the blockchain 100) and the owner of the asset 106. Specifically, the entity can use the owner's public key to “unlock” the signature 212 and compare the result to a rehash of the data block 202 (i.e., a rehash of the header information 104 and asset 106). If these values agree, both the integrity of the asset 106 and the owner are verified. However, if these values do not agree, then the source of the public key may not be the true owner of the block, or the asset 106 may have been altered subsequent to its addition to the blockchain 100.
The header information 104 may also include an asset ID 214 that stores information identifying the asset 106. Since the asset 106 is essentially immutable, any change to the asset 106 is implemented by adding the changed asset 106 to the blockchain 100 in a new data block 202. For example, consider a first data block 202(i) with a first asset 106(i). The owner then changes the first asset 106(i) into a second asset 106(j) that is stored in a subsequent second data block 202(j). Both the first and second data blocks store the same asset ID 214, indicating that the second data block 202(j) replaces the first data block 202(i). Thus, the second asset 106(j) is essentially a newer version of the first asset 106(i). When retrieving the asset 106 from the blockchain 100, only the latest version (i.e., most-recent) of the asset 106 is returned.
The blockchain 100 may be implemented as a database whose records correspond to the blocks 102. Since the asset 106 may be stored in different formats, the database may be a document-oriented database (e.g., MongoDB) or another type of NoSQL database. Alternatively, the database may be a relational database in which the asset 106 is represented in table form. In any case, implementing the blockchain 100 in a database advantageously allows the blocks 102 to be searched and retrieved with faster-than-linear time scaling.
When the blockchain 100 is implemented as a database, the blocks 102 may be advantageously accessed using database query techniques and commands known in the art. Any of the data stored in the block header 104 may be used, as part of a query, to develop logical statements that define a set of one or more selection criteria. A database management system (DBMS) executes the query to identify which of the blocks 102 meet the selection criteria. Specifically, the DBMS may access each block 102(i) sequentially (e.g., starting from the origin block 102(0) and ending at the most-recent block 102(n)) to determine whether the block 102(i) meets the selection criteria. Blocks 102 identified as meeting the selection criteria are grouped into a result set. Each block 102 in the result set may then be accessed to retrieve a copy of its corresponding asset 106.
The owner consent contract 300 may also include timing rules 306 that determine when the owner consent 300 is active. The timing rule 306 may include an expiration date such that access granted by the owner consent contract 300 ceases after the expiration date. The timing rules may also include an expiration time such that the owner consent contract 300 ceases after the expiration time on the expiration date. The timing rules 306 may include a future start date (and optional future start time) after which the owner consent contract 300 takes effect. When the timing rules 306 include both start and expiration dates, the owner consent contract 300 will only be active during the time window bounded by the start and expiration dates (assuming the expiration date comes after the start date).
The owner consent contract 300 stores one or more owner-specified access rules 304 in the form of commands (i.e., machine-readable instructions) that add to and/or modify the selection criteria of a query that is executed on the blockchain 100. In one example of their use, the blocks 102 of the blockchain 100 are sequentially accessed, in response to a query, to identify all relevant owner consent contracts 300 stored in the blockchain 100. In this first pass through the blocks 102, only the owner consent blocks 302 are accessed (i.e., the data blocks 202 are ignored). The access rules 304 from these owner consent contracts 300 are combined with the selection criteria defined by the query to create an augmented set of selection criteria. For example, the owner-specified access rules may be joined (e.g., conjunctively or disjunctively) with the query selection criteria to form the augmented selection criteria. The blocks 102 are then accessed a second time to create a result set of data blocks 202 that meet the augmented selection criteria. The asset 106 of each data block 202 in the result set may then be accessed and retrieved.
In the third line of the one-to-one consent contract 400, the keyword when is followed by a logical statement that must be satisfied for access to be granted. In the example of
Alternatively, the logical statement may include one or more types of assets. For example, the one-to-one consent contract 400 may include a statement when asset.test_type=attribute_value. In this case, when the data 202 includes an attribute 216 named test_type, the value stored therein is checked to see if it equals attribute_value. If so, access to the data 206 in the data block 202 is granted. If not, or if there is no attribute 216 with the name test_type, then access to the data block 202 is not granted. Many co-owned data blocks 202 may store the value attribute_value in the attribute named test_type, but with different asset IDs 214. In this case, the different asset IDs may indicate that the patient had the same test performed several times. The one-to-one consent contract 400 may grant access to all of these data blocks 102 without regard to the asset ID 214. Alternatively, the logical statement may combine requirements for asset.test_type and asset.identifier to limit access to only some (e.g., one) of the data blocks 102 in which the attribute named test_type stores the value attribute_value.
In the fourth line of the one-to-one consent contract 400, the keyword until is followed by a date indicating that the one-to-one consent contract 400 expires as of the specified date and time. The specified date and time is one example of the timing rules 306 shown in
An owner can add to the blockchain 100 several owner consent contracts 300 stored in several corresponding owner consent blocks 302, thereby giving the owner the flexibility to determine who can access the owner's data blocks 202, what parts of the assets 106 they can access, and under what conditions. Each owner consent block 302 includes an asset ID 214 with which the owner can update the owner consent contract 300. For example, the owner of the owner consent block 302 may add to the blockchain 100 a new owner consent block 302 with the same asset ID 214 and an owner consent contract 300 with updated access rules 304 (and/or updated timing rules 306). In this case, the updated access rules 304 supersede (i.e., take precedence over) the original access rules 304, thereby allowing the owner to revise the original access rules 304 at any time after they have been added to the blockchain 100. When the blocks 102 of the blockchain 100 are sequentially accessed to identify all relevant owner consent contracts 300, only the most recent owner consent contract 300 with a particular asset ID 214 is used, i.e., all previous owner consent contracts 300 with the same asset ID 214 are ignored, as their corresponding owner-specified access rules 304 have been superseded.
An owner may create several owner consent contracts 300 that work together to determine access granted to one or more entities. Thus, the owner is not limited to issuing only one owner consent contract 300 for a single entity. Rather, the owner can create multiple owner consent contracts 300, each stored in a corresponding owner consent block 302 with a different asset ID 214 and containing access rules 304 for the same entity. In this case, due to the different asset IDs 214, access granted to the entity is determined by all of the access rules 304 stored in all of the consent contracts 300 identifying the entity. As a result, no access rules 304 supersede, or are superseded by, other access rules 304. In this case, the access rules 304 from the several owner consent contracts 300 may be combined (e.g., conjunctively or disjunctively) to determine the access granted to the entity.
In embodiments, a blockchain access method includes adding to a blockchain a consent block storing an owner consent contract containing one or more access rules that determine access, for an entity other than an owner of the owner consent contract, to a portion of an asset that is stored in another block of the blockchain and owned by the owner. The consent block also stores a hash value determined from at least the owner consent contract and a previous hash value of a block, of the blockchain, immediately preceding the consent block. The owner consent contract and a position of the consent block in the blockchain are verifiable from the hash value. The access rules may grant access to the entity to view the portion of the asset. The portion of the asset may consist of either the entire asset or a subset thereof.
In one example of this blockchain access method, the owner consent block 302 of
In some embodiments, the blockchain access method further includes updating the owner consent contract by subsequently adding to the blockchain a second consent block storing: (i) an updated owner consent contract with one or more updated access rules different from the one or more access rules of the owner consent contract, (ii) the asset identifier of the owner consent contract, and (iii) a second hash value determined from at least the updated owner consent contract and a second previous hash value of a block, of the blockchain, immediately preceding the second consent block. The updated owner consent contract and a position of the second consent block in the blockchain are verifiable from the second hash value, and the updated access rules supersede the access rules of the owner consent contract. In one example of these embodiments, the blockchain 100 includes a first owner consent block 302 storing an asset ID 214 and an owner consent contract 300 with one or more owner-specified access rules 304. The blockchain 100 may also include a second owner consent block 302, added to the blockchain 100 after the first owner consent block 302, storing an owner consent contract 300 with the same asset ID 214 as the first owner consent block 302. The owner consent contract 300 of the second owner consent block 302 stores different owner-specified access rules 304 than the first owner consent contract 300 of the first consent block 302, and therefore supersedes the owner-specified access rules 304 of the first owner consent block 302.
In another embodiment of the blockchain access method, the one or more access rules specify an asset identifier, wherein the one or more access rules determine access to an asset having the asset identifier. In one example of this embodiment, the one-to-one consent contract 400 of
In another embodiment of the blockchain access method, the one or more access rules specify one or more attributes, of the asset, identifying the portion of the asset to which the access is determined. In one example of this embodiment, the consent contract 400 of
In other embodiments, a blockchain access method includes searching, in response to a request from an entity, a blockchain formed from a series of blocks, each of the blocks storing an asset and having an owner. The searching identifies at least one owner consent contract containing one or more access rules that determine access for the entity to a portion of an asset that is stored in another block of the blockchain and owned by the owner of the at least one owner consent contract. The blockchain access method also includes querying the blockchain, based on the identified one or more access rules, to obtain a plurality of allowed blocks, of the blockchain, containing assets that the entity may access. The blockchain access method also includes retrieving, for each of the allowed blocks, a portion of the asset stored therein. The portion of the asset may consist of either the entire asset or a subset thereof. The owner may be different from the entity. In some embodiments, the blockchain access method further includes outputting the portion of the asset (e.g., after retrieving it from an allowed block).
The one or more access rules of the owner consent contract may include a public identifier that identifies the entity. The at least one consent contract may include an updated owner consent contract containing one or more updated access rules that supersede the one or more access rules. In this case, said querying the blockchain is based on the one or more updated access rules instead of the one or more access rules.
The receipt hash value 740 may be formed by hashing one or more of: the generating consent contract that generated the receipt block 702 (e.g., the owner consent contract 300 of
Secure Adaptive Data Storage Platform
Each node 802 of the platform 800 has software, formed of machine-readable instructions stored in the memory that, when executed by the processor, control the node 802 to implement the functionality described herein. Specifically, each node 802 may include a consensus trust module 804, a data cloaking module 806, and an immutable journal 808 that cooperate to protect data stored within one or more data stores 820. The consensus trust module 804 provides the basis for managing trust across all components of the platform 800. Trust, a central tenant of any secure data system, is managed on a peer-to-peer basis, wherein the nodes 802 collectively manage trust. The nodes 802 are connected peer-to-peer (P2P) using a leaderless gossip-based protocol. All communication for the P2P consensus algorithm occur over this protocol via TCP/IP and/or UDP transports. The platform 800 does not have a central trust management node. Instead, the nodes 802 work concurrently and in competition with one another to validate access to the data stores 820. The immutable journal 808 provides “drill back” technology, with the ability to maintain an associative state between a completed analytic study to the original source data. The immutable journal 808 may be used to provide a proof of derivation for summary analytics.
The data cloaking modules 806 increases security of stored data by breaking received data into shards, wherein each shard is placed into a secure ciphered (e.g., encrypted) container, randomly distributed across data stores 820, and periodically moved between the data stores 820. The nodes 802 thereby cooperate to protect sensitive data sets while providing on-the-fly access to the data.
The immutable journal 808, implemented using the blockchain 100, is distributed across the nodes 802 to provide a secure record of transactions that cannot be altered. Since the immutable journal 808 is distributed across all the nodes 802, the consensus trust module 804 in each node 802 is aware of, and may validate, all data transactions, thereby increasing security of access to data within the data stores 820.
The platform 800 implements a peer-based authentication method to establish an initial trust relationship. The platform 800 also monitors use patterns and excludes nodes 802 that act maliciously.
Once a consensus of trust has been established for an actor 850, the actor 850 sends data 1002 to a node 802(2) of the secure adaptive data storage platform 800. The data cloaking module 806(2) within the node 802(2) creates a cipher stream 1004 (a type of one-time pad) prior to receiving the data 1002. For example, the cipher stream 1004 can be generated from a nonce stream and a cryptographic key 1010. As the data 1002 is received, and prior to storing and/or transmission within the platform 800, the data cloaking module 806(2) ciphers the data 1002 using the cipher stream 1004 to generate cipher data 1006. For example, the data cloaking module 806(2) may exclusive-OR (XOR) the incoming data 1002 with the cipher stream 1004 to form the cipher data 1006. The cipher stream 1004 is used similarly to decipher the cipher data 1006. This approach allows the platform 800 to handle large data sets without the typical time and computational resources normally required for cryptographic functions. This may be referred to as vertical data cloaking. The data cloaking module 806 may implement vertical cloaking using the immutable journal 808 and one or more keys. For example, keys used for cloaking the data 1002 may be a composite of a hash of previous, current, and subsequent blocks of data in the original clear text stream. These keys may be stored within a data rights management layer of the platform 800.
The data cloaking module 806 also implements “horizontal data cloaking” that subdivides the cipher data 1006 into a plurality of subsets that are then shared across multiple nodes 802. As shown in
Sharding is independent of where the shards 1050 are stored. The shards 1050 may be stored within a traditional RDBMS or NoSQL data store, a global content addressable key space as implemented in DHT, or directly in a blockchain.
For each shard 1050 created from the data 1002, a storage manager 1104 of the data cloaking module 806 determines at least one data store 820 for storing the shard, sends that shard to the corresponding node 802, keeping the shards 1050 that are to be stored locally. For each shard 1050, the data cloaking module 806 (either the local module 806 or a receiving module 806) adds a block 904 defining the shard and its storage location to the immutable journal 808. Each block 904 may also identify the source (e.g., the actor 850) and structure (e.g., type of data) of the portion of the data 1002 within the associated shard 1050. As shown in
As described above, the blocks 904 written to the immutable journal 808 in one node 802 are automatically distributed to all of the other nodes 802. Thus, the immutable journal 808 contains immutable information as to the location of each shard 1050. The block 904 within the immutable journal 808 defines the source and structure of data within its corresponding shard 1050, together with the location of the shard 1050 within the platform 800.
Periodically, within each node 802, the storage manager 1104 submits a block 904 containing a proof of maintenance (POM) to the immutable journal 808 for each “local” shard 1050 as evidence of maintenance of the local shard at that node. These POM blocks 904 may be used to determine whether sufficient copies of each shard 1050 are in existence within the platform 800, and thus whether more copies of the shard 1050 should be created.
Periodically, within each node 802, the storage manager 1104 randomly selects and sends one or more locally stored shards 1050 to one or more other nodes 802 for storage, and where the immutable journal 808 indicates that sufficient copies of each moved shard 1050 are stored within the platform 800, deletes the local copy of that shard 1050.
Second, the data cloaking module 806(2) sends a copy of the shard 1050(1) to the node 802(1). The data cloaking module 806(1) generates and stores, within the immutable journal 808(1), a block 904(9) corresponding to the shard 1050(1) stored in the data store 820(1). The data cloaking module 806(2) deletes the shard 1050(1) from the data store 820(2), and generates and stores, within the immutable journal 808(2), a block 904(10) corresponding to the deleted shard 1050(1).
Third, the data cloaking module 806(3) sends a copy of the shard 1050(2) to the node 802(2). The data cloaking module 806(2) generates and stores, within the immutable journal 808(2), a block 904(11) corresponding to the shard 1050(2) stored in the data store 820(2). The data cloaking module 806(3) deletes the shard 1050(2) from the data store 820(3), and generates and stores, within the immutable journal 808(3), a block 904(12) corresponding to the deleted shard 1050(2).
Thus, the shards 1050 periodically move location within the platform 800. Since the shards 1050 are not static and are distributed across more than one data store 820, the “attack profile” for hackers of the stored data is significantly reduced since the data is not in a single location and is constantly moving. This approach also provides “built-in” disaster recovery since the shards 1050 are stored in multiple locations, as shown in
One side effect of this approach is that cloaking (e.g., as illustrated in
The platform 800 may provide data input and access layers supporting several interfaces, including one or more of: FHIR, HL7, XML, EDI, X12, JSON, CSV, XLSX, and so on. The platform 800 may also support multiple transports and/or data sources, including one or more of HTTPS, SFTP, Queue, Stream, IoT, WebSocket, batch, and so on. Data may be received from multiple data sources (e.g., hospitals, labs, patients, radiology, devices, other).
Usage of the layers of the self-aware data element 1500 vary by use-case. The data 1502 may be used by applications and the end user. The ownership information 1504 may be enforced such that only owners can edit, delete, transfer ownership, and write smart contracts to grant permissions to other users. The attributes and permissions 1506, and the metadata 1508, may include data tags (e.g., key/value pairs) that the data owner can apply to help identify commonalities and descriptions (e.g., tagging several data elements with DATA_TYPE=LAB). The metadata 1508 may also be query-able by users.
The immutable journal 808 may be implemented as a “Big-Data”, NoSQL storage-backed blockchain engine. The immutable journal 808 allows analytics to be performed on both the data (e.g., data 1002 of
The immutable journal 808 implements a distributed and permissioned blockchain that uses a consensus and voting algorithm to provide better throughput, as compared to conventional blockchain implementations, for data ingestion, thereby solving the low-throughout of prior-art proof-of-work algorithms.
The immutable journal 808 enforces ownership of the data 1002. Data used for analytics (or transaction) purposes is only available through explicit access of ownership or through explicit access via one or more owner-created consent contracts (e.g., see the owner consent contract 300 of
Consent contracts provide the overall data rights management, enforcement, and security for individual data elements and data collections. Data use permissions, security, and value attributes are embedded in the data object itself. The platform 800 may expose a comprehensive API and management interface to allow data owners to create and manage consent contracts.
The platform 800 may expose verifiable data sets through the consent layer to the ecosystem layer. The consent layer enforces two types of consent: 1) implicit and 2) explicit. Implicit consent is inherent to the self-aware data element 1500 (a.k.a., verifiable transaction). The autonomous data element has one or more owners that provide the accessor the rights to the data. Additionally, the one or more owners may grant explicit consent to their data elements by way of a consent contract. The consent contract defines the rules (and possible time limitations; see timing rules 306 in the consent contract 300 of
The platform 800 provides the ability to identify and protect an individual's identity across multiple repositories. By doing this, the individual can access their information, provide consent for others to see and use their information, and receive notifications when their information is accessed. This data access layer can enable a whole new generation of personal and precision health applications highly tailored to the individual.
The ecosystems layer contains subscription-based solutions and data domains. These solutions may range in complexity from a data processing that manages complex business logic for other applications, to a fully formed front-end UI that provides a full stack application using protocols of the platform 800. The platform 800 provides a visualization and intelligence aggregation capability for users.
The ecosystem creator may define the economic contracts for reselling their applications to other entities without dealing with the issues of platforms, databases, connectivity, etc. and just focus on the business solution they provide. The fee model and business models may vary from application to application as dictated by the ecosystem creator.
The ecosystem may leverage the dynamic definition of data domains, so that consented verified transactions are used. These data elements may be used in a variety of Big Data and Deep Learning algorithms to support the business needs. The ecosystem may use NoSQL and graph databases for data exploration and exploitation.
The immutability of the data 1002 is also enforced. However, there are mechanisms for transferring and updating data after creation, albeit only by the owner. The update and transfer operations against a block (e.g., the data block 202 of
Smart contracts may be written with the intent of creating new data, transferring data, and updating data. Another distinction provided by the platform 800 is the ability for the application to update data without violating immutability. The immutable journal 808 also allows for implicit access and rights to the self-aware data elements 1500 through ownership. The immutable journal 808 does not implement access and rights using a separate table or database, as done in the prior art. Rather, the platform 800 provides access and rights through self-aware data elements 1500. Through the data hiding capabilities of the platform 800, the blockchain 100 is secured through multiple means, thereby keeping the data 1002 safe, immutable, provable, and auditable.
In one embodiment, the platform 800 uses four types of smart contract: (1) Asset Creation: may produce another asset (e.g., data) as part of its execution. For example, the smart contract may add another asset (data) that documents fulfillment of an order (transaction). (2) Asset Transfer: may dictate that the asset identified by the smart contract is to be transferred to another entity. (3) Consent: may return a value to allow the requestor access or not to the asset. (4) General: may run the requested smart contract and perform steps defined in the contract.
The platform 800 may use one of several different modes for invoking the smart contract: (1) On-creation: steps of the smart contract are performed on any new block/data being created. (2) On-demand: the smart contract is invoked upon a user request (against one or many blocks). Smart contacts may use NoSQL database tools, such as TQLFlow and TQL, for on-demand execution. (3) On-event: the smart contract is invoked by an event (e.g., a timer). For example, an escrow smart contract may be invoked when two or more parties have fulfilled their agreed upon actions to release the corresponding asset to the previously agreed upon entity. (4) On-access: the smart contract is invoked when access to the corresponding asset is requested and operates to grant the access to someone other than the owner(s). Reserved specifically for consent contracts.
By default, the immutable journal 808 stores assets (e.g., data 1002 in
When the immutable journal 808 is implemented as a NoSQL engine, the ability to horizontally scale storage and query performance is close to a NoSQL engine. The protocol used by the immutable journal 808 does add necessary overhead for block creation and management while managing verifiable data sets. However, the tradeoff is the ability to scale out to tera- or peta-bytes of data. Scaling within prior-art blockchain implementations has already experienced issues.
With the features of a NoSQL engine and unstructured data (or semi- to fully-structured data) the ability for full normalization is not necessary. Schema-on-read is used to apply additional structure or relationship upon the query (or read) of the data. This eliminates the costly need of Extract-Transfer-Load (ETL) or structuring data for analytics (and the costly steps of restructuring data when the requirements of the analytics change). It is here that the immutable journal 808 may seamlessly integrate the data of a chain(s) into a graph for the purposes of expanding the analytic capability of the data.
Various protocols have been and are being developed which have distinctions that are advantageous to the use-case or problem set at hand and then there are some features that are detractors. The immutable journal 808 was created to address the needs of healthcare and data security while leveraging the benefits of blockchain and Big Data analytics. The immutable journal 808 unlocks the data in ways that traditional blockchain and databases cannot achieve.
Advantageously, the platform 800 unites disparate structured and unstructured data sets from different vendors in one view. The platform 800 may thereby connect and safely use unlimited data sources, such as one or more of: EMR, revenue cycle, Facebook, demographics and more.
The connect module 1606 provides connectivity to other sources and consumers of information. This connectivity ranges from a simple integration with a legacy relational database, up to cloud-scale interactions supporting medical field research across a global network of measurement devices (e.g., a global wearable device info-grid).
As shown, the connect module 1606 supports four key types of integration: clinical, administrative, social, and personal. Thus, the platform 800 supports deep integration and analytics with clinical systems, and the ability to support the diversity and depth of data inherent in these systems. The platform 800 also supports connectivity and interoperability with key administrative systems that process and manage the “back office” of providers and payers, reducing uncollectables and improving profitability of providers. The platform 800 also supports information streams from popular social media (e.g., Twitter, Facebook, etc.), as well as personal connectivity into the growing swarm of wearable/embeddable health technology already available in the market place.
The insight module 1706 uses one or more of the consensus trust module 804, data cloaking module 806, and immutable journal 808 to retrieve data from the platform 800 and to generate the graph 1708 containing that data. The insight module 1706 may include machine-learning algorithms that operate at a cloud scale and with transactional speed. It is known that looking at a slice of data without context limits insight into that data, which is akin to seeing only the dots on a canvas. The insight module 1706 generates the graph 1708 by adding data sources and using a variety of analytic techniques to provide a richer, more complete, and contextualized image of that data.
The insight module 1706 provides the basis of the analytics provided by the platform 800. The insight module 1706 is designed to process streams of information, setting the stage for rapid adoption of digital health. A Distributed Commit Log (DCL) underlies the foundation for the Insight log. The insight module 1706 allows the platform 800 to horizontally scale the data rapidly collected by the connect module 1606 of
The insight module 1706 operates in each node 802 to provide a real time distributed computation “engine.” Any number of transformational grammars may be constructed on the fly and applied in parallel to these data streams, to create derivative streams that provide continuous insight (analytic answers) to multiple simultaneous downstream applications and network services.
In one example of operation, consider the following problem: for a large population of individuals use some form of wearable device (e.g., a fitness tracker) that collects heart and respiration information, collect and analyze the data to provide care for those individuals. The solution can be realized by the platform 800, where the connect module 1606 is used to receive a continuous high-velocity stream of information from the wearable devices, and where the insight module 1706 analyzes that data to generate one or more graphs 1708 that may be pushed to downstream constituents, where the stream of analytic recommendations contained within the graphs 1708 may be subsequently used to provide “just-in-time” care of the individuals through the most cost-effective delivery means available.
The insight module 1706 may be based on a “Schema-on-Read” design, and highly leverages graph theory as its underlying data access layer. This coupling provides a number of advantages over prior art relational database oriented approaches that spend a lot of time and resources on defining a priori logical and physical schema to handle a finite set of business use cases. While this approach has traditionally worked well, it does not meet the demands of big and sparse data, and thereby limits the ability to distribute intelligence, insight and decision making across the cloud.
The platform 800 uses graph theory to support the distribution of information across a dynamic computing technology, while supporting a dynamic working set of information. The traditional schema of prior-art database solutions is meaningless within the platform 800. The platform 800 uses a set of dynamic data structures that are more readily adaptable to shifting business needs, thereby cutting costs in data modeling and database design. For example, health information is both sparse and dynamic. A health record for one individual may have a very different set of attributes as compared to a health record for another individual. Further, each health record changes over time, both as each individual's needs change and as healthcare itself changes. Prior-art relational models prove to be a challenging approach when dealing such “sparse and dirty data.”
Within the platform 800, the insight module 1706 creates the graph 1708 formed of interconnected “nodes”, where nodes represent data (e.g., patients, health provider encounters, drugs, prescriptions, procedures, etc.) and the interconnections between the nodes represent relationships (e.g., patient “Fred” is prescribed Lisinopril). Both nodes and relationships are dynamic, being created and discarded as data is processed.
Since the insight module 1706 uses the graph 1708 to efficiently manage a complex set of relationships between data items, as compared to prior-art relational databases, the platform 800 avoids maintaining and traversing “join tables” (a standard design approach used to represent relationships in a traditional relational databases) and thereby provides a major performance increase to dramatically expand the types of analysis that be performed. Additionally, by using graph theory, the insight module 1706 processes queries much more efficiently; instead of “joining” the entire data set/table, the insight module 1706 only traverses the relevant sub-graph.
The platform 800 allows insight into data to be converted into one or more actions using prescriptive analytics models that adapt to behavior patterns. The platform 800 allows behavior patterns that are constantly changing in small and large ways to instigate meaningful change. Within the platform 800, intelligent models learn the why, how, when, and where behaviors may change to prompt optimal engagement.
First, the action 1808 may provide a wide variety of traditional key performance indicators (KPIs), for example to solve a variety of asset utilization problems. While other systems may provide similar capability, the platform 800 and engage module 1806 also provide a dynamic environment to apply a variety of “templates” for the creation of various predicative models including decision trees, logistic regression, neural networks, K-nearest neighbor, distance functions, Bayesian, and other numerical analysis methods.
Second, the engage module 1806 may integrate with a wide variety of “eventing” platforms (e.g., event calendaring, collaboration, etc.) to allow users to form ad hoc mechanisms to drive behavior of digital health. This mechanism allows the engage module 1806 to create higher level capabilities, allowing providers to subtly shift the demand preference for services towards more cost-efficient provider platforms (e.g., imaging clinics). For example, the platform 800 and engage module 1806 may “sense” the preferred mode of dialog with a particular patient (e.g., email, live person, social media messaging, etc.), and present back through the preferred mode a set of cost-effective options for elective diagnostic imaging.
Third, the engage module 1806 uses the immutable journal 808 as an underlying security mechanism. By creating a set of one-way hashes that authenticate back to common healthcare transactions (e.g., office consultation) and recording them within the immutable journal 808, the platform 800 creates a foundation for an entirely new ecosystem for value-based care. This model may have certain advantages:
Adoption Acceleration—New types of services, such as telemedicine, could be more readily adopted by providing a built-in platform for provider reimbursement, breaking the current payer choke-hold.
Float—Crypto money allows providers to be paid immediately upon providing service. No more waiting days/weeks/months for payment.
Anonymity—Just like BitCoin, the patient-provider relationship remains completely anonymous.
Applications
Although applications are not part of the internals of the verified data set (VDS), they are the main consumer of those VDSs. Application developers may build directly on the platform 800 using a variety of protocols (e.g., web services, streaming data transfer, bulk flat-file ingestion, etc.). Ecosystems have a distinct use-case as previously discussed. The application stack may even be deployed and managed within the platform 800. The applications may make direct use of the VDSs and/or access ecosystems for data that enhances and supports their applications.
Application developers may leverage the platform-as-a-service and gain all the functionality described so far with little knowledge of databases, security, access or blockchain. In fact, armed with the knowledge of REST, JSON, and Boolean logic, the application developer may create an application with security, ownership, consent, and analytics without the hassle and worry of those pieces, and thereby focus on delivering the next healthcare changing solution. Where equipped with some knowledge of BI and data analytics, the data becomes alive with even greater power. The application developer may finally leverage data science to unlock its full potential.
Changes may be made in the above methods and systems without departing from the scope hereof. It should thus be noted that the matter contained in the above description or shown in the accompanying drawings should be interpreted as illustrative and not in a limiting sense. The following claims are intended to cover all generic and specific features described herein, as well as all statements of the scope of the present method and system, which, as a matter of language, might be said to fall therebetween.
This application is a continuation-in-part of U.S. patent application Ser. No. 16/031,929, filed Jul. 10, 2018, which claims priority to U.S. Provisional Patent Application No. 62/530,812, titled “Secure Adaptive Data Storage Platform” and filed Jul. 10, 2017. Each of these applications is incorporated herein by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
7693877 | Zasman | Apr 2010 | B1 |
8156163 | Hamilton | Apr 2012 | B1 |
8266433 | Przykucki | Sep 2012 | B1 |
8683170 | Patnaik | Mar 2014 | B1 |
8719923 | Miller | May 2014 | B1 |
9363322 | Anton | Jun 2016 | B1 |
9479585 | Jobanputra | Oct 2016 | B1 |
9516053 | Muddu | Dec 2016 | B1 |
9756552 | Pickover | Sep 2017 | B1 |
9935772 | Madisetti | Apr 2018 | B1 |
9990367 | Bowman | Jun 2018 | B2 |
9996662 | Florissi | Jun 2018 | B1 |
10007809 | Douglis | Jun 2018 | B1 |
10042782 | Struttmann | Aug 2018 | B2 |
10073981 | Arasu | Sep 2018 | B2 |
10075298 | Struttmann | Sep 2018 | B2 |
10091180 | Moritz | Oct 2018 | B1 |
10091295 | Savic | Oct 2018 | B1 |
10102265 | Madisetti et al. | Oct 2018 | B1 |
10122806 | Florissi | Nov 2018 | B1 |
10141050 | Kannan | Nov 2018 | B1 |
10164973 | Prasad | Dec 2018 | B1 |
10210926 | Amiri | Feb 2019 | B1 |
10261958 | Kenthapadi | Apr 2019 | B1 |
10263981 | Prasad | Apr 2019 | B1 |
10268839 | Kenthapadi | Apr 2019 | B1 |
10291696 | Ying | May 2019 | B2 |
10296258 | Richardson | May 2019 | B1 |
10310760 | Dreier | Jun 2019 | B1 |
10348810 | Florissi | Jul 2019 | B1 |
10356052 | Ashley | Jul 2019 | B1 |
10374968 | Duerk | Aug 2019 | B1 |
10396991 | Arasu | Aug 2019 | B2 |
10404787 | Florissi | Sep 2019 | B1 |
10423938 | Gaeta | Sep 2019 | B1 |
10425350 | Florissi | Sep 2019 | B1 |
10430350 | Nimry | Oct 2019 | B1 |
10452444 | Jibaja | Oct 2019 | B1 |
10454677 | Nagelberg | Oct 2019 | B1 |
10460126 | Pead | Oct 2019 | B2 |
10484174 | Bernat | Nov 2019 | B1 |
10484387 | Kenthapadi | Nov 2019 | B1 |
10496330 | Bernat | Dec 2019 | B1 |
10499525 | Singh | Dec 2019 | B1 |
10511659 | Florissi | Dec 2019 | B1 |
10514978 | Lee | Dec 2019 | B1 |
10515317 | Kenthapadi | Dec 2019 | B1 |
10515701 | Aster | Dec 2019 | B1 |
10521151 | Fay | Dec 2019 | B1 |
10521780 | Hopkins, III | Dec 2019 | B1 |
10528488 | Lee | Jan 2020 | B1 |
10541938 | Timmerman | Jan 2020 | B1 |
10545687 | Bernat | Jan 2020 | B1 |
10585733 | Colgrove | Mar 2020 | B1 |
10586062 | Rangan | Mar 2020 | B1 |
10601819 | Prasad | Mar 2020 | B1 |
10608784 | Yanovsky | Mar 2020 | B2 |
10609059 | Apostolopoulos | Mar 2020 | B2 |
10611474 | Kumar | Apr 2020 | B2 |
11228810 | Arazi | Jan 2022 | B1 |
20040205358 | Erickson | Oct 2004 | A1 |
20090113420 | Pawlowski | Apr 2009 | A1 |
20100268692 | Resch | Oct 2010 | A1 |
20100268877 | Resch | Oct 2010 | A1 |
20100268938 | Resch | Oct 2010 | A1 |
20110102546 | Dhuse | May 2011 | A1 |
20110205399 | Gao | Aug 2011 | A1 |
20130080559 | Rao | Mar 2013 | A1 |
20130104251 | Moore | Apr 2013 | A1 |
20140100884 | Hamilton | Apr 2014 | A1 |
20140281550 | Resch | Sep 2014 | A1 |
20150100336 | Ford | Apr 2015 | A1 |
20150163206 | McCarthy | Jun 2015 | A1 |
20150254003 | Lee | Sep 2015 | A1 |
20150310188 | Ford | Oct 2015 | A1 |
20150339486 | Shetye | Nov 2015 | A1 |
20160044092 | Weber | Feb 2016 | A1 |
20160063560 | Hameed | Mar 2016 | A1 |
20160078245 | Amarendran | Mar 2016 | A1 |
20160092476 | Stojanovic | Mar 2016 | A1 |
20160125168 | Aagesen | May 2016 | A1 |
20160253521 | Esmailzadeh | Sep 2016 | A1 |
20160294761 | Hameed | Oct 2016 | A1 |
20160301739 | Thompson | Oct 2016 | A1 |
20160314327 | Butler | Oct 2016 | A1 |
20170041296 | Ford | Feb 2017 | A1 |
20170091659 | Sanchez | Mar 2017 | A1 |
20170091660 | Sanchez | Mar 2017 | A1 |
20170093700 | Gilley | Mar 2017 | A1 |
20170116693 | Rae | Apr 2017 | A1 |
20170177222 | Singh | Jun 2017 | A1 |
20170232300 | Tran | Aug 2017 | A1 |
20170272209 | Yanovsky | Sep 2017 | A1 |
20170286319 | Abbas | Oct 2017 | A1 |
20170364637 | Kshepakaran | Dec 2017 | A1 |
20170364702 | Goldfarb | Dec 2017 | A1 |
20170366395 | Goldfarb | Dec 2017 | A1 |
20170373940 | Shahab | Dec 2017 | A1 |
20170374392 | Hart | Dec 2017 | A1 |
20180005186 | Hunn | Jan 2018 | A1 |
20180018469 | Moss | Jan 2018 | A1 |
20180054490 | Wadhwa | Feb 2018 | A1 |
20180060915 | Liu | Mar 2018 | A1 |
20180074724 | Tremblay | Mar 2018 | A1 |
20180076954 | Mesiano | Mar 2018 | A1 |
20180089278 | Bhattacharjee | Mar 2018 | A1 |
20180095685 | D'Sa | Apr 2018 | A1 |
20180101684 | Murphy | Apr 2018 | A1 |
20180121912 | Morales | May 2018 | A1 |
20180129955 | Saxena | May 2018 | A1 |
20180137512 | Georgiadis | May 2018 | A1 |
20180139278 | Bathen | May 2018 | A1 |
20180165758 | Saxena | Jun 2018 | A1 |
20180176229 | Bathen | Jun 2018 | A1 |
20180182052 | Panagos | Jun 2018 | A1 |
20180183600 | Davis | Jun 2018 | A1 |
20180183606 | High | Jun 2018 | A1 |
20180205546 | Haque | Jul 2018 | A1 |
20180219888 | Apostolopoulos | Aug 2018 | A1 |
20180232413 | Eshwar | Aug 2018 | A1 |
20180232526 | Reid | Aug 2018 | A1 |
20180253464 | Kohli | Sep 2018 | A1 |
20180260125 | Botes | Sep 2018 | A1 |
20180262583 | Primus | Sep 2018 | A1 |
20180285996 | Ma | Oct 2018 | A1 |
20180288154 | Ghazaleh | Oct 2018 | A1 |
20180307859 | LaFever | Oct 2018 | A1 |
20180336552 | Bohli et al. | Nov 2018 | A1 |
20180338001 | Pereira Cabral | Nov 2018 | A1 |
20180341930 | Moir et al. | Nov 2018 | A1 |
20180349508 | Bequet | Dec 2018 | A1 |
20180349990 | Diriye et al. | Dec 2018 | A1 |
20180356989 | Meister | Dec 2018 | A1 |
20180357019 | Karr | Dec 2018 | A1 |
20180359089 | Innes | Dec 2018 | A1 |
20180365309 | Oliner | Dec 2018 | A1 |
20190004888 | Chagam Reddy | Jan 2019 | A1 |
20190005262 | Surla | Jan 2019 | A1 |
20190007206 | Surla | Jan 2019 | A1 |
20190012466 | Ricotta et al. | Jan 2019 | A1 |
20190013934 | Mercuri | Jan 2019 | A1 |
20190018887 | Madisetti et al. | Jan 2019 | A1 |
20190028277 | Jayachandran et al. | Jan 2019 | A1 |
20190036887 | Miller | Jan 2019 | A1 |
20190042407 | Gao | Feb 2019 | A1 |
20190065093 | Karr | Feb 2019 | A1 |
20190065788 | Vijayasankar | Feb 2019 | A1 |
20190073152 | Nagle | Mar 2019 | A1 |
20190073666 | Ortiz | Mar 2019 | A1 |
20190079998 | Rush | Mar 2019 | A1 |
20190087432 | Sion | Mar 2019 | A1 |
20190114302 | Bequet | Apr 2019 | A1 |
20190114334 | Gunther | Apr 2019 | A1 |
20190121673 | Gold | Apr 2019 | A1 |
20190121889 | Gold | Apr 2019 | A1 |
20190129818 | Kannan | May 2019 | A1 |
20190138555 | Bequet | May 2019 | A1 |
20190138638 | Pal | May 2019 | A1 |
20190146998 | Jin | May 2019 | A1 |
20190147092 | Pal | May 2019 | A1 |
20190156363 | Postrel | May 2019 | A1 |
20190171187 | Cella | Jun 2019 | A1 |
20190171365 | Power | Jun 2019 | A1 |
20190172542 | Miladinovic | Jun 2019 | A1 |
20190179564 | Bernat | Jun 2019 | A1 |
20190188046 | Florissi | Jun 2019 | A1 |
20190188411 | Kroutik | Jun 2019 | A1 |
20190196731 | Sapuntzakis | Jun 2019 | A1 |
20190201136 | Shelton, IV | Jul 2019 | A1 |
20190206562 | Shelton, IV | Jul 2019 | A1 |
20190215564 | Webb et al. | Jul 2019 | A1 |
20190238412 | Vohra | Aug 2019 | A1 |
20190238525 | Padmanabhan | Aug 2019 | A1 |
20190251279 | Emberson | Aug 2019 | A1 |
20190253431 | Atanda | Aug 2019 | A1 |
20190268140 | Kandiraju et al. | Aug 2019 | A1 |
20190279135 | Wilkerson | Sep 2019 | A1 |
20190286373 | Karumbunathan | Sep 2019 | A1 |
20190288850 | Beecham | Sep 2019 | A1 |
20190303623 | Reddy | Oct 2019 | A1 |
20190303887 | Wright | Oct 2019 | A1 |
20190318243 | Margaglia | Oct 2019 | A1 |
20190332921 | Rodriguez | Oct 2019 | A1 |
20190340136 | Irwin | Nov 2019 | A1 |
20190354403 | Ayyagari | Nov 2019 | A1 |
20190354708 | Fisher | Nov 2019 | A1 |
20190356471 | Vaughn et al. | Nov 2019 | A1 |
20190356609 | Grunwald | Nov 2019 | A1 |
20190356736 | Narayanaswamy | Nov 2019 | A1 |
20190361626 | East | Nov 2019 | A1 |
20190361697 | Hu | Nov 2019 | A1 |
20190370012 | Sears | Dec 2019 | A1 |
20190370288 | Bequet | Dec 2019 | A1 |
20190384790 | Bequet | Dec 2019 | A1 |
20190386969 | Verzun | Dec 2019 | A1 |
20200019288 | D'Amore | Jan 2020 | A1 |
20200026732 | Bequet | Jan 2020 | A1 |
20200045111 | Kannan | Feb 2020 | A1 |
20200051189 | Williams | Feb 2020 | A1 |
20200065686 | Vega | Feb 2020 | A1 |
20200082361 | Chan | Mar 2020 | A1 |
20200097270 | Bequet | Mar 2020 | A1 |
20200104294 | Alas | Apr 2020 | A1 |
20200106621 | Eshwar | Apr 2020 | A1 |
20200119926 | Buki | Apr 2020 | A1 |
20200162264 | Zamani et al. | May 2020 | A1 |
20200162473 | Mercuri et al. | May 2020 | A1 |
20200250176 | Padmanabhan | Aug 2020 | A1 |
20200250661 | Padmanabhan et al. | Aug 2020 | A1 |
20200250747 | Padmanabhan | Aug 2020 | A1 |
20200358801 | Allouche et al. | Nov 2020 | A1 |
20200389309 | Ricotta | Dec 2020 | A1 |
20200396065 | Gutierrez-Sheris | Dec 2020 | A1 |
20200410461 | Moir et al. | Dec 2020 | A1 |
20210019444 | Miller | Jan 2021 | A1 |
20210390196 | Lavine et al. | Dec 2021 | A1 |
20220058732 | Reses | Feb 2022 | A1 |
Number | Date | Country |
---|---|---|
2020102246 | May 2020 | WO |
Entry |
---|
U.S. Appl. No. 62/470,172, filed Mar. 10, 2017 (Year: 2017). |
U.S. Appl. No. 62/518,071, filed Jun. 12, 2017 (Year: 2017). |
U.S. Appl. No. 62/502,060, filed May 5, 2017, (Year: 2017). |
U.S. Appl. No. 62/374,307, filed Aug. 12, 2016 (Year: 2016). |
U.S. Appl. No. 62/470,172 (Drawings), filed on Mar. 10, 2017 (Year: 2017). |
U.S. Appl. No. 62/518,071 (Drawings), filed on Jun. 12, 2017 (Year: 2017). |
U.S. Appl. No. 62/502,060 (Drawings), filed on May 5, 2017, (Year: 2017). |
U.S. Appl. No. 62/374,307 (Drawings), filed on Aug. 12, 2016 (Year: 2016). |
International Search Report and Written Opinion for International Application No. PCT/US2021/046761; Date of Mailing: Jan. 14, 2022; 11 pages. |
Storj: A Peer-to-Peer Cloud Storage Network by Shawn Wilkinson et al, Dec. 15, 2016 V2.0; https://storj.io/storjv2.pdf; (Year: 2016); 37 pages. |
Written Opinion in International Application No. PCT/US2021/046761; Date of Mailing: Feb. 8, 2023; 7 pages. |
Number | Date | Country | |
---|---|---|---|
20200389309 A1 | Dec 2020 | US |
Number | Date | Country | |
---|---|---|---|
62530812 | Jul 2017 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16031929 | Jul 2018 | US |
Child | 17001262 | US |