区块链合约实战

开发工具:Remix/MetaMask

代币合约编写:Solidity

 

简单代币开发:

pragma solidity ^0.4.20;

 

contract MyToken{

    

    mapping(address => uint256) public balanceOf;

    

    constructor(uint256 initSupply) public{

        balanceOf[msg.sender] = initSupply;

    }

    

    function transfer(address _to,uint256 _value) public{

        require(balanceOf[msg.sender] >= _value);

        require(balanceOf[_to] + _value >= balanceOf[_to]);

       

        balanceOf[msg.sender] -= _value;

        balanceOf[_to] += _value;

    }

}

 

标准代币开发:

ERC-20标准接口

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md

pragma solidity ^0.4.0;

 

contract ERC20Interface{

    string public name;

    string public symbol;

    uint8 public decimals;

    uint public totalSupply;

 

    function transfer(address _to, uint256 _value) returns (bool success);

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

    function approve(address _spender, uint256 _value) returns (bool success);

    function allowance(address _owner, address _spender) 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 ERC20 is ERC20Interface{

    

    mapping (address =>  uint256) public balanceOf;

    mapping (address => mapping (address =>uint256)) internal allowed;

    

    constructor() public{

        name = "Tai Token";

        symbol = "TaiPark";

        decimals = 0;

        totalSupply = 100000000;

        balanceOf[msg.sender] = totalSupply;

    }

    

 

    function transfer(address _to, uint256 _value) returns (bool success){

        require(_to != address(0));

        require(balanceOf[msg.sender] >= _value);

        require(balanceOf[_to] + _value >= balanceOf[_to]);

        

        balanceOf[msg.sender] -= _value;

        balanceOf[_to] += _value;

        emit Transfer(msg.sender,_to,_value);

    }

 

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success){

        require(_to != address(0));

        require(balanceOf[_from] >= _value);

        require(allowed[_from][msg.sender] >= _value);

        require(balanceOf[_to] + _value >= balanceOf[_to]);

        

        balanceOf[_from] -= _value;

        balanceOf[_to] += _value;

        emit Transfer(_from,_to,_value);

    }

 

    function approve(address _spender, uint256 _value) returns (bool success){

        allowed[msg.sender][_spender] = _value;

        emit Approval(msg.sender,_spender,_value);

        success = true;

        

    }

    

    function allowance(address _owner, address _spender) view returns (uint256 remaining){

        return allowed[_owner][_spender];

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值