IDE地址:http://remix.ethereum.org
第一个简单合约
在remix新建文件SimpleToken.sol
pragma solidity ^0.4.20;
contract SimpleToken{
//记录账本
mapping(address => uint256)public balanceOf;
//构造方法,将全部发行量给第一个账本
constructor(uint256 initialSupply){
balanceOf[msg.sender] = initialSupply;
}
//交易函数
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;
}
}
以太坊ERC20简单合约
在remix新建文件erc20interface.sol接口协议文件
pragma solidity ^0.4.20;
contract ERC20interface{
//function name() constant returns (string name);
//function symbol() constant returns (string symbol);
//function decimals() constant returns (uint8 decimals);
//function totalSupply() constant returns (uint256 totalSupply);
//function balanceOf(address _owner) constant returns (uint256 balance);
//代币名称
string public name;
//代币代码
string public symbol;
//可交易小数位数
uint8 public decimals;
//代币发行量
uint public totalSupply;
function transfer(address _to, uint256 _value) returns (bool success);
function approve(address _spender, uint256 _value) returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
在remix新建文件ERC20Token.sol实现上面的erc20接口
pragma solidity ^0.4.20;
import "./erc20interface.sol";
contract ERC20Token is ERC20interface{
mapping(address => uint256)public balanceOf;
mapping(address => mapping(address => uint256)) allowed;
constructor(string _name) public {
name = _name; //"HXDChain";
symbol = "HXD";
decimals = 0;
totalSupply = 10000;
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);
return true;
}
function approve(address _spender, uint256 _value) returns (bool success){
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender,_spender,_value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success){
require(_to != address(0));
require(allowed[_from][msg.sender] >= _value);
require(balanceOf[_from] >= _value);
require(balanceOf[_to] + _value >= balanceOf[_to]);
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
allowed[_from][msg.sender] -= _value;
emit Transfer(msg.sender,_to,_value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining){
return allowed[_owner][_spender];
}
}
近期评论