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

我最近在重新学solidity,巩固一下细节,也写一个「Solidity极简入门」,供小白们使用,每周更新1-3讲。

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

我们在第31讲学习了ERC20Token标准。这一讲,我们将学习ERC20水龙头的智能合约。在这个合约中,用户可以领到免费的ERC20Token。

Token水龙头

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

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

Solana生态NFT项目DeGods基于Ordinals在比特币链上铸造:2月16日消息,Solana生态NFT项目DeGods已经利用Ordinals协议将535个NFT在比特币链上铸造。DeGods创始人Rohun Vora(Frank)表示,他和Dust Labs首席执行官Kevin Henrikson都是比特币的长期爱好者,在Ordinals热潮早期,他们很高兴有机会将该项目带到比特币网络。(Decrypt)[2023/2/16 12:11:12]

ERC20水龙头合约

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

状态变量

Magic Eden:建议Solana钱包用户转移加密资产至新建钱包:8月3日消息,Solana 生态 NFT 市场 Magic Eden 在推特上表示,经进一步调查,Magic Eden 团队建议为保护个人资产,用户还要做以下工作:

1. 用新的助记词创建一个新钱包

2. 把所有 NFT 和有流动性的加密货币转移至新钱包

或者更稳妥的是把所有资产都放进冷钱包。

此前报道,Solana 生态 NFT 市场 Magic Eden 在社交媒体上发布警告称,似乎有一个波及面极广的 SOL 漏洞,正在耗尽整个生态系统的钱包。Magic Eden 提醒用户进行以下设置保护个人资产:1. 进入 Phantom 钱包设置页面;2. 点击受信应用;3. 撤销任何可疑链接的权限。[2022/8/3 2:55:15]

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

基于Solana的DEX Orca正式上线集中流动性池产品Whirlpools:4月25日消息,基于Solana的DEX Orca正式上线集中流动性池产品Whirlpools并启动流动性挖矿,目前支持的交易对包括mSOL/USDT、mSOL/UST、mSOL/SOL、stSOL/USDC、stSOL/USDT、stSOL/UST、stSOL/SOL。Whirlpools允许流动性提供者主动选择他们提供流动性的价格范围,以提升资本利用效率。(Medium)[2022/4/25 14:48:23]

amountAllowed设定每次能领取Token数量。

tokenContract记录发放的ERC20Token合约地址。

requestedAddress记录领取过Token的地址。??

分析:Solana并未遭到DDoS攻击,实际问题已在未发布的1.9版本中解决:12月12日消息,Rockaway Blockchain Fund(RBF)验证器和质押业务负责人Tomá? Eminger在推特上就有关“Solana最近遭到DDoS攻击导致TPS下降”一事表示:“这不是很多人说的DDoS网络攻击。自12月9日以来,Solana网络并没有失去共识,也没有停止运行,只是四次放缓至1000 TPS。看起来,Raydium机器人试图将大型交易打包到区块中,这消耗了大量的计算能力,这是通过BPF(Berkley Packet Filter)计算单位来衡量的(Solana不将其计入打包区块逻辑),导致了节点上的缓慢重放,然后问题级联至网络中,导致slot确认时间过长和slot leaders丢失区块。从AcceleRaytor页面看,12月9日和10日进行IDO的是Realy。Raydium是否能够就此予以确认?”

Eminger还称:“此问题已在未发布的1.9软件版本中解决,Solana区块链联合创始人Anatoly Yakovenko和他的团队正在努力将其backport到1.8.9版本中,很快就会在主网上测试和批准。正如我之前提到的,Solana还处于Mainnet-beta阶段,所以软件并不是很完美,但是很高兴看到团队如何响应问题并努力工作来升级软件。”[2021/12/12 7:34:09]

事件

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

函数

合约中只有两个函数:

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

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

Remix演示

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

部署`ERC20`

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

部署水龙头合约

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

给水龙头转账

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

领取Token

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

领取成功

总结

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

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

原文作者:0xAA??

来源:区块律动

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

地球链

[0:15ms0-1:88ms