发行自己的以太坊ERC20代币---超级详细

文章目录

        • 1、安装MetaMask插件+新建钱包
        • 2、进行合约的创建+发布
        • 3、提交合约+发布合约+验证

1、安装MetaMask插件+新建钱包

注意:电脑是需要ke学上网的,并且需要使用谷歌浏览
注意:电脑是需要ke学上网的,并且需要使用谷歌浏览
注意:电脑是需要ke学上网的,并且需要使用谷歌浏览

  1. 在谷歌浏览器中打开这个地址安装MetaMask钱包插件:https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?authuser=2
    发行自己的以太坊ERC20代币---超级详细_第1张图片
  2. 打开页面点击点击到浏览器即可完安装操作。安装成功后会自动打开MetaMask的页面,点击【创建钱包】进行创建钱包操作。(发行代币是需要旷工费的,并且以eth形式支付)
    发行自己的以太坊ERC20代币---超级详细_第2张图片发行自己的以太坊ERC20代币---超级详细_第3张图片
  3. 输入钱包名后即可创建,创建后会自动生成助记词,助记词一定要保留好。后续会让你输入助记词验证成功后钱包才会创建成功。
    发行自己的以太坊ERC20代币---超级详细_第4张图片发行自己的以太坊ERC20代币---超级详细_第5张图片发行自己的以太坊ERC20代币---超级详细_第6张图片发行自己的以太坊ERC20代币---超级详细_第7张图片发行自己的以太坊ERC20代币---超级详细_第8张图片发行自己的以太坊ERC20代币---超级详细_第9张图片

2、进行合约的创建+发布

  1. 打开网站:https://www.myetherwallet.com/点击【Access My Wallet】接着在新页面点击【MEW CX】
    发行自己的以太坊ERC20代币---超级详细_第10张图片发行自己的以太坊ERC20代币---超级详细_第11张图片
  2. 勾选我接受后点击【Access My Wallet】此时会自动打开之前安装好的MetaMask钱包插件,在MetaMask钱包插件页面点击【下一步】接着点击【连接】即可。
    发行自己的以太坊ERC20代币---超级详细_第12张图片发行自己的以太坊ERC20代币---超级详细_第13张图片发行自己的以太坊ERC20代币---超级详细_第14张图片
  3. 上一步点击【连接】后会自动回到这个页面,点击【Contract】—【Deploy Contract】即可。保留此页面不要关闭

发行自己的以太坊ERC20代币---超级详细_第15张图片

  1. 接着在新的标签页打开Remix网页,这是一个在线的Solidity编译器。网站地址:Remix网页
  2. Solidity编译器页面点击【contracts】可以看到自带的3个文件,此时我们新建一个文件并将如下代码复制进去即可。
    发行自己的以太坊ERC20代币---超级详细_第16张图片
pragma solidity ^0.4.16;

interface tokenRecipient {
      function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }

contract TokenERC20 {
     
    string public name;
    string public symbol;
    uint8 public decimals = 18;  // 18 是建议的默认值
    uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Burn(address indexed from, uint256 value);
    
    function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public {
     
        totalSupply = initialSupply * 10 ** uint256(decimals);
        balanceOf[msg.sender] = totalSupply;
        name = tokenName;
        symbol = tokenSymbol;
    }
    
    function _transfer(address _from, address _to, uint _value) internal {
     
        require(_to != 0x0);
        require(balanceOf[_from] >= _value);
        require(balanceOf[_to] + _value > balanceOf[_to]);
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }
    
    function transfer(address _to, uint256 _value) public returns (bool) {
     
        _transfer(msg.sender, _to, _value);
        return true;
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
     
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }
    
    function approve(address _spender, uint256 _value) public
        returns (bool success) {
     
        allowance[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
     
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
     
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }
    
    function burn(uint256 _value) public returns (bool success) {
     
        require(balanceOf[msg.sender] >= _value);
        balanceOf[msg.sender] -= _value;
        totalSupply -= _value;
        Burn(msg.sender, _value);
        return true;
    }
    
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
     
        require(balanceOf[_from] >= _value);
        require(_value <= allowance[_from][msg.sender]);
        balanceOf[_from] -= _value;
        allowance[_from][msg.sender] -= _value;
        totalSupply -= _value;
        Burn(_from, _value);
        return true;
    }
}
  1. 点击编译按钮,选择版本号要和代码中的一致(此处是0.4.16),选择好后点击【compile】即可完成编译。此时最下面会有【ABI】、【Bytecode】两个按钮,点击对应的即可复制相关内容。打开上述的网站粘贴复制的内容即可。
    发行自己的以太坊ERC20代币---超级详细_第17张图片发行自己的以太坊ERC20代币---超级详细_第18张图片发行自己的以太坊ERC20代币---超级详细_第19张图片
  2. 复制完成后继续填写相关信息,最后点击【Sing Transaction】按钮,此时会打开MetaMask钱包插件,可以看到完成发布需要支付181$的手续费给矿工,手续费以eth形式支付(到此我先暂时停止后续操作了,毕竟手续费略贵)
    发行自己的以太坊ERC20代币---超级详细_第20张图片发行自己的以太坊ERC20代币---超级详细_第21张图片发行自己的以太坊ERC20代币---超级详细_第22张图片
  3. 如果你给钱包里充值了eth并且足够支付手续费的话即可点击上述页面的【确定】按钮完成后续的发布和验证

3、提交合约+发布合约+验证

以下内容来自网络,并非自己实际操作。
以下内容来自网络,并非自己实际操作。
以下内容来自网络,并非自己实际操作。

  1. 点击“确定”后,就可以看到MetaMask弹出的“CONFIRM TRANSACTION”的页面,这个页面是用来确认发送的,点击“CONFIRM”确认提交。
    发行自己的以太坊ERC20代币---超级详细_第23张图片

  2. 点击刚刚发布的智能合约地址,就会调转到Etherscan(以太坊的区块浏览器),耐性等待智能合约的创建。
    发行自己的以太坊ERC20代币---超级详细_第24张图片

  3. 点击确认,支付成功后,然后他会自动部署合约,等一会,去区块浏览器查你的ETH主账号的事物:地址为:https://etherscan.io/address/(加上你自己的支付矿工费用的ETH账号地址);点击进入
    发行自己的以太坊ERC20代币---超级详细_第25张图片

  4. 下图则为你的代币地址,然后查看代币的具体信息:地址为:
    https://etherscan.io/token/(你自己的代币地址)
    发行自己的以太坊ERC20代币---超级详细_第26张图片

  5. 验证是否正常:打开MetaMask钱包插件,点击【add token】,在【token address】中输入token地址
    发行自己的以太坊ERC20代币---超级详细_第27张图片发行自己的以太坊ERC20代币---超级详细_第28张图片

  6. 此时在MetaMask钱包插件即可看到刚刚添加的token。
    发行自己的以太坊ERC20代币---超级详细_第29张图片

你可能感兴趣的:(区块链+数字货币,区块链,chrome,代币,以太坊ERC20代币)