Systems and methods for providing financial data to financial instruments in a distributed ledger system

An embodiment of a method of providing financial data to a financial instrument smart contract in a distributed ledger system includes: receiving, by an oracle smart contract in the distributed ledger system, a transaction from the financial instrument smart contract, the transaction including registration data having an identification of financial data to be delivered and an identification of a schedule on which to deliver the financial data; generating a transaction including the financial data; and transmitting the generated transaction to at least one distributed node of the distributed ledger system according to the requested schedule.

BACKGROUND INFORMATION

Some types of distributed ledger systems enable a smart contract to be stored by the system for execution. Distributed applications and other configurations of these systems may build upon such smart contracts to provide various functionalities.

However, the use of smart contracts to provide functionalities has limitations. Smart contracts stored in distributed ledger systems do not themselves have direct access to data existing outside the distributed ledger system, which limits their usefulness in situations requiring such information. Smart contracts stored in distributed ledger systems are also not typically capable of acting in a fully autonomous manner, limiting their usefulness in scenarios in which it is desired that the smart contract take some action based on, e.g., outside information. Additionally, data stored in the distributed ledger system is typically publically visible, limiting the proprietary usefulness and security of smart contracts stored in distributed ledger systems relying on such data.

Furthermore, these limitations may be exacerbated in the financial field, where, for example, the closing of a financial instrument may depend upon a current price of some predefined financial equity or index etc.

Thus, a need exists for systems and methods to provide financial data to financial instruments in a distributed ledger system in an improved manner.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Embodiments of an oracle system, and associated methods, provide financial data to a financial instrument contract in a distributed ledger system in a manner that provides access for the financial instrument contract to data outside the distributed ledger system, increases the ability of the financial instrument contract to act autonomously, and maintains the privacy of requests for financial data and the delivered financial data.

The oracle system may register the financial instrument contract to receive requested financial data delivery. To perform registration, an oracle smart contract in the distributed ledger system may receive a registration transaction from the financial instrument smart contract, containing registration data indicating the requested financial data and delivery schedule, and store the registration data in a data structure in the distributed ledger system. An oracle server system outside of the distributed ledger system may monitor the distributed ledger system for the creation of new ledger structures, and in response to the creation of a new ledger structure, such as blocks of a blockchain in a blockchain system, read the data structure containing the registration data in the new ledger structure, and configure control systems to perform the data delivery accordingly.

The oracle system may then deliver the requested financial data to the financial instrument contract. To perform the financial data delivery, the oracle server system may monitor occurrence of a condition to trigger the financial data delivery, such as a scheduled delivery time or condition, and retrieve and/or calculate the requested financial data as a result. The oracle server system may then generate and transmit to at least one node of the distributed ledger system a transaction containing the requested financial data according to the requested schedule. In embodiments, the oracle server system may address the generated transaction to the oracle contract, which may then in response to receiving the transaction invoke the financial instrument contract to deliver the requested financial data. Alternatively, the oracle server system may address the generated transaction to the financial instrument contract directly, such as by generating a new address of the distributed ledger system for the transaction and a corresponding code to identify the transaction to the financial instrument contract as trusted.

In response to receiving the transaction, the financial instrument may execute an action based on the delivered financial data. For example, the financial instrument may determine at least one value based on the received financial data, such as a monetary value of the financial instrument, portion of the financial instrument, or intermediate payment of the financial instrument. The financial instrument may then invoke a function based on the determined value, such as a function to close an underlying transaction of the financial instrument, make an intermediate payment, etc.

FIG.1depicts an exemplary embodiment of a system20for providing financial data to a financial instrument in a distributed ledger system, including an oracle system24including an oracle contract28in a distributed ledger system32and an oracle server system36, a financial instrument contract40in the distributed ledger system32, one or more counterparty systems44, and a financial instrument owner system48. The distributed ledger system32provides a distributed ledger to store transactions, smart contracts, and associated data. The financial instrument contract40, a smart contract of the distributed ledger system32, represents a financial instrument. The oracle contract28, a smart contract of the distributed ledger system32, and the oracle server system36provide financial data delivery services to the financial instrument contract40. The one or more counterparty systems44are used by one or more counterparties to the financial instrument to interact with the financial instrument contract40. The owner system48is used by an owner of the financial instrument to interact with the financial instrument contract40.

FIG.2depicts an exemplary embodiment of the oracle contract28, including a registration function52, registration data structures56, a registration data read function60, and a financial data function64. A smart contract may include program instructions that may be executed by components of the distributed ledger system in response to transactions transmitted in the distributed ledger system addressed to the smart contract. As indicated above, the oracle contract28provides financial data delivery services to the financial instrument contract40as discussed herein.

The registration function52is a program function providing services to register the financial instrument contract40for financial data delivery. The registration function52may be invoked by transactions addressed to the oracle contract28from financial instruments. The registration function52receives as input a request from the invoking financial instrument contract40to register to receive indicated financial data delivery services, and as a result stores received registration data in the registration data structures56of the oracle contract28in the distributed ledger system32.

The registration data structures56are data structures of the oracle contract28in the distributed ledger system32used to store data of the oracle contract28. In response to receiving a request to register for data delivery services from the financial instrument contract40, the registration function52stores the registration data in the registration data structures56.

The registration data read function60is a program function to read the data stored in the registration data structures56. The registration data read function60is a read call that may be invoked by the oracle server system36. Read calls may be invoked directly by executing the oracle contract28, such as without requiring a transaction addressed to the oracle contract28. The registration data read function60receives as input a request to read the registration data stored in the registration data structures56, and in response reads and provides as an output the registration data stored in the registration data structures56.

