首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERC20 totalSupply总是返回0

ERC20 totalSupply总是返回0
EN

Ethereum用户
提问于 2018-07-19 10:04:05
回答 1查看 453关注 0票数 1

我已经在主网络上部署了一个ERC20令牌,您可以在etherscan.io上找到它。

正如您在以太扫描上看到的那样,我遇到的问题是,totalSupply总是返回0,即使我已经创建了6M+令牌。

这是totalSupply函数的ABI:

代码语言:javascript
复制
[{
  "constant": true,
  "inputs": [],
  "name": "totalSupply",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
}]

在坚实性中定义为:

代码语言:javascript
复制
uint256 public totalSupply;

并在主合同中初始化:

代码语言:javascript
复制
uint256 public totalSupply = 0;

我不明白totalSupply是否在内部正确地存储,从外部获取值只是一个问题,或者智能契约实际上没有向totalSupply添加造币标记。

任何帮助都是非常感谢的。

编辑:这是造币功能(其余代码在以太扫描上上传和验证):

代码语言:javascript
复制
function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = SafeMath.add(totalSupply, _amount);
    balances[_to] = balances[_to].add(_amount);
    emit Mint(_to, _amount);
    emit Transfer(0x0, _to, _amount);
    return true;
}
EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-07-20 05:37:44

经过一番挖掘,我发现了你的问题。

您将在自定义令牌代码中重新声明变量totalSupply。这将重写BasicToken契约中的变量,并且变量的值设置为0。

当您调用mint函数时,它不能修改自定义令牌中的totalSupply值,因为它在继承链中处于较高的位置,因此它修改了BasicToken中的变量。理论上,如果您查看BasicToken中的值,您会看到正确的值,但是您总是与您的custome令牌交互,所以您总是看到存在的值。

只需从自定义令牌契约中删除变量声明,它就能正常工作。

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

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

复制
相关文章

相似问题

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