自定义ERC20合约部署后msg.sender余额为0问题求助
ERC20合约部署后余额为0的原因分析
针对你提供的合约代码,部署后msg.sender余额显示为0,主要有以下几种可能:
代币小数位认知偏差
OpenZeppelin的ERC20实现默认采用18个小数位,_mint函数的第二个参数是代币的最小单位(相当于以太坊的wei)。你合约里_mint(msg.sender, 1002000)实际只铸造了1002000 / 10^18个代币,这个数值极小,Remix的余额查询面板默认显示的是代币单位(而非最小单位),因此会显示为0。
解决方法:如果要铸造1002000个完整代币,需要把数值改为1002000 * 10 ** decimals(),或者直接写1002000 * 10 ** 18。查询地址错误
部署合约时的msg.sender是Remix界面中当前选中的钱包地址(比如JavaScript VM里的第一个账户),如果查询时选错了地址(比如选了合约地址或其他账户),自然会显示余额为0。请确认查询的地址和部署合约时使用的地址一致。部署交易未生效
若使用Remix的JavaScript VM环境,可能因为页面刷新、环境重置导致之前的部署状态丢失;或者在测试网/主网部署时,交易未被确认。可以重新部署合约,确认交易成功后再查询余额。
内容的提问来源于stack exchange,提问作者daisy
相关产品推荐
相关产品推荐

