Leap BlockChain

Oracle

2018-08-24  本文已影响0人  Jisen

一部预言机可以视为是与一个预言者(oracle)相连接的图灵机。在区块链中,预言机为智能合约打开了外部世界的大门,使得智能合约可以将真实世界的信息作为合约执行的条件。

目前大部分项目都是通过第三方服务oraclize.it部署预言机。Oraclize服务允许智能合同从外部环境访问数据。

下图描述了Oraclize的机制:

image

它使用TLSNotary来实现它的serivce信任值,并预取网络中所有节点的真实世界数据以达成一致,这不能用Ethereum智能合约完成。

ETH

docs.oraclize/Ethereum

import "./usingOraclize.sol";
node bridge -H localhost:8545 -a 1
OAR=OraclizeAddrResolverI(0x5049063e4a7704ac155e4f1f42a4954bbef5bbde);
pragma solidity ^0.4.16;
import "./usingOraclize.sol";  //Importing Oraclize
contract TestOraclizeCall is usingOraclize {
     uint public price;
     event Log(string text);
     //Constructor
     function TestOraclizeCall() {

         OAR = OraclizeAddrResolverI(0x5049063e4a7704ac155e4f1f42a4954bbef5bbde);

     }
     function __callback(bytes32 _myid, string _result) {

          require (msg.sender == oraclize_cbAddress());

          Log(_result);

          price = parseInt(_result, 2);

       }

     function update() payable {
        oraclize_query("URL","json(https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD).USD");
     }
}

比如上面代码用于查询当前ETH的USD价格,oraclize_query函数被用于调用第三方API。__callback函数,第一个参数是请求的id。第二个参数是请求的结果。

注意必须使用truffle来编译和运行合同。

扩展链接

上一篇 下一篇

猜你喜欢

热点阅读