区块链特辑——solidity语言基础(六)

科技资讯 投稿 6300 0 评论

区块链特辑——solidity语言基础(六)

Solidity语法基础学习

十、实战项目(二):

1.实战准备:

ERC20代币接口

ERC20 Token Interface接口

Interface IName {……}

·关键字:interface

·宣告一个接口,定义了需要满足的函数与事件

·在界面中的限制:

·所有宣告的函数接口必须是“external”,即使最终在合约使用的是public也一样。

·不能宣告构造函数(constructor)

·不能宣告在存储空间的变量(状态变量,state variables)

·不能宣告修饰符(modifier)

 

示例代码

ERC20接口

Interface IERC20{ event Transfer(address indexed from,address indexed to,uint256 value; event Approval(address indexed owner,address indexed spender,uint256 value; funciton totalSupply( external view returns(unit256; funciton balance0f(address account external view returns(uint256; function allowance(address owner,address spender external view returns(uint256; function approve(address spender,uint256 amount external returns(bool; function transfer(address to,uint256 amount external returns(bool; function transferFrom(address to,uint256 amount external returns(bool; }

2.分段解读:

发行量函数

·function totalSupply( external view returns(uint256;

·回传代币的发行量

·使用状态变量uint256_totalSupply来储存

 

账户函数查询函数

·function balance0f(address account external view returns(uint256;

·给定一个账户(address),回传给该账户拥有的代币余额(uint256)

·因为是个address→uint256的关系,因此使用mapping来储存:mapping(address => uint256 _balance;

 

账户函数

·function transfer(address to,uint256 amount external returns(bool;

·呼叫者“msg.sender”,转移“amount”数量的代币给特定账户“to”

·成功时回传true,反之,回传false

 

转账事件

·event Transfer(address indexed from,address indexed to,uint256 value;

·当发生代币转移时,必须触发此事件,即使转移的数量为“0”也是

 

授权函数

·function approve(address spender,uint256 amount external returns(bool;

·呼叫者“msg.sender”,授权“amount”数量的代币给第三方账户“spender”使用

·成功时回传true,反之,回传false

 

授权事件

·event Approval(address indexed owner,address indexed spender,uint256 value;

·当授权函数被使用时,必须触发授权事件,即使授权的数量“value”为“0”也是。

 

授权数量查询函数

·function allowance(address owner,address spender external view returns(uint256;

·回传代币拥有者“owner”授权给第三方账户“spender”的代币数量

·我们可以观察到授权的行为是owner→spender→uint256

·因此在储存授权的资讯时,会使用

·mapping(address => mapping(address => uint256

 

第三方转账函数

·function transferFrom(address from,address to,uint256 amount external returns(bool;

·呼叫者为“被授权的第三方账户”,从授权者“from”转移“amount”数量的代币给接收者“to”

·成功时回传true,反之,回传false

编程笔记 » 区块链特辑——solidity语言基础(六)

赞同 (36) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