首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oraclize在使用示例契约时未能返回数据

Oraclize在使用示例契约时未能返回数据
EN

Ethereum用户
提问于 2017-09-30 09:44:12
回答 2查看 532关注 0票数 1

我正在尝试使用https://github.com/oraclize/ethereum-examples/tree/master/solidity的Oraclize合同示例,包括KrakenPriceTicker.sol。这是我的合同(稍微修改一下):

代码语言:javascript
复制
pragma solidity ^0.4.0;
import "github.com/oraclize/ethereum-api/oraclizeAPI_0.4.sol";

contract KrakenPriceTicker is usingOraclize {

    string public ETHXBT;
    uint public timesCalled;
    uint public timesFailed;

    event newOraclizeQuery(string description);
    event newKrakenPriceTicker(string price);


    function KrakenPriceTicker() payable {
        oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);
    }

    function __callback(bytes32 myid, string result, bytes proof) {
        ETHXBT = result;
        newKrakenPriceTicker(ETHXBT);
        update();
    }

    function update() payable {
        if (oraclize_getPrice("URL") > this.balance) {
            newOraclizeQuery("Oraclize query was NOT sent, please add some ETH to cover for the query fee");
            timesFailed++;
        } else {
            newOraclizeQuery("Oraclize query was sent, standing by for the answer..");
            oraclize_query(60, "URL", "json(https://api.kraken.com/0/public/Ticker?pair=ETHXBT).result.XETHXXBT.c.0");
            timesCalled++;
        }
    }

}

当调用update()函数并发送一些以太和gas时,它应该调用kraken.com api,并使用返回的内容更新ETHXBT的值。但是,ETHXBT的值始终是空的。我知道oraclize_query正在被调用,因为timesCalled变量是增量的。因此,返回的结果似乎存在问题,尽管直接转到https://api.kraken.com/0/public/Ticker?pair=ETHXBT显示不应该有任何问题。

我已经在https://ropsten.etherscan.io/address/0x2c51daecf702f2afe3abee2cc84570ee17f75650上部署了上面的合同(我尝试过多次调用update() )。

EN

回答 2

Ethereum用户

发布于 2017-10-02 11:51:55

看起来该查询正在Oraclize测试站点上运行。你可以看到它在工作,这里。它有这样的请求:

代码语言:javascript
复制
json(https://api.kraken.com/0/public/Ticker?pair=ETHXBT).result.XETHXXBT.c[0]

0.068000的响应

当您使用.result.XETHXXBT.c.0而不是.result.XETHXXBT.c[0]时,语法似乎不正确,因为结果是一个数组,而不是一个名为0的键。

票数 1
EN

Ethereum用户

发布于 2017-10-03 02:10:47

问题是我正在使用的萎缩测试网络有问题。我认为我发布的代码应该运行正常。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/27500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档