我最近在重新学 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 亿美元!
亿万富翁马克库班取消对MetaMask、TheBlock、Solana等加密项目的推特关注:11月21日消息,BigTechAlert监测显示,达拉斯小牛队老板、亿万富翁MarkCuban今日陆续取消对MetaMask、TheBlock、Solana、Treum、MirrorProtocol、Polkadot、DeFiPulse、Flow、DapperLabs等加密项目的推特关注。[2022/11/21 22:12:41]
这里,我们实现一个简版的 ERC20 水龙头,逻辑非常简单:我们将一些 ERC20 Token转到水龙头合约里,用户可以通过合约的 requestToken() 函数来领取 100 单位的Token,每个地址只能领一次。
我们在水龙头合约中定义 3 个状态变量
Nansen CEO:Solana和Magic Eden的NFT市场一直在快速增长:金色财经联合Coinlive现场报道,“Token 2049”峰会活动今日在新加坡举办,在题为\"On-Chain: 区块链上到底发生了什么?\"的讨论中,Nansen的首席执行官Alex Svanevik指出,重要的是要考虑到道德问题,这是一个主观的说法。现在Tornado Cash的使用量减少了,然而在这之前,它的使用量比人们意识到的还要少,比如总共不到25000个地址。伦理判断是关于人们如何重视隐私的一个重要观点,因为人们有不同的意见。另外,他想强调的一个问题是NFT市场。他指出Solana和Magic Eden一直在大量增长,相比之下,其他NFT链正在大量下降。如果你只局限于关注一个生态系统,你可能会错过更大的市场。[2022/9/29 22:40:05]
amountAllowed 设定每次能领取Token数量(默认为 100。不是一百枚,因为Token有小数位数)。
Solana链上合成资产协议Parcl完成750万美元战略融资,Solana Ventures和Dragonfly等参投:5月20日消息,Solana链上合成资产协议Parcl宣布完成750万美元战略融资,Archetype、Dragonfly、NotBoring、Solana Ventures、FJLABS、Fifth Wall、JAWS(Barry Sternlicht)、Hack VC、IA Capital&Eberg Capital、BigBrainHoldings、以及天使投资人Santiago Santos参投。
Parcl是一家通过Solana区块链将房地产投资数字化的初创公司,通过合成资产“Parcls”提供投资敞口,使每个人都有机会参与房地产市场,而无需承担与拥有或交易硬资产相关的负担。此前报道,3月2日,Parcl完成410万美元的种子轮融资,Archetype领投。[2022/5/20 3:31:19]
tokenContract 记录发放的 ERC20 Token合约地址。
以太坊Solidity发布0.8.4版本,添加自定义错误功能:官方消息,以太坊编程语言Solidity团队发布0.8.4版本,添加自定义错误功能,激活SMTChecker,并修复了SolidityABI解码器V2中存在的错误。[2021/4/22 20:46:55]
requestedAddress 记录领取过Token的地址。
水龙头合约中定义了 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星球日报
腾讯研究院
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。