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 代币在没有所有者的情况下成功部署的主要内容,如果未能解决你的问题,请参考以下文章