The financial data function64is a program function to provide requested financial data to a requesting financial instrument contract40. The financial data function64may be invoked by a transaction addressed to the oracle contract28from the oracle server system36containing the requested financial data. The financial data function64receives as input the requested financial data and an address of the requesting financial instrument contract40, and in response invokes the requesting financial instrument contract40to deliver the requested financial data. Alternatively, to deliver the requested financial data, the financial data function64may generate and transmit to a distributed node116of the distributed ledger system32a transaction addressed to the requesting financial instrument contract40and containing the requested financial data.

In embodiments, the oracle contract28may include only any subset of, or an alternative connection of, the features depicted in or discussed herein in regard toFIG.2.

In embodiments, the oracle contract28may include the functionalities discussed above or elsewhere herein organized into one or more program functions in an alternative manner, and the systems and methods discussed herein may instead utilize such alternative program functions. For example, instead of the plurality of separate program functions performing the indicated functionalities discussed above, the oracle contract28may include a corresponding single program function, a lesser number of separate program functions, or even a greater number of program functions that perform the functionalities.

FIG.3depicts an exemplary embodiment of the financial instrument contract40, including a registration function68, registration data structures72, a financial data function76, financial data structures80, a trade logic function84, counterparty access function88, legal data structures92, and an owner access function96. The financial instrument contract40may represent a financial instrument stored and executing in the distributed ledger system32. The financial instrument may be, e.g., a bond, an option contract, difference contract, combined assets, an index future, etc., among other financial instrument types.

The registration function68is a program function to request to register the financial instrument contract40for financial data delivery. The registration function68may be invoked by the financial instrument contract50upon creation and signing by one or more counterparties of the financial instrument contract40. The registration function68reads registration data stored in the registration data structure72, and generates and transmits a transaction addressed to the oracle contract28and containing the registration data to a distributed node116of the distributed ledger system32to request registration for the financial data delivery.

The registration data structures72are data structures of the financial instrument contract40in the distributed ledger system32used to store the registration data of the financial instrument contract40. The registration data defines the requested financial data delivery, and may include an indication of the identity of the financial data that is being requested, and an indication of the schedule on which the requested financial data is to be delivered. In embodiments, the registration data stored in the registration data structures72, and eventually delivered to the oracle contract28, is encrypted to protect the privacy of the data in view of the public nature of components of many distributed ledger systems. The registration data may be encrypted outside of the distributed ledger system32and written to the registration data structures72either as part of a process of creating the financial instrument contract40or subsequent to such a process.

The financial data function76is a program function to receive the requested financial data. The financial data function76may be invoked by a function call of the oracle contract28containing the requested financial data, or by a transaction addressed to the financial instrument contract40from the oracle server system36containing the requested financial data. The financial data function76receives as input the requested financial data, and in response performs at least one of storing the received financial data in the financial data structures80, or invoking another function such as the trade logic function84.

The financial data structures80are data structures of the financial instrument contract40in the distributed ledger system32used to store the financial data received by the financial instrument contract40. In response to receiving a transaction containing the requested financial data, the financial data function76stores the received financial data in the financial data structures80.

The trade logic function84is a program function to perform an action of the financial instrument contract40based on the received financial instrument data. The trade logic function84may be invoked by another function such as the financial data function76. The trade logic function84may perform one or more of receiving the financial data from the invoking function or retrieving the financial data from the financial data structure80, evaluating at least one value based on the financial data, determining whether any action is required in response to the evaluated value, and if so performing such action, such as closing all or part of the financial instrument40or a trading position represented by the financial instrument, etc.

The owner access function96is a program function to provide access to the financial instrument contract40for an owner of the financial instrument, e.g., to track its current or projected status and/or financial value. The owner access function96is a read call that may be invoked by the owner system48. In response to being invoked, the owner access function96may read the latest received financial data, and provide as an output information of the financial instrument contract40, such as, e.g., the financial data, a value of the financial instrument calculated by based on the financial data (such as a current or projected closing value, an intervening payment value, etc.), or a combination thereof.

The counterparty access function88is a program function to enable signing of the financial instrument contract40by one or more counterparties to the financial instrument. The counterparty signing function88may be invoked by a transaction addressed to the financial instrument contract40from a counterparty system44. In response to being invoked, the counterparty signing function88may perform one or more of: providing access for the counterparty to legal data of the financial instrument such as a legal contract defining the financial instrument, or receiving a signature of the counterparty to the financial instrument.

The legal data structures92are data structures of the financial instrument contract40in the distributed ledger system32used to store legal data of the financial instrument contract40, such as a legal contract of the financial instrument.

In embodiments, the financial instrument contract40may include only any subset of, or an alternative connection of, the features depicted in or discussed herein in regard toFIG.3.

In embodiments, the financial instrument contract40may include the functionalities discussed above or elsewhere herein organized into one or more program functions in an alternative manner, and the systems and methods discussed herein may instead utilize such alternative program functions. For example, instead of the plurality of separate program functions performing the indicated functionalities discussed above, the financial instrument contract40may include a corresponding single program function, a lesser number of separate program functions, or even a greater number of program functions that perform the functionalities.

FIG.4depicts an embodiment of an oracle server system36, including a distributed ledger system interface module100, an oracle server system control module104, a financial data system module108, and a registration database module112. The oracle server system36is located outside of the distributed ledger system32, and provides, in conjunction with the oracle contract28, the financial data delivery services to the financial instrument contract40as discussed herein.

