ERC20 Token 在没有所有者的情况下成功部署
ERC20 Token successfully deploy without owner
我已经将我的 ERC20 代币合约部署到 Rospten 网络上,当我检查 Etherscan 时,我看不到我的账户出现在持有者列表中。这是为什么?
0x88BAcDE95d741729aaF399e75ac14dB971f72f30
请指教
部署 ERC20 合约不会使您的地址成为令牌的持有者。
你可以 mint
令牌到你的帐户,因为你是合同的所有者。
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 令牌时,您需要铸造令牌并将它们移动到一个地址或地址列表。
如果您不想在合约中硬编码任何地址,您可以将所有代币发送到部署者地址,例如 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
}
}
不过,除非你需要使用这个地址,否则没有必要public。只要交易是用管理员的密钥签名的,你就可以随时将代币从管理员地址转移到任何你想要的人。
我已经将我的 ERC20 代币合约部署到 Rospten 网络上,当我检查 Etherscan 时,我看不到我的账户出现在持有者列表中。这是为什么?
0x88BAcDE95d741729aaF399e75ac14dB971f72f30
请指教
部署 ERC20 合约不会使您的地址成为令牌的持有者。
你可以 mint
令牌到你的帐户,因为你是合同的所有者。
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 令牌时,您需要铸造令牌并将它们移动到一个地址或地址列表。
如果您不想在合约中硬编码任何地址,您可以将所有代币发送到部署者地址,例如 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
}
}
不过,除非你需要使用这个地址,否则没有必要public。只要交易是用管理员的密钥签名的,你就可以随时将代币从管理员地址转移到任何你想要的人。