ERC20 代币在没有所有者的情况下成功部署

Posted

技术标签:

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

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

0x88BAcDE95d741729aaF399e75ac14dB971f72f30

请指教

ERC20 Token source code

【问题讨论】:

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

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

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

【讨论】:

0x88BAcDE95d741729aaF399e75ac14dB971f72f30 这个合约好像没有铸币功能。可以分享一下源码吗? @ferit- 我试图分享我的代码,但 *** 不允许。它只抱怨代码,需要更多的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_);

【讨论】:

以上是关于ERC20 代币在没有所有者的情况下成功部署的主要内容,如果未能解决你的问题,请参考以下文章

ERC20 代币。无法获取变量,也无法使用已部署合约的方法

为部署在 RinkeBy 测试网上的智能合约执行 ERC20 代币“传输函数”的原始交易

如何与已部署的 ERC20 代币与另一个智能合约进行交互?

以太坊私链部署erc20_usdt代币

Solidity-ERC20代币的锁仓与释放-2

Solidity-ERC20代币的锁仓与释放-1