开发工具: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];
}
}