# US 10,764,034 B2 · Method and system for facilitating data transfer between blockchains

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

- Number: US 10,764,034 B2
- Document ID: US10764034B2
- Status: Granted
- Kind: B2
- Application number: 16/799,148
- Filed: 2020-02-24
- Published: 2020-06-25
- Granted: 2020-09-01
- Earliest claimed: 2017-10-16
- Assignees: North Peak Resources Ltd.
- Applicants: North Peak Resources Ltd.
- Inventors: Thomas Thompson
- Web page: https://patentgrep.com/patent/US10764034B2

## CPC

- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/3247: {involving digital signatures}
- H04L 9/3265: {using certificate chains, trees or paths; Hierarchical trust model}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 2209/08: Randomization, e.g. dummy operations or using noise
- 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

Methods, systems, and techniques for facilitating data transfer between blockchains, Data is sent from a first blockchain to a second blockchain. The data includes lineage verification data that permits the second blockchain to verify a lineage of at least one block of the first blockchain; a proper subset of all non-header data stored using the at least one block; and validity verification data that permits the second blockchain to verify validity of the proper subset of all non-header data sent to the second blockchain from the first blockchain. The proper subset of non-header data may be a slice of state data of an application stored in the first blockchain. The second blockchain verifies the lineage and validity of the data it receives, and creates a new block having non-header data comprising the data it received.

## Claims

### Claim 1

A method for facilitating data transfer between blockchains, the method comprising:
(a) receiving a request from a second blockchain for a proper subset of all non-header application data stored using at least one block of a first blockchain, wherein the request comprises a starting block height of the first blockchain;
(b) determining a difference in the proper subset of all application data stored between a block of the first blockchain at the starting block height and a block of the first blockchain at a current block height; and
(c) sending, from the first blockchain to the second blockchain:
(i) lineage verification data that permits the second blockchain to verify a lineage of at least one block of the first blockchain;
(ii) the difference in the proper subset of all application data; and
(iii) verification data that permits the second blockchain to verify validity of the difference in the proper subset of all non-header data sent to the second blockchain from the first blockchain,
wherein the block of the first blockchain at the starting block height is higher than a genesis block of the first blockchain.

### Claim 2 (depends on 1)

The method of claim 1, wherein the proper subset of all application data comprises a proper subset of all state data stored using the at least one block, wherein the state data represents a state of an application expressed as computer program code that is stored using the first blockchain.

### Claim 3 (depends on 2)

The method of claim 2, wherein the proper subset of all application data further comprises a first action that is performed by the application and that results in the state of the application.

### Claim 4 (depends on 1)

The method of claim 1, wherein the lineage verification data comprises:
(a) a hash of the at least one block;
(b) a hash of a header of a block in the first blockchain immediately below the at least one block;
(c) a hash of the application data; and
(d) a sufficient number of digital signatures of nodes of the first blockchain to establish that consensus was reached for the at least one block.

### Claim 5 (depends on 1)

The method of claim 1, wherein the validity verification data comprises one or more hash values selected to permit the second blockchain to determine a Merkle path from a hash of the proper subset of all application data sent to the second blockchain to a Merkle root.

### Claim 6 (depends on 1)

The method of claim 1, further comprising, prior to receiving the request, sending to the second blockchain an update notifying the second blockchain that the first blockchain has added a block.

### Claim 7 (depends on 6)

The method of claim 6, wherein the update comprises a height of the block that has been added and a hash of a header of the block that has been added.

### Claim 8 (depends on 1)

The method of claim 1, further comprising, prior to sending the proper subset of all application data:
(a) obtaining a unique chain identifier identifying the second blockchain;
(b) attempting to confirm an identity of the second blockchain using the chain identifier; and
(c) only sending the proper subset of all application data when the attempt to confirm the identity of the second blockchain is successful.

### Claim 9 (depends on 8)

The method of claim 8, wherein obtaining the unique chain identifier comprises generating the chain identifier by digitally signing a value comprising the genesis block containing a random seed.

### Claim 10 (depends on 1)

The method of claim 1, wherein the proper subset of all application data comprises a second action to be performed by an application expressed as computer program code that is stored using the second blockchain.

### Claim 11 (depends on 10)

The method of claim 10, further comprising, after sending the second action to the second blockchain, receiving from the second blockchain:
(a) lineage verification data that permits the first blockchain to verify a lineage of at least one block of the second blockchain;
(b) data indicating that the second action is pending at the second blockchain, wherein the data indicating that the second action is pending is stored using the at least one block of the second blockchain; and
(c) validity verification data that permits the first blockchain to verify validity of the data indicating that the second action is pending at the second blockchain.

### Claim 12 (depends on 11)

The method of claim 11, further comprising, after receiving the data indicating that the second action is pending at the second blockchain, further receiving from the second blockchain:
(a) lineage verification data that permits the first blockchain to verify a lineage of at least one additional block of the second blockchain;
(b) data indicating that the second action has been performed at the second blockchain, wherein the data indicating that the second action has been performed is stored using the at least one additional block of the second blockchain; and
(c) validity verification data that permits the first blockchain to verify validity of the data indicating that the second action has been performed at the second blockchain.

### Claim 13 (depends on 1)

The method of claim 1, wherein the first and second blockchains are virtualized on a common computer node.

### Claim 14 (depends on 1)

