# US 2022/0035652 A1 · Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2022/0035652 A1
- Document ID: US20220035652A1
- Status: Published application
- Kind: A1
- Application number: 16/944,011
- Filed: 2020-07-30
- Published: 2022-02-03
- Earliest claimed: 2020-07-30
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: James W. Stamos; Nelson Corcoran
- Web page: https://patentgrep.com/patent/US20220035652A1

## CPC

- G06F 9/466: {Transaction processing}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 9/4493: {Object persistence}
- G06F 16/1837: {Management specially adapted to peer-to-peer storage networks (topology management mechanisms of peer-to-peer networks H04L67/1042)}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/273: {Asynchronous replication or reconciliation}
- H04L 9/0637: {Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A ledgered repository of persistent data objects is replicated on a network of persistent storage systems (PSSs) by transactions recorded across multiple blockchains. The blockchains are replicated on each of the PSSs. Using multiple blockchains enables greater parallelism; however, use of the multiple blockchains requires using measures that ensure that transactions distributed across multiple blockchains are applied in way that ensures a level of transactional consistency. Furthermore, the measures are efficient, thereby reducing overhead of maintaining a level of transactional consistency and increasing throughput of applying the transactions using multiple blockchains.

## Claims

### Claim 1

A method, comprising:
a particular BCA participant of a BCA network reading a first block from a particular blockchain replica of a particular blockchain, wherein said first block includes a particular transaction context for a particular transaction executed by an initiator BCA participant of said BCA network;
wherein a plurality of transactions executed by said BCA network includes said particular transaction, wherein each transaction of said plurality of transactions is recorded by a blockchain of said BCA network, wherein each transaction of said plurality of transactions is associated with a respective transaction promotion time that specifies when said each transaction modified a persistent object;
wherein said particular transaction context includes a first set of one or more records that each correspond to a respective persistent object modified by said particular transaction;
wherein for each record of said first set of one or more records, said each record specifies a respective last promotion time that, for the respective persistent object of said each record, specifies the respective promotion time of a transaction of said plurality of transactions that previously modified said respective persistent object;
said particular BCA participant maintaining a checkpoint value specifying a previous promotion time of a transaction recorded by a previously applied block of said particular blockchain;
making a determination that any transaction with which the particular transaction has a transactional dependency has committed;
wherein a particular record of said first set of one or more records specifies the respective last promotion time for a particular persistent object,
wherein making said determination includes determining the respective last promotion time for said particular persistent object is less than the checkpoint value.

### Claim 2 (depends on 1)

The method of claim 1,
wherein a second record of said first set of one or more records specifies the respective last promotion time for a second persistent object and a transaction identifier that identifies a previous transaction that modified said second persistent object;
wherein making said determination includes determining that the respective last promotion time for said second persistent object is not less than the checkpoint value;
in response to determining the respective last promotion time for said second persistent object is not less than the checkpoint value, determining whether said previous transaction has committed based on the transaction identifier.

### Claim 3 (depends on 2)

The method of claim 2, further including:
after determining that said previous transaction has committed, applying said particular transaction.

### Claim 4 (depends on 2)

The method of claim 2,
wherein the first set of one or more records specify previous values and new values of attributes changed by said particular transaction at said initiator BCA participant;
wherein the method includes:
said particular BCA participant replaying said particular transaction context to generate a second set of one or more records that specify previous values and new values of attributes changed by said particular transaction at said particular BCA participant;
said particular BCA participant voting to commit said particular transaction based on a comparison of the first set of one or more records to the second set of one or more records.

### Claim 5 (depends on 1)

The method of claim 1,
wherein said first block includes an earliest inflight promotion time of one or more transactions that were inflight when a replica of said first block was added to a replica of said blockchain at said initiator BCA participant;
wherein the method further includes changing said checkpoint value to said earliest inflight promotion time.

### Claim 6 (depends on 1)

The method of claim 1, wherein said BCA network is a network of database management systems, and said particular persistent object is a row in a database table.

### Claim 7 (depends on 1)

The method of claim 1, wherein said first set of one or more records include:
a first record of said first set of one or more records that specifies a change to an attribute of a particular persistent object from a first set of persistent objects, said attribute being subject to a uniqueness constraint, said change to an attribute of said particular persistent object changing said attribute from a first value to a second value,
a second record of said first set of one or more records that specifies inserting a persistent object having an attribute set to said first value.

### Claim 8 (depends on 1)

The method of claim 1, wherein said first set of one or more records include:
a first record of said first set of one or more records that specifies a change to a child attribute of a child persistent object from a first set of child persistent objects, said attribute being subject to a foreign key constraint, said child attribute having a value equal to a primary key value of a parent persistent object;
a second record of said first set of one or more records that specifies a modification to said parent persistent object.

### Claim 9

A method, comprising:
a particular BCA participant of a BCA network making an update to a uniqueness constrained attribute of a first persistent object of a first set of persistent objects from a first value to a second value and making an insertion of a second persistent object from a second set of persistent objects, said insertion setting an attribute of said second persistent object to said first value;
wherein said BCA network records changes to said first set of persistent objects and said second set of persistent objects in an aggregated blockchain that comprises a plurality of member blockchains, wherein each BCA participant of said BCA network replicates respective changes initiated by said each BCA participant to said first set of persistent objects and to said second set of persistent objects by at least recording said respective changes in said respective member blockchain of said each BCA participant;
wherein for each member blockchain of said plurality of member blockchains, each BCA participant of said plurality of BCA participants stores a replica of said each member blockchain;
said particular BCA participant adding a particular block to a particular member blockchain of said aggregated blockchain that specifies said update and said insertion; and
wherein each other participant of said plurality of BCA participants is configured to replicate said insertion and said update by applying a copy of said particular block.

### Claim 10

A method, comprising:
a particular BCA participant of a BCA network making a modification of a child attribute of a first set of persistent objects to a first value and making an update to a second set of persistent objects, wherein said modification modifies said child attribute of a first persistent object of said first set of persistent objects and said update updates a second persistent object of said second set of persistent objects, wherein a foreign key constraint on said child attribute constrains values in said child attribute to values in said second attribute;
wherein said BCA network records changes to said first set of persistent objects and said second set of persistent objects in an aggregated blockchain that comprises a plurality of member blockchains, wherein each BCA participant of said BCA network replicates respective changes initiated by said each BCA participant to said first set of persistent objects and to said second set of persistent objects by recording changes in said respective member blockchain of said plurality of member blockchains;
wherein for each member blockchain of said plurality of member blockchains, each BCA participant of said plurality of BCA participants stores a replica of said each member blockchain;
said particular BCA participant adding a particular block to a particular member blockchain of said aggregated blockchain that specifies said modification and said update;
wherein each other participant of said plurality of BCA participants is configured to replicate said modification and said update by applying a copy of said particular block.

### Claim 11

One or more non-transitory computer-readable media storing one or more sequences of instructions which, when executed by one or more processors, cause:
a particular BCA participant of a BCA network reading a first block from a particular blockchain replica of a particular blockchain, wherein said first block includes a particular transaction context for a particular transaction executed by an initiator BCA participant of said BCA network;
wherein a plurality of transactions executed by said BCA network includes said particular transaction, wherein each transaction of said plurality of transactions is recorded by a blockchain of said BCA network, wherein each transaction of said plurality of transactions is associated with a respective transaction promotion time that specifies when said each transaction modified a persistent object;
wherein said particular transaction context includes a first set of one or more records that each correspond to a respective persistent object modified by said particular transaction;
wherein for each record of said first set of one or more records, said each record specifies a respective last promotion time that, for the respective persistent object of said each record, specifies the respective promotion time of a transaction of said plurality of transactions that previously modified said respective persistent object;
said particular BCA participant maintaining a checkpoint value specifying a previous promotion time of a transaction recorded by a previously applied block of said particular blockchain;
making a determination that any transaction with which the particular transaction has a transactional dependency has committed;
wherein a particular record of said first set of one or more records specifies the respective last promotion time for a particular persistent object,
wherein making said determination includes determining the respective last promotion time for said particular persistent object is less than the checkpoint value.

### Claim 12 (depends on 11)

The one or more non-transitory computer-readable media of claim 11,
wherein a second record of said first set of one or more records specifies the respective last promotion time for a second persistent object and a transaction identifier that identifies a previous transaction that modified said second persistent object;
wherein making said determination includes determining that the respective last promotion time for said second persistent object is not less than the checkpoint value;
wherein the one or more sequences of instructions include instructions that, when executed by said one or more processors, cause in response to determining the respective last promotion time for said second persistent object is not less than the checkpoint value, determining whether said previous transaction has committed based on the transaction identifier.

### Claim 13 (depends on 12)

The one or more non-transitory computer-readable media of claim 12, wherein the one or more sequences of instructions include instructions that, when executed by said one or more processors, cause:
after determining that said previous transaction has committed, applying said particular transaction.

### Claim 14 (depends on 12)

The one or more non-transitory computer-readable media of claim 12,
wherein the first set of one or more records specify previous values and new values of attributes changed by said particular transaction at said initiator BCA participant;
wherein the one or more sequences of instructions include instructions that, when executed by said one or more processors, cause:
said particular BCA participant replaying said particular transaction context to generate a second set of one or more records that specify previous values and new values of attributes changed by said particular transaction at said particular BCA participant;
said particular BCA participant voting to commit said particular transaction based on a comparison of the first set of one or more records to the second set of one or more records.

### Claim 15 (depends on 11)

The one or more non-transitory computer-readable media of claim 11,
wherein said first block includes an earliest inflight promotion time of one or more transactions that were inflight when a replica of said first block was added to a replica of said blockchain at said initiator BCA participant;
wherein the one or more sequences of instructions include instructions that, when executed by said one or more processors, cause changing said checkpoint value to said earliest inflight promotion time.

### Claim 16 (depends on 11)

The one or more non-transitory computer-readable media of claim 11, wherein said BCA network is a network of database management systems, and said particular persistent object is a row in a database table.

### Claim 17 (depends on 11)

The one or more non-transitory computer-readable media of claim 11, wherein said first set of one or more records include:
a first record of said first set of one or more records that specifies a change to an attribute of a particular persistent object from a first set of persistent objects, said attribute being subject to a uniqueness constraint, said change to an attribute of said particular persistent object changing said attribute from a first value to a second value,
a second record of said first set of one or more records that specifies inserting a persistent object having an attribute set to said first value.

### Claim 18 (depends on 11)

The one or more non-transitory computer-readable media of claim 11, wherein said first set of one or more records include:
a first record of said first set of one or more records that specifies a change to a child attribute of a child persistent object from a first set of child persistent objects, said attribute being subject to a foreign key constraint, said child attribute having a value equal to a primary key value of a parent persistent object;
a second record of said first set of one or more records that specifies a modification to said parent persistent object.

### Claim 19

One or more non-transitory computer-readable media storing instructions which, when executed by one or more processors, cause:
a particular BCA participant of a BCA network making an update to a uniqueness constrained attribute of a first persistent object of a first set of persistent objects from a first value to a second value and making an insertion of a second persistent object from a second set of persistent objects, said insertion setting an attribute of said second persistent object to said first value;
wherein said BCA network records changes to said first set of persistent objects and said second set of persistent objects in an aggregated blockchain that comprises a plurality of member blockchains, wherein each BCA participant of said BCA network replicates respective changes initiated by said each BCA participant to said first set of persistent objects and to said second set of persistent objects by at least recording said respective changes in said respective member blockchain of said each BCA participant;
wherein for each member blockchain of said plurality of member blockchains, each BCA participant of said plurality of BCA participants stores a replica of said each member blockchain;
said particular BCA participant adding a particular block to a particular member blockchain of said aggregated blockchain that specifies said update and said insertion; and
wherein each other participant of said plurality of BCA participants is configured to replicate said insertion and said update by applying a copy of said particular block.

### Claim 20

One or more non-transitory computer-readable media storing instructions which, when executed by one or more processors, cause:
a particular BCA participant of a BCA network making a modification of a child attribute of a first set of persistent objects to a first value and making an update to a second set of persistent objects, wherein said modification modifies said child attribute of a first persistent object of said first set of persistent objects and said update updates a second persistent object of said second set of persistent objects, wherein a foreign key constraint on said child attribute constrains values in said child attribute to values in said second attribute;
wherein said BCA network records changes to said first set of persistent objects and said second set of persistent objects in an aggregated blockchain that comprises a plurality of member blockchains, wherein each BCA participant of said BCA network replicates respective changes initiated by said each BCA participant to said first set of persistent objects and to said second set of persistent objects by recording changes in said respective member blockchain of said plurality of member blockchains;
wherein for each member blockchain of said plurality of member blockchains, each BCA participant of said plurality of BCA participants stores a replica of said each member blockchain;
said particular BCA participant adding a particular block to a particular member blockchain of said aggregated blockchain that specifies said modification and said update;
wherein each other participant of said plurality of BCA participants is configured to replicate said modification and said update by applying a copy of said particular block.
