一分钟教你学会编写erc20智能合约

前期准备:外网连接、以太坊钱包(MetaMask)、ERC20Coin智能合约.sol

总步骤:

1.安装环境

2.编写属于你的智能合约

3.发布合约

一、安装环境

1、在chrome浏览器安装MetaMask插件安装好之后在扩展程序上面点击显示,之后会在右上角看到MetaMask

 2.打开meatMask钱包创建一个属于自己的钱包

二.编写erc20合约

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.打开编写和发布合约的网站IDE:

2.创建erc20.sol合约

 3.编译合约

打开编译页面,选择自己有要编译的合约,最后点击Compile TokenERC20.sol

 4. 发布合约

在第一步打开发布合约的页面,之后在第二步选择要发布的合约名称,之后在第三步填入发布合约的初始化数据之后 

初始化数据

  • initialSupply:初始化发行量(发行量要注意有没有默认添加了小数点)  
  • tokenName:token名称 
  • tokenSymbol:token简称

 5.选择发布的网络和地址

当以上的步骤都完成之后就到了最后的发布环节,你需要选择点击 Injected Web3链接你当前metamask的钱包网络还有地址,之后点击transact,即可完成.

 

 最后当发布完成之后就会出现以下的方法,说明你已经发布完成一个erc20代币.

 当你需要找到你发布的合约地址具体信息的时候,你可以打开metamask的交易记录

 

 

 以上的信息就是你刚刚发布完成的合约地址信息


如果有遇到不懂得或者有疑问欢迎联系本人进行交流

WC:luo425116243

猜你喜欢

转载自blog.csdn.net/qq_33842966/article/details/123635654