IP Library Granted Patent US 12699995
Granted Patent B1
US 12699995 · App. 17/744,915 · Granted Aug 4, 2026

Multi-oracle

Inventors: Lawrence Kom (Redmond, WA); Thomas Middleton Rutledge Fuller (Seattle, WA)
Assignee: Core Scientific, Inc.
G06Q20/389G06Q30/0283H04L9/50
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12699995
App. No.
17/744,915
Granted
Aug 4, 2026
Kind
B1
Abstract

Systems and methods for storing multiple data elements to a blockchain are disclosed. Data source descriptors along with options such as data update frequency and data update conditions are received by a multi-oracle service. The multi-oracle service gathers data elements from multiple external sources and based on the options packs them together into transactions for recording on a blockchain network. The multi-oracle service may eliminate the need for individual users to create their own oracles and reduce costs by packing multiple data elements together in transactions at different update frequencies and with different update conditions to efficiently support multiple users or clients with a single transaction.

Claims (64)

1 . A method for providing off-blockchain data from multiple independent computing devices to a blockchain using a multi-oracle service, the method comprising:

executing, by the multi-oracle service on a remote computing device, a shared oracle system accessible to a plurality of independent user computing devices not configured to directly operate an oracle or submit data to a blockchain;

generating, by the multi-oracle service, blockchain transactions on behalf of the plurality of user computing devices, each single blockchain transaction being configured to service multiple user computing devices of the plurality of user computing devices simultaneously;

receiving, by the multi-oracle service, at least one first blockchain request from a first user computing device of the plurality of user computing devices, including a plurality of first data source descriptors specified by a first user using the first user computing device, the plurality of first data source descriptors including a first data element, a first data source, and a first update condition;

accessing, by the multi-oracle service, the first data source and gathering the first data element from the first data source;

prompting, by the multi-oracle service, a user using the first user computing device to specify a first update frequency for the first blockchain request, wherein the first update frequency defines how often the first data element from the first data source should be included in a single blockchain transaction;

receiving, by the multi-oracle service, at least one second blockchain request from a second user computing device of the plurality of user computing devices, including a plurality of second data source descriptors specified by a second user using the second user computing device, the plurality of second data source descriptors including a second data element, a second data source, and a second update condition;

accessing, by the multi-oracle service, the second data source and gathering the second data element from the second data source;

prompting, by the multi-oracle service, a user using the second user computing device to specify a second update frequency for the second blockchain request, wherein the second update frequency defines how often the second data element from the second data source should be included in a single blockchain transaction;

adding, by the multi-oracle service, at least one data element gathered from the first data source to a data pool for inclusion in a single blockchain transaction in response to determining that the first update frequency and the first update condition have been satisfied;

adding, by the multi-oracle service, at least one data element gathered from the second data source to the data pool for inclusion in the single blockchain transaction in response to determining that the second update frequency and the second update condition have been satisfied;

selectively generating, by the multi-oracle service, in response to at least one data element gathered from the first data source and second data source being added to the data pool, the single blockchain transaction to fulfill the at least one first and second blockchain requests by conditionally packing together at least one data element of the gathered first data element that is consistent with the first update condition and update frequency and at least one data element of the gathered second data element that is consistent with the second update condition, while excluding any gathered data elements not meeting the respective update conditions and update frequencies; and

submitting, by the multi-oracle service, the single blockchain transaction to a blockchain network for inclusion in the blockchain in response to generation of the single blockchain transaction, causing the blockchain network to store, in an immutable ledger, at least the first data element and the second data element in a single transaction record only when the first and second update conditions are satisfied, wherein the inclusion of gathered first and second data elements from the first and second data sources occurs at intervals independent of a frequency of blockchain transaction submissions made by the multi-oracle service to the blockchain; and

in response to data being included in the single blockchain transaction satisfying one or more trigger conditions encoded in a plurality of client smart contracts, automatically executing, by the blockchain network, respective ones of the plurality of client smart contracts to perform blockchain-encoded operations based on the off-blockchain data supplied by the multi-oracle service.

2 . The method of claim 1 , wherein packing the at least one data element in the transaction further includes bit shifting, by the multi-oracle service, at least one of the first data element and the second data element to increase a number of leading zeros in the transaction.

3 . The method of claim 1 , wherein:

accessing the first data source and gathering the first data element is periodically performed by the multi-oracle service according to the first data update frequency.

4 . The method of claim 3 , wherein:

accessing the second data source and gathering the second data element is periodically performed by the multi-oracle service according to the second data update frequency.

5 . The method of claim 4 , further comprising:

estimating, by the multi-oracle service, a first size of the first data element; and

calculating, by the multi-oracle service, a first cost based on the first size, the first data update frequency, and a current transaction cost for the blockchain network.

6 . The method of claim 5 , further comprising:

estimating, by the multi-oracle service, a second size of the second data element; and

calculating, by the multi-oracle service, a second cost based on the second size, the second data update frequency, and the current transaction cost for the blockchain network.

7 . The method of claim 6 , wherein submitting the transaction includes specifying, by the multi-oracle service, a transaction fee based on a percentage of a sum of the first cost and the second cost.

8 . The method of claim 1 , further comprising determining, by the multi-oracle service, whether the first update condition has been satisfied and whether the second update condition has been satisfied, wherein:

