BSP:Solidity极简入门|第三十二讲:Token水龙头

我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。

所有代码和教程开源在 github: github.com/AmazingAng/WTFSolidity

我们在第 31 讲学习了 ERC20 Token标准。这一讲,我们将学习 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 亿美元!

Solana生态去中心化保险协议Amulet Protocol已启动测试网:9月7日消息,Solana生态去中心化保险协议Amulet Protocol已启动测试网,用户可在测试的同时完成项目团队提供的任务来获得奖励。Amulet 表示目前正在接受Kudelski的审计,主网计划于月底推出。

此前报道,Amulet Protocol于今年4月底宣布完成了由gumi Cryptos Capital领投的600万美元种子轮融资。[2022/9/7 13:14:26]

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

链游玩家心理AI分析公司Solsten完成2180万美元B轮融资,Konvoy领投:8月18日消息,链游玩家心理 AI 分析初创公司 Solsten 宣布完成 2180 万美元 B 轮融资,Konvoy 领投,Inventure、GFR Fund、Sisu Game Ventures 和威斯康星大学麦迪逊分校校友基金 Bascom Ventures、以及 Galaxy Interactive、Dentsu Ventures 和区块链私募股权投资公司 Warburg Serres 参投。Solsten 主要通过分析玩家心理,帮助游戏开发公司创造更生动、更具吸引力的数字体验,其客户包括区块链游戏 Axie Infinity 开发商 Sky Mavis、链游工作室 Mythical Games、以及 Super Evil Megacorp、Starbreeze、Tilting Point 和 Wooga 等。(Business Insider)[2022/8/18 12:34:32]

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

CoinShares:Solana投资产品上周流入价值约5000万美元,超越比特币和以太坊:金色财经报道,据9月14日发布的CoinShares数字资产基金流动周报,Solana(SOL)投资产品在9月6日至9月10日期间的资金流入为4940万美元。加密投资产品当周总流入量相当于5700万美元,SOL的资金流入量相比前一周增长275%,占总流入量的86.6%。Solana产品的资金流入激增,并且SOL价格同期上涨36%。报告总结称,“价格上涨和资金流入的结合使Solana管理的资产达到9700万美元,在所有投资产品中排名第五。”数字资产产品已经连续第四周出现资金流入,对山寨币的需求大大超过BTC产品的需求,BTC产品的资金流入量最小,为20万美元。(cointelegraph)[2021/9/14 23:23:20]

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

Kin将于12月15日将迁移至公链Solana:12月14日消息,区块链社交平台Kin的开发商Kik宣布放弃以太坊链,并将于12月15日将加密货币Kin迁移至Solana区块链。官方表示,在迁移之前,Solana将进行一次主网升级,以实现一些针对Kin的新??优化。与此同时,Kin生态系统有超过5500万个账户,在迁移过程中,余额为1美元或1美元以上的Kin账户将被优先考虑。开发者正在迁移做最后的准备,以确保一切顺利进行。今年5月消息,社交平台Kin提出迁移至公链Solana的方案。(Decrypt)[2020/12/14 15:10:22]

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

requestedAddress 记录领取过Token的地址。  

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

合约中只有两个函数:

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

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

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

部署`ERC20`

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

部署水龙头合约

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

给水龙头转账

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

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

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

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

原文作者: 0xAA   

来源:区块律动

区块律动BlockBeats

媒体专栏

阅读更多

金色早8点

金色财经

去中心化金融社区

CertiK中文社区

虎嗅科技

念青

深潮TechFlow

Odaily星球日报

腾讯研究院

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-8:307ms