首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法在_totalSupply和_balances中使用OpenZeppelin中的任何私有数据类型,并且在OpenZeppelin中显示未声明的标识符。

我无法在_totalSupply和_balances中使用OpenZeppelin中的任何私有数据类型,并且在OpenZeppelin中显示未声明的标识符。
EN

Stack Overflow用户
提问于 2022-08-18 12:09:54
回答 1查看 79关注 0票数 -2

嘿,我无法在Remix中实现_totalSupply和_balances,但是能够使用剩下的函数,如name()和十进制()和符号()--这是我的代码

代码语言:javascript
复制
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract METoken is ERC20 {
constructor(uint256 initialSupply) ERC20 ("MAstering ther","MET")
{
    _totalSupply=initialSupply;
    _balances[msg.sender] = initialSupply;
    emit Transfer(address(0), msg.sender, initialSupply);
}
}

我使用的是ERC20,我从Github的ERC20.sol文件中看到,有_totalSupply和其他变量可以使用totalSupply()方法,但是我不能使用它们plz!

EN

回答 1

Stack Overflow用户

发布于 2022-08-18 17:03:25

在导入到契约的OpenZeppelin ERC20实现中,属性_totalSupply_balances具有private可见性。

从坚实的文档页

私有状态变量类似于内部变量,但它们在派生契约中不可见。

因此,这些特定属性(具有private可见性)在从声明它们的契约派生出来的契约中不可见。

解决方案:父协议定义了_mint()函数,该函数有效地增加了所选地址的余额、总供应量以及发出Transfer事件。

代码语言:javascript
复制
constructor(uint256 initialSupply) ERC20 ("MAstering ther","MET")
{
    // increases `msg.sender`'s balance, total supply, and emits the `Transfer` event
    _mint(msg.sender, initialSupply);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73402851

复制
相关文章

相似问题

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