代币水龙头"/>
solidity0.8.0的应用案例2,如何实现代币水龙头
逻辑:我们将一些ERC20
代币转到水龙头合约里,用户可以通过合约的requestToken()
函数来领取100
单位的代币,每个地址只能领一次。
状态变量
在水龙头合约中定义3个状态变量
amountAllowed
设定每次能领取代币数量(默认为100
,不是一百枚,因为代币有小数位数)。tokenContract
记录发放的ERC20
代币合约地址。requestedAddress
记录领取过代币的地址。
uint256 public amountAllowed = 100; // 每次领 100 单位代币
address public tokenContract; // token合约地址
mapping(address => bool) public requestedAddress; // 记录领取过代币的地址
事件
水龙头合约中定义了1个SendToken
事件,记录了每次领取代币的地址和数量,在requestTokens()
函数被调用时释放。
// SendToken事件
event SendToken(address indexed Receiver, uint256 indexed Amount);
函数
合约中只有两个函数:
- 构造函数:初始化
tokenContract
状态变量,确定发放的ERC20
更多推荐
solidity0.8.0的应用案例2,如何实现代币水龙头
发布评论