Discover more of Etherscan's tools and services in one place.
Sponsored
Contract Source Code:
File 1 of 1 : MyToken
pragma solidity ^0.4.21; contract EIP20Interface { // 获取总的支持量 uint256 public totalSupply; // 获取其他地址的余额 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) public returns (bool success); //允许_spender从自己的账户转出_value数量的token,调用多次会覆盖可用量。 function approve(address _spender, uint256 _value) public returns (bool success); // 返回_spender仍然允许从_owner获取的余额数量 function allowance(address _owner, address _spender) public view returns (uint256 remaining); // token转移完成后触发 event Transfer(address indexed _from, address indexed _to, uint256 _value); // approve调用后触发 event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract MyToken is EIP20Interface { //注意以下四个状态变量必须公开,并且变量名不能变化,如decimals,命名为decimal。否则与其它钱包应用不能兼容。 uint256 public totalSupply; uint8 public decimals; string public name; string public symbol; mapping(address=>uint256) public balances; mapping(address=>mapping(address=>uint256)) public allowed; function MyToken( uint256 _totalSupply, uint8 _decimal, string _name, string _symbol) public { totalSupply = _totalSupply; decimals = _decimal; name = _name; symbol = _symbol; balances[msg.sender] = totalSupply; } // 获取其他地址的余额 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(balances[msg.sender] >= _value && _value > 0); require(balances[_to] + _value > balances[_to]); balances[msg.sender] -= _value; balances[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } //从_from地址向_to地址发送_value数量的token function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { uint256 allow = allowed[_from][_to]; require(_to == msg.sender && allow >= _value && balances[_from] >= _value); require(balances[_to] + _value > balances[_to]); allowed[_from][_to] -= _value; balances[_from] -= _value; balances[_to] += _value; emit Transfer(_from, _to, _value); return true; } //允许_spender从自己的账户转出_value数量的token,调用多次会覆盖可用量。 function approve(address _spender, uint256 _value) public returns (bool success) { require(balances[msg.sender] >= _value && _value > 0 ); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } // 返回_spender仍然允许从_owner获取的余额数量 function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowed[_owner][_spender]; } }
Please enter a contract address above to load the contract details and source code.
Please DO NOT store any passwords or private keys here. A private note (up to 100 characters) can be saved and is useful for transaction tracking.
My Name Tag:
Private Note:
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.