Step 1: Prepare

Any developer can develop their own oracle contracts using Solidity. Each oracle contract can access off-chain data from one or more data sources specified by data URL.
Any data URL that can be used for reading off-chain data during the oracle contract execution must be registered to our OracleRegistry contract that is deployed on the DotOracle chain at genesis block.
The owner of any oracle smart contract can register any URLs that the oracle contract can access during execution. The following is a code segment of the OracleRegistry contract.
Whenever there is a transaction interacting with an oracle smart contract, the network (all validators) read the list of data URLs registered by the oracle smart contract owner in the OracleRegistry contract. This step ensures that for each oracle contract, all validators know which data the oracle contracts need to fetch from data source (off-chain) to oracle contracts.
At this step, all off-chain data will be fetched by all validators and stored in cache memory of the validators.