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

我最近在重新学 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 Labs手机Saga面向公众发售,其用户可申请Saga创世NFT:5月9日消息,Solana Labs推出的手机Saga现已面向公众发售,此前预购的订单已开始向美国、加拿大、欧盟、英国、瑞士、澳大利亚和新西兰等地发货。Saga与Solana深度集成,支持自托管密钥解决方案Seed Vault、可访问去中心化应用程序的Solana DAppStore等。此外,Saga用户可以在设置他们的设备时申请一个Saga创世代币,该设备绑定的不可转让NFT是用户获得Saga Rewards的钥匙,可解锁Solana Mobile和Solanad AppStore上线DApp的独家内容和优惠。[2023/5/9 14:51:15]

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

Grayscale Solana Trust已支持在场外交易市场交易:金色财经报道,Grayscale宣布 Grayscale Solana Trust 已支持在场外交易市场交易,代码为 GSOL。灰度称,截至 2023 年 4 月 14 日,GSOL 流通的股份为 304,427 股,所有获得美国证券投资资格的用户都可以自由交易 GSOL 股票,方式与其他证券相同。[2023/4/17 14:09:22]

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

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

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

Solana生态P2E链游Elumia完成新一轮融资:4月14日消息,Solana 生态 P2E 链游 Elumia 宣布完成新一轮融资,本轮融资由 Alameda Research 和 Animoca Brands 领投,Cryptology AG、Guilds YGG SEA、GuildFi、Ancient 8、Good Games Guild、PathDAO、Unix Gaming 以及战略合作伙伴 Spartan Group、Cryptocom Capital、Kyros Ventures、Infinity Ventures Crypto、Spark Digital、Forward Analytics、Master Ventures、Maven Capital、Metavest 和 Solar Eco Fund 参投,具体金额暂未披露。Elumia 将于 2022 年第 2 季度推出首个 Alpha 版本。[2022/4/14 14:23:24]

requestedAddress 记录领取过Token的地址。  

动态 | 公链Solana发布新版本v0.22.4:公链Solana今日在Github更新了Supertubes v0.22.4版本,根据介绍,此次更新减少了验证器对CPU的使用、空闲集群的验证器带宽使用、在solana cli中支持脱机和非循环的挂接子命令;以及增加CUDA 10.2支持等。[2020/1/27]

水龙头合约中定义了 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:0ms0-6:534ms