The distributed ledger system interface module100provides a communication interface between the oracle server system36and the distributed ledger system32. The interface module100may interact with a communication interface of the distributed ledger system32to communicate data between the oracle sever system36and the distributed ledger system32, such as of transactions and read calls, to provide the financial data delivery services.

The oracle server control module104provides control logic to implement the financial data delivery services in conjunction with the oracle contract28. For example, the control module104may control the reading and decryption of registration data from the registration data structure56of the oracle contract28to register financial instruments to receive requested financial data, retrieval and potentially calculation of the requested financial data from the financial data system108on a requested schedule, generation and transmission of transactions containing the requested financial data ultimately destined to the financial instrument contract40on the requested schedule, etc.

The financial data system module108provides a source of financial data that may be delivered to the financial instrument contract40. The financial data system108may include one or more application programming interfaces (APIs) and a database of financial information. The APIs receive as an input a request for identified financial informational from the oracle server control module104, read the requested financial data from the financial data database, and provide as an output to the oracle server control module104the requested financial data. In embodiments, the entire oracle server system36, including the financial data system108, is contained within a single security zone, and thus the oracle server control module104may request and receive the financial data from the financial data system module108without data encryption and further architectural security features as may be required with requesting and receiving data from a data source outside of a security zone.

The registration database module112provides storage for the registration data received from the financial instruments. The oracle server control module104may perform a call to the registration data read function60of the oracle contract28, receive the registration data stored by the oracle contract28from the financial instrument contract40as a result, decrypt the registration data if encrypted, and store the registration data, or data based thereon, in the registration database module112.

In embodiments, the oracle server system36may include only any subset of, or an alternative connection of, the features depicted in or discussed herein in regard toFIG.4.

FIG.5depicts an exemplary embodiment of the distributed ledger system32including a plurality of distributed nodes116. The distributed nodes116are organized as a peer-to-peer network, in which each of the nodes116may connect to one or more of the other nodes116using a peer-to-peer communication protocol. At least one of the distributed nodes116also connects to the oracle server system36, at least one the distributed nodes116connects to the counterparty system(s)44, and at least one of the distributed nodes116connects to the financial instrument owner system48. As a peer-to-peer network, the configuration of connections between individual distributed nodes116may change over time according to operation of the peer-to-peer protocol.

In embodiments, the distributed ledger system32may be a blockchain system in which the distributed ledger, including the transactions and other data stored in the ledger, is provided in the form of a sequence of structured data blocks, also referred to as a blockchain. In other embodiments, the distributed ledger system32may be another type of distributed ledger system instead of a blockchain system, in which the ledger, including the transactions and other data stored in the ledger, may be organized into a structure other than blocks of a blockchain.

FIG.6depicts an exemplary embodiment of the distributed node116of the distributed ledger system32, including a ledger structure storage module120, a communication module124, a virtual machine module128and a ledger structure creation module132. The ledger structure storage module120stores data structures into which the ledger of the distributed ledger system32is organized. In embodiments in which the distributed ledger system32is a blockchain system, the ledger structure storage module120is a block storage module that stores the blocks of the blockchain system. The communication module124performs communications between the distributed node116and other distributed nodes116and other systems or components connected to the distributed node116, such as one or more of the oracle server system36, counterparty system(s)44, financial instrument owner system48, etc. The virtual machine module128executes contracts stored on the distributed ledger of the distributed ledger system32. The ledger structure creation module132performs an algorithm to incorporate transactions and other data into ledger structures of the distributed ledger system32, such as a data encryption algorithm of a selected complexity. In embodiments in which the distributed ledger system32is a blockchain system, the ledger structure creation module132is a block creation module performing an algorithm to incorporate transactions and other data into blocks of the blockchain of the blockchain system, also referred to as mining blocks of the blockchain system.

In embodiments, the distributed node116may include only any subset of, or an alternative connection of, the features depicted in or discussed herein in regard toFIG.6.

Components of the system20for providing financial data, such as the oracle server system36, distributed ledger system32, counterparty system44, and financial instrument owner system48, may be implemented as hardware, software, or a mixture of hardware and software. For example, each of the oracle server system36, nodes116of the distributed ledger system32, counterparty system44, financial instrument owner system48, and/or any individual one, subset, or all of the components thereof, may be implemented using a processor and a non-transitory storage medium, where the non-transitory machine-readable storage medium includes program instructions that when executed by the processor perform embodiments of the functions of such components discussed herein.

In embodiments, the oracle server system36may be a computer system, such as, e.g., a desktop computer, laptop computer, mobile computing device, network device, server, Internet server, cloud server, etc., owned or operated by a financial data service provider; the distributed nodes116of the distributed ledger system32each may be a computing system, such as, e.g., a desktop computer, laptop computer, mobile computing device, network device, server, Internet server, cloud server, etc., owned or operated by the financial data service provider or another entity or entities; the counterparty system44may be a computer system, such as, e.g., desktop computer, laptop computer, mobile computing device, network device, server, Internet server, cloud server, etc., owned or operated by the counterparty; and the owner system48may be a computer system, such as, e.g., desktop computer, laptop computer, mobile computing device, network device, server, Internet server, cloud server, etc., owned or operated by the financial instrument owner.

The oracle system24provides customizable financial data to the financial instrument contract40on a customizable schedule, thereby providing both outside data upon which trade logic of the financial instrument contract40may be evaluated and a customizable heartbeat enabling greater autonomy of the financial instrument contract40to execute this trade logic, with a high level of security.

