嘿,我无法在Remix中实现_totalSupply和_balances,但是能够使用剩下的函数,如name()和十进制()和符号()--这是我的代码
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!
发布于 2022-08-18 17:03:25
在导入到契约的OpenZeppelin ERC20实现中,属性_totalSupply和_balances具有private可见性。
从坚实的文档页
私有状态变量类似于内部变量,但它们在派生契约中不可见。
因此,这些特定属性(具有private可见性)在从声明它们的契约派生出来的契约中不可见。
解决方案:父协议定义了_mint()函数,该函数有效地增加了所选地址的余额、总供应量以及发出Transfer事件。
constructor(uint256 initialSupply) ERC20 ("MAstering ther","MET")
{
// increases `msg.sender`'s balance, total supply, and emits the `Transfer` event
_mint(msg.sender, initialSupply);
}https://stackoverflow.com/questions/73402851
复制相似问题