首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在专用网络上的ethereum bridge oracle不接收查询。

在专用网络上的ethereum bridge oracle不接收查询。
EN

Ethereum用户
提问于 2019-02-21 09:53:20
回答 1查看 336关注 0票数 0

我有一个有几个节点的专用网络,我已经安装了来部署一个Oracle。

我的区块链节点之一被以太桥用来部署甲骨文。该节点由命令geth.exe --identity "7" --datadir "D:\Blockchain\1" --networkid 4999 --rpc --rpcport 47000 --rpcapi "db,eth,net,web3,shh,personal" --rpccorsdomain "*" --port 30800 --nodiscover --shh --ipcdisable console启动。

ethereum-bridge

ethereum-bridge -H localhost:47000 -a 0

这些是ethereum-bridge控制台上的日志

代码语言:javascript
复制
[2019-02-21T09:45:14.820Z] INFO you are running ethereum-bridge - version: 0.6.1
[2019-02-21T09:45:14.821Z] INFO saving logs to: ./bridge.log
[2019-02-21T09:45:14.822Z] INFO using active mode
[2019-02-21T09:45:14.823Z] INFO Connecting to eth node http://localhost:47000
[2019-02-21T09:45:16.101Z] INFO connected to node type Geth/7/v1.8.21-stable-9dc5d1a9/windows-amd64/go1.11.4
[2019-02-21T09:45:16.588Z] WARN Using 0x8668dc605fe8d721dbb96378fd8155c621bea37d to query contracts on your blockchain, make sure it is unlocked and do not use the same address to deploy your contracts
[2019-02-21T09:45:16.711Z] INFO deploying the oraclize connector contract...
[2019-02-21T09:45:26.998Z] INFO connector deployed to: 0x251deddf98aca280a252d9e5f7b1b246bc3f66f7
[2019-02-21T09:45:27.119Z] WARN deterministic OAR disabled/not available, please update your contract with the new custom address generated
[2019-02-21T09:45:27.120Z] INFO deploying the address resolver contract...
[2019-02-21T09:45:37.534Z] INFO address resolver (OAR) deployed to: 0xb69156280a1461003a079387c2b5b827b3f0fc53
[2019-02-21T09:45:37.535Z] INFO updating connector pricing...
[2019-02-21T09:45:47.861Z] INFO successfully deployed all contracts
[2019-02-21T09:45:47.871Z] INFO instance configuration file saved to D:\GitHub\ethereum-bridge\config\instance\oracle_instance_20190221T094547.json

Please add this line to your contract constructor:

OAR = OraclizeAddrResolverI(0xB69156280a1461003a079387c2B5B827B3f0fc53);

[2019-02-21T09:45:47.996Z] INFO Listening @ 0x251deddf98aca280a252d9e5f7b1b246bc3f66f7 (Oraclize Connector)

(Ctrl+C to exit)

然后,使用不同的块链节点部署了以下契约:

代码语言:javascript
复制
pragma solidity ^0.5.4;

import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";

contract WolframAlpha is usingOraclize {

    uint256 public beginningPastQuarter;
    uint256 public beginningCurrentQuarter;
    uint256 public payoutIntervalSeconds;

    event newOraclizeQuery(string description);
    event newTimestampMeasure(uint256 timestamp);

     constructor() public {
        payoutIntervalSeconds = 120;
        beginningPastQuarter = 0;
        beginningCurrentQuarter = 0;
        OAR = OraclizeAddrResolverI(0xB69156280a1461003a079387c2B5B827B3f0fc53);
    }

    function stringToUint(string memory s) internal pure returns (uint) {
        bytes memory b = bytes(s);
        uint result = 0;
        for (uint i = 0; i < b.length; i++) { 
            if (uint8(b[i]) >= 48 && uint8(b[i]) <= 57) {
                result = result * 10 + (uint8(b[i]) - 48); 
            }
        }
        return result; 
    }

    function __callback(bytes32 myid, string memory result) public {
        if (msg.sender != oraclize_cbAddress()) revert();

        uint256 t = stringToUint(result);
        if (t-beginningCurrentQuarter >= payoutIntervalSeconds){
            beginningPastQuarter = beginningCurrentQuarter;
            beginningCurrentQuarter = t;
        }

        emit newTimestampMeasure(t);
    }

    function getUTCTimestamp(uint256 delay) public payable {
        emit newOraclizeQuery("Oraclize query was sent, standing by for the answer..");
        oraclize_query(delay,"WolframAlpha", "Timestamp now");
    }

    function pay(address receiver) public payable{
        address(uint160(receiver)).send(msg.value);
    }

    function balance(address a) public returns(uint256 r){
        return a.balance;
    }
} 

