部署以太坊智能合约(Token发行)

pragma solidity ^0.4.24;

contract EIP20Interface{
    //获取_owner地址的余额
    function balanceOf(address _owner) public view returns (uint256 balance);
    //转账:从自己账户向_to地址转入_value个Token
    function transfer(address _to, uint256 _value)public returns (bool success);
    //转账:从_from向_to转_value个Token
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    //允许_spender从自己(调用方)账户转走_value个Token
    function approve(address _spender, uint256 _value) returns (bool success);
    //自己_owner查询__spender地址可以转走自己多少个Token
    function allowance(address _owner, address _spender) view returns (uint256 remaining);
    //转账的时候必须要调用的时间,比如Tranfer,TransferFrom
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    //成功执行approve方法后调用的事件
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract YJCToken is EIP20Interface {
    //1.获取token名字,比如"YaJing Coin"
    string public name;
     //2.获取Token简称,比如"YJC"
    string public symbol;
    //3.获取小数位,比如以太坊的decimals为18
    uint8 public decimals;
     //4.获取token发布的总量,比如HT 5亿
    uint256 public totalSupply;

    mapping(address=>uint256) balances ;
    mapping(address=>mapping(address=>uint256)) allowances;
    function YJCToken(string _name,string _symbol, uint8 _decimals,uint256 _totalSupply) public{       
    name = _name;
    symbol = _symbol;
    decimals = _decimals;
    totalSupply = _totalSupply;
    balances[msg.sender] = _totalSupply;
    }

    //获取_owner地址的余额
    function balanceOf(address _owner) public view returns (uint256 balance){
        return balances[_owner];
    }
    //转账:从自己账户向_to地址转入_value个Token
    function transfer(address _to, uint256 _value)public  returns (bool success){
        require(_value >0 && balances[_to] + _value > balances[_to] && balances[msg.sender] > _value);
        balances[_to] += _value;
        balances[msg.sender] -= _value;
        Transfer(msg.sender, _to,_value);

        return true;
    }

    //转账:从_from向_to转_value个Token
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success){
        uint256 allowan = allowances[_from][_to];
        require(allowan > _value && balances[_from] >= _value && _to == msg.sender && balances[_to] + _value>balances[_to]);
        allowances[_from][_to] -= _value;
        balances[_from] -= _value;
        balances[_to] += _value;
        Transfer(_from,_to,_value);
        return true;
    }
    //允许_spender从自己(调用方)账户转走_value个Token
    function approve(address _spender, uint256 _value) returns (bool success){
        require(_value >0 && balances[msg.sender] > _value);
        allowances[msg.sender][_spender] = _value;
        Approval(msg.sender,_spender,_value);
                return true;
    }
    //自己_owner查询_spender地址可以转走自己多少个Token
    function allowance(address _owner, address _spender) view returns (uint256 remaining){
        return allowances[_owner][_spender];
    }

}

在这里插入图片描述
在这里插入图片描述
填写Token初始化参数

需要注意:发行总量=_totalSupply/_decimals,此处发行了100个YJC
在这里插入图片描述
点击transact,会自动弹出来这个界面,这个账户是新建的账户余额为0ETH。

需要先得到一定数量的以太币才能部署智能合约
在这里插入图片描述
在这里插入图片描述
再重新transact一下,点击确认
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在Ramix端直接获取参数值:
在这里插入图片描述
在这里插入图片描述
部署成功
在这里插入图片描述
在这里插入图片描述
查询账户的Token余额
在这里插入图片描述
在这里插入图片描述
注意:代币联系人地址是生成的token合约地址
在这里插入图片描述
在这里插入图片描述
点击这个粘贴过来即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个代币也可以转账给别人

发布了32 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_35443700/article/details/105057270
今日推荐