FIG.7is a flowchart depicting an exemplary embodiment of a method700of providing financial data to the financial instrument contract. The method begins at step702. At step704, the oracle system24registers the financial instrument contract40to receive requested financial data delivery. For example, the oracle contract28may receive a registration transaction from the financial instrument contract40, and the oracle server system32may read and configure corresponding oracle control systems104based on registration data of the registration transaction. At step706, the oracle system24delivers the requested financial data to the financial instrument contract40. For example, the oracle server system36may retrieve, calculate, etc. the requested financial data in accordance with the requested schedule, and deliver the retrieved financial data in transactions destined for the financial instrument contract40. At step708, an instrument functionality of the financial instrument contract40is performed as a function of the financial data. For example, in response to receiving the financial data, the financial instrument contract30may evaluate a value, such as a monetary value of the financial instrument, and close an underlying transaction or make an intermediate payment of the financial instrument as a result.

The method700ofFIG.7may be performed repeatedly over time, as further financial instruments register with the oracle contract.

In other embodiments, a method of providing financial data to a financial instrument contract may include only any subset of, or an alternative ordering of, the features depicted in or discussed above in regard toFIG.7.

Additionally, certain steps of the method700may be performed repeatedly over time, such as steps706and/or708, as further financial data is delivered to the financial instrument contract40and/or further actions of the financial instrument contract40are executed.

FIG.8is a flowchart depicting an exemplary embodiment of a method800to perform step704of method700ofFIG.7of registering the financial instrument contract for financial data delivery. The method800begins a step802. At step804, the oracle contract28receives a transaction addressed to the oracle contract28from the financial instrument contract40requesting registration for financial data delivery. The transaction invokes the registration function52of the oracle contract28. The transaction includes registration data including an indication of the identity of the requested financial data and an indication of the schedule on which the requested data is to be delivered.

The indication of the identity of the requested financial data may include identification of one or more specific piece(s) of financial data, one or more financial data values calculated based on financial data, or combinations thereof. The indication of the identity of specific pieces of financial data may include one or more indicators, such as codes, corresponding to the specific pieces of financial data, such as one or more of a specific equity, financial index, commodity future, interest rate, etc. In embodiments, the indication of the identity of the requested financial data includes one or more Reuters instrument codes (RICs) identifying the requested financial data. The indication of the identity of financial data values to be calculated may include one or more definitions of calculations to performed as a function of financial data, or a selection of one or more predetermined calculations defined by the oracle system, and an indication of specific pieces of financial data on which the calculations are to be performed.

The indication of the schedule at which the requested data is to be delivered may include an indication of one or more times at or conditions upon which the requested data is to be delivered. The indication of the times at which the requested data is to be delivered may include one or more of a minute, hour, day or month at which the financial data is to be delivered, such as in a repeating fashion. The indication of the condition upon which the requested data is to be delivered may include an indication of a numerical or logical condition, upon satisfaction of which the requested data is to be delivered, such as one or more threshold values that one or more specific pieces of financial data or calculated financial data values must cross, such as rise above or fall below.

FIG.9Adepicts an embodiment of the registration data RD contained in the transaction to register the financial instrument contract40for financial data delivery. The registration data RD includes a first portion FD, such including as one or more data bits or data words, containing the indication of the identity of the requested financial data, and a second portion SD, such as including as one or more data bits or data words, containing the indication of the schedule at which the requested data is to be delivered.

FIG.9Bdepicts an embodiment of the first portion FD of the registration data RD in more detail, including a plurality of data segments FD1. . . FDN, such as each including as one or more data bits or data words. In an exemplary embodiment, each of the data segments includes a code identifying a specific financial data quantity, such as, e.g., a specific equity, financial index, commodity future, interest rate, etc. For example, one data segment may indicate the Financial Times Stock Exchange 100 Index with the code FTSE, and another data segment may indicate the German Stock Index with the code DAX. In another exemplary embodiment, a subset of the a plurality of data segments includes an indication of one or more calculations to be performed, and another subset of the a plurality of data segments includes an indication of specific pieces of financial data upon which the calculations are to be performed. For example, one set of data segments may indicate that a weighted average of the values of a plurality of equities is to be calculated, another set of the data segments may indicate each the equities to be included in the weighted average using corresponding codes, and a further set of the data segments may indicate a weight for each of the equities (such as potentially representing a number of each equity included in the financial instrument).

FIG.9Cdepicts an embodiment of the second portion SD of the registration data RD in more detail, including a plurality of data segments SD1. . . SDN, such as each including as one or more data bits or data words, each indicating an aspect of a time at or condition upon which the requested data is to be delivered. In an exemplary embodiment, a first data segment indicates a minute of the time at which the financial data is to be delivered, a second data segment indicates an hour of the time at which the financial data is to be delivered, a third data segment indicates an day of the month of the time at which the financial data is to be delivered, a fourth data segment indicates a month of the year of the time at which the financial data is to be delivered, and a fifth data segment indicates a day of the week at which the financial data is to be delivered. The time specified may be a repeating delivery time. The data segments may use a cron-like syntax, such as a number to indicate a specific minute (e.g., 0-59), hour (e.g., 0-23), day of month (e.g., 1-31), month (e.g., 1-12), day of week (e.g., 0-6), etc., and a character to indicate certain predetermined permutations of such, such as a * to indicate no restrictions on such. For example, a second data portion SD including 0, 0, *, *, * may indicated that the financial data is to be delivered at the beginning of the 1st minute (0) of the 1st hour (0) of every day (*) of every week (*) of every month (*). In another exemplary embodiment, one or more of the data segments indicate one or more threshold values that one or more specified pieces of financial data or calculated financial data values must satisfy, such as rise above or fall below, to trigger the data delivery.

