【问题标题】:ERC20 Token successfully deploy without ownerERC20 代币在没有所有者的情况下成功部署
【发布时间】:2019-11-30 02:30:04
【问题描述】:

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

0x88BAcDE95d741729aaF399e75ac14dB971f72f30

请指教

ERC20 Token source code

【问题讨论】:

  • 如果你能复制粘贴合约地址,如果你需要,我可以写下如何铸币的细节。
  • @ferit- 我已经分享了上面的 ERC20 代币地址。请告诉我如何铸币。谢谢

标签: ethereum solidity truffle erc20


【解决方案1】:

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

你可以mint代币到你的账户,因为你是合约的所有者。

【讨论】:

  • 0x88BAcDE95d741729aaF399e75ac14dB971f72f30
  • 这个合约好像没有铸币功能。可以分享一下源码吗?
  • @ferit- 我试图分享我的代码,但 StackOverflow 不允许。它只抱怨代码,需要更多的cmets,我如何在这里与您分享代码?
  • 你可以上传到某处并传递链接。
  • 请看我上面分享的链接(ERC20源代码)。
【解决方案2】:

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

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

如果您想查看初始所有者,则可以通过将其添加到您的 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
    }
}

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

【讨论】:

    【解决方案3】:

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

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

    您将totalSupply_ 分配给msg.sender 的余额,但没有发出事件,Etherscan 不知道这一点。

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

    emit Transfer(address(0), msg.sender, totalSupply_);
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2022-08-15
      • 2020-11-11
      • 1970-01-01
      • 2016-07-31
      • 2018-09-10
      • 1970-01-01
      • 2015-12-16
      • 2011-08-02
      相关资源
      最近更新 更多