Translation of an article by Thomas Bertani from the Oraclize company blog .This post is a discussion about what oracles actually are, and we’ll tell you about some common misconceptions on this issue.
An oracle is a third party, you communicate with an oracle when you need data that you don’t want (or can’t) retrieve yourself. There are many reasons for this.
')
On the one hand, you may not trust a single entity when signing a Bitcoin multi-signature transaction. For example, you want some funds to be moved only under certain conditions. Instead of doing it yourself (which gives no guarantees to external parties) or delegating it to a third party (which you don’t want to trust, because it may behave incorrectly), you share the transaction confirmation process with different parties (oracles) through multi-signature transaction
The path using N-of-M multi-signature transactions is that each oracle has only one private key, and can only put one signature at a time when it deems it necessary, but the transaction itself will be valid one and N-of -M oracles will have a consensus as to which transaction should go through. This is much more appropriate than trusting one of the external parties, since the chosen oracles can compete and you get a low probability of fraud.
The idea of having a distributed oracles network has been around for several years, but finding a consensus on the communication protocol between oracles (
Orisi has tried) is difficult. The search for parties ready to join the oracles network is even more difficult, since a good incentive process is needed, as well as a simple and intuitive design with the ability to easily interact, and there is no consensus on this. In addition to all this, the sources that you want to use for data acquisition may be a significant limitation, as some of them may not be available without permission from external parties (we'll talk more about this later).
If we are talking about smart contracts (Ethereum), here it is completely different, the transaction confirmation logic is provided by the network through your own smart contract code. This means that the oracle does not sign after checking certain conditions; instead, it provides you with the data you requested - the conditions can be checked on your side directly, you can initiate a transaction or status change yourself. However, you cannot rely on a distributed network to receive external data, since applications / services running in chains live in their own closed environment, which is why you need oracles to enter external data.
Growing data needs are the result of fast-growing industries and, accordingly, finding data, getting them right out of the real world is becoming more and more difficult. However, often a misconception about the use of oracles is caused by a poor understanding of what data you would like to receive from oracles.
For example, prediction markets such as
Augur or
Gnosis are designed to provide a good and reliable indicator of evolving moods (or knowledge) of the crowd around facts that will happen in the future. Prediction markets are often referred to as oracles, but in a wider and completely different sense than we discussed above.
Another point worth discussing is this: do we want to call the oracle only what is for example the flow of quotes? This is just a source of data, and in most cases it will not have any links to the block. Financial institutions often consider Bloomberg or Reuters as oracles, but in fact use them as a source of data. Being an oracle, it means taking on all the complexities of interacting with the blockchain, and they are not interested in doing this, since it requires additional costs and resources. However, an oracle can provide access to Bloomberg data after selecting the appropriate source and the correct form of data. Referring to those who are presented as “oracle” but in fact is a “data source”, this is another incorrect use of this term.
To understand this more deeply, we can define 3 objects:
- data source
- request
- Oracle / Oracle Network
As for the
data source - this is the source of the information you are looking for, it can be anything depending on your actual request, for example, it could be
Augur (when considering future events / facts), “Bloomberg” (when searching for financial data), " Bitcoin blockchain ”(when searching for address balance, OP_RETURN transaction data or any other blockchain data),
“ WolframAlpha ” (when searching for a response to a given request in Wolfram Alpha) or ...“ Web ”? Retrieving web data or data from an API is the easiest and most common place from which you can receive data.
A query is an algorithm that a data source of your choice can understand to provide you with the data you need.
Oracle / Oracle Network is the party responsible for connecting to the data source. Here we need to discuss two issues:
- Why should I trust the data source? Most of the time you should not trust. Finding a consensus of different data sources is a good way to provide additional reliability while still using “centralized” data.
- What if the Oracle / Oracle network gives me the wrong result? And this is the main point, proposing to use the consensus of oracles instead of one oracle. But wait, is there any other way to prevent the possibility that an oracle would falsify data? Let's talk about this a bit.
Oraclize ’s oracle approach is different.
You can see this as a cross between an oracle and an extended network of oracles.
Oraclize can potentially give you a response, but
cannot change the data coming from your chosen data source.
That is why we regard the Oraclize service as “provable and fair”. This is possible thanks to
TLSNotary / pagesigner . This is a
TLS modification that is used by the oracle service to provide cryptographic evidence showing that the data you provided was really what this server gave us at a certain time. In addition to providing this evidence, Oraclize also distributes evidence through a
permanent network. Being also part of the
IPFS persistence consortium , our evidence has a good chance of being available even if our system is not available (for any reason).
We provide tools to verify our integrity through which you can do this verification yourself.
Here , for example, our
network monitor for Ethereum which connects on your client side (which is why it is so hard) with Ethereum public nodes and IPFS gateway (or with you, if you wish), so that you can find Oraclize transactions and prove the veracity their. And you can easily control the network yourself to ensure that Oraclize behaves honestly, and we really want to encourage you to do it!

What does this mean in practice? If we change your data, anyone can check it at any time, automatically and in an instant and our reputation will be lost. If it seems to you that our responses still sound too risky, you probably want to wait until we release an open source release for Ethereum, on which we are working. This means that your smart contract code can receive proof in TLSNotary on its own, and if the data is invalid, then you can discard the Oraclize data.
In our opinion, the Oraclize service is a good compromise for solving the “problem of oracles”, which today works in such a way for blockchain and smart contracts. Having a network of oracles will help solve the “censorship / downtime” problem, but the risks associated with using a single oracle are drastically reduced thanks to the new Oraclize approach.