By definition, an oracle is a provider of data that feeds the smart contract with what it requires to perform its task optimally. In other words, the oracle provides the smart contract with what it needs to see and consequently controls indirectly what the smart contract does in response to the data the oracle pushes to the Blockchain. Thus, oracles have a tremendous amount of power, because if the oracle is inefficient then the smart contract will be compromised. Consequently, the data written to the Blockchain and replicated across all the nodes will be useless.
There are 5 types of Blockchain oracles, and their difference lies in their use:
- Software Oracles: Manage data that originates from an online source such as a website. The oracle extracts the information that is pertinent, before pushing it to the Blockchain to trigger the smart contract.
- Hardware Oracles: Handle data that a physical machine sends, like an IoT communication box or the communication box that pertains to any other type of sensors. One major element that needs to be taken into account is the ease with which an IoT communication box, for example, can be hacked. To that effect, the hardware oracle must ensure that the data it pushes to the Blockchain is clean, so the smart contract can do its job accurately.
- Inbound Oracles: Provide smart contracts with data originating from the external world. For example, if a stock hits a pre-determined price, then the smart contract is triggered and executes a specific transaction (buy or sell).
- Outbound Oracles: Uses data inside the Blockchain to trigger an external event. For example, unlocking automatically intelligent lockers as soon as an associated transaction has been executed by the smart contract in the Blockchain.
- Consensus Based Oracles: When a combination of different oracles is used (4 out of 6, for example) to determine the outcome of an event.
Smart contracts cannot access data outside of the Blockchain. An oracle is a data feed, without which pre-determined critical information would not be pushed to the Blockchain in order to trigger smart contracts in a secure and trusted manner.
An off-chain software oracle can be built, for example, to provide anonymity when two partakers within a private Blockchain ecosystem transact with each other, so the other participants cannot identify a transaction in which they have no part. As you can see, such a utilization of an oracle is crucial to avoid the creation of cartels that would fix prices for its members, so that competition on price is avoided.