SYSTEMS AND METHODS FOR SYNCHRONIZING DATABASE OPERATIONS WITH A DISTRIBUTED BLOCKCHAIN
Systems and methods for synchronizing database operations with a distributed blockchain are disclosed. The database operations are performed on a database that is shared between multiple users including a first user. Exemplary implementations may: receive database information reflecting one or more database operations performed by the first user on a first version of the database; verify whether the one or more database operations are allowed to be performed by the first user; record on the distributed blockchain, responsive to the verification being affirmative, a message that describes or refers to a description of one or more modifications to the database; effectuate transmissions of notifications to the first version of the database; subsequent to the transmissions, propagate or revert the one or more database operations, based on the verification result.
The present disclosure relates to systems and methods for synchronizing database operations with a distributed and/or decentralized blockchain, the database operations being performed on a database that is shared between multiple users. The blockchain stores a registry of assets and transactions.
BACKGROUNDDatabases, in particular distributed databases, are known to facilitate storing, organizing, and sharing information for users, e.g., users in different physical locations.
Ledgers are known techniques to produce a secure record or registry of ownership of assets, transactions, and other information. For example, a blockchain is a type of ledger that can store a registry of assets and transactions. Blockchain technology is known to be used for cryptocurrencies, and/or other applications.
SUMMARYOne aspect of the present disclosure relates to a system configured for synchronizing database operations with a distributed blockchain, the database operations being performed on a database that is shared between multiple users. The multiple users may include a first user. The system may include one or more hardware processors configured by machine-readable instructions. The processor(s) may be configured to receive database information reflecting one or more database operations performed by the first user on a first version of the database. The one or more database operations may operate on one or more cells of the database. Responsive to performance of the one or more database operations, the one or more cells of the database have been locked to prevent the multiple users from making further modifications to the one or more cells of the database through other versions of the database. The processor(s) may be configured to verify whether the one or more database operations are allowed to be performed by the first user. The processor(s) may be configured to record on the distributed blockchain, responsive to the verification being affirmative, a message that describes or refers to a description of one or more modifications to the database. The one or more modifications may correspond to the one or more database operations. The processor(s) may be configured to effectuate transmission, responsive to the verification being affirmative, of a first notification to the first version of the database. Subsequent to transmission of the first notification, the one or more database operations may be propagated to the other versions of the database. The processor(s) may be configured to effectuate transmission, responsive to the verification being negative, of a second notification to the first version of the database. Subsequent to transmission of the second notification, the one or more database operations on the first version of the database may be reverted. The processor(s) may be configured to unlock the one or more cells of the database, subsequent to transmission of either the first notification or the second notification.
Another aspect of the present disclosure relates to a method for synchronizing database operations with a distributed blockchain, the database operations being performed on a database that is shared between multiple users. The multiple users may include a first user. The method may include receiving database information reflecting one or more database operations performed by the first user on a first version of the database. The one or more database operations may operate on one or more cells of the database. Responsive to performance of the one or more database operations, the one or more cells of the database have been locked to prevent the multiple users from making further modifications to the one or more cells of the database through other versions of the database. The method may include verifying whether the one or more database operations are allowed to be performed by the first user. The method may include recording on the distributed blockchain, responsive to the verification being affirmative, a message that describes or refers to a description of one or more modifications to the database. The one or more modifications correspond to the one or more database operations. The method may include effectuating transmission, responsive to the verification being affirmative, of a first notification to the first version of the database. Subsequent to transmission of the first notification, the one or more database operations may be propagated to the other versions of the database. The method may include effectuating transmission, responsive to the verification being negative, of a second notification to the first version of the database. Subsequent to transmission of the second notification, the one or more database operations on the first version of the database are may be reverted. The method may include unlocking the one or more cells of the database, subsequent to transmission of either the first notification or the second notification.
As used herein, any association (or relation, or reflection, or indication, or correspondency) involving servers, processors, client computing platforms, databases, blockchains, database operations, versions of a database, cells of a database, modifications, messages, notifications, encryptions, and/or another entity or object that interacts with any part of the system and/or plays a part in the operation of the system, may be a one-to-one association, a one-to-many association, a many-to-one association, and/or a many-to-many association or N-to-M association (note that N and M may be different numbers greater than 1).
As used herein, the term “obtain” (and derivatives thereof) may include active and/or passive retrieval, determination, derivation, transfer, upload, download, submission, and/or exchange of information, and/or any combination thereof. As used herein, the term “effectuate” (and derivatives thereof) may include active and/or passive causation of any effect. As used herein, the term “determine” (and derivatives thereof) may include measure, calculate, compute, estimate, approximate, generate, and/or otherwise derive, and/or any combination thereof.
These and other features, and characteristics of the present technology, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention. As used in the specification and in the claims, the singular form of “a”, “an”, and “the” include plural referents unless the context clearly dictates otherwise.
In some implementations, different users may access and/or otherwise use different versions of the same database. In some implementations, users may use different computing devices and/or platforms to access a database. Decentralized databases may facilitate sharing control and/or hosting responsibilities of information among different users, e.g., to prevent a single point of failure. For example, the first user may use a first local version of a particular database on a first client computing platform, the second user may use a second local version of the same particular database on a second client computing platform, and so forth. Different versions of the same database do not need to be identical. For example, the first version of the particular database may include proprietary and/or otherwise privileged information that is not accessible to the second user and/or the second version of the particular database. By way of non-limiting example,
Referring to
Database information component 108 may be configured to receive and/or obtain database information reflecting one or more database operations performed on one or more databases, including but not limited to database 119. As used herein, a database operation may include one or more of additions of information, insertions of information, modifications of information, (re-)location of information, replacement of information, removal of information, formatting of information, and/or other changes of information of a database, including but not limited to database 119. In some implementations, database information component 108 may be configured to receive and/or obtain database information reflecting one or more database operations performed on a first version of database 119, e.g., by the first user. In some implementations, database information component 108 may be configured to receive and/or obtain database information reflecting one or more database operations performed on a second version of database 119, e.g., by the second user. In some implementations, database information may be received from one or more client computing platforms 104. Alternatively, and/or simultaneously, in some implementations, database information may be received from database monitor 121, database server 105, one or more versions of database 119, and/or from other resources and/or components in system 100. For example, once a particular user performs a database operation on a particular version of database 119, the mechanisms and/or paths through which information about that activity reaches database information component 108 may vary by implementation. By way of non-limiting example, the first version of database 119 may notify database information component 108, e.g. through first client computing platform 104. In some implementations, database 119 may be managed and/or controlled from a centralized database server 105 (configured to host the database), which may in turn notify database information component 108. In some implementations, database 119 may be monitored by database monitor 121, which may in turn notify database information component 108.
Different databases may choose different approaches to propagating database operations from one version to other versions of the database. In some implementations, a particular database operation may be propagated conservatively, i.e., only after one or more types of verification have verified the integrity of the particular database operation. In some implementations, a particular database operation may be propagated opportunistically to other versions of the database, such that the process of reverting changes may be more elaborate than with conservative propagation. In some implementations, the type of propagation may vary with the type of the particular database operation. For example, certain types of deletions may warrant a more conservative approach than certain types of modifications of individual cell values.
By way of non-limiting example,
Referring to
Referring to
In some implementations, verifying whether one or more database operations are allowed to be performed (e.g., by the first user) may include verifying whether the particular user has permission to modify the one or more cells of the database (e.g., database 119). In some implementations, verifying whether one or more database operations are allowed to be performed by a particular user may include verifying whether the one or more cells of the database (e.g., database 119) had been locked prior to the one or more database operations performed by the particular user. For example, the one or more cells of a database may have been locked by database server 105 (and/or by another component of system 100) to prevent the multiple users from making further modifications to the one or more cells of the database through other versions of the database. For example, the one or more cells of a database have been locked to prevent the second user from making modifications to cells of the second version of database 119 that correspond to the one or more cells of database 119 that have been locked.
Blockchain recording component 112 may be configured to record messages and/or other information on one or more blockchains, including but not limited to one or more blockchains 130. In some implementations, blockchain recording component 112 may be configured to record messages and/or other information on a distributed blockchain. As used herein, the term “distributed” refers to multiple computing platforms located in multiple separate and distinct geographical locations operating together to provide particular functionality, such as, in this case, the functionality of a blockchain.
In some implementations, blockchain 130 (e.g., a distributed blockchain) may be maintained by a distributed computing platform (not shown in
Blockchain 130 may store a registry of assets and transactions across one or more networks. A given asset may be owned by a particular user. An asset may include anything of material value or usefulness that is owned by or on behalf of a person or company, according to some implementations. A right pertaining to an object may be an asset, the object being a physical or a virtual item. Multiple rights may form a set of rights or a bundle of rights that may be transferred and/or otherwise acted on or operated on together. For example, rights may include a right to use, a right to sell, a right to destroy, and/or other rights. Tokens are a type of asset. In some implementations, tokens may include one or more of security tokens, utility tokens, payment tokens, initial coin offering (ICO) tokens, virtual currency tokens, crypto tokens, ERC-20 tokens, EOS tokens, and/or other tokens. In some implementations, tokens not only represent value, but may have a specific use in a particular distributed computing platform, e.g., in the operation of blockchain 130.
In some implementations, blockchain 130 may record ownership of assets. Alternatively, and/or simultaneously, blockchain 130 may record transactions that modify ownership of assets. A smart contract may be a type of asset. In some implementations, once a smart contract has been added to blockchain 130, the smart contract may be referred to as published, posted, and/or recorded. In some implementations, elements of blockchain 130 may be grouped together in units that are referred to as blocks. Individual blocks may be linked or chained together to form a structure of blocks, such as, e.g., a chain of blocks. An individual block may include one or more assets and one or more transactions.
In some implementations, blockchain 130 may be publicly accessible and append-only. In some implementations, existing blocks of blockchain 130 can substantially not be altered or deleted, unless multiple copies of blockchain 130 are altered. This is unlikely to happen provided that the multiple copies are stored on different computing platforms, e.g., in different geographical locations. Blockchain 130 may be replicated, in part or in its entirety, on multiple computing platforms, preferably in multiple different geographical locations.
Blockchain recording component 112 may be configured to record one or more messages on blockchain 130, responsive to verification by database verification component 110 being affirmative. A message may describe or refer to a description of one or more modifications to database 119. The one or more modifications may correspond to the one or more database operations performed by a particular user, e.g., by the first user. In some implementations, the message may be encrypted. In some implementations, the one or more modifications to database 119 may be encrypted. For example, referring to
By way of non-limiting example,
In block 1, one asset (labeled Ax) is generated and/or assigned to user q (Uq). For example, the asset in block 1 may be a connection or link to a particular database, e.g., database 119 in
By way of non-limiting example,
Referring to
Referring to
Referring to
In some implementations, consistency component 116 may be configured to lock and/or unlock cells of databases, including but not limited to database 119. For example, consistency component 116 may be configured to lock particular cells of database 119 subsequent to performance of database operations that operate on the particular cells. For example, consistency component 116 may be configured to unlock particular cells of database 119 subsequent to the database operations being propagated and/or reverted. In some implementations, consistency component 116 may be configured to unlock particular cells subsequent to one or more transmission by transmission component 114. For example, the particular cells may be unlocked subsequent to transmission of the first notification, the second notification, and/or other notifications.
In some implementations, server(s) 102, client computing platform(s) 104, and/or external resources 118 may be operatively linked via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via one or more network 13 such as the Internet and/or other networks. It will be appreciated that this is not intended to be limiting, and that the scope of this disclosure includes implementations in which server(s) 102, client computing platform(s) 104, and/or external resources 118 may be operatively linked via some other communication media.
A given client computing platform 104 may include one or more processors configured to execute computer program components. The computer program components may be configured to enable an expert or user associated with the given client computing platform 104 to interface with system 100 and/or external resources 118, and/or provide other functionality attributed herein to client computing platform(s) 104. By way of non-limiting example, the given client computing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a NetBook, a Smartphone, a smart watch, a gaming console, and/or other computing platforms.
External resources 118 may include sources of information outside of system 100, external entities participating with system 100, and/or other resources. In some implementations, some or all of the functionality attributed herein to external resources 118 may be provided by resources included in system 100.
Server(s) 102 may include electronic storage 120, one or more processors 122, and/or other components. Server(s) 102 may include communication lines, or ports to enable the exchange of information with a network and/or other computing platforms. Illustration of server(s) 102 in
Electronic storage 120 may comprise non-transitory storage media that electronically stores information. The electronic storage media of electronic storage 120 may include one or both of system storage that is provided integrally (i.e., substantially non-removable) with server(s) 102 and/or removable storage that is removably connectable to server(s) 102 via, for example, a port (e.g., a USB port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage 120 may include one or more of optically readable storage media (e.g., optical disks, etc.), magnetically readable storage media (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.), electrical charge-based storage media (e.g., EEPROM, RAM, etc.), solid-state storage media (e.g., flash drive, etc.), and/or other electronically readable storage media. Electronic storage 120 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and/or other virtual storage resources). Electronic storage 120 may store software algorithms, information determined by processor(s) 122, information received from server(s) 102, information received from client computing platform(s) 104, and/or other information that enables server(s) 102 to function as described herein.
Processor(s) 122 may be configured to provide information processing capabilities in server(s) 102. As such, processor(s) 122 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information. Although processor(s) 122 is shown in
It should be appreciated that although components 108, 110, 112, 114, and/or 116 are illustrated in
In some implementations, method 200 may be implemented in one or more processing devices (e.g., a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and/or other mechanisms for electronically processing information). The one or more processing devices may include one or more devices executing some or all of the operations of method 200 in response to instructions stored electronically on an electronic storage medium. The one or more processing devices may include one or more devices configured through hardware, firmware, and/or software to be specifically designed for execution of one or more of the operations of method 200.
An operation 202 may include receiving database information reflecting one or more database operations performed by the first user on a first version of the database. The one or more database operations may operate on one or more cells of the database. In some implementations, responsive to performance of the one or more database operations, the one or more cells of the database have been locked to prevent the multiple users from making further modifications to the one or more cells of the database, e.g., through other versions of the database. Operation 202 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to database information component 108, in accordance with one or more implementations.
An operation 204 may include verifying whether the one or more database operations are allowed to be performed by the first user. Operation 204 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to database verification component 110, in accordance with one or more implementations.
An operation 206 may include recording on the distributed blockchain, responsive to the verification being affirmative, a message that describes or refers to a description of one or more modifications to the database. The one or more modifications correspond to the one or more database operations. Operation 206 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to blockchain recording component 112, in accordance with one or more implementations.
An operation 208 may include effectuating transmission, responsive to the verification being affirmative, of a first notification, e.g., to the first version of the database. Subsequent to transmission of the first notification, the one or more database operations may be propagated to other versions of the database. Operation 208 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to transmission component 114, in accordance with one or more implementations.
An operation 210 may include effectuating transmission, responsive to the verification being negative, of a second notification, e.g., to the first version of the database. Subsequent to transmission of the second notification, the one or more database operations on the first version of the database may be reverted. Operation 210 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to transmission component 114, in accordance with one or more implementations.
In some implementations, an operation 212 may include effectuating unlocking of the one or more cells of the database, subsequent to transmission of either the first notification or the second notification. Operation 212 may be performed by one or more hardware processors configured by machine-readable instructions including a component that is the same as or similar to consistency component 116, in accordance with one or more implementations.
Although the present technology has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred implementations, it is to be understood that such detail is solely for that purpose and that the technology is not limited to the disclosed implementations, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present technology contemplates that, to the extent possible, one or more features of any implementation can be combined with one or more features of any other implementation.
Claims
1. A system configured for synchronizing database operations with a distributed blockchain, the database operations being performed on a database that is hosted on one or more database servers that are accessible by a first user through a first client computing platform and by a second user through a second client computing platform, the system comprising:
- a database server configured to host the database, wherein the database server is further configured to receive notifications and propagate database operations to multiple local versions of the database, wherein the multiple local versions include a first local version of the database and a second local version of the database, wherein the first local version of the database is accessible by the first user and not accessible by the second user, and wherein the second local version of the database is accessible by the second user and not accessible by the first user; and
- one or more hardware processors configured by machine-readable instructions to: receive, from the first client computing platform, a first set of database information reflecting a first set of one or more database operations performed locally by the first user on the first local version of the database, wherein the first set of one or more database operations effectuates changes to a first set of one or more cells of the first local version of the database; record on the distributed blockchain a first transaction, wherein the first transaction describes or refers to a description of a first set of one or more modifications to the database, wherein the first set of one or more modifications corresponds to the first set of one or more database operations; perform a first verification whether the first set of one or more database operations is allowed to be performed by the first user; record on the distributed blockchain a second transaction, responsive to the first verification verifying the first user is not allowed to perform the first set of one or more database operations, wherein the second transaction describes or refers to a second description of a second set of one or more modifications to the database, wherein the second set of one or more modifications to the database reverts the changes to the first set of one or more cells of the first local version of the database, that were due to the first set of one or more modifications to the database; and effectuate transmission to the database server, responsive to the first verification verifying the first user is not allowed to perform the first set of one or more database operations, of a first notification, wherein, subsequent to receipt by the database server of the first notification, the first set of one or more database operations on the first local version of the database is reverted such that the first local version of the database no longer includes the changes to the first set of one or more cells of the first local version of the database such that the first local version of the database, upon being accessed by the first user, reflects that the first set of one or more database operations has not been performed on the first local version of the database.
2. The system of claim 1, wherein, subsequent to receipt by the database server of the first notification, the second local version of the database, upon being accessed by the second user, reflects that the first set of one or more database operations has not been performed on the second local version of the database.
3. The system of claim 1, wherein the one or more hardware processors are further configured by the machine-readable instructions to:
- responsive to receipt of the first set of database information reflecting performance of the first set of one or more database operations, effectuate locking the first set of one or more cells of the first local version of the database to prevent the first user from making further modifications to the first set of one or more cells of the first local version of the database; and
- effectuate unlocking of the first set of one or more cells of the first local version of the database, subsequent to transmission of the first notification to the database server such that the first user is able to perform database operations locally on the first set of one or more cells of the first local version of the database.
4. The system of claim 1, wherein performing the first verification includes verifying whether the first user has permission to modify the first set of one or more cells of the first local version of the database.
5. The system of claim 1, wherein performing the first verification includes verifying whether the first set of one or more cells of the first local version of the database had been locked prior to the first set of one or more database operations performed locally by the first user on the first local version of the database.
6. The system of claim 1, wherein the first transaction is encrypted.
7. The system of claim 1, wherein the one or more hardware processors are further configured by the machine-readable instructions to:
- reconstruct a reconstructed database based on transactions recorded on the distributed blockchain.
8. The system of claim 7, wherein the reconstructed database is reconstructed such that:
- (i) subsequent to recording the first transaction, the reconstructed database is consistent with the database hosted by the database server, including the first set of one or more database operations.
9. The system of claim 8, wherein the reconstructed database is further reconstructed such that:
- (ii) subsequent to recording the second transaction, the reconstructed database is consistent with the database hosted by the database server, including a reversion of the first set of one or more database operations.
10. The system of claim 1, wherein the distributed blockchain is an append-only blockchain.
11. A method for synchronizing database operations with a distributed blockchain, the database operations being performed on a database that is hosted on one or more database servers that are accessible by a first user through a first client computing platform and by a second user through a second client computing platform, the method comprising:
- hosting the database, by a database server, wherein the database server receives notifications and propagates database operations to multiple local versions of the database, wherein the multiple local versions include a first local version of the database and a second local version of the database, wherein the first local version of the database is accessible by the first user and not accessible by the second user, and wherein the second local version of the database is accessible by the second user and not accessible by the first user;
- receiving, from the first client computing platform, a first set of database information reflecting a first set of one or more database operations performed by the first user on the first local version of the database, wherein the first set of one or more database operations operates on a first set of one or more cells of the first local version of the database;
- recording on the distributed blockchain a first transaction, wherein the first transaction describes or refers to a description of a first set of one or more modifications to the database, wherein the first set of one or more modifications corresponds to the first set of one or more database operations;
- performing a first verification whether the first set of one or more database operations is allowed to be performed by the first user;
- recording on the distributed blockchain a second transaction, responsive to the first verification verifying the first user is not allowed to perform the first set of one or more database operations, wherein the second transaction describes or refers to a second description of a second set of one or more modifications to the database, wherein the second set of one or more modifications to the database reverts the changes to the first set of one or more cells of the first local version of the database, that were due to the first set of one or more modifications to the database; and
- effectuating transmission to the database server, responsive to the first verification verifying the first user is not allowed to perform the first set of one or more database operations, of a first notification, wherein, subsequent to receipt by the database server of the first notification, the first set of one or more database operations on the first local version of the database is reverted such that the first local version of the database no longer includes the changes to the first set of one or more cells of the first local version of the database such that the first local version of the database, upon being accessed by the first user, reflects that the first set of one or more database operations has not been performed on the first local version of the database.
12. The method of claim 11, wherein, subsequent to receipt by the database server of the first notification, the second local version of the database, upon being accessed by the second user, reflects that the first set of one or more database operations has not been performed on the second local version of the database.
13. The method of claim 11, further comprising:
- responsive to receiving the first set of database information reflecting performance of the first set of one or more database operations, effectuating locking the first set of one or more cells of the first local version of the database to prevent the first user from making further modifications to the first set of one or more cells of the first local version of the database; and
- effectuating unlocking of the first set of one or more cells of the first local version of the database, subsequent to transmission of the first notification to the database server such that the first user is able to perform database operations locally on the first set of one or more cells of the first local version of the database.
14. The method of claim 11, wherein performing the first verification includes verifying whether the first user has permission to modify the first set of one or more cells of the first local version of the database.
15. The method of claim 11, wherein performing the first verification includes verifying whether the first set of one or more cells of the first local version of the database had been locked prior to the first set of one or more database operations performed by the first user on the first local version of the database.
16. The method of claim 11, wherein the first transaction is encrypted.
17. The method of claim 11, further comprising:
- reconstructing a reconstructed database based on transactions recorded on the distributed blockchain.
18. The method of claim 17, wherein the reconstructed database is reconstructed such that:
- (i) subsequent to recording the first transaction, the reconstructed database is consistent with the database hosted by the database server, including the first set of one or more database operations.
19. The method of claim 18, wherein the reconstructed database is further reconstructed such that:
- (ii) subsequent to recording the second transaction, the reconstructed database is consistent with the database hosted by the database server, including a reversion of the first set of one or more database operations.
20. The method of claim 11, wherein the distributed blockchain is an append-only blockchain.
Type: Application
Filed: Mar 31, 2022
Publication Date: Jul 14, 2022
Inventors: Stephan Cunningham (Pasadena, CA), Cameron Thacker (Sherman Oaks, CA), John Linden (Sherman Oaks, CA)
Application Number: 17/710,408