In embodiments, the registration data contained in the transaction requesting to register the financial instrument contract40is encrypted. The registration data may be encrypted by a system outside of the distributed ledger system32, such as, e.g., by the financial instrument owner system48, and stored in the financial instrument contract40in encrypted form at the time of its creation or sent to and stored by the financial instrument contract40in encrypted form at a later time. In embodiments, the registration data may be encrypted using a public key of the oracle system36. In other embodiments, the registration data may be encrypted using a non-public-private-key encryption system, such as one or more of zero-knowledge proofs, homomorphic encryption, or ring signatures.

Returning toFIG.8, at step806, it is determined whether a sufficient payment exists for the transaction requesting to register the financial instrument contract40for the financial data delivery. The financial data delivery service may require payment. In embodiments, the payment is required to accompany the request to register for the financial data delivery. The accompanying payment may include a commodity of value in the distributed ledger system32, such as tokens or links to tokens defined by the oracle system24within the distributed ledger system32to have a predetermined value, or some other monetary or value mechanism defined by the distributed ledger system. For example, payment for the financial data delivery service may require a number of tokens as a function of a number of pieces of financial data requested, a rate at which the requested financial data is to be delivered, or a combination thereof. In such embodiments, at step806the oracle system24may determine whether a sufficient number of tokens are attached to or linked to by the transaction requesting registration. Alternatively, the accompanying payment may take other forms, such as real world currency, payment accounts, etc. or links to such. In other embodiments, the payment may be arranged separately from the request to register for the financial data delivery. For example, the oracle system24may receive payment from the owner of the financial instrument via a mechanism outside of the distributed ledger system32, such as via a secure connection between the oracle server system36and the financial instrument owner system48. In response, the oracle system24may add an address of the financial instrument contract40to a list of addresses for which the oracle system24may accept registration requests and provide financial data delivery. In such embodiments, at step806the oracle system24may determine whether an address of the financial instrument contract requesting financial data delivery is on the list of approved addresses.

If at step806it is determined that sufficient payment does not exist for the transaction requesting registration, the method proceeds to step822, where the method ends. If at step806it is determined that sufficient payment exists for the transaction requesting registration, the method proceeds to step808.

At step808, the oracle contract28stores the registration data contained in the transaction in the registration data structure56of the oracle contract28. The oracle contract28may store the registration data in the registration data structure56as part of the invoked registration function52. In embodiments in which the registration data is encrypted, the oracle contract28may store the registration data in the registration data structure56in its encrypted form.

At step810, a component of the oracle server system36monitors the distributed ledger system32for the storage of new registration data by the oracle contract28by monitoring the distributed ledger system32for the creation of new ledger structures. New transactions and data stored in the distributed ledger system32may only be visible to systems outside of the distributed ledger system32after the new transactions and data have been incorporated into the distributed ledger in the form of a new ledger structure. As discussed above, new ledger structures are created by a ledger structure creation process of the distributed ledger system32. In embodiments in which the distributed ledger system32is a blockchain system, the oracle server system36monitors the distributed ledger system32for the storage of new registration data by the oracle contract28by monitoring the distributed ledger system32for the creation of new blocks in the blockchain.

At step812, it is determined whether a new ledger structure of the distributed ledger system32(e.g., a new block of a blockchain of a blockchain system) has been created based on the monitoring of the distributed ledger system32by the oracle server system36. If at step812, a new ledger structure has not yet been created, the method continues with the monitoring of the distributed ledger system32for new ledger structures of step810. If at step812, it is determined that a new ledger structure has been created, the method proceeds to step814.

At step814, the oracle server system36reads the registration data structure56from the new ledger structure to determine any new registration data in the new ledger structure. To read the registration data structure56, the distributed ledger system interface module100communicates with a distributed node116of the distributed ledger system32under control of the oracle server control module104to invoke the registration data read function60of the oracle contract28to read the new registration data from the registration data structure56. In embodiments in which the registration data is encrypted, the oracle server system36may read the registration data from the registration data structure56in its encrypted form.

At step816, in embodiments in which the registration data is encrypted, the oracle server system32decrypts the registration data. In embodiments in which the registration data is encrypted using a public key of the oracle system, the oracle server control module104may decrypt the registration data using its private key. In embodiments in which the registration data may is encrypted using a non-public-private-key encryption system, such as one or more of zero-knowledge proofs, homomorphic encryption, or ring signatures, the oracle server control module104decrypts the registration data according to the specific one of these encryption schemes used. In embodiments in which the registration data is not encrypted, step816is omitted.

At step818, the oracle server system36stores the registration data in the registration database module112. For example, the oracle server control module104controls the storage of the registration data in the registration database module112. In embodiments in which the registration data was initially encrypted, the oracle server system36stores the decrypted registration data in the registration database module112.

At step820, the oracle server system36configures its components to enact the delivery of the requested financial data at the requested schedule. For example, the oracle server control module104configures a control algorithm of this module, such as by setting a value of one or more control data variables and/or data registers, that controls performance of the requested financial data delivery. The method ends at step820.

The method800ofFIG.8may be performed repeatedly over time, as additional financial instruments register for financial data delivery.

