Unfortunately, Blockchain can’t get access to the external information itself, so ensuring communication between smart contracts and third-party services becomes quite a challenge. To solve this problem dev teams use oracles, representing intermediaries, that provide external data and store it in Blockchain on request. Basically, oracles are third-party centralized services, working outside of Blockchain structure and its consensus mechanism, which leads us to some obvious credibility issues. Data related to weather, payments, changes in currency rates etc., is essential for functioning of many smart contracts. Moreover, such information represents events that can run a transaction in a smart contract. Certainly, information received from a third-party service needs to be checked. Services can perform this task in different ways. For example, the most popular oracle oraclize.it provides communication proofs on the base of TLSNotary. Nowadays oraclize.it is the only oracle service providing proof of communication. However, despite the use of communication proofs, oracle service is still basically a back-end with a closed source, so we can’t be completely sure of its credibility. There is an issue of verifying information from external data sources, as it affects the functioning of smart contracts. It should be also noted that changes smart contracts make to Blockchain are permanent. So, in order to solve the problem of data security and communication proofs some companies create their own oracle services.

To solve data credibility problem, developers need to implement such features as:

continuous Blockchain scanning for new requests;

request processing;

сommunication with a third-party service (API), which will provide necessary information;

recording responses in Blockchain;

checking information from a third-party data sources for errors;

smart contract creation for communication with oracle;

hiding requests to external data sources.

Developing a private oracle rather hard. However, the own private oracle can be an effective solution for a company that needs it for meeting its goals related to the issue of data credibility, and has access to the project’s source code. But it is not suitable for cases when the oracle must be public and provide information for third-party clients. Also, a private oracle doesn’t solve the issue of external data sources credibility, especially when we’re talking about critical financial data (f.e., exchange rates), that can affect payments’ amount in a smart contract.

Speaking about the development of oracles as data sources, we can identify the following tasks:

Standardization of oracles’ smart contracts. Standardization of back-end for smart contracts. Simplification of oracle creation for data suppliers. Increase the level of confidence to the oracles with back-end open source code. Validation of query results. Ability to encrypt requests.

The solution to these challenges can be the creation of a standardized micro oracle marketplace, where anyone can place their own oracles (in other words: easily connect a data source to Blockchain). The service helps complete tasks of communication with Blockchain (reading and recording), creation of a smart contract for communication with the oracle, publishing the oracle source code and creation of communication proofs. At a low level the service represents code execution environment that receives and analyses all new requests from Blockchain, and returns the result to Blockchain. This code is publicly available for viewing and reviewing, stored in IPFS and its checksum can also be checked. Each new code version for virtual machine is recorded in IPFS, where it can be also checked by everyone wishing. Next, the back-end unloads a new code version from IPFS and starts working. The execution environment occasionally compares a code checksum that it runs and the code checksum that is placed in the IPFS. Thanks to its back-end flexibility, the service enables to easily encrypt requests to the oracle before sending them to Blockchain. The back-end can just transfer the request further to a centralized data source and be decrypted on that side. Also, the flexibility providing by code execution environment, and the ability to encrypt requests allows to add a flexible authorization and subscription system that can be implemented on both Blockchain and the external service sides. Thanks to the implementation simplicity of micro oracle we can create several oracles that work with several data sources and can produce the result on the basis of mutual consensus. Even if some of information sources will be compromised, we still can receive valid data, provided that most uncompromised sources are available. To prove the communication with external services and IPFS, the service will be using TLSNotary, as it is now done in oraclize.it. Proofs will be also stored in IPFS and be available for review for everyone. However, the main difference will be the ability to set up trusted servers for the organization as an auditor. As a result, we receive the system of oracles that can have a high level of trust, despite its centralization. This happens because of communication proof using TLSNotary and the ability to audit the code that is responsible for communication with external services.

How does Oracle Marketplace work

Oracle marketplace creation can become the next step of oracle development. What’s more, it can take communication between the external world and Blockchain to a higher level. The marketplace will also facilitate the work of data suppliers wishing to provide their data for both smart contracts and distributed Blockchain-based applications. Thanks to marketplace maximum transparency, oracles stop being a black box, which will allow to increase the integration of centralized services, data sources, external APIs with Blockchain, and accelerate its distribution on all possible technology spheres as well. We believe that the creation of the own private oracle will allow to solve the problem of data credibility and safe information exchange for many industries. So now we want to check the idea viability and will be glad to know your thoughts on this.