我最近在重新学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亿美元!
加密采矿数据中心开发商Soluna计划通过股票发行筹集200万美元:10月25日消息,据外媒报道,加密采矿数据中心开发商Soluna Holdings宣布计划通过股票发行筹集200万美元,新资金将用于数据中心的收购、开发和增长,包括加密挖矿处理器,以及其在德克萨斯州的站点。
该公司网站显示,其正在开发一个连接到德州风电场的50兆瓦数据中心,预计将于2022年最后一个季度上线。除此之外,Soluna还向Spring Lane发行了593,065股股票,以至少额外筹集85万美元。(TheBlock)[2022/10/25 16:37:52]
ERC20水龙头合约
这里,我们实现一个简版的ERC20水龙头,逻辑非常简单:我们将一些ERC20Token转到水龙头合约里,用户可以通过合约的requestToken()函数来领取100单位的Token,每个地址只能领一次。
Oasis Pro Markets与Solidus Labs合作,提供机构级的加密货币风险监测和合规服务:金色财经报道,交易系统Oasis Pro Markets宣布选择Solidus Labs作为战略合规合作伙伴。Solidus的加密原生、自动化和全面的统一市场完整性软件套件HALO,将使Oasis Pro Markets能够在一个平台上访问多个风险和合规项目,利用由机器学习支持的基于行为的检测模型来处理一系列特定于加密货币的威胁和警报。
Oasis Pro Market在5月份宣布获得了2700万美元的A轮超额认购。投资者包括Avalanche Fund、Inveniam、Redwood Trust、TrustLabs、Mirae Asset Venture Investment、Gate Ventures、LedgerPrime。(businesswire)[2022/9/16 7:01:03]
状态变量
基于Solana的NFT市场Formfunction正式上线Solana主网:1月12日,Formfunction发推称,基于Solana的创作者友好型NFT市场Formfunction宣布正式上线主网。[2022/1/12 8:43:38]
我们在水龙头合约中定义3个状态变量
amountAllowed设定每次能领取Token数量。
tokenContract记录发放的ERC20Token合约地址。
requestedAddress记录领取过Token的地址。??
动态 | 截至9月9日 VanEck-SolidX比特币信托的净资产总额仅为4.14万美元:此前消息,VanEck-SolidX比特币信托基金于上周四开始发行。但据官方资料显示,截至9月9日,该基金的净资产总额为4.14万美元。由于VanEck-SolidX比特币信托基金根据144A规则发行,只向对冲基金、经纪商和银行等机构开放,因此从这个角度来说,机构投资者的投资额极低。(coinpost.jp)[2019/9/10]
事件
水龙头合约中定义了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??
来源:区块律动
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。