A blockchain Oracle is a service that provides smart contracts with data from outside the blockchain (external data). An Oracle makes the connection between the blockchain and the outside world.
Oracles are an extra layer that provide smart contracts with information from external sources. They are not the source of the information themselves. There are different types of Oracles which all operate in different ways. What they have in common is that they all share verified external information with the blockchain.
An important problem for blockchain Oracles is the integrity of the sources that are consulted by the Oracle. The moment a source is ‘attacked’, both the source and the smart contracts that rely on this source can no longer be trusted. In theory, a hacker could attack a source to influence the smart contracts and the assets associated with them.
Another challenge for Oracles lies in how external information is retrieved and validated. If all information is retrieved via a single source, the blockchain is no longer decentralized. Due to this, it is important that smart contracts retrieve data from multiple Oracles with multiple sources which have implemented reward structures for providing correct information.