我最近在重新学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亿美元!
Beeple与Metaplex合作,拟进军Solana链上NFT市场:11月7日消息,在里斯本举行的Solana BreakPoint会议上,Solana的NFT托管和铸造平台 Metaplex 的开发公司Metaplex Studios 的首席执行官Stephen Hess宣布已与Beeple达成合作,拟推动后者进军Solana链上NFT市场。
Stephen Hess在会议上披露了一项受Beeple启发的新功能,该功能将邀请用户使用Beeple Everyday创建自己独特的 NFT。关于该功能的详细信息将于本周发布。[2022/11/7 12:29:17]
ERC20水龙头合约
这里,我们实现一个简版的ERC20水龙头,逻辑非常简单:我们将一些ERC20Token转到水龙头合约里,用户可以通过合约的requestToken()函数来领取100单位的Token,每个地址只能领一次。
索罗斯基金管理公司CEO:加密货币将继续存在:金色财经报道,索罗斯基金管理公司CEO Dawn Fitzpatrick 表示,加密货币将继续存在,目前发生的事情显然是一次挫折。但对于现有的传统金融公司来说,这是一个真正带头的巨大机会。[2023/6/8 21:22:46]
状态变量
我们在水龙头合约中定义3个状态变量
amountAllowed设定每次能领取Token数量。
tokenContract记录发放的ERC20Token合约地址。
requestedAddress记录领取过Token的地址。??
Celsius:今日起将对加入和解的托管帐户用户分配其余额的36.25%:5月10日消息,Celsius发推文称:“上个月,法院批准我们与无担保债权人委员会(UCC)和托管特别小组达成和解。今天,选择选择加入和解的人可以开始提款。提醒一下,符合条件的托管帐户用户可以选择加入托管和解,条件是选择不追究任何与托管相关的索赔或针对Celsius的诉讼理由,并在其托管索赔中投票支持本计划。合格资产的分配将分两个阶段进行。第一次分配为每个结算托管账户持有人托管账户余额的36.25%,从今天开始。在所有帐户信息均已更新并经过验证之前,用户将无法提取资产。”
此前5月5日消息,Celsius表示,符合资格的用户将能够提取100%的可分配托管资产。[2023/5/10 14:53:31]
事件
BitMEX Research:今日凌晨比特币曾出现长度为2的链分叉:5月8日消息,BitMEX Research在推特上表示,北京时间5月8日04:44(区块高度788686),比特币出现了长度为2的链分叉,Antpool和Foundry Pool USA之间出现了竞争,Antpool最终获胜。比特币上长度为2的链分叉非常罕见,最后一次可能是发生在2020年11月。但是,鉴于最近无效区块的大量增加,这也许并不意外。据BitMEX Research分享的Forkmonitor页面分析,如果交易发生在一个分支中,而冲突的交易发生在另一个分支中,那么它可能是RBF费用增加或尝试双花。在上述区块高度中,涉及9.85805149 BTC的13笔交易在最长的链上被双花。[2023/5/8 14:49:34]
水龙头合约中定义了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??
来源:区块律动
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。