WO2020112664A1 - Cryptographic verification of database transactions - Google Patents
Cryptographic verification of database transactions Download PDFInfo
- Publication number
- WO2020112664A1 WO2020112664A1 PCT/US2019/063058 US2019063058W WO2020112664A1 WO 2020112664 A1 WO2020112664 A1 WO 2020112664A1 US 2019063058 W US2019063058 W US 2019063058W WO 2020112664 A1 WO2020112664 A1 WO 2020112664A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- transaction
- node
- tree
- signatures
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Definitions
- Database management systems provide facilities to store and retrieve data. Although a wide variety of database management systems exists, the most popular may be divided into one of two categories. The first category of databases, relational databases, are those built on the relational model and generally supporting tables of fixed-length records. The second category is non-relational databases, which may substitute the comparatively rigid structured query language (“SQL”) with other query mechanisms. Databases of both of these categories are widely used. However, database management systems in both categories have their own respective limitations.
- FIG. 1 illustrates a ledger-based database system, in accordance with an
- FIG. 2 illustrates distributed storage of a ledger used in conjunction with a ledger- based database system, in accordance with an embodiment
- FIG. 3 illustrates aspects of query processing in a ledger-based database system, in accordance with an embodiment
- FIG. 4 illustrates a table structure of a ledger-based database system, in accordance with an embodiment
- FIG. 5 illustrates a journal, in accordance with an embodiment
- FIG. 6 illustrates aspects of a journal record, in accordance with an embodiment
- FIG. 7 illustrates aspects of a storage technique for summary data, in accordance with an embodiment
- FIG. 8 illustrates aspects of processing queries of journal tables, in accordance with an embodiment
- FIG. 9 illustrates a process for maintaining transaction verification data, in accordance with an embodiment
- FIG. 10 illustrates an example of a hash tree, in accordance with an embodiment
- FIG. 11 illustrates further aspects of the example hash tree, in accordance with an embodiment
- FIG. 12 illustrates a process for providing cryptographic verification of a transaction
- FIG. 13 illustrates a system in which various embodiments can be implemented.
- a ledger comprises journal and summary data structures adapted for use in a database management system.
- a journal stores an immutable history of transactions performed on a document managed by the system, and a summary provides a synopsis of the document’s current state.
- the systems and techniques described herein further relate to the ledger-based database management system providing a cryptographic verification feature.
- the journal stores a history of transactions
- a cryptographic hash tree structure provides independent verification that the history of transaction is unaltered.
- the cryptographic hash tree structure is further adapted to sustain high throughput and large transaction volumes.
- a ledger-based database management system receives requests to perform transactions, and commits those transactions independently of a cryptographic verification mechanism.
- the independence of the cryptographic verification mechanism from the transaction processing permits the transaction processing to sustain high throughput and large transaction volumes.
- the ledger-based database management system responds to commitment of the transaction by storing a node in the leaf-region of a hash tree.
- a hash tree refers to a structure in which cryptographic hashes are stored.
- a hash tree may sometimes be referred to as a signature tree, cryptographic verification tree, hash signature tree, and so forth.
- a cryptographic hash may refer to a cryptographic signature, and may also be described herein as a hash.
- the added node comprises a signature generated based on one or more attributes of the transaction. Nodes are added to the tree in a manner which limits the region of the tree that require calculation or recalculation when a new signature is added to the tree.
- the tree is structured and managed such that a region of the tree may reach a finalized state, in which the signatures in the region no longer require recalculation and can be treated as stable.
- the ledger-based database management system receives a request to verify a previously committed transaction.
- the system provides one or more signatures retrieved from the hash tree, where the provided signatures are those retrieved during a traversal of the tree to locate a node that corresponds to the transaction, and which are usable to cryptographically verify that the integrity and order of the record of the transaction has not been compromised.
- a ledger-based database management system provides access to the history of transactions stored in the ledger.
- the example system receives various queries and command from a client of the system, such as query language commands to insert, update, and delete documents stored in tables managed by the system.
- the example system can also respond to queries of the tables - these are processed based at least in part on access to summary components of the ledger.
- the system also supports queries directed to the journal components of the ledger. These queries, which may be described as journal queries, are written against a journal table schema which is derived by the system from the schema of the corresponding document table.
- the system generates results for a journal query by scanning and retrieving data from the journals, and projecting the retrieved data in accordance with the schema of the journal table and the query.
- queries of the journal tables may include requests to verify a transaction and/or provide access to cryptographic signatures stored in the hash tree.
- FIG. 1 illustrates a ledger-based database system, in accordance with an embodiment.
- the example ledger-based database system 100 comprises a query processor 102, transaction coordinator 104, storage system 106, and stream processor 108.
- a client device 110 may send queries to the database system 100.
- a query refers to a request for information to be retrieved by the database system 100, expressed in accordance with a query language definition and a schema.
- a query might be expressed in structured query language (“SQL”), or a variant thereof, and might further conform to the schema of a table referenced by the query.
- Schema refers to the names and structure of a table or other element, such as a view or index.
- a query that conforms to a schema refers to names and structures consistent with the schema.
- the projection clause of a query may generally refer only to columns of a table that exist in the corresponding schema, except for special circumstances such as projection columns that are defined by the query itself.
- a client device 112 may also access stream functions of the distributed database system 100.
- various hosted services may access stream functions.
- stream functions refers to features of the distributed database that relate to direct and/or immediate access to a stream of transactions processed by, about to be processed by, or being processed by, the database system 100.
- a query processor 102 comprises a module operative on a computing device comprising at least one processor and a memory.
- a module or sub-module refers to a portion of the memory in which processor-executable instructions are stored, where the instructions, when executed by the processor, cause the computing device to perform the functions attributed to the module.
- the query processor 102 performs functions related to processing queries received from the client device 110.
- the query processor 102 may comprise a parser 120, query planner 122, and execution engine 124.
- the database system 100 may comprise a fleet of query processors similar to the query processor 102 depicted in FIG. 1, to facilitate scaling.
- the parser 120 performs lexical and semantic analysis of a received query. This may include converting textual components of the received query to non-textual data structures, such as abstract syntax trees. It may further involve determining whether the query is syntactically valid, and valid with respect to any relevant schemas.
- the query planner 122 determines a plan for executing the received query. This may involve identifying various approaches to executing the query, estimating the costs of the various approaches, and selecting a plan believed by the query planner 122 to be most optimal.
- the query planner 122 may rely on various statistics, some of which may be provided by the storage system 106, regarding the amounts of relevant data stored by the storage system 106, how long it might take to scan or retrieve the relevant data, and so forth.
- the execution engine 124 obtains a plan for executing the query from the query planner 122, and executes the plan. Executing the plan may generally involve initiating scanning and retrieval of data, and assembling the results of the query.
- the execution engine may process a query by initiating a scan of a summary table or journal, or initiating some other operation, in order to retrieve data relevant to the query.
- the scanning and retrieval is performed by the storage system 106.
- the execution engine in cases and embodiments, assembles the results of the query by performing join operations, filtering operations, and so on.
- the execution engine also applies a projection, as reflected in the original query and in the query plan. This step ensures that the assembled results conform to the expected schema.
- a transaction coordinator 104 comprises a module operative on a computing device comprising at least one processor and a memory.
- the transaction coordinator 104 can be co-located on a computing device with other modules, such as the query processor 102, or it may be located on a separate computing device.
- the database system 100 may comprise a fleet of transaction coordinators similar to the transaction coordinator 104 depicted in FIG. 1, to facilitate scaling.
- the transaction coordinator manages query execution and command execution, to implement transactional properties such as atomicity, consistency, isolation, and durability. These are sometimes referred to as“ACID” properties.
- the transaction coordinator 104 communicates with the query processor 102 and storage system 106 to ensure that queries and command intended to be performed in a transaction context 130, are executed according to desired levels of ACID conformance.
- a storage system 106 comprises a module operative on a computing device comprising at least one processor and a memory.
- the storage system 106 can be co-located on a computing device with other modules, or located on a separate computing device.
- the database system 100 may comprise a fleet of storage systems similar to the storage system 106 depicted in FIG. 1, to facilitate scaling.
- the storage system 106 may comprise various sub-modules, including a brick manager 140, gateway 142, and ledger 144. Further aspects of these components of the storage system 106 are described herein. In general, the storage system 106 is responsible for performing storage and retrieval operations on the ledger 144.
- a stream processor 108 comprises a module operative on a computing device comprising at least one processor and a memory.
- the stream processor 108 can be co-located on a computing device with other modules, or located on a separate computing device.
- the database system 100 may comprise a fleet of stream processors similar to the stream processor 108 depicted in FIG. 1, to facilitate scaling.
- the stream processor 108 provides direct or immediate access to a stream of transactions processed by, about to be processed by, or being processed by, the database system 100.
- client devices and hosted client applications such as the depicted client device 112, may access the stream of transactions and respond to the transactions as they occur.
- FIG. 2 illustrates distributed storage of a ledger used in conjunction with a ledger-based database system, in accordance with an embodiment.
- the ledger 202 of FIG. 2 may therefore correspond to the ledger 144 that FIG.
- a ledger 202 comprises a journal 206 and a summary 204.
- the ledger 202 of FIG. 2 corresponds to the ledger 144 of FIG. 1.
- the ledger 202 comprises a list of immutable transactions applied to documents or other data maintained by the distributed database 100.
- the ledger 202 might comprises a list 210 of transactions performed on a document Dl.
- the transactions are considered immutable because, once entered into the journal 206, they are neither changed nor deleted.
- the journal 206 in various embodiments, thus contains a complete and verifiable history of all changes made to the document Dl.
- the ledger 202 further comprises a summary 204.
- the summary 204 reflects the contents or state of each document stored in the database after applying all of the committed transactions, in order.
- the summary 204 might contain the document 212 resulting from applying the list 210 of transactions applied to the document Dl.
- the database system 100 supports queries of tables and views, and the use of indexes, in a manner that at least appears to the user to be similar to that of traditional relational database management systems.
- the database system 100 in various embodiments, provides a session-based transactional application programming interface (“API”). Through the interface, using a superset of SQL, client devices may interact with documents, tables, views, and indexes, despite the difference in the underlying storage structures.
- API application programming interface
- FIG. 3 illustrates aspects of query processing in a ledger-based database system, in accordance with an embodiment.
- the ledger 302, summary 304, and journal 306 may correspond to the ledger, summary, and journal depicted in FIG. 2.
- a client device 320 sends a SQL query 324 to a database system 350, using a call-level interface 322.
- the database system 350 depicted in FIG. 3 may correspond to the database system 100 depicted in FIG. 1.
- the call-level interface 322 can be an API for interacting with a database system, such as various available connectivity interfaces.
- the SQL queries 324 can be queries expressed in SQL, or a superset or subset thereof. Note, however, that the use of SQL in this example should not be construed so as to limit the scope of the present disclosure to embodiments which use SQL. Embodiments may use any of a wide variety of query languages.
- the summary 304 stores data that represents the current state of the ledger’s tables 310, indexes 312, and views 314. Aspects of storage techniques for the summary data are described below, regarding FIG. 7.
- a query such as the SQL query 324
- a query execution plan might rely on current data stored in the summary, such as index data, to efficiently execute a query.
- the query execution plan might further rely on current values for elements of a document when applying a projection.
- FIG. 4 illustrates a table of a ledger-based database system, in accordance with an embodiment.
- a table 400 comprises a collection of documents 402a-c.
- a document 402 might also be described as a row of the table.
- each document can comprise a collection of nested values 404. Accordingly, embodiments may support more loosely structured data than what is typically supported by conventional database management systems.
- the example table 400 may generally be treated as a logical entity exposed to a client device via a query language, rather than a physical data storage structure. As described herein, the data for the table 400 is stored using a ledger comprising journal and summary portions.
- FIG. 5 illustrates a journal, in accordance with an embodiment.
- a journal 500 comprises an immutable, append-only list of transaction records 502.
- Each of the transaction records 502 comprises data indicative of a read or write operation to a document.
- the transaction records comprise data indicative of a data fragment associated with the read or write operation.
- data is stored indicating that Tx-1 comprises a write to a first fragment 510 and a read from the first fragment 512.
- transaction Tx-N comprises a write to a second fragment 514 and a read from the first fragment 516.
- the journal 500 comprises transaction records 502 which comprise data indicative of changes made both to a logical document and to the underlying storage structure for the journal.
- FIG. 7 describes aspects of the storage structure.
- entries in the journal 500 are stored to reflect an immutable order, in the same sequence as the transactions were applied. For example, Tx-N represents the oldest transaction, Tx-2 the second most recent transaction, and Tx-1 the most recent.
- the journal 500 thus provides a complete history of the changes made to each document that is represented in the journal 500.
- FIG. 6 illustrates aspects of a journal record, in accordance with an embodiment.
- a journal record 600 describes various aspects of a transaction.
- the journal record might correspond to or be an aspect of one of the transactions Tx-1, Tx-2,... Tx-N depicted in FIG. 5.
- a journal record 600 comprises, in an embodiment, a transaction identifier 602.
- the transaction identifier 602 may be a sequence number, timestamp, cryptographic hash, and so forth. Note that in some embodiments, cryptographic techniques may be used to safeguard the integrity of the journal record 600 and the journal 500, including safeguards which ensure that the ordering of transactions is preserved.
- Embodiments may use transaction identifiers 602, or other data included in the journal record, as an aspect of these safeguards.
- the journal record 600 comprises table write data 604.
- the table write data represents modifications made to a table in the corresponding transaction.
- the table write data 604 might represent changes made to any documents stored in a table as a result of the transaction.
- the journal record 600 comprises index write data 606.
- the index write data represents modifications made to an index as a consequence of the corresponding transaction.
- the journal record 600 comprises view write data 608, which represents modification made to a view as a consequence of the transaction.
- the journal record 600 comprises query data 610, representing a SQL command, query language command, or other command on which the transaction was based. This data may be stored for diagnostic purposes.
- a journal record comprises, in various embodiments, references to storage fragments affected by a transaction.
- FIG. 7 illustrates aspects of a storage technique for summary data which utilizes storage fragments, in accordance with an embodiment.
- a storage node comprises a computing device with at least one processor, a memory, and a storage device such as a flash driver, mechanical disk drive, network attached storage, and so forth.
- a given fragment 702 of a summary is a set of records that are managed by the database system 100 as a unit.
- the summary is fragmented so that every record in a summary is in exactly one fragment.
- Each fragment contains only record summaries for any one table, index, or view.
- a first fragment 702 might comprise data for a table summary 710
- a second fragment 704 might comprise an index summary 712
- a third fragment might comprise a view summary 714.
- each summary corresponds to exactly one fragment, although in other embodiments a summary may be split across fragments.
- a fragment is sized so that a large number of records can fit into a single fragment, but is not so large that the time required to do a full scan of the fragment is excessive.
- a storage structure such as any of the depicted storage structures 720, 722, comprises a data structure for storing data.
- Examples of such structures include, but are not limited to, B-trees, hash buckets, and heap trees.
- Suitable storage structures provide a scan capability, and may also provide filtering, scan-and-filter, and so forth.
- a given storage structure 720 may store multiple fragments. In other embodiments, a given storage structure 722 stores only a single fragment 706. In some embodiments, a given fragment is replicated to multiple storage structures.
- a ledger-based database management system provides access to the history of transactions stored in the ledger.
- the example system receives various queries and command from a client of the system, such as query language commands to insert, update, and delete documents stored in tables managed by the system.
- the example system can also respond to queries of the tables - these are processed based at least in part on access to summary components of the ledger.
- the system supports queries directed to the journal components of the ledger. These queries, which may be described as journal queries, are written against a journal table schema which is derived by the system from the schema of the corresponding document table.
- the system generates results for a journal query by scanning and retrieving data from the journals, and projecting the retrieved data in accordance with the schema of the journal table and the query.
- a method of operating a ledger-based database management system includes storing data for a document table as a journal of transactions.
- the journal of transactions includes records which describe changes applied to one or more documents of the document table.
- the method further includes receiving a query of a journal table, which may be described as a table of transactions performed on the document table.
- the method includes generating results by at least retrieving and projecting the journal records in accordance with a journal table schema and the query, such that the results of the query are indicative of the changes applied to the at least one document of the first table.
- FIG. 8 illustrates aspects of processing queries of journal tables, in accordance with an embodiment.
- a system catalog 802 comprises, in an embodiment, a list of tables 810-814 that are defined in the database.
- a table being defined refers to the table and its schema being known to the database, regardless of whether or not the table is materialized.
- a data definition language (“DDL”) command is executed to define the table.
- defining the table comprising storing its definition in the system catalog 802.
- the database system 100 defines a corresponding journal table 820-824 for each corresponding table 810-814.
- Ajournal table is a table of documents, and thus the logical structure of the journal tables 820-824 is similar to that of the other tables 810-814.
- each journal table 820-824 is based on the schema of the
- journal table JT1 will have one or more columns based on Cl.
- the journal table JT1 might, for example, include a row to represent every change to a document stored in the table Tl, and each row might have a column describing a change to the property of the document that corresponds to Cl.
- FIG. 9 illustrates a process for maintaining transaction verification data, in accordance with an embodiment.
- FIG. 9 is depicted as a sequence of steps, the depicted sequence should not be construed as limiting the scope of the present disclosure to only those embodiments conforming to the depicted order. For example, unless otherwise indicated or clear from context (e.g., when the output of one step is used as input into another), at least some of the depicted steps may be reordered or performed in parallel.
- the database system 100 receives a request to perform a transaction.
- the request is received at a network buffer, read by operating system
- the query processor may identify operations based on and in accordance with the request, and provide those operations to a transaction coordinator, such as the transaction coordinator depicted in FIG. 1. Then, as depicted by step 904, the transaction coordinator commits the transaction to the database.
- committing the transaction refers to durably recording the transaction and making its effects permanent. For example, an entry indicative of an update to a table may be added to an immutable, append-only journal, such as the journal depicted in FIG. 1.
- the database system 100 stores a record of the transaction in the leaf level of a hash tree, at the rightmost available position. This step is related to providing the ability to cryptographically verify a transaction, and, in embodiments, occurs after or independently of the commitment of the transaction.
- FIG. 10 depicts an example embodiment of a hash tree.
- a hash tree is a tree data structure in which each node of the tree comprises a cryptographic hash, or other form of digital signature.
- a hash tree may correspond to a data structure in which each node leaf node comprises a hash of one or more attributes of a transaction, and every non-leaf node comprises a hash that is based on its child nodes.
- nodes representing the hash of an attribute of the transaction are stored, in embodiments, at the rightmost available position at the leaf level of a hash tree.
- the leaf-level of the hash tree thus fills from rightmost position outwards, such that the rightmost region of the tree may be considered an active or unstable zone which can be updated when a new transaction is added.
- Other regions of the tree, having been completed by the filling of all descendent leaf nodes, may be considered stable.
- the database system 100 receives a request to verify a transaction.
- data is received at a network buffer, read by operating system components, and provided to a query processor of the database system.
- the query processor may then determine that the data represents a request to verify a transaction.
- the request is presented as a type of journal query.
- the database system retrieves hash values from a region associated with a path to the node representing transaction.
- the region comprises the path traversed from an ancestor node to the node representing the transaction.
- the ancestor node in an embodiment, can correspond to a stable root position, or to a root position is unstable, but at least partly reflects the composition of one or more finalized descendent nodes.
- the use of an unstable root node can permit verification of the ordering of a transaction in cases where an insufficient number of subsequent transactions have been received. This is because, as the tree structure grows, there may be an increasing interval of time between the addition and finalization of a root node.
- the region further comprises, in an embodiment, sibling nodes reachable on the traversal path.
- a traversal from a node 1006b to a stable root e.g., node 1004a
- an embodiment might also provide hash values from the sibling node 1006a.
- a traversal might also include the unstable root, at 1002. Traversals might also proceed in both directions, e.g. from the root to a leaf node, or vice versa.
- Step 914 depicts verification of the transaction based on the retrieved hash values.
- Embodiments may support verification of a transaction in a number of ways. In an embodiment, the ordering of the transaction is verified based on one or more of inspection, sequencing, and reconstruction of the retrieved hash values. As noted, these may include, in an embodiment, hash values retrieved on a path traversed from an ancestor node to the node representing the transaction (or the reverse, i.e., from the node representing the transaction to the stable ancestor). These may also include, as noted, sibling nodes reachable on the traversal path. Embodiments may also support verification of the integrity of the contents of the transaction.
- Hash values for both finalized regions, stable root nodes, and unstable root nodes may also be published and consulted in order to verify the order of a transaction.
- the example process 900 of FIG. 9 may be further understood in view of FIG. 10, which illustrates an example of a hash tree, in accordance with an embodiment.
- the example hash tree 1000 of FIG. 10 comprises a plurality of nodes 1002-1006a-c organized into a tree structure.
- a binary tree structure is shown.
- a variety of other structures, such as non-binary trees and certain types of graphs, may also be used.
- the nodes 1002-1006a-c of may be categorized as leaf nodes 1006a-c and non-leaf nodes 1002-1004. As can be seen in FIG. 10, the leaf nodes 1006a-c are those without descendant nodes. In embodiments, the leaf nodes 1006a-c each comprise a cryptographic hash value, depicted in FIG. 10 as H(Ti), H(T2), and H(T3). Here, Ti, T2, and T3 represent transactions. H(T n ) represents a hash value computed from one or more attributes of a transaction T n.
- nodes are added to the rightmost available position in the leaf level of a hash tree.
- this is depicted by the“Free Spot” 1008, to which an entry will be added based on a new transaction 1010.
- the leaf-level of the hash tree is filled from rightmost position and moves outward, such that the rightmost edge or region of the tree is considered an active or unstable zone which is subjection to change when a new transaction is added.
- the non-leaf nodes of the hash tree 1000 are computed, in embodiments, based on the hashes computed at lower levels of the hash tree 1000.
- the first ancestor node 1004a of the leftmost two leaf-level nodes 1006a,b may be computed by taking a hash of a combination of H(Ti) and H(T2). This is designated in FIG. 10 as HH(Ti, T2).
- HH(Ti, T2) may be calculated as H(H(Ti), (H(T2)), i.e., as a hash based on the hashes of the child nodes.
- the current root node 1002 of the depicted hash tree 1000 may be computed from HH(Ti, T2) and a similarly computed value from the right branch of the current root node 1002.
- the right branch as depicted in FIG. 10, is currently based in part on a free spot 1008 which has no corresponding hash value. Consequently, its ancestor nodes 1005b, 1002 can both be described as unstable, based on the system re-computing their values once a hash value derived from the new transaction 1010 fills the free spot 1008.
- the tree will be full. However, the tree can be expanded by the addition of new nodes. In some embodiments, new nodes are added along the right side of the graph, such that the current root node 1002 is demoted to a child status and a new, initially unpopulated region of noes is created on the right side of the tree. These nodes can then be populated as new transactions are committed.
- a node in the tree can be described as a stable root if it is a non-leaf node whose hash value will no longer change.
- the node 1004a is stable because its child nodes have been filled, and as such its stored hash value HH(Ti, T2) will not subsequently change.
- a traversal from a node representing a transaction to a stable root may provide, in embodiments, information sufficient to verify the ordering of a transaction. In other words, this information may be used to ensure that the indicated order of a transaction has not been altered since it was originally recorded.
- inserting or deleting records of a transaction would constitute tampering with the order, but this can be detected based on nodes retrieved during a traversal between a leaf-level node representing the transaction in question, and a stable root node.
- a traversal from a node 1006b to a stable root can provide information sufficient to verify the ordering of the transaction T2.
- the information can include hash values for the nodes on the path between the leaf level node and the stable root, and may also include values for the sibling node 1006a.
- FIG. 11 illustrates further aspects of the example hash tree, in accordance with an embodiment.
- FIG. 11 is intended to illustrate aspects of expanding the hash tree to accommodate new transactions once the last remaining free spot has been filled.
- a new region 1106 has been added to the tree, and is associated with the original region 1104 by a new root node 1102.
- the new root node 1102 is described in FIG. 11 as being the next unstable root.
- the node 1102 is described as unstable because its right branch has not yet been filled with transactions at the leaf level, and therefore contains a number of values in non-leaf nodes which will be updated as new transactions are recorded. It can be described as the next unstable root because the hash trees depicted in FIGS. 10 and 11 can be described, at least conceptually, as comprising an indefinite number of root nodes that have yet to be made stable by the addition of a sufficient number of transactions. For example, when the currently unstable region 1106 of the tree 1100 has been filled, then a new parent node can be inserted at the root, comprising an empty rightward branch.
- the leaf nodes in the stable region 1104 have all been filled with hashes based on the attributes of transactions, and their ancestor nodes filled with further hashes derived from the leaf nodes.
- the unstable region 1106 contains only a single finalized leaf node, whose value is indicated as HfTs). None of this node’s ancestors are stable. Once a hash value for the new transaction 1120 has been added, however, the parent node can be finalized.
- a region has been finalized, its hash values can be published.
- Publishing the hash values refers to making them accessible to an appropriately wide distribution, such as making the hash values available to the public via a hosted data storage service, providing the hash values to a third party service, and so on.
- Embodiments may also publish the state of the tree prior to a region being finalized.
- the published nodes in this case can comprise a path to a leaf-node entry, some of which may be unfmalized.
- the nodes might include the unstable root node 1102, the top node 1130 in the unstable region 1106, that node’s left child node 1132, and the node 1134 representing the transaction Ts.
- the hash values are published even though they are computed with values representing“null” or“empty” transactions, and are sufficient to verify the order of the transaction.
- the hash values on this path may be published subsequently as new transactions are finalized, and when the entire path or region has been finalized.
- FIG. 12 illustrates a process for providing cryptographic verification of a transaction.
- FIG. 12 is depicted as a sequence of steps, the depicted sequence should not be construed as limiting the scope of the present disclosure to only those embodiments conforming to the depicted order.
- the depicted steps may be reordered or performed in parallel.
- the example process 1200 may be performed by a database system, such as the database system depicted in FIG.
- Step 1202 depicts receiving a request to perform a transaction on a database system, such as the database system depicted in FIG. 1.
- the request is provide as one or more query language commands, which are received and processed by a query processor, such as the one depicted in FIG. 1.
- Step 1204 depicts committing the transaction. Note that the transaction is committed independently of the cryptographic verification process, which permits the database system to process requests at the high volume often required of such systems.
- Step 1206 depicts storing a node in a leaf region of a hash tree, where the node comprises a signature, e.g., a cryptographic hash, which is generated based at least in part on the committed transaction.
- the node is stored based on committing the transaction.
- the system responds to the successful commitment of the transaction by adding the node to the hash tree.
- the hash tree serves the purpose of providing cryptographic verification of committed transactions. Note that, in some embodiments, uncommitted transactions may also be recorded, in the same tree or separate tree. However, attempts to commit the transaction are performed independently of the cryptographic verification, in order to achieve high transaction throughput.
- the tree will eventually become filled and all of its nodes finalized.
- the hash values stored at those nodes are published.
- publishing the hash values can be published.
- publishing the signatures refers to making them accessible to an appropriately wide distribution. In cases and embodiments, this may include making the signatures available to the general public. It may also include, for example, making the signatures available to a third party intermediary, an escrow service, a printed publication, journal, electronic notification services, and so forth.
- the database system may periodically make finalized regions of the tree, such as the stable region 1104 depicted in FIG. 11, available to such services.
- published signatures are provided directly to subscribing entities, e.g. through a communications channel.
- Step 1208 depicts providing, in response to a request to verify the transaction, one or more signatures retrieved from the hash tree.
- the signatures includes one or more signatures retrieved from the hash tree during a traversal of the tree to locate the node that corresponds to the transaction.
- the provided signatures are those sufficient to
- embodiments may support verification of various aspects of the integrity of a transaction, such as the ordering of the transaction and the verification of its contents. Support for verification of these aspects includes, in an embodiment, providing hash values retrieved on a path traversed from a stable ancestor node to the node representing the transaction (or the reverse, i.e., from the node representing the transaction to the stable ancestor). The provided hash values may also include, as noted, sibling nodes reachable on the traversal path.
- Embodiments may support verification of the integrity of the contents of the transaction, by various means, such as by providing support for the verifying entity to reconstruct a hash value based at least in part on an attribute of the transaction. In cases and embodiments, the verifying entity may verify the contents of a transaction by confirming the validity of a digital signature of the transaction record.
- FIG. 13 illustrates aspects of an example system 1300 for implementing aspects in accordance with an embodiment.
- the system includes an electronic client device 1302, which includes any appropriate device operable to send and/or receive requests, messages, or information over an appropriate network 1304 and convey information back to a user of the device.
- client devices include personal computers, cellular or other mobile phones, handheld messaging devices, laptop computers, tablet computers, set top boxes, personal data assistants, embedded computer systems, electronic book readers, and the like.
- the network includes any appropriate network, including an intranet, the Internet, a cellular network, a local area network, a satellite network or any other such network and/or combination thereof, and components used for such a system depend at least in part upon the type of network and/or system selected.
- any appropriate network including an intranet, the Internet, a cellular network, a local area network, a satellite network or any other such network and/or combination thereof, and components used for such a system depend at least in part upon the type of network and/or system selected.
- the network includes the Internet and/or other publicly addressable communications network, as the system includes a web server 1306 for receiving requests and serving content in response thereto, although for other networks an alternative device serving a similar purpose could be used as would be apparent to one of ordinary skill in the art.
- the illustrative system includes at least one application server 1308 and a data store 1310, and it should be understood that there can be several application servers, layers or other elements, processes or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store.
- Servers in an embodiment, are implemented as hardware devices, virtual computer systems, programming modules being executed on a computer system, and/or other devices configured with hardware and/or software to receive and respond to communications (e.g., web service application programming interface (API) requests) over a network.
- API application programming interface
- data store refers to any device or combination of devices capable of storing, accessing and retrieving data, which may include any combination and number of data servers, databases, data storage devices and data storage media, in any standard, distributed, virtual or clustered system.
- Data stores in an embodiment, communicate with block-level and/or object-level interfaces.
- the application server can include any appropriate hardware, software and firmware for integrating with the data store as needed to execute aspects of one or more applications for the client device, handling some or all of the data access and business logic for an
- the application server provides access control services in cooperation with the data store and generates content including but not limited to text, graphics, audio, video and/or other content that is provided to a user associated with the client device by the web server in the form of HyperText Markup Language (“HTML”), Extensible Markup Language (“XML”), JavaScript, Cascading Style Sheets (“CSS”), JavaScript Object Notation (JSON), and/or another appropriate client-side or other structured language.
- HTML HyperText Markup Language
- XML Extensible Markup Language
- CSS Cascading Style Sheets
- JSON JavaScript Object Notation
- Content transferred to a client device is processed by the client device to provide the content in one or more forms including but not limited to forms that are perceptible to the user audibly, visually and/or through other senses.
- PHP Hypertext Preprocessor
- Python Python
- Ruby Ruby
- Perl Java
- HTML Hypertext Preprocessor
- XML Hypertext Markup Language
- JSON Java
- operations described herein as being performed by a single device are performed collectively by multiple devices that form a distributed and/or virtual system.
- the data store 1310 includes several separate data tables, databases, data documents, dynamic data storage schemes and/or other data storage mechanisms and media for storing data relating to a particular aspect of the present disclosure.
- the data store illustrated includes mechanisms for storing production data 1312 and user information 1316, which are used to serve content for the production side.
- the data store also is shown to include a mechanism for storing log data 1314, which is used, in an embodiment, for reporting, computing resource management, analysis or other such purposes.
- page image information and access rights information e.g., access control policies or other encodings of permissions
- page image information and access rights information are stored in the data store in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store 1310.
- the data store 1310 in an embodiment, is operable, through logic associated therewith, to receive instructions from the application server 1308 and obtain, update or otherwise process data in response thereto, and the application server 1308 provides static, dynamic, or a combination of static and dynamic data in response to the received instructions.
- dynamic data such as data used in web logs (blogs), shopping
- a user through a device operated by the user, submits a search request for a certain type of item.
- the data store accesses the user information to verify the identity of the user, accesses the catalog detail information to obtain information about items of that type, and returns the information to the user, such as in a results listing on a web page that the user views via a browser on the user device 1302.
- information for a particular item of interest is viewed in a dedicated page or window of the browser.
- Example requests include requests to manage and/or interact with computing resources hosted by the system 1300 and/or another system, such as for launching, terminating, deleting, modifying, reading, and/or otherwise accessing such computing resources.
- each server typically includes an operating system that provides executable program instructions for the general administration and operation of that server and includes a computer-readable storage medium (e.g., a hard disk, random access memory, read only memory, etc.) storing instructions that, if executed by a processor of the server, cause or otherwise allow the server to perform its intended functions (e.g., the functions are performed as a result of one or more processors of the server executing instructions stored on a computer-readable storage medium).
- a computer-readable storage medium e.g., a hard disk, random access memory, read only memory, etc.
- the system 1300 in an embodiment, is a distributed and/or virtual computing system utilizing several computer systems and components that are interconnected via communication links (e.g., transmission control protocol (TCP) connections and/or transport layer security (TLS) or other cryptographically protected communication sessions), using one or more computer networks or direct connections.
- communication links e.g., transmission control protocol (TCP) connections and/or transport layer security (TLS) or other cryptographically protected communication sessions
- TCP transmission control protocol
- TLS transport layer security
- FIG. 13 should be taken as being illustrative in nature and not limiting to the scope of the disclosure.
- the various embodiments further can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications.
- user or client devices include any of a number of computers, such as desktop, laptop or tablet computers running a standard operating system, as well as cellular (mobile), wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols, and such a system also includes a number of workstations running any of a variety of commercially available operating systems and other known applications for purposes such as development and database management.
- these devices also include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network, and virtual devices such as virtual machines, hypervisors, and software containers utilizing operating-system level virtualization and other virtual devices or non-virtual devices supporting virtualization capable of communicating via a network.
- other electronic devices such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network
- virtual devices such as virtual machines, hypervisors, and software containers utilizing operating-system level virtualization and other virtual devices or non-virtual devices supporting virtualization capable of communicating via a network.
- a system utilizes at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially available protocols, such as Transmission Control Protocol/Intemet Protocol (“TCP/IP”), User Datagram Protocol (“UDP”), protocols operating in various layers of the Open System Interconnection (“OSI”) model, File Transfer Protocol (“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”), Common Internet File System (“CIFS”) and other protocols.
- the network in an embodiment, is a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, a satellite network, and any combination thereof.
- a connection-oriented protocol is used to communicate between network endpoints such that the connection-oriented protocol (sometimes called a connection-based protocol) is capable of transmitting data in an ordered stream.
- a connection-oriented protocol can be reliable or unreliable.
- the TCP protocol is a reliable connection-oriented protocol.
- Asynchronous Transfer Mode (“ATM”) and Frame Relay are unreliable connection-oriented protocols.
- Connection-oriented protocols are in contrast to packet-oriented protocols such as UDP that transmit packets without a guaranteed ordering.
- the system utilizes a web server that runs one or more of a variety of server or mid-tier applications, including Hypertext Transfer Protocol (“HTTP”) servers, FTP servers, Common Gateway Interface (“CGI”) servers, data servers, Java servers, Apache servers, and business application servers.
- HTTP Hypertext Transfer Protocol
- CGI Common Gateway Interface
- the one or more servers are also capable of executing programs or scripts in response to requests from user devices, such as by executing one or more web applications that are implemented as one or more scripts or programs written in any programming language, such as Java ® , C, C# or C++, or any scripting language, such as Ruby, PHP, Perl, Python or TCL, as well as combinations thereof.
- the one or more servers also include database servers, including without limitation those commercially available from Oracle ® , Microsoft ® , Sybase ® , and IBM ® as well as open-source servers such as MySQL, Postgres, SQLite, MongoDB, and any other server capable of storing, retrieving, and accessing structured or unstructured data.
- a database server includes table-based servers, document-based servers, unstructured servers, relational servers, non-relational servers, or combinations of these and/or other database servers.
- the system includes a variety of data stores and other memory and storage media as discussed above which can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network.
- the information resides in a storage-area network (“SAN”) familiar to those skilled in the art and, similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices are stored locally and/or remotely, as appropriate.
- SAN storage-area network
- each such device can include hardware elements that are electrically coupled via a bus, the elements including, for example, at least one central processing unit (“CPU” or“processor”), at least one input device (e.g., a mouse, keyboard, controller, touch screen, or keypad), at least one output device (e.g., a display device, printer, or speaker), at least one storage device such as disk drives, optical storage devices, and solid- state storage devices such as random access memory (“RAM”) or read-only memory
- CPU central processing unit
- input device e.g., a mouse, keyboard, controller, touch screen, or keypad
- output device e.g., a display device, printer, or speaker
- storage device such as disk drives, optical storage devices, and solid- state storage devices such as random access memory (“RAM”) or read-only memory
- ROM read-only memory
- flash cards any removable media devices
- such a device also includes a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.), and working memory as described above where the computer-readable storage media reader is connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information.
- the system and various devices also typically include a number of software applications, modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or web browser.
- customized hardware is used and/or particular elements are implemented in hardware, software (including portable software, such as applets), or both.
- connections to other computing devices such as network input/output devices are employed.
- storage media and computer readable media for containing code, or portions of code include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, Electrically Erasable Programmable Read-Only Memory (“EEPROM”), flash memory or other memory technology, Compact Disc Read-Only Memory (“CD-ROM”), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices or any other medium which can be used to store the desired information and which can be accessed by the system device.
- RAM random access memory
- ROM read-only memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- CD-ROM Compact Disc Read-Only Memory
- DVD digital versatile disk
- magnetic cassettes magnetic tape
- magnetic disk storage magnetic disk storage devices or any other medium which
- a system comprising:
- At least one processor and at least one memory comprising instructions that, in response to being executed by the at least one processor, cause the system to at least:
- verification of the transaction comprises generation of a new signature of the transaction for comparison to the one or more signatures.
- a computer-implemented method comprising:
- committing a transaction on a collection of data maintained by a database storing, based at least in part on commitment of the transaction, a first node in a leaf region of a tree, the first node comprising a signature generated based at least in part on the transaction;
- publishing signatures of nodes on a path to the transaction comprises copying the signatures to a public storage location.
- a non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to at least:
- the term“subset” of a corresponding set does not necessarily denote a proper subset of the corresponding set, but the subset and the corresponding set may be equal.
- Conjunctive language such as phrases of the form“at least one of A, B, and C,” or “at least one of A, B and C,” (i.e., the same phrase with or without the Oxford comma) unless specifically stated otherwise or otherwise clearly contradicted by context, is otherwise understood within the context as used in general to present that an item, term, etc., may be either A or B or C, any nonempty subset of the set of A and B and C, or any set not contradicted by context or otherwise excluded that contains at least one A, at least one B, or at least one C.
- the conjunctive phrases“at least one of A, B, and C” and“at least one of A, B and C” refer to any of the following sets: ⁇ A ⁇ , ⁇ B ⁇ , ⁇ C ⁇ , (A, B ⁇ , (A, C ⁇ , (B, C ⁇ , (A, B, C ⁇ , and, if not contradicted explicitly or by context, any set having ⁇ A ⁇ , ⁇ B ⁇ , and/or ⁇ C ⁇ as a subset (e.g., sets with multiple“A”).
- sets with multiple“A any set having ⁇ A ⁇ , ⁇ B ⁇ , and/or ⁇ C ⁇ as a subset.
- phrases such as“at least one of A, B, or C” and“at least one of A, B or C” refer to the same as“at least one of A, B, and C” and“at least one of A, B and C” refer to any of the following sets: ⁇ A ⁇ , ⁇ B ⁇ , ⁇ C ⁇ , (A, B ⁇ , (A, C ⁇ , (B, C ⁇ , (A, B, C ⁇ , unless differing meaning is explicitly stated or clear from context.
- the term“plurality” indicates a state of being plural (e.g.,“a plurality of items” indicates multiple items). The number of items in a plurality is at least two but can be more when so indicated either explicitly or by context.
- a computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transitory signals (e.g., a propagating transient electric or electromagnetic transmission) but includes non-transitory data storage circuitry (e.g., buffers, cache, and queues) within transceivers of transitory signals.
- code e.g., executable code or source code
- code is stored on a set of one or more non-transitory computer-readable storage media having stored thereon executable instructions that, when executed (i.e., as a result of being executed) by one or more processors of a computer system, cause the computer system to perform operations described herein.
- the set of non-transitory computer-readable storage media comprises multiple non-transitory computer-readable storage media, and one or more of individual non-transitory storage media of the multiple non-transitory computer-readable storage media lack all of the code while the multiple non-transitory computer-readable storage media collectively store all of the code.
- the executable instructions are executed such that different instructions are executed by different processors— for example, in an embodiment, a non- transitory computer-readable storage medium stores instructions and a main CPU executes some of the instructions while a graphics processor unit executes other instructions.
- different components of a computer system have separate processors and different processors execute different subsets of the instructions.
- computer systems are configured to implement one or more services that singly or collectively perform operations of processes described herein, and such computer systems are configured with applicable hardware and/or software that enable the performance of the operations.
- a computer system in an embodiment of the present disclosure, is a single device and, in another embodiment, is a distributed computer system comprising multiple devices that operate differently such that the distributed computer system performs the operations described herein and such that a single device does not perform all operations.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE112019005881.9T DE112019005881T5 (en) | 2018-11-26 | 2019-11-25 | CRYPTOGRAPHIC REVIEW OF DATABASE TRANSACTIONS |
| GB2106687.3A GB2593097B (en) | 2018-11-26 | 2019-11-25 | Cryptographic verification of database transactions |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/200,589 | 2018-11-26 | ||
| US16/200,589 US11196567B2 (en) | 2018-11-26 | 2018-11-26 | Cryptographic verification of database transactions |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020112664A1 true WO2020112664A1 (en) | 2020-06-04 |
Family
ID=68887163
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2019/063058 Ceased WO2020112664A1 (en) | 2018-11-26 | 2019-11-25 | Cryptographic verification of database transactions |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US11196567B2 (en) |
| DE (1) | DE112019005881T5 (en) |
| GB (1) | GB2593097B (en) |
| WO (1) | WO2020112664A1 (en) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11119998B1 (en) | 2018-11-26 | 2021-09-14 | Amazon Technologies, Inc. | Index and view updates in a ledger-based database |
| US11196567B2 (en) * | 2018-11-26 | 2021-12-07 | Amazon Technologies, Inc. | Cryptographic verification of database transactions |
| US10942910B1 (en) | 2018-11-26 | 2021-03-09 | Amazon Technologies, Inc. | Journal queries of a ledger-based database |
| US11036708B2 (en) | 2018-11-26 | 2021-06-15 | Amazon Technologies, Inc. | Indexes on non-materialized views |
| US11386078B2 (en) * | 2018-12-17 | 2022-07-12 | Sap Se | Distributed trust data storage system |
| US12619595B1 (en) | 2019-03-18 | 2026-05-05 | Amazon Technologies, Inc. | Optimistically concurrent view loading |
| US11423013B2 (en) * | 2019-05-30 | 2022-08-23 | Ebay Inc. | Transactions on non-transactional database |
| US11068472B2 (en) * | 2019-11-25 | 2021-07-20 | eShares, Inc. | Extensible universal ledger |
| WO2021165907A1 (en) * | 2020-02-19 | 2021-08-26 | nChain Holdings Limited | Methods, data structures, and systems for ordered data logging |
| US11915236B2 (en) | 2021-03-05 | 2024-02-27 | Capital One Services, Llc | Immutable database for bitemporal analysis |
| US12174870B2 (en) * | 2023-02-09 | 2024-12-24 | Ramp Business Corporation | Documentation record retrieval and transaction matching |
| US12530685B2 (en) * | 2023-03-13 | 2026-01-20 | CodeNotary Inc. | Data retention in a cryptographically verifiable immutable database |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4309569A (en) * | 1979-09-05 | 1982-01-05 | The Board Of Trustees Of The Leland Stanford Junior University | Method of providing digital signatures |
| US20170250815A1 (en) * | 2016-01-26 | 2017-08-31 | Stampery Inc. | Systems and methods for certification of data units and/or certification verification |
| US20170272250A1 (en) * | 2015-12-04 | 2017-09-21 | Verisign, Inc. | Hash-based digital signatures for hierarchical internet public key infrastructure |
| US20180089041A1 (en) * | 2016-09-28 | 2018-03-29 | Mcafee, Inc | Query optimized distributed ledger system |
Family Cites Families (93)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4468728A (en) * | 1981-06-25 | 1984-08-28 | At&T Bell Laboratories | Data structure and search method for a data base management system |
| US4897842A (en) * | 1987-11-05 | 1990-01-30 | Ampex Corporation | Integrated circuit signature analyzer for testing digital circuitry |
| US6237096B1 (en) * | 1995-01-17 | 2001-05-22 | Eoriginal Inc. | System and method for electronic transmission storage and retrieval of authenticated documents |
| US5870747A (en) | 1996-07-09 | 1999-02-09 | Informix Software, Inc. | Generalized key indexes |
| US6311179B1 (en) * | 1998-10-30 | 2001-10-30 | International Business Machines Corporation | System and method of generating associations |
| US8868914B2 (en) * | 1999-07-02 | 2014-10-21 | Steven W. Teppler | System and methods for distributing trusted time |
| US6560593B1 (en) | 1999-07-20 | 2003-05-06 | Computer Associates Think, Inc. | Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query |
| AU6620000A (en) * | 1999-08-06 | 2001-03-05 | Frank W Sudia | Blocked tree authorization and status systems |
| US6505188B1 (en) | 2000-06-15 | 2003-01-07 | Ncr Corporation | Virtual join index for relational databases |
| DE60110812D1 (en) * | 2000-08-30 | 2005-06-16 | Georges Cornuejols | APPARATUS AND METHOD FOR SECURING INFORMATION ON ON-LINE TRANSACTIONS |
| US20020184504A1 (en) * | 2001-03-26 | 2002-12-05 | Eric Hughes | Combined digital signature |
| US7412424B1 (en) * | 2002-03-19 | 2008-08-12 | I2 Technologies Us, Inc. | Third party certification of content in electronic commerce transactions |
| US7743065B2 (en) | 2002-06-27 | 2010-06-22 | Siebel Systems, Inc. | System and method for cross-referencing information in an enterprise system |
| US20180152442A1 (en) * | 2003-12-22 | 2018-05-31 | Guardtime Ip Holdings Limited | Blockchain-supported, hash tree-based digital signature infrastructure |
| WO2006009716A2 (en) * | 2004-06-21 | 2006-01-26 | Navio Systems, Inc. | Methods and apparatus for enabling transactions in networks |
| KR20070034603A (en) * | 2004-06-25 | 2007-03-28 | 페퍼코인 아이엔씨 | Payment processing method and system |
| US20060047713A1 (en) | 2004-08-03 | 2006-03-02 | Wisdomforce Technologies, Inc. | System and method for database replication by interception of in memory transactional change records |
| GB0424442D0 (en) | 2004-11-05 | 2004-12-08 | Ibm | A method, apparatus, computer program and computer program product for managing the durability of a plurality of transactions |
| US7499927B2 (en) * | 2005-02-24 | 2009-03-03 | International Business Machines Corporation | Techniques for improving memory access patterns in tree-based data index structures |
| US20060242104A1 (en) | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Systems and methods for manipulating data in a data storage system |
| US8370442B2 (en) | 2008-08-29 | 2013-02-05 | Commvault Systems, Inc. | Method and system for leveraging identified changes to a mail server |
| US8682859B2 (en) | 2007-10-19 | 2014-03-25 | Oracle International Corporation | Transferring records between tables using a change transaction log |
| US20100049715A1 (en) | 2008-08-20 | 2010-02-25 | Yahoo! Inc. | Controlled parallel propagation of view table updates in distributed database systems |
| US8458451B2 (en) * | 2009-01-20 | 2013-06-04 | New York University | Database outsourcing with access privacy |
| US9135299B2 (en) | 2009-09-01 | 2015-09-15 | Teradata Us, Inc. | System, method, and computer-readable medium for automatic index creation to improve the performance of frequently executed queries in a database system |
| CA2777425C (en) | 2009-10-13 | 2016-06-21 | Open Text Software Gmbh | Method for performing transactions on data and a transactional database |
| US9063978B1 (en) | 2009-10-16 | 2015-06-23 | Igor US Inc. | Apparatuses, methods and systems for a financial transaction tagger |
| US9043355B1 (en) | 2009-10-16 | 2015-05-26 | Iqor U.S. Inc. | Apparatuses, methods and systems for a journal entry automator |
| US8799247B2 (en) * | 2011-02-11 | 2014-08-05 | Purdue Research Foundation | System and methods for ensuring integrity, authenticity, indemnity, and assured provenance for untrusted, outsourced, or cloud databases |
| US8914404B1 (en) | 2011-03-29 | 2014-12-16 | Emc Corporation | Techniques for performing view indication management |
| US8930364B1 (en) * | 2012-03-29 | 2015-01-06 | Amazon Technologies, Inc. | Intelligent data integration |
| US9286111B2 (en) | 2012-04-27 | 2016-03-15 | Advanced Micro Devices, Inc. | Accessing time stamps during transactions in a processor |
| US9286339B2 (en) * | 2012-04-30 | 2016-03-15 | Hewlett Packard Enterprise Development Lp | Dynamic partitioning of a data structure |
| US8788471B2 (en) | 2012-05-30 | 2014-07-22 | International Business Machines Corporation | Matching transactions in multi-level records |
| US20140075124A1 (en) | 2012-09-07 | 2014-03-13 | International Business Machines Corporation | Selective Delaying of Write Requests in Hardware Transactional Memory Systems |
| US9853819B2 (en) * | 2013-08-05 | 2017-12-26 | Guardtime Ip Holdings Ltd. | Blockchain-supported, node ID-augmented digital record signature method |
| US9659050B2 (en) | 2013-08-06 | 2017-05-23 | Sybase, Inc. | Delta store giving row-level versioning semantics to a non-row-level versioning underlying store |
| JP6264872B2 (en) * | 2013-12-17 | 2018-01-24 | 日本電気株式会社 | Transaction processing system |
| US10474645B2 (en) | 2014-02-24 | 2019-11-12 | Microsoft Technology Licensing, Llc | Automatically retrying transactions with split procedure execution |
| WO2015143120A1 (en) | 2014-03-20 | 2015-09-24 | LogicBlox, Inc. | Transaction repair |
| WO2015187187A1 (en) | 2014-06-02 | 2015-12-10 | Hewlett-Packard Development Company, L.P. | Journal events in a file system and a database |
| US9619278B2 (en) | 2014-06-26 | 2017-04-11 | Amazon Technologies, Inc. | Log-based concurrency control using signatures |
| US10158492B2 (en) * | 2015-02-25 | 2018-12-18 | Guardtime Ip Holdings Limited | Blockchain-supported device location verification with digital signatures |
| US10103893B2 (en) * | 2015-02-27 | 2018-10-16 | Guardtime IP Holdings, Ltd. | Blockchain-supported, fail-safe synchronization in a data authentication infrastructure |
| US9881176B2 (en) | 2015-06-02 | 2018-01-30 | ALTR Solutions, Inc. | Fragmenting data for the purposes of persistent storage across multiple immutable data structures |
| EP3314521A4 (en) * | 2015-06-29 | 2019-01-02 | Peernova, Inc. | Cryptographic assurances of data integrity for data crossing trust boundaries |
| US10762229B2 (en) * | 2015-07-07 | 2020-09-01 | Private Machines Inc. | Secure searchable and shareable remote storage system and method |
| US10461940B2 (en) * | 2017-03-10 | 2019-10-29 | Fmr Llc | Secure firmware transaction signing platform apparatuses, methods and systems |
| JP6479186B2 (en) | 2015-07-17 | 2019-03-06 | 株式会社日立製作所 | Computer system and database management method |
| US11102313B2 (en) | 2015-08-10 | 2021-08-24 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
| US10210225B2 (en) | 2015-09-10 | 2019-02-19 | Sap Se | Controlling interactions between an application user interface and a database |
| US20180331832A1 (en) * | 2015-11-05 | 2018-11-15 | Allen Pulsifer | Cryptographic Transactions System |
| US9923806B2 (en) | 2015-11-09 | 2018-03-20 | Bank Of America Corporation | Network traffic routing tool |
| US10474636B2 (en) | 2016-03-25 | 2019-11-12 | Amazon Technologies, Inc. | Block allocation for low latency file systems |
| US10643203B2 (en) * | 2016-04-12 | 2020-05-05 | Digicash Pty Ltd. | Secure transaction controller for value token exchange systems |
| US10803537B2 (en) * | 2016-04-18 | 2020-10-13 | R3 Ltd. | System and method for managing transactions in dynamic digital documents |
| US10838944B2 (en) * | 2016-06-10 | 2020-11-17 | Apple Inc. | System and method for maintaining a multi-level data structure |
| US10789597B2 (en) * | 2016-09-21 | 2020-09-29 | R-Stor Inc. | Systems and methods for using a distributed ledger for data handling |
| US10614239B2 (en) * | 2016-09-30 | 2020-04-07 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
| US11128603B2 (en) * | 2016-09-30 | 2021-09-21 | Nec Corporation | Method and system for providing a transaction forwarding service in blockchain implementations |
| KR101829729B1 (en) * | 2016-11-03 | 2018-03-29 | 주식회사 코인플러그 | Method for certifying a user by using mobile id through blockchain and merkle tree structure related thereto, and terminal and server using the same |
| EP3318988B1 (en) | 2016-11-04 | 2020-03-18 | Ordnance Survey Limited | Transaction-based refresh of a long database transaction's workspace |
| US10565187B2 (en) | 2016-11-17 | 2020-02-18 | Sap Se | Management of transactions spanning different database types |
| US10496665B2 (en) | 2016-11-17 | 2019-12-03 | Sap Se | Database system incorporating document store |
| US10459820B2 (en) | 2017-01-13 | 2019-10-29 | Sap Se | Document clustering in in-memory databases |
| WO2018161007A1 (en) * | 2017-03-03 | 2018-09-07 | Mastercard International Incorporated | Method and system for storage and transfer of verified data via blockhain |
| CN110603557B (en) * | 2017-03-16 | 2024-04-12 | 香港物流及供应链管理应用技术研发中心 | System and method for controlling transaction ledger |
| US11107048B2 (en) * | 2017-04-17 | 2021-08-31 | International Business Machines Corporation | Providing out-of-band verification for blockchain transactions |
| US10585873B2 (en) | 2017-05-08 | 2020-03-10 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
| KR101919590B1 (en) * | 2017-05-10 | 2019-02-08 | 주식회사 코인플러그 | METHOD FOR PAYING COST OF IoT DEVICE BASED ON BLOCKCHAIN AND MERKLE TREE STRUCTURE RELATED THERETO, AND SERVER, SERVICE PROVIDING TERMINAL, AND DIGITAL WALLET USING THE SAME |
| US10810004B2 (en) * | 2017-06-30 | 2020-10-20 | Oracle International Corporation | System and method for managing a public software component ecosystem using a distributed ledger |
| US10528486B2 (en) * | 2017-06-30 | 2020-01-07 | Intel Corporation | Techniques for crypto-aware cache partitioning |
| EP3444997A1 (en) * | 2017-08-18 | 2019-02-20 | Siemens Aktiengesellschaft | Devices to provide a quantity of cryptographically protected and filtered as well as sorted transaction datasets of a link of a block chain |
| GB2566741A (en) * | 2017-09-26 | 2019-03-27 | Phm Associates Ltd | Integrity of data records |
| WO2019078622A1 (en) * | 2017-10-17 | 2019-04-25 | 주식회사 코인플러그 | Blockchain-based payment method, and payment server using same |
| US20190140819A1 (en) * | 2017-11-08 | 2019-05-09 | Secret Double Octopus Ltd | System and method for mekle puzzles symeteric key establishment and generation of lamport merkle signatures |
| US11177961B2 (en) * | 2017-12-07 | 2021-11-16 | Nec Corporation | Method and system for securely sharing validation information using blockchain technology |
| US20190188706A1 (en) * | 2017-12-18 | 2019-06-20 | Apple Inc. | Transference tracking |
| GB201801679D0 (en) * | 2018-02-01 | 2018-03-21 | Microsoft Technology Licensing Llc | Database transaction log writing and integrity checking |
| US20190253256A1 (en) * | 2018-02-13 | 2019-08-15 | Texas Precious Metals LLC | Tracking and verifying authenticity of an asset via a distributed ledger |
| US10833865B2 (en) * | 2018-04-30 | 2020-11-10 | Dell Products L.P. | Blockchain-based method and system for immutable resource allocation in a cloud computing environment |
| CN108924107B (en) * | 2018-06-21 | 2020-08-21 | 桂林电子科技大学 | A verifiable method of blockchain telemedicine data call |
| WO2020002974A1 (en) * | 2018-06-30 | 2020-01-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for implementing a distributed blockchain transaction processing element in a datacenter |
| US11165826B2 (en) * | 2018-07-02 | 2021-11-02 | International Business Machines Corporation | On-chain governance of blockchain |
| CN109194482B (en) * | 2018-08-03 | 2021-02-12 | 中山大学 | Reputation certification based block chain consensus method |
| US11070360B2 (en) * | 2018-08-13 | 2021-07-20 | International Business Machines Corporation | Parallel transaction validation and block generation in a blockchain |
| CN108985100B (en) * | 2018-08-15 | 2022-02-25 | 百度在线网络技术(北京)有限公司 | Block chain-based element security certification method, device, equipment and medium |
| CN108964926B (en) * | 2018-08-28 | 2021-02-02 | 成都信息工程大学 | User trust negotiation establishing method, user behavior data storage method and medium |
| US11128472B2 (en) * | 2018-09-04 | 2021-09-21 | Red Hat, Inc. | Signature verification using blockchain |
| US11138572B2 (en) * | 2018-09-26 | 2021-10-05 | Mastercard International Incorporated | Method and system for dispute resolution in a public blockchain |
| US11025610B2 (en) * | 2018-11-20 | 2021-06-01 | Microsoft Technology Licensing, Llc | Distributed ledger-based profile verification |
| US11196567B2 (en) * | 2018-11-26 | 2021-12-07 | Amazon Technologies, Inc. | Cryptographic verification of database transactions |
| CN113256417B (en) * | 2021-05-14 | 2022-07-12 | 杭州链网科技有限公司 | Transaction sharing-based consensus block method and system |
-
2018
- 2018-11-26 US US16/200,589 patent/US11196567B2/en active Active
-
2019
- 2019-11-25 WO PCT/US2019/063058 patent/WO2020112664A1/en not_active Ceased
- 2019-11-25 GB GB2106687.3A patent/GB2593097B/en active Active
- 2019-11-25 DE DE112019005881.9T patent/DE112019005881T5/en active Pending
-
2021
- 2021-11-02 US US17/517,577 patent/US12476821B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4309569A (en) * | 1979-09-05 | 1982-01-05 | The Board Of Trustees Of The Leland Stanford Junior University | Method of providing digital signatures |
| US20170272250A1 (en) * | 2015-12-04 | 2017-09-21 | Verisign, Inc. | Hash-based digital signatures for hierarchical internet public key infrastructure |
| US20170250815A1 (en) * | 2016-01-26 | 2017-08-31 | Stampery Inc. | Systems and methods for certification of data units and/or certification verification |
| US20180089041A1 (en) * | 2016-09-28 | 2018-03-29 | Mcafee, Inc | Query optimized distributed ledger system |
Non-Patent Citations (1)
| Title |
|---|
| ANONYMOUS: "Merkle tree - Wikipedia", 30 October 2018 (2018-10-30), XP055667313, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Merkle_tree&oldid=866395282> [retrieved on 20200211] * |
Also Published As
| Publication number | Publication date |
|---|---|
| DE112019005881T5 (en) | 2021-09-02 |
| GB2593097A (en) | 2021-09-15 |
| US11196567B2 (en) | 2021-12-07 |
| US12476821B2 (en) | 2025-11-18 |
| GB2593097B (en) | 2023-12-13 |
| US20220231860A1 (en) | 2022-07-21 |
| US20200169412A1 (en) | 2020-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12476821B2 (en) | Cryptographic verification of database transactions | |
| JP7113040B2 (en) | Versioned hierarchical data structure for distributed data stores | |
| US11675770B1 (en) | Journal queries of a ledger-based database | |
| Vaish | Getting started with NoSQL | |
| US11119998B1 (en) | Index and view updates in a ledger-based database | |
| US11138164B1 (en) | Alter table implementation details with schema versioning | |
| US11418345B2 (en) | Digest proofs in a journaled database | |
| US11657088B1 (en) | Accessible index objects for graph data structures | |
| US20170070492A1 (en) | Verification of data set components using digitally signed probabilistic data structures | |
| US12244723B2 (en) | System and method to cryptographically validate rich query results | |
| US11036708B2 (en) | Indexes on non-materialized views | |
| Giamas | Mastering MongoDB 6. x: Expert techniques to run high-volume and fault-tolerant database solutions using MongoDB 6. x | |
| MXPA05005535A (en) | Anti virus for an item store. | |
| US11487819B2 (en) | Threaded leaf nodes in database journal | |
| US11310054B2 (en) | Symmetric function for journaled database proof | |
| US11487733B2 (en) | Database journal redaction | |
| US11385948B1 (en) | Distributed database exception handling | |
| US12361006B1 (en) | Data access tracking service | |
| US11269903B1 (en) | Indexing and retrieval of configuration data | |
| US11803577B1 (en) | Parent/child document indexing | |
| US10990572B1 (en) | Scalable indexing service | |
| US11481391B1 (en) | Query language operations using a scalable key-item data store | |
| US11899725B1 (en) | Continuous file metadata refresh for file gateway | |
| WO2024073360A1 (en) | Secure query processing | |
| Soueidi | Microsoft Azure Storage Essentials |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19820976 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 202106687 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20191125 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2106687.3 Country of ref document: GB |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 19820976 Country of ref document: EP Kind code of ref document: A1 |
|
| WWG | Wipo information: grant in national office |
Ref document number: 2106687.3 Country of ref document: GB |