当前位置:首页学习学习 ERC20 水龙头的智能合约

学习 ERC20 水龙头的智能合约

Token水龙头

当人渴的时候,就要去水龙头接水;当人想要免费Token的时候,就要去Token水龙头领。Token水龙头就是让用户免费领Token的网站/应用。

最早的Token水龙头是比特币BTC)水龙头:现在 BTC 一枚要$30,000,但是在 2010 年,BTC 的价格只有不到$0.1,并且持有人很少。为了扩大影响力,比特币社区的 Gavin Andresen 开发了 BTC 水龙头,让别人可以免费领 BTC。撸羊毛大家都喜欢,当时就有很多人去撸,一部分变为了 BTC 的信徒。BTC 水龙头一共送出了超过 19,700 枚 BTC,现在价值约 6 亿美元!

ERC20 水龙头合约

这里,我们实现一个简版的 ERC20 水龙头,逻辑非常简单:我们将一些 ERC20 Token转到水龙头合约里,用户可以通过合约的 requestToken() 函数来领取 100 单位的Token,每个地址只能领一次。

状态变量

我们在水龙头合约中定义 3 个状态变量

amountAllowed 设定每次能领取Token数量(默认为 100。不是一百枚,因为Token有小数位数)。

tokenContract 记录发放的 ERC20 Token合约地址。

requestedAddress 记录领取过Token的地址。  

学习 ERC20 水龙头的智能合约

事件

水龙头合约中定义了 1 个 SendToken 事件,记录了每次领取Token的地址和数量,在 requestTokens() 函数被调用时释放。

学习 ERC20 水龙头的智能合约1

函数

合约中只有两个函数:

构造函数:初始化 tokenContract 状态变量,确定发放的 ERC20 Token地址。  

学习 ERC20 水龙头的智能合约2

requestTokens() 函数,用户调用它可以领取 ERC20 Token。

Remix 演示

1 首先,部署 ERC20 Token合约,并给自己 mint 10000 单位Token。

学习 ERC20 水龙头的智能合约3

部署`ERC20`

2 部署 Faucet 水龙头合约,初始化的参数填上面 ERC20 Token的合约地址。

学习 ERC20 水龙头的智能合约4

部署水龙头合约

3 利用 ERC20 Token合约的 trasnfer() 函数,将 10000 单位Token转账到 Faucet 合约地址。

学习 ERC20 水龙头的智能合约5

给水龙头转账

4 换一个新账户,调用 Faucet 合约 requestTokens() 函数,领取Token。可以在终端看到 SendToken 事件被释放。

学习 ERC20 水龙头的智能合约6

领取Token

5 在 ERC20 Token合约上利用 balanceOf 查询账户余额,可以看到余额变为 100,领取成功!

学习 ERC20 水龙头的智能合约7

领取成功

总结

这一讲,我们介绍了Token水龙头的历史和 ERC20 水龙头合约。大家觉得下一个 BTC 水龙头会在哪里?

原文标题:《Solidity 极简入门: 32. Token水龙头》

原文作者: 0xAA   

来源:区块律动

温馨提示:

文章标题:学习 ERC20 水龙头的智能合约

文章链接:https://www.btchangqing.cn/399668.html

更新时间:2022年11月26日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

学习

详解网络弹性的代价

2022-11-24 14:05:42

学习

Move语言特性,与Solidity有什么不同?

2022-11-26 23:30:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索