[求助]开发中遇到一个问题。在线等啊!
发布于 3 个月前 作者 祝康乐 2318 次浏览 来自 以太坊

现在有用户A和用户B,还有一个管理员C。A、B每天都可以打赌第二天的天气,如果是晴天A获胜,得到100元,反之B获胜。到了第二天,C要去调用a方法获取天气情况并且将奖励发给A或者B。 让C每天8点都调用一下a方法。现在需要一个定时器如何实现那?求demo。或者具体的思路

6 回复

链下定时调用合约~

@xianfeng92 嗯嗯。定时器要用的,但是每次都回弹出小狐狸,确认订单并且支付矿工费。有没有办法用代码来做,而不手动支付确认那

@祝康乐 自己管理私钥和签名,在每天8点时准备发送交易,解锁私钥,对交易进行签名,签名后直接将rawtransaction发送给rpc节点。

@manxiaqu 使用合约solidity 框架使用的truffle,使用js来调用合约的方法。方便给一个demo吗。区块链我是一个小白,不会怎么做。[捂脸]

@祝康乐 发送交易的部分web3代码,仅供参考,需要安装ethereumjs-tx,web3

var Tx = require('ethereumjs-tx');
var Web3 = require('web3');
var web3 = new Web3();

var privKey = ""; // 你的私钥字符串
var privateKey = new Buffer(privKey, 'hex'); // 不要0x
var httpRpc = ""; // httpRpc地址
web3.setProvider(new web3.providers.HttpProvider(httpRpc));

var rawTx = {
        nonce: nonce, // 发送地址的nonce,可以api获取,也可以自己维护
        gasPrice: 20000000000, // 20Gwei
        gasLimit: 100000, // 最大消耗gas
        from: from,  //发送交易地址
        to: toAddr, // 合约地址
        data: "", // 调用合约的编码,调用相关编码获得
        value: 0,
        chainId: 1,
  }
  var tx = new Tx(rawTx);
  tx.sign(privateKey);
  var serializedTx = tx.serialize();
  var rawTxStr = '0x' + serializedTx.toString('hex');
 web3.eth.sendSignedTransaction(tx, function(err, hash){});

@manxiaqu 十分感谢,我今天调试成功了。谢谢!

回到顶部