以太坊开发视频教程2 代币合约如何创建和部署

本次使用ERC20标准

标准说明地址:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md

contract ERC20{
    string public constant name="";                 
    uint8 public constant decimals=;              
    string public constant symbol="";  

    /**总发行量 */
    function totalSupply()public view returns (uint supply);

    /**查询余额 */
    function balanceOf(address _owner) public view returns (uint256 balance);

    /**转账 */
    function transfer(address _to, uint256 _value) public returns (bool success);
    /**转账 */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /**设置某个账户的单币最大转账金额 */
    function approve(address _spender, uint256 _value) public returns (bool success);

    /**设置是否允许他人代转 */
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

下面是贴出全部代码

pragma solidity ^0.4.18;

contract ERC20{

    /**总发行量 */
    function totalSupply()public view returns (uint supply);

    /**查询余额 */
    function balanceOf(address _owner) public view returns (uint256 balance);

    /**转账 */
    function transfer(address _to, uint256 _value) public returns (bool success);
    /**转账 */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /**设置某个账户的单币最大转账金额 */
    function approve(address _spender, uint256 _value) public returns (bool success);

    /**设置是否允许他人代转 */
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract LeekCoin is ERC20 {

    string public constant name="韭菜币";                 
    uint8 public constant decimals=18;              
    string public constant symbol="Leek";       
    address public OWNER;  

    constructor()public{
        BALANCES_ACCOUNTS[msg.sender] = totalSupply();
        OWNER = msg.sender;
    }

    function totalSupply()public view returns (uint supply){
        return 26277000000000;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(BALANCES_ACCOUNTS[msg.sender] >= _value && BALANCES_ACCOUNTS[_to] + _value > BALANCES_ACCOUNTS[_to]);
        require(_to != 0x0);
        BALANCES_ACCOUNTS[msg.sender] -= _value;
        BALANCES_ACCOUNTS[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns 
    (bool success) {
        require(BALANCES_ACCOUNTS[_from] >= _value && ALLOWED_ACCOUNTS[_from][msg.sender] >= _value);
        BALANCES_ACCOUNTS[_to] += _value;
        BALANCES_ACCOUNTS[_from] -= _value; 
        ALLOWED_ACCOUNTS[_from][msg.sender] -= _value;
        emit Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return BALANCES_ACCOUNTS[_owner];
    }

    function approve(address _spender, uint256 _value) public returns (bool success)   
    { 
        ALLOWED_ACCOUNTS[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return ALLOWED_ACCOUNTS[_owner][_spender];
    }
    mapping (address => uint256) BALANCES_ACCOUNTS;
    mapping (address => mapping (address => uint256)) ALLOWED_ACCOUNTS;
}

代币Truffle完整项目下载地址:http://on0lcpgv4.bkt.clouddn.com/Truffle_LeekCoin.zip