From my understanding is that oracles provide external world data into smart contracts. Say if the weather is sunny today, a smart contract would have no idea about it. It would need to query another smart contract that provides this data, which that smart contract gets it from the 3rd party. Is this correct?

And I'm assuming a "smart oracle" is the same thing as an oracle, but the oracle runs the smart contract. Isn't that just the same as someone running a centralized service?


2 Answers 2


"Smart Oracles are entities just like Oracles, but with the added capability of contract code execution. Smart Oracles proposed by Codius run using Google Native Client, which is a sandboxed environment for running untrusted x86 native code."

Here is a white paper that refers to the matter. https://github.com/codius/codius/wiki/Smart-Oracles:-A-Simple,-Powerful-Approach-to-Smart-Contracts


I, too, have never heard the term before. However, here is the excerpt I think is key from the linked to page:

In this proposal, the hosts that execute the contract code are the same as the “oracles” that in other systems might only be set up to provide contracts running outside of their systems with information about the outside world.

To give a concrete example, a smart contract for betting on the outcome of a horse race might query a regular oracle and then credit the winner(s) of the bet based on the return value from the smart oracle. It might even do some complex computation to determine the amount to credit (for example, different payouts for correctly betting on first place, runner up, placing, etc.). In a smart oracle, all the code execution can take place on the oracle machine; the only thing that gets recorded into the blockchain is a call to the oracle and the final balance modification. This particular scheme means that you can even have secret closed-source code performing actions on the blockchain -- assuming, of course, that you trust the smart oracle. Essentially, smart oracles are centralizing code execution in addition to the oracle portion. This seems like an anti-pattern to me (separate concerns are being entwined into a single entity). Some additional exposition from the authors:

The execution of untrusted code should be decoupled from the consensus databases and other services that track and transfer asset ownership. The separate contract system can handle untrusted code execution and interact with the consensus databases through cryptographic signatures. These signatures are already native to consensus protocols so no modifications are necessary. Decoupling contracts from consensus networks gives the added benefit that contracts can interact with multiple networks at once as well as virtually any type of online service. This means that a single smart contract could interact with Bitcoin and Ripple, web-based services like PayPal, Google, Ebay, etc. or even other Internet protocols, such as SSH, LDAP, SMTP and XMPP.

To emphasize, this is just my interpretation of the link you included.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.