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.