在部署合同之后,我已经向它发送了一些以太,以便它能够支付对Oracle的调用。

现在,如果我试图通过调用contractInstance.getUTCTimestamp(0,{from:eth.accounts[0],value:2222222,gas:5000000});来使用oracle,则会挖掘事务,但在ethereum-bridge控制台中什么也不会发生。

如果我检查交易及其收据,我会得到:

代码语言:javascript
复制
{
  blockHash: "0x1c2d77b1e07d51894fdf0e2c3423d01538149d657b89e2568b5846d049452fda",
  blockNumber: 5799,
  contractAddress: null,
  cumulativeGasUsed: 5000000,
  from: "0xed2632f90f57dbbeb8e1d27277f4ef85a42851d2",
  gasUsed: 5000000,
  logs: [],
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  root: "0x67de497db6efcd76b0f4aba9255cd7744430eb7aded05e86090952071c53e97a",
  to: "0x217e753369532055c55c3588774275b8a58d5cf4",
  transactionHash: "0x21fb0191b15e748f93e9884349f8066cd765c0948d8050d99ebe99d32eb9543b",
  transactionIndex: 0
}
代码语言:javascript
复制
{
  blockHash: "0x1c2d77b1e07d51894fdf0e2c3423d01538149d657b89e2568b5846d049452fda",
  blockNumber: 5799,
  from: "0xed2632f90f57dbbeb8e1d27277f4ef85a42851d2",
  gas: 5000000,
  gasPrice: 20000000000,
  hash: "0x21fb0191b15e748f93e9884349f8066cd765c0948d8050d99ebe99d32eb9543b",
  input: "0xa01569d70000000000000000000000000000000000000000000000000000000000000000",
  nonce: 1048,
  r: "0x782a4d75ca59f5f0646733653474c6a42e26001513996c86635be1394d23d1c2",
  s: "0x23a1346876b104f527e291f885bfb21fe406b17128a18ddb7167bdf8ce021555",
  to: "0x217e753369532055c55c3588774275b8a58d5cf4",
  transactionIndex: 0,
  v: "0x41",
  value: 2222222
}

在我看来,交易使用的是所有的气体,即使我增加了天然气的价值,也会发生这种情况。奇怪的是,如果我在混合中测试这个合同的话,所用的气体总量将低于200000。有什么问题吗?

EN

回答 1

Ethereum用户

发布于 2019-05-02 09:07:16

在三天零一天的早晨,我遇到了同样的问题,感谢“days @gskapka”的帮助,我终于解决了这个问题,我需要集中我的思想来帮助那些可能遇到同样问题的人。-只支持dev geth专用网我很抱歉地说,oraclize(以太桥)只支持dev链,这意味着您应该使用geth启动您的专用网络

代码语言:javascript
复制
geth --networkid 15 --datadir ./data --rpc --rpcapi "admin,debug,eth,miner,net,personal,txpool,web3" --rpcport "8545" --rpccorsdomain "*"  --dev

或者简单地说,您可以使用

代码语言:javascript
复制
geth --dev --rpc console
  • 如果您在Non-dev专用网络上使用ethereum部署合同,您将得到如下所示的气体错误
代码语言:javascript
复制
gas required exceeds allowance or always failing transaction in private network

所以,所有的问题都是由Non-dev专用网引起的!祝你好运!

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

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

复制
相关文章

相似问题

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