An oracle is software that finds and confirms data from the outside world (off-chain) and transfers it to the smart contracts on the blockchain (on-chain).
One particularly illustrative example is the transfer of information from exchanges and price aggregators to the smart contract controlling the liquidity pool. The information oracles transfer contains the prices of different cryptocurrencies represented in the liquidity pool. In a general sense, an oracle is any service that can transfer to the blockchain data it does not possess.
Oracles can be centralized (i.e. managed by one organization) or decentralized (managed by a DAO): the former are considered more vulnerable due to the risk of providing subjective information (i.e. there is a risk of fraud); the latter are more reliable because they analyze information from many sources and summarize it in so-called trustless results.
Oracles are also divided by type of information transmission into incoming (transmitting data to the blockchain) and outgoing (transmitting data from the blockchain off-chain). As regards their method of data collection, oracles can be software (connected to digital data sources via API) and hardware (connected by any method to physical data sources – video cameras, motion or temperature sensors, or RFID).
Since the DeFi system is based on the use of self-executing smart contracts with no intermediaries, operating it without oracles would be virtually impossible. At the DeFi system’s nascence, oracles were at high risk of attacks by hackers to manipulate data. As the DeFi system develops and the number of oracles under DAO management grows, these risks are minimized.