An oracle provides data into the blockchain that cannot be accessed by the blockchain itself, due to consensus constraints. See the section on Assignments for information on how to specify the data you would like to connect to the blockchain. First set up bitcoin docker testnet configuration, by creating a .
On initialization, the oracle will give the option to print the first list of coordinator credentials. Be sure to record the coordinator credentials for use with the oracle moving forward. Once the database and Ethereum node are set up, you can run your oracle with your configured environment. For more information on setting up an instance, or building it locally, visit the wiki page on installation.
In both cases authentication is handled via HTTP Authentication. Coordinator Authentication To access an assignment you must have a set of coordinator credentials. An initial set of coordinator credentials are generated and printed when the node’s initialize command is run. All assignments are associated with a coordinator, so in order to create an assignment you must authenticate using its coordinator’s credentials.
After creating an assignment all subsequent updates will be sent to its coordinator, if the coordinator has specified a URL. Adapter Authentication Assignments can optionally be associated with an external adapter. The adapter credentials are automatically generated when the adapter record is created. Assignments can be handled by the oracle itself, or the oracle’s capabilities can be expanded by creating an adapter for the oracle. Assignments make up the specifcation of the work, but each piece of the ongoing work is captured in a snapshot.
Snapshots are generated by whichever adapter is handling the work, recorded by the oracle, and reported back to the coordinator. The main pieces of an assignment consist of the adapter, the scheduling, and the payment specification. Optionally, an assignment can have a description and signatures from the parties involved. Adapter Type and Parameters Every assignment has a type, which specifies the kind of adapter the oracle will use to perform the work requested. Each different type of adapter requires different parameters, some passed on the blockchain, some passed off chain.
The parameters each adapter will accept are specified ahead of time by the adapter’s creator. Subtasks are a series of steps taken by the oracle to complete an assignment. Each time an assignment is updated it processes its pipeline of subtasks, each of which is handled by an adapter. The subtask’s initial configuration, along with any data passed from earlier subtasks in the pipeline are passed to the adapter for each update. Scheduling Some oracle services are needed on a scheduled basis. Assignments that do not require a schedule, instead work on demand, can skip the schedule or offer a combination of both on demand updates and scheduled updates. All assignments require a end time and allow for an optional start time, defaulting to the assignment start time.
Optional defaults to the time the assignment is created. Space on blockchains is limited and thus costly to utilize. On the other side of the oracle, API calls to protected APIs are often behind pay walls. Oracle services by their nature come with expenses.
This can be prepaid for scheduled services, or paid per request for on demand services. Additionally, prices can be set based on the duration of required availability of the oracle. The currency is configurable based on the networks that the oracle operates in. XID, or external ID, which is used to identify the assignment in the future.
The response also includes a hash of the assignment specified, and a signature of that hash to attest to the oracle’s acceptance of the assignment. Make sure to grab the XID to refer to the assignment in the future. The assignment hash is intentionally not used in the future, as the XID is not easily linkable with the assignment. A coordinator can check the state of one of their assignments and get a list of all the related snapshots. Depending on what steps are required of the assignment, it may return all of the snapshot immediately, or if the details take time to compute the results of the snapshot will be retrievable with the assignment’s XID. External Adapters can be configured if you would like to configure custom behavior and computation. ComparisonJSON Parses a GET request to a JSON API, compares the parsed value to the value passed into the configuration.