In other embodiments, a method of registering the financial instrument contract40for financial data delivery may include only any subset of, or an alternative ordering of, the features depicted in or discussed above in regard toFIG.8.

FIG.10is a flowchart depicting an exemplary embodiment of a method1000to perform step706of method700ofFIG.7of performing the requested financial data delivery to the financial instrument contract. The method1000begins a step1002. At step1004, the oracle server system36monitors the passage of time, financial data values and/or calculated values to identify the occurrence or impending occurrence of scheduled delivery times and/or conditions for the requested financial data. The oracle server control module104may perform the monitoring by comparing the output of a clock or other time component, or a current or calculated financial data value, to predetermined times or values at which the data delivery is scheduled to occur. In embodiments, the time monitoring may be performed according to a time system marked by the passage of one or more of seconds, minutes, hours, days, months, etc. In other embodiments, the monitoring of the passage of time may be performed according to a time system marked by the creation of new ledger structures.

At step1006, it is determined based on the monitoring whether a trigger condition has been met to perform scheduled data delivery activities. In embodiments, the trigger condition may be the arrival of the scheduled time, financial data value or calculated financial data value, so that, e.g., the requested financial data is retrieved and/or calculated at the scheduled time or upon realization of the a specific financial data value or calculated financial data value. In other embodiments, the trigger condition may be the arrival of a predetermined time increment prior to the scheduled data delivery time, so that, e.g., sufficient time is left for retrieval and/or other delivery activates so that the actual delivery occurs at the scheduled time. In systems operating at a sufficiently high speed, the difference between these two approaches may be small.

If at step1006, the trigger condition has not been met, the method continues the monitoring of step1004. If at step1006, the trigger condition has been met, the method proceeds to step1008.

At step1008, the oracle server system36retrieves, and if necessary further calculates, the requested financial data from the financial data system108. To retrieve the financial data, the oracle server control module104requests the financial data from the financial data system108, such as by issuing a data request identifying the financial data to the financial data system108, such as to an API of the financial data system108, which generates an output in response containing the requested financial data contained in a database of the financial data system108. The identification of the financial data in the request may include the identifiers identifying the financial data in the registration data, such as one or more codes, e.g., RIC codes, identifying the financial data. To calculate the financial data, the oracle server control module104requests the financial data forming the basis of the calculation from the financial data system108, and then performs a calculation of the requested financial data value(s) based on the retrieved financial data. In embodiments, the financial data upon which the calculation is to be performed may have already been retrieved as part of the monitoring of a condition at step1004, and in such cases an additional retrieval of financial data may optionally be omitted.

At step1010, the oracle server system36determines whether to encrypt the financial data to be delivered. The oracle server control module104may determine whether to encrypt the financial data based on various factors, such as how a particular instance of the oracle system36is configured, whether encrypted data was requested by the financial instrument contract40, etc. Encrypting the financial data to be delivered to the financial instrument contract40may provide increased privacy of operation of the oracle system24and financial instrument contract40, by preventing other entities from viewing the financial data delivered to the financial instrument contract40. Encrypting the financial data may require the financial instrument contract40and financial instrument owner system48to participate in a decryption process for the delivered financial data. On the other hand, delivering the requested financial data unencrypted may decrease any burden on the financial instrument contract40and financial instrument owner system48presented by a need to decrypt the data. Although this may expose the delivered financial data to decreased privacy, such may be of reduced concern if it occurs in concert with the request being encrypted, which may serve to reduce the overall exposure of the delivered data.

If at step1010, it is determined to encrypt the financial data, the method proceeds to step1012. If at step1010, it is determined to not encrypt the financial data, the method proceeds to step1014.

At step1012, the financial data is encrypted. The financial data may be encrypted by the oracle server control module104. In embodiments, the financial data is encrypted using a public key of the financial instrument contract40or financial instrument owner system48or designated by one of these. In other embodiments, the financial data is encrypted using a non-public-private-key encryption system, such as one or more of zero-knowledge proofs, homomorphic encryption, or ring signatures.

At step1014, the oracle server system determines whether to transmit the requested financial data to the financial instrument contract40by way of the oracle contract28or by way of a different address in the distributed ledger system32. The oracle server control module104may determine whether to transmit the requested financial data by way of the oracle contract28or a different address based on various factors, such as a preference of financial instrument contract40or owner, how a particular instance of the oracle system32is configured, etc. Transmitting the requested financial data by way of the oracle contract28may provide a trusted channel for the financial data to arrive at the financial instrument contract40, as the requested financial data will be arriving by way of the same contract to which the financial instrument contract40sent the request for the financial data. However, always transmitting the requested financial data by way of the oracle contract28may be predictable, and thus subject the data transmission to undesirable scrutiny and potential theft. Transmitting the requested financial data by way of an address in the distributed ledger system32different than that of the oracle contract28, such as, e.g., a new address for each new transmission, may reduce the predictability of the financial data delivery, and thus reduce the attention and risk of theft that it attracts. Transmitting the requested financial data by way of different addresses may require further security features in order to provide a trusted data source to the financial instrument contract40.

If at step1014, it is determined to transmit the requested financial data to the financial instrument contact40by way of the oracle contract28, the method proceeds to step1016. At step1016, the oracle server system36generates a transaction, addressed to the oracle contract28, containing the requested financial data, and transmits the transaction to at least one node116of the distributed ledger system32. As part of the ledger structure mining process, the distributed ledger system32incorporates the transaction into a new ledger structure and as a result it is executed by the oracle contract28. The transaction invokes one or more functions of the oracle contract28, such as the financial data function.

