Smart Contracts and the Oracle Problem

Smart contracts are simple in concept but often misunderstood. It’s not about creating a contract, it’s about fulfilling a contract without human intervention. When a specified thing happens, the smart contract executes by taking the action it has been programmed to do. For example, you could have a smart contract that orders and pays for a cold drink to be delivered from a nearby restaurant when the temperature goes above 25 degrees on a weekday afternoon.

Blockchain is good for creating smart contracts. That’s because blockchain is designed to be resistant to change from human intervention. Rather than putting an action in the hands of one entity that has to be trusted, the technology itself creates the trust by requiring confirmation from multiple sources for changes. So it is difficult for the other party to renege on a promise. And difficult for a third party to intervene and game the system.

In this example, the Oracle would be an online data feed that tells the local temperature. The problem is that this single source of information is a potential single point of failure vulnerable to attack or misuse. Someone could feed erroneous temperature data. Or there could be an error with the chosen Oracle’s data.

In this example it may not seem to be important or worth the effort to intervene in the contract. But it could be a serious issue for significant contracts.

One way of solving the problem would be to adopt a similar approach as blockchain and require similar evidence from multiple Oracles before taking the action. This article from the MIT Technology Review talks about a startup that may have a solution to the problem.


  1. Thank you, this is very interesting.

  2. If I’m understanding this technology correctly it seems potentially ideal for health care especially in remote diagnosis and administering medication.

  3. David – interesting article on the oracle problem. In addition to the solutions mentioned in the MIT article – another interesting solution is a decentralized oracle, specifically for smart contracts, for example, like what the company ‘Verity’ ( have built.

    I think we’ll need a combination of different oracles to power smart contracts – depending on the exact information required, and whether such information is already available from an existing source, or whether it needs to be collected and verified before being connected to a smart contract.

    It’s certainly an exciting space, and I think we’ll see oracles really unleash the true power of smart contracts.