错误:随机不是函数稳定度/ web3js

时间:2018-10-04 17:57:50

标签: ethereum solidity smartcontracts web3 web3js

我正在尝试从我的智能合约的一个函数中提取一个随机数,该函数使用“阻止难度”和“阻止时​​间戳”。

坚固性代码如下:

pragma solidity ^0.4.18;

 contract ApprovalContract {

  function random() external view returns (uint8){
  return uint8(uint256(keccak256(abi.encodePacked(block.timestamp, 
  block.difficulty)))%251);
  } 
 ...
 }

用JS编写的应用程序代码如下:

ApprovalContract.methods.random().call(
        function(error, result) {
            if (error) {
              console.log('error: ' + error);
            }
            else {
              console.log('result: ' + JSON.stringify(result));
            }
          });

我要做的就是将随机生成的数字记录到控制台。不幸的是,我一直看到“未捕获的TypeError:ApprovalContract.methods.random不是函数”

1 个答案:

答案 0 :(得分:0)

您尚未发布整个JS代码,因此尚不清楚如何获得ApprovalContract。理想情况下应如下所示。您需要大于1.0的web3js版本才能运行此代码。我使用的版本是1.0.0-beta.34。

var approvalcontract_artifact = require('../build/contracts/ApprovalContract.json'); /*Please insert path of your ApprovalContract.json in here */
var Web3 = require('web3');
var web3 = new Web3('https://ropsten.infura.io/7dsXakGVRMs1EwuYwkQv'); /*Your Client Endpoint */

var ApprovalContract = new web3.eth.Contract(approvalcontract_artifact.abi, '0x3f6eeae6bb291ed249a4cbff22c49f0ce96b723a'); /* Please write your contract address in place of this address */

var random = ApprovalContract.methods.random().call()
    .then(function(result){
       console.log('result: ' + JSON.stringify(result));
    })
    .catch(function(error) {
      console.log('error: ' + error);
    });