The financial data contained in the transaction includes a financial data value valid at the scheduled delivery time or condition, or a predetermined offset from such time, for each of the specific financial data types identified in the registration data.FIG.11depicts an embodiment of the financial data DFD contained in the transaction, including one or more data segments DFD1. . . DFDN, such as each including as one or more data bits or data words, each including a financial data value valid at the current scheduled delivery time corresponding to a specific financial data types identified in the registration data. For example, if the registration data includes the codes FTSE and DAX, the financial data may include values of each of these indexes valid at the current scheduled delivery time.

At step1018, the oracle contract28invokes the financial instrument contract40to deliver the requested financial data. The invocation may include a call by the oracle contract, such as during execution of the oracle contract by a distributed node of the distributed ledger system, of one or more functions of the financial instrument contact40, such as the financial data function76. In response to the call, the financial instrument contract may be retrieved and executed, such as by the distributed node, to perform the one or more functions of the financial instrument contract. The called function receives as an input from the oracle contract the requested financial data, and in response performs one or more of storing the financial data in the financial data structure80of the financial instrument contract40, triggering another function of the financial instrument contract such as the trade logic function84, etc. Alternatively, to deliver the financial data, at step1018the oracle contract28may instead generate a transaction, addressed to the financial instrument contract40and containing the requested financial data, and transmit the transaction to at least one node116of the distributed ledger system32. The method ends at step1026.

If at step1014, it is determined to transmit the requested financial data to the financial instrument contact40by way of a different address, the method proceeds to step1020. At step1020, the oracle server system36generates a new address in the distributed ledger system32. To generate the new address, the distributed ledger system interface module100communicates with a distributed node116of the distributed ledger system32under control of the oracle server control module104to invoke address generation functionality of the distributed ledger system32.

At step1022, the oracle server system36retrieves or generates a passcode for the financial data delivery. When the oracle system24delivers the financial data to the financial data instrument40using a new address for each delivery, the delivery may be accompanied by the passcode to identify the delivery from the new address to the financial instrument contract40as a trusted delivery. In embodiments, the oracle server system36may retrieve or receive a new passcode for every financial data delivery from the financial instrument owner, such as via a secure website or portal of the financial instrument owner system48or oracle server system36. Alternatively, in other embodiments, the oracle server system36may itself generate a new passcode for every financial data delivery, and provide the generated passcode to the financial instrument owner, such as via a secure website or portal of the financial instrument owner system48or oracle server system36.

At step1024, the oracle system server system36generates a transaction, addressed to the financial instrument contract40, containing the requested financial data and the passcode, and transmits the transaction to at least one node116of the distributed ledger system32. As part of the ledger structure mining process, the distributed ledger system32will incorporate the transaction into a new ledger structure and as a result it will be executed by the financial instrument contract40. The financial instrument contract40examines the passcode to determine if the delivery is trusted, such as by comparing the passcode to a corresponding passcode it has received from the financial instrument owner system48, or first performing a hash of the received passcode and comparing the hash to a hashed passcode it has received from the financial instrument owner system48. As discussed above, the transaction invokes one or more functions of the financial instrument contact40, such as the financial data function76, which in response performs one or more of storing the financial data in the financial data structure80of the financial instrument contract40, triggering another function of the financial instrument contract40such as the trade logic function84, etc. The method ends at step1026.

The method1000ofFIG.10may be performed repeatedly over time, as additional financial data deliveries are made and/or additional financial instruments register for financial data delivery.

In other embodiments, a method of performing the financial data delivery to the financial instrument contract40may include only any subset of, or an alternative ordering of, the features depicted in or discussed above in regard toFIG.10.

For example, embodiments of a method of performing the financial data delivery to the financial instrument contract40may be configured according to a known formulation, such as always encrypting the financial data or not and/or always sending the financial data via the oracle contract28or not, or some mixed combination thereof, and omit determinations and corresponding unused steps depicted inFIG.10.

FIG.12is a flowchart depicting an exemplary embodiment of a method1200to perform step708of method700ofFIG.7of performing an instrument functionality as a function of the financial data. At step1204, in response to receiving a transaction or invocation containing the scheduled financial data delivery, the financial instrument contract40evaluates at least one value based on the received financial data. To evaluate the value, a function invoked by the transaction or invocation containing the financial data, such as the financial data function76, may invoke another function, such as the trade logic function84, in response to receiving the transaction or invocation containing the financial data to perform the evaluation of the value. Alternatively, the function invoked by the transaction or invocation containing the financial data may itself perform the evaluation of the value. The value evaluated may be a monetary valuation of the financial instrument based on the financial data, or some part or mechanism of the financial instrument, such as a value of a payment due to be made by the financial instrument, based on the financial data, e.g., a value of a coupon to be paid by a bond, which may depend upon an interest rate contained in the financial data.

At step1206, the financial instrument contract40executes an action based on the value determined as a function of the financial data. To execute the action, the trade logic function84invoked by the financial data function76determines whether any action is required in response to the evaluated value, such as by one or more of comparing the evaluated value to a threshold value, or determining that a predetermined action is required as a function of a definition of the financial instrument. For example, the trade logic function84may close all or part of the financial instrument or a trading position represented by the financial instrument in response to comparing the evaluated value to a threshold value, e.g., in response to the financial instrument value falling below a threshold value, as in the case of stop-loss defined financial instrument, or the value of the financial instrument rising above the threshold value, as in the case of a profit-level defined financial instrument. In another example, the trade logic function84may make a payment or trigger the making of a payment of the financial instrument or a trading position represented by the financial instrument as a function of the evaluated value, such as making or trigger a payment of a coupon of a bond instrument based on an interest rate of the financial data.

