我无法使用_totalSupply,并在OpenZeppelin中平衡任何私有数据类型,并在solidity中显示未声明



嘿,我无法在Remix中实现_totalSupply和_balance,但可以使用剩下的函数,如name((、decimal((和symbol((这是我的代码

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 help!

在OpenZeppelin ERC20实现中,您正在导入到您的合同中,属性_totalSupply_balances具有private可见性。

从Solidity文档页面:

私有状态变量与内部变量类似,但在派生合约中不可见

因此,这些特定属性(具有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);
}

相关内容

最新更新