Blockchains are great at storing information. However, they are limited in that they cannot access information outside of the blockchain. For simple payment networks, this may not be an issue. Smart contract platforms are much more than simple payment networks though.
Smart contracts can be used for many things and are programmed to execute when certain conditions are met (just like a real contract). However, the inability to use external information (outside of the blockchain) quickly becomes an issue.
Take prediction markets as an example. Perhaps there’s a sports bet on a World Series game. In this simple model assume there are just two people making a bet. A smart contract will be created and both parties will send money to it (in the form of cryptocurrency).
The smart contract will then hold the money until the end of the game and send the money to the winner of the bet. However, the smart contract doesn’t know who won, it can’t go to ESPN.com and see which team won the game. This is the problem that oracles solve.
Oracles are the source of external information for smart contracts. The oracle gathers the required information and feeds it to the smart contract. For the example above, the oracle would provide the winner of the game to the smart contract. The smart contract would then execute and send the money to the winner.
One issue for oracles is trust. Oracles act as an authority and require trust by those who use them. One proposed solution to this has been to decentralize the oracle. Some projects are attempting this by taking information from many sources and thereby having multiple responses to each piece of information requested. This can be a good way to eliminate reliance on one source but also comes with new challenges, such as having conflicting information.
There’s no easy way to solve the trust problem of oracles, however, oracles will certainly be an important piece in the adoption of smart contract platforms.