One of the key elements needed for smart contracts is an oracle, a mechanism that provides external information to the blockchain network. When network participants enter into a contract over the outcome of some event, the network needs access to information about the outcome. This information may be related to outside (external to the network) events, so oracles are required.
For example, in Prediction Markets (PMs), such an event may be the price of oil or gold getting over a certain threshold. The problem is, those prices are determined in commodity markets, not within the network. These prices can be obtained from financial websites like bloomberg.com, finance.google.com, finance.yahoo.com. Therefore, one of the simplest examples of an oracle is a program that can retrieve information from such sites.
The first problem is the reliability of the information source. The information on source websites has to be correct. When contract terms are rather simple, like the aforementioned price of oil, retrieving this information is usually not a problem. But as the task gets more complex, collecting the relevant information becomes commensurately difficult.
Let us suppose that an oracle needs to determine the market capitalization of some European or Asian company. In such cases, incorrect information is quite common, even when it comes to top financial sites. For instance, in 2018 many UK companies on msn stock screener had the market cap specified in the trillions, which is obviously incorrect. For example, in November 2018 the market cap of BP was stated as 10.53T (trillions). This has been fixed since, but it shows how different sites can provide substantially varying information, even when it comes to the biggest companies of financial powerhouse countries like Great Britain.
For an oracle to avoid providing erroneous information to the network, it should compare data from several financial sites and trust those where information is confirmed by other sources. But even that does not always solve the problem. If you’re trying to retrieve information about revenue or dividends of a mid-sized company from a country that is not considered a financial leader, you are more than likely to get different values from different sites.
Automatic searching for information on other events can be even more challenging. For example, if the objective is to determine where some politician stands on a particular issue, different sites can quote him/her differently.
The second problem lies in the processing of information. The task doesn’t always come down to simply finding the correct numbers and letters.
In PMs, one can imagine a joke bet: “will the next Chinese Leader have hair or be bald?” In that case, the oracle will have to not only track the presidential elections (from news and government sites), but also make decisions regarding the winner’s appearance from photographs or otherwise. This task would be so difficult that you would struggle to find someone seriously willing to risk their money on such a wager if all an oracle is capable of is analysing websites.
Someone may say “Let us not ask the oracle dumb questions”. But thinking impartially, a good oracle should be able to answer such questions as well. It needs to be as universally capable as possible.
The third problem lies in the difficulty of correcting oracle’s mistakes. As oracles are still prone to mistakes, some kind of an error detection and correction mechanism might be required.
Evidently, oracles can make mistakes both when choosing their source and when detecting the relevant information. At times, oracles can avoid making mistakes by eliminating sources with substantially varying data from consideration (as in the case of multi-trillion capitalizations). Still, it’s easy to imagine a situation when an oracle makes a mistake despite all the precautions.
If a mistake is seen by the network participants straightaway, they can notify the developers hoping for some quick algorithm improvements. Nevertheless, they will have to close the smart-contract ‘manually’ by either invalidating it or by engaging the network’s users in its correction, which would render the oracle not fully automatic.
In case the mistake remains unnoticed for a while, the smart-contract will also be closed incorrectly. For instance, this could result in PM winnings being distributed improperly. Later on, when that mistake will become public knowledge, the network will be discredited, which might result in a hard fork (see section 4) which, when it comes to fully automated oracles, is still not going to be enough to solve the problem. Those kinds of mistakes will happen again.
And as long as artificial intelligence processes information worse than a human being can, it would be unwise to exclude the latter from the equation. That is why Zack Hess set up a completely different model for oracles within Amoveo network than the ones described above. The oracle does not search for information by itself, but rather requests an answer from the users, keeping in mind that they can lie, the system also uses market methods to minimize bad actors.