首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从智能合约获取客户端中的状态变量

无法从智能合约获取客户端中的状态变量
EN

Stack Overflow用户
提问于 2018-12-03 21:24:19
回答 1查看 750关注 0票数 0

我正在学习使用以太区块链构建ICO。我已经为代币销售编写了智能合约,它工作得很好。

我的代币销售代码:

代码语言:javascript
运行
复制
pragma solidity ^0.4.24;

import './KhananiToken.sol';

contract KhananiTokenSale {
    address admin;
    KhananiToken public tokenContract;
    uint256 public tokenPrice;
    uint256 public tokensSold;

    event Sell(
        address   _buyer,
        uint256  _amount
    );

    constructor (KhananiToken _tokenContract, uint256 _tokenPrice ) public {
        //Assign an Admin
        admin = msg.sender; //address of person how deployed the contract

        tokenContract = _tokenContract;
        tokenPrice = _tokenPrice;
    }

    function multiply(uint x, uint y) internal pure returns(uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }

    function buyTokens(uint256 _numberOfTokens) public payable {
        require(msg.value == multiply(_numberOfTokens , tokenPrice));

        require(tokenContract.balanceOf(this) >= _numberOfTokens);        

        require(tokenContract.transfer(msg.sender, _numberOfTokens));        

        tokensSold += _numberOfTokens;

        Sell(msg.sender, _numberOfTokens);
    }

}

我的迁移代码:

代码语言:javascript
运行
复制
module.exports = function(deployer) {
  var tokenSupply = 1000000;
  var tokenPrice = 1000000000000000; // is 0.001 Ehter

  deployer.deploy(KhananiToken, tokenSupply).then(function(TokenAddress){
    return  deployer.deploy(KhananiTokenSale, TokenAddress.address, tokenPrice);
  }); //1000000 it the inital token supply

};

我的客户端代码:

代码语言:javascript
运行
复制
App.contracts.KhananiTokenSale.deployed().then(function(instance){
      khananiTokenSaleInstance = instance;
      return instance.tokenPrice();
    }).then(function(tokenPrice){
      console.log('tokenPrice',tokenPrice)
      console.log('tokenPrice',App.tokenPrice)
      App.tokenPrice = tokenPrice;
      //$('.token-price').html(App.tokenPrice)
    })

返回instance.tokenPrice()后,代码不会进入.then函数,因此console.log('tokenPrice',tokenPrice)不起作用。在chrome中,我得到了这个错误

MetaMask - RPC错误:内部JSON-RPC错误。{代码:-32603,消息:“内部JSON-RPC错误。”}未捕获(in promise)错误:内部JSON-RPC错误。在Object.InvalidResponse (inpage.js:1)

在MetaMask中,我得到了这个错误

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

https://stackoverflow.com/questions/53594821

复制
相关文章

相似问题

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