Ethereum 坚固性-添加总供应量

Ethereum 坚固性-添加总供应量,ethereum,solidity,erc20,Ethereum,Solidity,Erc20,我正在网上学习坚固性 我还引用了这个api来创建令牌 对,他们提供了一个_totalSupply函数,我想将它连接到我的智能合约,这样它就显示了我为什么部署它的代币总量 我做错了什么 pragma-solidity^0.8.0; 进口https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol; 合同Foobar是ERC20{ 施工单位UINT256初始供应公共

我正在网上学习坚固性 我还引用了这个api来创建令牌

对,他们提供了一个_totalSupply函数,我想将它连接到我的智能合约,这样它就显示了我为什么部署它的代币总量

我做错了什么

pragma-solidity^0.8.0; 进口https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol; 合同Foobar是ERC20{ 施工单位UINT256初始供应公共ERC20Foobar,FOO{ _mintmsg.sender,初始供应; //在此添加总供应量 _总供应量256 5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; } } OpenZeppelin ERC20_totalSupply是一个私有财产,这意味着在Foobar中,您不能从派生合同访问它

对属性定义的修改 关于可见性修饰符 你的语法也不正确。如果属性至少是内部的,则可以将其值设置为

_totalSupply = 5000000000000000000000000000000000000000;
或者以更可读的方式

_totalSupply = 5 * 1e39;
如果要更改其可见性,则需要将父ERC20合同复制到IDE中,并更改import语句以反映新的本地位置。然后,您将能够在本地合同副本中更新属性可见性


请注意,OpenZeppelin ERC20包含相对导入路径,例如import./IERC20.sol;。您还需要在本地副本中重写这些内容,以便它们指向GitHub位置。否则,编译器将尝试导入不存在的本地文件。

OpenZeppelin contracts会在您铸造或刻录令牌时自动更新totalSupply。它们还自动将其公开为您可以读取的变量。您不需要,也不应该,也不能手动设置totalSupply,因为这样一来,分配的代币数量将与总供应量不匹配。

谢谢-因此,根据该定义,我只需要上面的造币功能,其他所有的总供应量都将在引擎盖下发生?这是正确的,先生。为了验证,我还建议你阅读你继承的合同的源代码。谢谢@Petr Hejda-这解释了为什么我不能在BSC上编译我的代码,这样就可以在他们的合同标签下看到。它不承认进口。