determining whether the first update condition has been satisfied includes at least one of (i) determining, by the multi-oracle service, whether a first predetermined time period has expired, and (ii) determining, by the multi-oracle service, whether the first data element has changed by at least a first predetermined minimum update threshold value; and determining whether the second update condition has been satisfied includes at least one of (i) determining, by the multi-oracle service, whether a second predetermined time period has expired, and (ii) determining, by the multi-oracle service, whether the second data element has changed by at least a second predetermined minimum update threshold value.

9 . A non-transitory, computer-readable storage medium storing instructions for a multi-oracle service which are executable by a processor of a computational device, wherein the instructions when executed cause the computational device to perform the method according to claim 1 .

10 . A system, comprising a computing device including a processor and a non-transitory, computer-readable storage medium storing instructions for a multi-oracle service which are executable by the processor, wherein the instructions, when executed by the processor, cause the multi-oracle service to perform the method according to claim 1 .

11 . The system of claim 10 , wherein the multi-oracle service includes a bit shifter.

12 . The method of claim 1 , wherein the multi-oracle service receives at least one of the plurality of first data source descriptors and the plurality of second data source descriptors via a web interface.

13 . The method of claim 1 , wherein the multi-oracle service receives at least one of the plurality of first data source descriptors and the plurality of second data source descriptors via a web application programming interface.

14 . The method of claim 1 , wherein at least one of the first data source and the second data source includes at least one of a web site and a network accessible web service.

15 . The method of claim 1 , further comprising, by the multi-oracle service, adding a first entry and a second entry into a job queue, wherein the first entry represents the plurality of first data source descriptors and the second entry represents the plurality of second data source descriptors.

16 . The method of claim 1 , further comprising:

communicating to the first user, by the multi-oracle service, a first offset within a transaction data field where the first data element is located; and

communicating to the second user, by the multi-oracle service, a second offset within the transaction data field where the second data element is located.

17 . A multi-oracle service system, comprising a computing device including a processor and a non-transitory, computer-readable storage medium storing a multi-oracle contract including instructions executable by the processor, wherein the instructions, when executed by the processor, cause the computing device to:

execute the multi-oracle contract on a remote computing device as a shared oracle system accessible to a plurality of independent user computing devices not configured to directly operate an oracle or submit data to a blockchain;

generate blockchain transactions on behalf of the plurality of independent user computing devices, each single blockchain transaction being configured to service multiple user computing devices simultaneously;

receive at least one blockchain request from a first user computing device, including a plurality of first data source descriptors specified by a first client contract, the plurality of first data source descriptors including a first data element, a first data source, and a first update condition;

receive at least one blockchain request from a second user computing device, including a plurality of second data source descriptors specified by a second client contract, the plurality of second data source descriptors including a second data element, a second data source, and a second update condition;

access the first data source and gather the first data element from the first data source;

access the second data source and gather the second data element from the second data source;

adding at least one data element gathered from the first data source to a data pool for inclusion in a single blockchain transaction in response to determining that the first update frequency and the first update condition have been satisfied;

adding at least one data element gathered from the second data source to the data pool for inclusion in the single blockchain transaction in response to determining that the second update frequency and the second update condition have been satisfied;

selectively generate the single blockchain transaction to fulfill the blockchain requests from both the first and second user computing devices by conditionally packaging together at least one gathered data element of the gathered first data element that is consistent with the first update condition and at least one data element of the gathered second data element that is consistent with the second update condition, while excluding any gathered data elements not meeting the respective update conditions;

submit the single blockchain transaction to a blockchain network for inclusion in a blockchain, causing the blockchain network to store, in an immutable ledger, at least the first data element and the second data element in a single transaction record only when the first and second update conditions are satisfied, wherein the inclusion of the gathered first and second data elements from the first and second data sources respectively occurs at intervals independent of a frequency of blockchain transaction submissions made by the multi-oracle contract to the blockchain;

in response to data being included in the single blockchain transaction satisfying one or more trigger conditions encoded in a plurality of client smart contracts, automatically executing, by the blockchain network, respective ones of the plurality of client smart contracts to perform blockchain-encoded operations based on the off-blockchain data supplied by the multi-oracle service; and

communicate, by the multi-oracle contract, with at least one client contract of the first client contract and the second client contract regarding the associated data element that was gathered and included in the transaction via at least one of:

forwarding the associated data element to the at least one client contract via the multi-oracle contract;

signaling the at least one client contract that the associated data element is available on the blockchain via the multi-oracle contract; and

sending the associated data element to the at least one client contract without utilizing the multi-oracle contract;

wherein the first data element is (i) packaged in the transaction when the first update condition has been satisfied and (ii) excluded from the transaction when the first update condition has not been satisfied; and

wherein the second data element is (i) packaged in the transaction when the second update condition has been satisfied and (ii) excluded from the transaction when the second update condition has not been satisfied.

18 . The system of claim 17 , wherein, when the first data element is packaged in the transaction, the computing device communicates with the first client contract via at least one of:

forwarding the first data element to the first client contract via the multi-oracle contract;

signaling the first client contract that the first data element is available on the blockchain via the multi-oracle contract; and

sending the first data element to the first client contract without utilizing the multi-oracle contract.

19 . The system of claim 18 , wherein, when the second data element is packaged in the transaction, the computing device communicates with the second client contract via at least one of:

forwarding the second data element to the second client contract via the multi-oracle contract;

signaling the second client contract that the second data element is available on the blockchain via the multi-oracle contract; and

sending the second data element to the second client contract without utilizing the multi-oracle contract.