ERC20 Token 合约代码分析
合约接口代码
// https://github.com/ethereum/EIPs/issues/20
// 接口标准
contract ERC20 {
function totalSupply() constant returns (uint totalSupply); // 总发行量
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success); // 代币分发(注意, 这个只有合约的Creator 可以调用)
function transferFrom(address _from, address _to, uint _value) returns (bool success); // 这里是拥有者和拥有者之间的代币转移
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
// Token信息
string public constant name = "4FunCoin";
string public constant symbol = "4FC";
uint8 public constant decimals = 18; // token的精度, 大部分都是18
}
上面的代码是一个标准的ERC20标准的代码, 他给出了框架, 我们只需要实现相应的函数就好了, 这里给出函数说明:
接口函数
- 函数的形参是局部有效, 所以前面使用下划线, 与其他的变量区别开来. 如 _owner.
totalSupply()
函数返回这个Token的总发行量;balanceOf()
查询某个地址的Token数量 , 结合mapping实现transfer()
owner 使用这个进行发送代币transferFrom ()
token的所有者用来发送tokenallowance()
控制代币的交易,如可交易账号及资产, 控制Token的流通approve()
允许用户可花费的代币数;
事件函数
这里两个Event是重点, 之前没弄懂, 现在倒是明白不少, 就是产生事件, 从而可以被前端代码捕获到, 从对事件使用事件服务函数进行处理 , 这里的参数,也将传递给服务函数
- event Transfer() Token的转账事件
- event Approval() 允许事件
合约实现代码
理解了上面的函数, 下面的代码,就实现了Token合约的函数填充
pragma soli