US11971874B2ActiveUtilityA1

Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)

81
Assignee: SALESFORCE INCPriority: Jan 31, 2019Filed: Jan 31, 2019Granted: Apr 30, 2024
Est. expiryJan 31, 2039(~12.6 yrs left)· nominal 20-yr term from priority
G06F 16/2379G06F 7/14G06F 16/2365H04L 9/0637H04L 9/50H04L 9/3239H04L 67/10H04L 9/0891H04L 9/3297
81
PatentIndex Score
4
Cited by
274
References
30
Claims

Abstract

Exemplary systems, methods, and apparatuses implement efficient storage and validation of data and metadata within a blockchain using Distributed Ledger Technology (DLT) in conjunction with a cloud based computing environment. Such a system, having at least a processor and a memory therein and executing within a host organization, in which such a system includes: means for operating a blockchain interface to a blockchain on behalf of a plurality of tenants of the host organization, in which each one of the plurality of tenants operate as a participating node with access to the blockchain; receiving a transaction for the blockchain requesting the host organization to update a data record persistently stored on the blockchain, the transaction specifying updated values for one or more of a plurality of data elements of the data record; executing a smart contract to validate the updated values specified by the transaction before permitting the transaction to be added to the blockchain to update the data record on the blockchain with the updated values; and writing the updated values for the data record to the blockchain by adding the transaction to a new block on the blockchain pursuant to successful validation of the updated data values by the smart contract.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method, performed by a system of a host organization, the system having at least a processor and a memory therein, wherein the method comprises:
 operating a blockchain interface to a blockchain on behalf of a plurality of tenants of the host organization of a multi-tenant database system, wherein the host organization operates as a participating node on the blockchain to enable interactions between the host organization and the blockchain and further wherein each one of the plurality of tenants operates as a participating node with access to the blockchain such that a hierarchy of entities within the host organization operates as participating nodes on the blockchain; 
 receiving a transaction for the blockchain, at the host organization, wherein the transaction requests the host organization to update at least a portion of information previously stored to the blockchain, and further wherein the transaction specifies updated values for the information previously stored to the blockchain; 
 executing a smart contract to validate the updated values specified by the transaction before permitting the transaction to be added to the blockchain to update the information previously stored to the blockchain with the updated values; 
 creating, at the host organization, a merged transaction for execution by the blockchain specifying both (i) at least a portion of the information previously stored to the blockchain and additionally (ii) the updated values as specified by the transaction received at the host organization which are to be written to the blockchain together within a single new block of the blockchain, wherein the merged transaction is a merged data object generated using a database system of the host organization prior to writing the updated values to the blockchain; and 
 writing the updated values to the blockchain, via the participating node of the host organization, by the host organization executing the merge transaction to add the updated values together with the at least a portion of the information previously stored to the blockchain to the single new block on the blockchain pursuant to successful validation of the updated values by the smart contract. 
 
     
     
       2. The method of  claim 1 , further comprising:
 performing a data merge operation for a data record persistently stored on the blockchain, wherein the data merge operation comprises: 
 retrieving the data record in its entirety from the blockchain to retrieve all of a plurality of data elements of the data record; 
 merging the validated updated values as specified by the transaction for the blockchain into the plurality of data elements of the data record to form a complete data record having the validated updated values embodied therein; 
 wherein writing the updated values to the blockchain comprises adding the transaction to the single new block on the blockchain by writing the complete data record having the validated updated values embodied therein to the new single block of the blockchain; 
 wherein the complete data record deprecates all prior versions of the data record stored on the blockchain and does not reference any prior version of the data record stored on the blockchain. 
 
     
     
       3. The method of  claim 1 :
 wherein writing the updated values to the blockchain comprises: 
 writing the updated values into the new block on the blockchain with a reference to a prior block on the blockchain; 
 wherein retrieval of a complete and current version of the data record requires any data elements of the stored data record which are not modified by the updated values to be retrieved from the prior block on the blockchain based on the reference and retrieval of the updated values from the new block on the blockchain. 
 
     
     
       4. The method of  claim 1 , further comprising:
 performing a data merge operation and a data serialization operation for the data record persistently stored on the blockchain; 
 wherein the data merge operation comprises (i) retrieving the data record in its entirety from the blockchain and (ii) merging the updated values into the retrieved data record to form a complete data record having the updated values embodied therein; 
 wherein the data serialization operation comprises converting the complete data record formed by the data merge operation and having the updated values embodied therein into a serialized byte stream; and 
 wherein writing the updated values to the blockchain comprises writing the serialized byte stream to the new block on the blockchain. 
 
     
     
       5. The method of  claim 4 , further comprising:
 executing a protobuf generator to convert the complete data record formed by the data merge operation and having the updated values embodied therein into the serialized byte stream. 
 
     
     
       6. The method of  claim 4 , wherein the serialized byte stream forms at least one of:
 a binary format serialized byte stream; 
 a JavaScript Object Notation (JSON) compatible format serialized byte stream; 
 a plain text or American Standard Code for Information Interchange (ASCII) compatible format serialized byte stream; 
 an encrypted serialized byte stream; 
 a protobuffed serialized byte stream; and 
 a hexadecimal format serialized byte stream. 
 
     
     
       7. The method of  claim 1 , further comprising:
 receiving a first transaction for the blockchain requesting the host organization to store the data record on the blockchain as a new stored data record, wherein the new stored data record includes a plurality of data elements embedded therein as specified by the first transaction; and 
 wherein the receiving the transaction for the blockchain comprises receiving a second transaction for the blockchain, wherein the second transaction specifies the updated values for the new stored data record previously transacted onto the blockchain. 
 
     
     
       8. The method of  claim 1 , further comprising:
 receiving a first transaction for the blockchain requesting the host organization to store metadata on the blockchain, the metadata defining a valid format for the data record and a plurality of data elements stored by the data record; 
 wherein receiving the transaction for the blockchain comprises receiving a second transaction for the blockchain, wherein the second transaction specifies the updated values for the stored data record as previously transacted onto the blockchain; and 
 wherein executing the smart contract to validate the updated values specified by the transaction comprises retrieving the metadata from the blockchain stored pursuant to the first transaction and validating the updated values using the retrieved metadata. 
 
     
     
       9. The method of  claim 1 , further comprising:
 rejecting the transaction and prohibiting the updated values from being written to a data record persistently stored to the blockchain upon a failed validation of the updated values specified by the transaction. 
 
     
     
       10. The method of  claim 1 , further comprising:
 determining a transaction type based on the transaction received; 
 identifying the smart contract to be executed based on the determined transaction type; and 
 wherein executing the smart contract to validate the updated values comprises executing the smart contract identified based on the transaction type. 
 
     
     
       11. The method of  claim 10 , wherein executing the smart contract to validate the updated values specified by the transaction comprises:
 retrieving metadata defining a valid format for a data record persistently stored on the blockchain; 
 validating the updated values specified by the transaction using the metadata retrieved; and 
 issuing a successful validation result or a failed validation result based on the validation, wherein the transaction is prohibited from being added to the blockchain pursuant to the failed validation result and wherein the transaction is permitted to be added to the blockchain pursuant to the successful validation result. 
 
     
     
       12. The method of  claim 1 :
 wherein the data record is stored on the blockchain within an asset's payload portion via a CREATE asset command term for the blockchain; and 
 wherein the data record is associated with a transaction type for stored data records which are to be stored in their entirety with any update within a new block of the blockchain deprecating any prior version of the data record. 
 
     
     
       13. The method of  claim 1 :
 wherein the data record is stored on the blockchain within an asset's payload portion via a CREATE asset command term for the blockchain; and 
 wherein the data record is associated with a transaction type for stored data records which are to be stored incrementally; 
 wherein any update to the stored data record writes the updated values specified by the transaction to a new block on the blockchain with a reference to a prior block on the blockchain within which the stored data record was previously stored; and 
 wherein retrieval of the stored data record from the blockchain requires retrieval of the updated values from the new block on the blockchain and retrieval of any remaining values not modified by the updated values from the prior block on the blockchain. 
 
     
     
       14. The method of  claim 1 , further comprising:
 receiving a second transaction for the blockchain requesting the host organization to store a related entity, the related entity to be persistently stored to the blockchain via a second asset separate and distinct from a first asset within which a stored data record is persistently stored on the blockchain; 
 transacting with the blockchain via a CREATE asset transaction to add the second asset to the blockchain and storing the related entity within a payload portion of the second asset; and 
 relating the related entity stored within the second asset to the stored data record within the first asset via a universally unique identifier (UUID) assigned to the related entity. 
 
     
     
       15. The method of  claim 14 , further comprising:
 retrieving the stored data record from the blockchain; 
 updating the stored data record to include the UUID assigned to the related entity; and 
 writing the updated stored data record having the UUID included therein to the blockchain. 
 
     
     
       16. The method of  claim 14 :
 wherein the stored data record comprises a student record having embedded therein via a plurality of data elements at least a student first name, a student last name, and a student ID; 
 wherein the related entity comprises a student transcript; 
 relating the related entity stored within the second asset to the stored data record within the first asset via a universally unique identifier (UUID) assigned to the related entity comprises linking the student transcript with the student record via the UUID assigned to the student transcript; 
 wherein updating the stored data record to include the UUID comprises updating the student record to include the UUID linking the student record with the student transcript; and 
 wherein writing the updated stored data record having the UUID included therein to the blockchain comprises writing the student record to the blockchain having embedded therein the student first name, the student last name, the student ID and the UUID assigned to the student transcript stored on the blockchain via a separate and distinct second asset. 
 
     
     
       17. The method of  claim 1 :
 wherein metadata defining a valid format for the data record is stored on the blockchain within an asset's payload portion via a CREATE asset command term for the blockchain; and 
 wherein the metadata is associated with a transaction type for stored metadata. 
 
     
     
       18. The method of  claim 1 :
 wherein the adding of the transaction is subjected to a consensus protocol by the participating nodes of the blockchain prior to the transaction being accepted as part of a primary chain of the blockchain by the participating nodes of the blockchain. 
 
     
     
       19. The method of  claim 1 :
 wherein metadata is accessible only to one of the plurality of tenants of the host organization having defined and transacted the metadata onto the blockchain; or 
 wherein alternatively the metadata is accessible to all of the plurality of tenants operating as one of the participating nodes with access to the blockchain regardless of which one of the plurality of tenants defined and transacted the metadata onto the blockchain. 
 
     
     
       20. The method of  claim 19 :
 wherein modification of the metadata transacted onto the blockchain is under the exclusive control of the one of the plurality of tenants having transacted the metadata onto the blockchain for persistent storage via the blockchain; 
 wherein a new consensus is required to write changes to the metadata onto the blockchain when the metadata is accessible to any of the plurality of tenants operating as one of the participating nodes with access to the blockchain; and 
 wherein no consensus is required to write changes to the metadata onto the blockchain when the metadata is accessible for exclusive use by only the one of the plurality of tenants having originally transacted the metadata onto the blockchain. 
 
     
     
       21. The method of  claim 1 :
 wherein a blockchain protocol for the blockchain is defined by the host organization and further wherein the host organization permits access to the blockchain for the plurality of tenants of the host organization operating as participating nodes on the blockchain; or alternatively 
 wherein the blockchain protocol for the blockchain is defined by a third party blockchain provider other than the host organization and further wherein the host organization also operates as a participating node on the blockchain via which the host organization has access to the blockchain. 
 
     
     
       22. The method of  claim 1 , further comprising:
 maintaining an index for a plurality of data records persistently stored to the blockchain; 
 wherein the index defines at least a location for each of the plurality of data records persistently stored to the blockchain, the location defining one addressable block of the blockchain from which to retrieve a respective data record persistently stored to the blockchain. 
 
     
     
       23. The method of  claim 22 :
 wherein the index comprises a Merkle Tree compatible index; and 
 wherein the index is persistently stored at the host organization or persistently stored to the blockchain or persistently stored at both the host organization and the blockchain. 
 
     
     
       24. The method of  claim 22 :
 wherein the index defines for each of the plurality of data records persistently stored to the blockchain, both (i) the location for each of the plurality of records persistently stored to the blockchain and (ii) a copy of any contents of the plurality of records persistently stored to the blockchain; and 
 wherein maintaining the index includes writing the updated values for the data record to the index when the updated values for the data record are written to the blockchain pursuant to successful validation of the updated values. 
 
     
     
       25. The method of  claim 24 , further comprising:
 receiving a second transaction requesting retrieval, from the blockchain, of an updated data record previously written to the blockchain; 
 retrieving the updated data record from the index without interacting with the blockchain; and 
 returning the updated data record retrieved from the index responsive to the second transaction requesting the retrieval. 
 
     
     
       26. The method of  claim 22 :
 wherein nodes and leafs of the index are retrievable via full or partial addresses as defined by an addressing structure for the index; 
 wherein the method further comprises maintaining the addressing structure for the index, wherein the addressing structure includes at least: 
 a first portion of the addressing structure defining an application namespace; 
 a second portion of the addressing structure defining an entity type identifier; and 
 a third portion of the addressing structure defining a name for an entity or a data record stored by the blockchain and indexed by the index. 
 
     
     
       27. The method of  claim 26 :
 wherein referencing the index with a fully qualified address will return contents of leaf from the index; and 
 wherein referencing the index with a partial address will return a sub-tree beneath a node of the index matching the partial address, in which the sub-tree includes multiple leafs of the index structured below the node of the index matching the partial address. 
 
     
     
       28. The method of  claim 22 , further comprising:
 receiving multiple subsequent transactions specifying additional updated values for one or more of a plurality of data elements of the data record persistently stored to the blockchain; 
 buffering the multiple subsequent transactions specifying the additional updated values to the index by updating the index with each of the multiple subsequent transactions upon receipt without writing corresponding updates to the blockchain; and 
 incrementally updating the data record persistently stored to the blockchain by periodically adding a single incremental update transaction to the blockchain representing all of the additional updated values received via the multiple subsequent transactions. 
 
     
     
       29. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a system of a host organization having at least a processor and a memory therein, the instructions cause the system to perform the following operations:
 operating a blockchain interface to a blockchain on behalf of a plurality of tenants of the host organization of a multi-tenant database system, wherein the host organization operates as a participating node on the blockchain to enable interactions between the host organization and the blockchain and further wherein each one of the plurality of tenants as a participating node with access to the blockchain such that a hierarchy of entities within the host organization operates as participating nodes on the blockchain; 
 receiving a transaction for the blockchain, at the host organization, wherein the transaction requests the host organization to update at least a portion of information previously stored to the blockchain, and further wherein the transaction specifies updated values for the information previously stored to the blockchain; 
 executing a smart contract to validate the updated values specified by the transaction before permitting the transaction to be added to the blockchain to update the information previously stored to the blockchain with the updated values; 
 creating, at the host organization, a merged transaction for execution by the blockchain specifying both (i) at least a portion of the information previously stored to the blockchain and additionally (ii) the updated values as specified by the transaction received at the host organization which are to be written to the blockchain together within a single new block of the blockchain, wherein the merged transaction is a merged data object generated using a database system of the host organization prior to writing the updated values to the blockchain; and 
 writing the updated values to the blockchain, via the participating node of the host organization, by the host organization executing the merge transaction to add the updated values together with the at least a portion of the information previously stored to the blockchain to the single new block on the blockchain pursuant to successful validation of the updated data values by the smart contract. 
 
     
     
       30. A system to execute at a host organization, wherein the system comprises:
 a memory to store instructions; 
 a set of one or more processors; 
 a non-transitory machine-readable storage medium that provides instructions that, when executed by the set of one or more processors, the instructions stored in the memory are configurable to cause the system to perform operations comprising: 
 executing instructions via the set of one or more processors configurable to cause the system to operate a blockchain interface to a blockchain on behalf of a plurality of tenants of the host organization of a multi-tenant database system, wherein the host organization operates as a participating node on the blockchain to enable interactions between the host organization and the blockchain and further wherein each one of the plurality of tenants operates as a participating node with access to the blockchain such that a hierarchy of entities within the host organization operates as participating nodes on the blockchain; 
 receiving a transaction for the blockchain, at the host organization, wherein the transaction requests the host organization to update at least a portion of information previously stored to the blockchain, and further wherein the transaction specifies updated values for the information previously stored to the blockchain; 
 executing a smart contract to validate the updated values specified by the transaction before permitting the transaction to be added to the blockchain to update the information previously stored to the blockchain with the updated values; 
 creating, at the host organization, a merged transaction for execution by the blockchain specifying both (i) at least a portion of the information previously stored to the blockchain and additionally (ii) the updated values as specified by the transaction received at the host organization which are to be written to the blockchain together within a single new block of the blockchain, wherein the merged transaction is a merged data object generated using a database system of the host organization prior to writing the updated values to the blockchain; and 
 writing the updated values to the blockchain, via the participating node of the host organization, by the host organization executing the merge transaction to add the updated values together with the at least a portion of the information previously stored to the blockchain to the single new block on the blockchain pursuant to successful validation of the updated values by the smart contract.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.