A system for performing a blockchain-facilitated data transfer, the system comprising a first node comprising part of a first blockchain, the first node comprising:
(a) network interface hardware for interfacing with a second node;
(b) a data store having stored on it the first blockchain;
(c) a processor communicatively coupled to the data store and network interface hardware; and
(d) a memory communicatively coupled to the processor and having stored on it computer program code that is executable by the processor and that when executed by the processor causes the processor to perform the method of claim 1.

### Claim 15 (depends on 1)

A non-transitory computer readable medium have stored thereon computer program code that is executable by a processor and that when executed by the processor causes the processor to perform the method of claim 1.

### Claim 16

A method for facilitating data transfer between blockchains, the method comprising:
(a) sending a request to a first blockchain for a proper subset of all application data stored using at least one block of the first blockchain, wherein the request comprises a starting block height of the first blockchain;
(b) receiving, at a second blockchain from the first blockchain:
(i) lineage verification data that permits the second blockchain to verify a lineage of the at least one block of the first blockchain;
(ii) a difference in the proper subset of all application data stored between a block of the first blockchain starting at the starting block height and a block at a current block height of the first blockchain; and
(iii) validity verification data that permits the second blockchain to verify validity of the difference in the proper subset of all application data sent to the second blockchain from the first blockchain;
(c) verifying lineage of the at least one block of the first blockchain using the lineage verification data;
(d) verifying validity of the difference in the proper subset of all application data using the validity verification data; and
(e) adding a new block to the second blockchain, wherein the new block is used to store application data comprising the lineage verification data, the difference in the proper subset of all application data, and the validity verification data received from the first blockchain,
wherein the block of the first blockchain at the starting block height is higher than a genesis block of the first blockchain.

### Claim 17 (depends on 16)

The method of claim 16, wherein the proper subset of all application data comprises a proper subset of all state data stored using the at least one block, wherein the state data represents a state of an application expressed as computer program code that is stored using the first blockchain.

### Claim 18 (depends on 17)

The method of claim 17, wherein the proper subset of all application data further comprises a first action that is performed by the application and that results in the state of the application.

### Claim 19 (depends on 16)

The method of claim 16, wherein the lineage verification data comprises:
(a) a hash of the at least one block;
(b) a hash of a header of a block in the first blockchain immediately below the at least one block;
(c) a hash of the application data; and
(d) a sufficient number of digital signatures of nodes of the first blockchain to establish that consensus was reached for the at least one block.

### Claim 20 (depends on 16)

The method of claim 16, wherein the state verification data comprises one or more hash values selected to permit the second blockchain to determine a Merkle path from a hash of the proper subset of all application data sent to the second blockchain to a Merkle root.

### Claim 21 (depends on 16)

The method of claim 16, further comprising, prior to sending the request, receiving from the first blockchain an update that the first blockchain has added a block.

### Claim 22 (depends on 21)

The method of claim 21, wherein the update comprises a height of the block that has been added and a hash of a header of the block that has been added.

### Claim 23 (depends on 16)

The method of claim 16, further comprising, prior to receiving the proper subset of all application data:
(a) obtaining a unique chain identifier identifying the first blockchain;
(b) attempting to confirm an identity of the first blockchain using the chain identifier; and
(c) only receiving the proper subset of all application data when the attempt to confirm the identity of the first blockchain is successful.

### Claim 24 (depends on 23)

The method of claim 23, wherein obtaining the unique chain identifier comprises generating the chain identifier by digitally signing a value comprising the genesis block containing a random seed.

### Claim 25 (depends on 24)

The method of claim 24, wherein the proper subset of all application data comprises a second action to be performed by an application expressed as computer program code that is stored using the second blockchain.

### Claim 26 (depends on 25)

The method of claim 25, further comprising, after receiving the second action from the first blockchain, sending to the first blockchain:
(a) lineage verification data that permits the first blockchain to verify a lineage of at least one block of the second blockchain;
(b) data indicating that the second action is pending at the second blockchain, wherein the data indicating that the second action is pending is stored using the at least one block of the second blockchain; and
(c) validity verification data that permits the first blockchain to verify validity of the data indicating that the second action is pending at the second blockchain.

### Claim 27 (depends on 26)

The method of claim 26, further comprising, after sending the data indicating that the second action is pending at the second blockchain:
(a) performing the action; and
(b) further sending to the first blockchain:
(i) lineage verification data that permits the first blockchain to verify a lineage of at least one additional block of the second blockchain;
(ii) data indicating that the second action has been performed at the second blockchain, wherein the data indicating that the second action has been performed is stored using the at least one additional block of the second blockchain; and
(iii) validity verification data that permits the first blockchain to verify validity of the data indicating that the second action has been performed at the second blockchain.

### Claim 28 (depends on 16)

The method of claim 16, wherein the first and second blockchains are virtualized on a common computer node.

### Claim 29 (depends on 16)

A system for performing a blockchain-facilitated data transfer, the system comprising a second node comprising part of a second blockchain, the second node comprising:
(a) network interface hardware for interfacing with a second node;
(b) non-volatile storage having stored on it the second blockchain;
(c) a processor communicatively coupled to the non-volatile storage and network interface hardware; and
(d) a memory communicatively coupled to the processor and having stored on it computer program code that is executable by the processor and that when executed by the processor causes the processor to perform the method of claim 16.

### Claim 30 (depends on 16)

A non-transitory computer readable medium have stored thereon computer program code that is executable by a processor and that when executed by the processor causes the processor to perform the method of claim 16.
