Oracles feed the smart contract with external information that can trigger predefined actions of the smart contract. This external data stems either from so ware (Big-data application) or hardware (Internet-of-Things). Such a condition could be any data, like weather temperature, successful payment, or price fluctuations. However, it is important to note that a smart contract does not wait for the data from an outside source to flow into the system. The contract has to be invoked, which means that one has to spend network resources for calling data from the outside world. This induces network transaction costs. In the case of Ethereum, this would be “gas.”
There are different types of oracles:
- Software Oracles
handle information data that originates from online sources, like temperature, prices of commodities and goods, flight or train delays, etc. The so ware oracle extracts the needed information and pushes it into the smart contract.
- Hardware Oracles
Some smart contracts need information directly from the physical world, for example, a car crossing a barrier where movement sensors must detect the vehicle and send the data to a smart contract, or RFID sensors in the supply chain industry.
- Inbound Oracles
provide data from the external world.
- Outbound Oracles
provide smart contracts with the ability to send data to the outside world. An example would be a smart lock in the physical world, which receives payment on its blockchain address and needs to unlock automatically.
- Consensus-based Oracles
get their data from human consensus and prediction markets like Augur and Gnosis. Using only one source of information could be risky and unreliable. To avoid market manipulation, prediction markets implement a rating system for oracles. For further security, a combination of different oracles may be used, where, for example, three out of ve oracles could determine the outcome of an event.
- Blockchain Oracles
A blockchain oracle is a third-party information source that has the sole function of supplying data to blockchains which permit for the creation of smart contracts. A smart contract at a fundamental level is simply a self-executing piece of code; smart contracts evaluate incoming data from an oracle and initiate a flow of execution depending on the information received.
To conclude, blockchain oracles are a third-party information source that supply data to smart contracts. They increase the scope of what blockchain protocols can do by providing a means for them to communicate outside of their own network.
Oracles require a level of trust that is contradictory to the trustless and decentralized nature of blockchain-based protocols. As a result, smart contracts require an increased level of complexity, such as, sourcing data from multiple oracles in order to mitigate the amount of trust placed in any one oracle.