简纲
2. 智能合约
Solidity语言
变量声明
数据类型
- bool
- int
- (地址类型)
- address
- address payable(可接受转账)
- 定长字节组
- 引用
储存区域 指定引用类型储存的数据区域(基础类型可以不指定)
数组操作函数
可见性 缺省值(internal)
2语句
异常检测
- require()//返回剩余gas
- arrest()//清除所有gas
- revert()//联合error语句
- catch()//与 1 2使用
事件event
修饰器
modifier
函数 视图 纯函数 纯函数pure不可修改或读取状态 将函数声明为视图view不可进行状态修改
认为是修改状态的情况:
认为是读状态的情况:
回退函数
曾造成安全漏洞
ERC20标准
接口内容
1.代币的名字 function name() constant public returns (string name); 2.代币的简称,例如:HMB function symbol() public constant returns (string symbol); 3.代币的最小分割量 token使用的小数点后几位。比如如果设置为3,就是支持0.001表示 function decimals() public constant returns (uint8 decimals); 4.token的总量 function totalSupply() public constant returns (uint totalSupply); 5.余额 返回某个地址(账户)的账户余额 function balanceOf(address _owner) public constant returns (uint balance); 6.转账 交易代币 从消息发送者账户中往_to账户转数量为_value的token, 从代币合约的调用者地址上转移 _value的数量token到的地址 _to 【注意:并且必须触发Transfer事件】 function transfer(address _to, uint _value) public returns (bool success); 7.两个地址转账 从账户_from中往账户_to转数量为_value的token,与approve方法配合使用 从地址 _from发送数量为 _value的token到地址 _to 【注意:并且必须触发Transfer事件】 transferFrom方法用于允许合约代理某人转移token。条件是from账户必须经过了approve。*/ function transferFrom(address _from, address _to, uint _value) public returns (bool success); 8.批准_spender能从合约调用账户中转出数量为_value的token function approve(address _spender, uint _value) public returns (bool success); 9.获取_spender可以从账户_owner中转出token的剩余数量 function allowance(address _owner, address _spender) public constant returns (uint remaining);
2个事件 1.发生转账时必须要触发的事件,transfer 和 transferFrom 成功执行时必须触发的事件 event Transfer(address indexed _from, address indexed _to, uint _value); 2.当函数 approve(address _spender, uint256 _value)成功执行时必须触发的事件 event Approval(address indexed _owner, address indexed _spender, uint _value); 10.存储(映射)对账号的控制:mapping(owner => mapping(spender => amount)) allowed 第一个address表示token拥有者 第二个address表示授权的spender,即spender代理消费owner的token 第三个amout表示代理的数量
|