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
标签:function,uint256,代币,solidity,returns,external,address,特辑,区块 From: https://www.cnblogs.com/wybsignal/p/17062325.html