以太坊:Solidity极简入门|第三十二讲:Token水龙头_KEN

我最近在重新学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亿美元!

Solert Games将推出Avalanche子网并上线游戏Legends at War:7月26日消息,据VentureBeat报道,Solert Games将推出 Avalanche子网并上线中世纪主题手游Legends at War。Solert 子网将由其自身的Gas代币 LAW 提供支持,并将开发一套工具来帮助游戏工作室基于该子网开发游戏。[2023/7/26 16:00:33]

ERC20水龙头合约

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

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]

状态变量

Sologenic计划将向XRP持有者奖励1亿枚SOLO:12月19日消息,基于XRP Ledger创建的Sologenic公司宣布,即将面向XRP持有者空投奖励1亿枚SOLO代币,预估价值超过5亿美元。

SOLO空投将于2022年1月20日UTC时间20:00进行。空投的规模为2亿枚SOLO代币(1亿面向SOLO持有者,1亿面向XRP持有者)。快照“计划于2021年12月24日UTC时间20:00从所有使用Sologenic oracle创建Trustline的XRP或SOLO钱包中进行”。

据介绍,Sologenic部署SOLO用于做市和提供流动性。SOLO在XRP Ledger上发行,允许流动性即时移动。(Crypto Globe)[2021/12/19 7:49:29]

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

跨链流动性解决方案RAMP DEFI集成Solana:跨链流动性解决方案RAMP DEFI宣布集成公链项目Solana,允许Solana用户使用跨链DeFi挖矿获得收益并抵押流动资金。具体来说,用户可抵押SOL代币铸造稳定币,可用于交易/借入USDT或USDC。这意味着用户可将SOL作为自己投资组合的同时,通过SOL质押奖励并获得额外的资本参与DeFi活动。此外,质押SOL代币还可获得RAMP代币奖励,RAMP DEFI已将45%的RAMP代币留作挖矿。[2020/9/11]

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

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

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

事件

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