部署以太坊智能合約(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合約地址
在這裏插入圖片描述
在這裏插入圖片描述
點擊這個粘貼過來即可
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這個代幣也可以轉賬給別人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章