In step1206, if the action executed is a closing of the financial instrument, the financial instrument contract40also transmits a transaction addressed to the oracle contract28indicting that the financial data delivery is no longer needed. In response, the oracle system24stops delivery of the financial data to the financial instrument contract40. In this way, the oracle system24does not transmit unnecessary transactions to the distributed ledger system32, eliminating the cost and performance drain of such unnecessary transactions.

In embodiments in which the oracle system24delivers one or more calculated financial data values to the financial instrument contract40, the method1200may optionally omit step1204, and in step1206execute the action based on the received calculated financial data value instead of a value calculated by the financial instrument contract40itself. Alternatively, the method in step1204may calculate a further financial value, and in step1206execute the action based on the calculated further financial value.

The method1200ofFIG.12may be performed repeatedly over time, as additional financial data deliveries are made and/or additional financial instruments register for financial data delivery.

In other embodiments, a method of performing an instrument functionality as a function of the financial data may include only any subset of, or an alternative ordering of, the features depicted in or discussed above in regard toFIG.12.

In embodiments, a method of providing financial data services may include any combination of the methods ofFIGS.7,8,10and12, or any combination of any subset and/or alternative ordering of the features of such methods.

Some further specific examples of the above systems and methods may be illustrative. In a first further specific example, a financial instrument may request a single piece of financial data at a specified time. The financial instrument represented by the financial instrument contract may be, e.g., a Euro-U.S. Dollar (EUR-USD) foreign exchange market (forex) binary option contract with a fixed expiration time. Intraday forex binary options may expire hourly, while weekly binary options may expire at 3 pm on Friday. Thus, the financial instrument contract may submit a request to the oracle contract for a currency pair price, i.e., EUR and USD, at the expiry date/time, and the oracle system may deliver a single transaction containing currency pair price to the option financial instrument contract at the expiry date/time.

In another further specific example, a financial instrument may request that financial data is scheduled to be sent once a day at the close of trading. The financial instrument represented by the financial instrument contract may be, e.g., a contracts for difference that may incur an overnight financing fee. This process is typically done at 10 pm United Kingdom (UK) time. The financial instrument contract may send a request to the oracle contract for the London Interbank Offered Rate (LIBOR) to be sent to the financial instrument contract once daily at 10 pm UK time.

In another further specific example, a financial instrument may request that financial data be scheduled to be sent as frequently as possible, such as once in every ledger structure of the distributed transaction system, e.g., once in every block of a blockchain system. The financial instrument represented by the financial instrument contract may be a basket of assets consisting of, e.g., fifteen or more stocks, where the value of the financial instrument is calculated using the weighted sum of these underlying assets. The financial instrument contract may request prices for all 15 of these stocks from the oracle contract at every ledger structure, and the oracle system may deliver a single transaction containing all 15 prices at every ledger structure.

In another further specific example, the financial instrument contract may request that financial data be scheduled to be sent when a specific price to be returned crosses a certain threshold. The financial instrument represented by the financial instrument contract may be an index future, which may be programmed to close some or all of its position if the index value falls below 10% (a stop loss) or rises above 10% of its initial value (take profit limit). The financial instrument contract request thus requires that the oracle contract only send a single transaction when these conditions are met, significantly reducing the number of transactions that would be needed if the financial instrument contract was updated with the value of the index at every ledger structure during trading hours.

In alternative embodiments of the systems and methods discussed herein, instead of or in addition to the oracle system24delivering the requested financial data or calculated financial data value to the financial instrument contract40, the oracle system24may deliver to the financial instrument contract40information based on the indicated financial data or delivery condition, such as, e.g., an instruction to execute at least one function of the financial instrument contract40when the indicated condition is satisfied. For example, in the registering of the financial instrument contract40, the registration data received from the financial instrument contract40may include, instead of or in addition to the indication of financial data and/or a calculation to be performed based on indicated financial data, at least one trade logic condition of the financial instrument contract40, such as that a specific financial instrument function (e.g., closing the financial instrument, closing at least a portion of the financial instrument, making a payment of the financial instrument, etc.) is to be executed upon specific indicated financial data or calculation satisfying a specific condition (e.g., a specific index crossing a specific threshold, etc.). In response, in the generating and transmitting of a transaction containing data destined for the financial instrument contract40, the oracle system24may monitor the indicated trade logic condition, and send the transaction when the indicated condition is satisfied instead of or in addition to at a scheduled time. The transaction may include, instead of or in addition to requested financial data, information based on the indicated financial data, condition or calculation, such as an instruction to execute the indicated financial instrument function when the financial data satisfies the indicated condition.

Additional embodiments of the oracle system24, oracle server system36, oracle contract28, financial instrument contract40, distributed ledger system32, counterparty system44, and financial instrument owner system48, and associated methods700,800,1000,1200of providing financial data to the financial instrument contract, registering the financial instrument contract for financial data delivery, delivering the requested financial data to the financial instrument contract, and performing an instrument functionality in response to the delivered financial data discussed herein are possible. For example, any feature of any of the embodiments of these systems and methods described herein may be used in any other embodiment of these systems and methods. Also, embodiments of these systems and methods may include only any subset of the components or features of these systems and methods discussed herein.