An agent that finds and verifies information, bridging the real world and the blockchain by providing data to smart contracts for execution of said contracts under specified conditions.
Oracles are entities that interface real-world data with decentralized systems. In the decentralized environment, oracles are prominent with blockchain-based products. They give blockchains the ability to interact with off-chain data.
With Ethereum and other decentralized platforms powering the use of smart contracts, accessing data outside these systems bridges the conventional and decentralized environment. Note that oracles are not data sources by themselves. Instead, they collect, query, verify and validate data from different sources and deliver them to smart contracts.
Transmitted data can range from price feeds, payments, temperature from a sensor, scores from a football game, etc. Mostly, oracles are classified based on where they draw their data (software/hardware), the flow of information between them and their sources (inbound/outbound), and whether they’re decentralized or centralized.
Software and hardware oracles fetch data from different sources. For example, software oracles get data from internet-based services such as servers and databases, while hardware oracles receive data from information-reading gadgets such as barcode scanners.
Inbound oracles deliver off-chain data to smart contracts while their outbound counterparts relay information from contracts to the real world. Oracles that rely on a single data provider are centralized while those that interact with multiple sources are considered decentralized.
Although multiple contracts and decentralized systems can reference one oracle, there are contract-specific oracles built to serve a single smart contract. Note that individuals with unique subject knowledge can fetch, verify, and validate data for use by blockchain-based agreements. These are known as human oracles.