ERC20 - 如何在多个账户上分配初始代币供应?

ERC20 - How to split the initial token supply on multiple accounts?

有人可以向我解释为什么不能将 Transfer 事件的初始总供应量拆分到多个不是 _msgSender() 地址的地址吗?

这里的目标是用 0x00 地址“铸造”多个钱包上的代币(12% 在开发者钱包中,5% 在市场营销钱包中,3% 在另一个钱包中)但直接在构造函数中不使用外部在部署期间我必须在脚本中调用的函数。

但是它不工作而且我没有收到任何错误......真的不明白

这是我的代码:

constructor () public payable{
    uint256 _tTotransfer = _tTotal;

    uint256 _tToDevs = (_tTotal.mul(12)).div(100);
    _tTotransfer = _tTotransfer.sub((_tTotal.mul(12)).div(100));

    uint256 _tToMarketing = (_tTotal.mul(5)).div(100);
    _tTotransfer = _tTotransfer.sub((_tTotal.mul(5)).div(100));

    uint256 _tToApes = (_tTotal.mul(3)).div(100);
    _tTotransfer = _tTotransfer.sub((_tTotal.mul(3)).div(100));

    _rOwned[_msgSender()] = _rTotal;

    emit Transfer(address(0), _msgSender(), _tTotransfer); 
    emit Transfer(address(0), _devsWallet, _tToDevs); 
    emit Transfer(address(0), _marketingWallet, _tToMarketing); 
    emit Transfer(address(0), _apesWallet, _tToApes);
    
}

我也不明白为什么不能直接“铸造”另一个钱包的总供应量(不是分割而是整个)而不是 _msgSender。

谢谢你们希望有人能帮助我...

假设_rOwned持有每个地址的实际代币余额:

您正确地发出了 Transfer 事件,但还需要更新代币余额。


此行将 _msgSender() 余额设置为 _tTotal,根据您的描述,这是您不想要的。

_rOwned[_msgSender()] = _rTotal; // incorrect

您希望他们拥有剩余的 _tTotransfer


其他初始所有者也是如此

_rOwned[_msgSender()] = _tTotransfer; // replace the above line to this
emit Transfer(address(0), _msgSender(), _tTotransfer);

_rOwned[_devsWallet] = _tToDevs;
emit Transfer(address(0), _devsWallet, _tToDevs);

rOwned[_marketingWallet] = _tToMarketing;
emit Transfer(address(0), _marketingWallet, _tToMarketing);

rOwned[_apesWallet] = _tToApes;
emit Transfer(address(0), _apesWallet, _tToApes);