1

我已将我的 ERC20 代币合约部署到 Rospten 网络上,当我查看 Etherscan 时,我看不到我的账户出现在持有人列表中。这是为什么 ?

0x88BAcDE95d741729aaF399e75ac14dB971f72f30

请指教

快照

ERC20代币源代码

4

3 回答 3

1

创建 ERC20 代币时,您需要铸造代币并将它们移动到一个地址或地址列表。

例如,如果您不想对合约中的任何地址进行硬编码,您可以按照本指南将所有代币发送到部署者地址。然后,您可以使用该帐户随意分配您的代币。

如果您想查看初始所有者,则可以通过将其添加到您的 ERC20 构造函数来实现。

contract MyToken is ERC20 {
    address public admin;

    constructor() ERC20("dust", "P2PM") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
        admin = msg.sender; // Sets admin address in blockchain
    }
}

但是,除非您需要使用此地址,否则无需将其公开。只要交易是使用管理员密钥签署的,您就可以随时将令牌从管理员地址转移到您想要的任何人。

于 2021-08-13T21:46:59.800 回答
1

部署 ERC20 合约不会使您的地址成为代币的持有者。

不过,您可以mint代币到您的帐户,因为您是合约的所有者。

于 2019-07-22T15:53:18.967 回答
0

Etherscan 通过观察Transfer事件来确定代币余额。在您的构造函数中:

constructor()
    public
{
    totalSupply_ = INITIAL_SUPPLY;
    balances[msg.sender] = totalSupply_;
}

您正在分配totalSupply_tomsg.sender的余额,但没有发出事件 Etherscan 不知道这一点。

处理代币铸造事件的典型方法是将转移显示为来自0x00. 将以下行添加到构造函数中,余额应在 Etherescan 和其他区块浏览器上正确显示。

emit Transfer(address(0), msg.sender, totalSupply_);
于 2019-07-28T09:50:24.130 回答