Blockchain oracles are information feeds used to incorporate external, off-chain data into blockchains. The main function of blockchain oracles is to act as ‘triggers’ for smart contracts, initiating transactions when certain external conditions are met. Examples of external conditions that can signal oracles to initiate a smart contract are stock and commodity prices, scores of football games, and election results. An oracle essentially acts as the final signee of a multi-signature smart contract, wherein the other parties sign the contract initially, and the oracle does so once all predefined conditions are met, finalizing the transaction.
Blockchains are deterministic, single data systems designed to reflect one specific series of internal events (transactions). The so-called ‘oracle problem’ refers to the difficulty of blockchains incorporating external data, given potentially conflicting ‘sources of truth’ from external APIs and an inability to efficiently store off-chain data on-chain. For example, if a smart contract needs to know the temperature in specific city during a specific hour, then somehow that information must get written onto the blockchain in a way that is reliable and secure. To address this, smart contracts employ oracles to consider off-chain data when executing transactions. However, reliance on centralized oracles inhibits the trustless environment which these smart contracts intend to create, as parties must ‘trust’ a single oracle to deliver accurate information. Decentralized oracle networks, such as Chainlink, seek to solve this secondary problem by employing a network of nodes to act as intermediaries between oracles and smart contracts; that is, these networks must reach a rough consensus on the validity of external information, provided by oracles, before triggering a smart contract.