header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

Solidity極簡入門|第三十二講:Token水龍頭

閱讀本文需 8 分鐘
本文介紹了Token水龍頭的歷史和ERC20水龍頭合約。
原文標題:《Solidity 極簡入門: 32. Token水龍頭》
原文作者: 0xAA   


我最近在重新學 solidity,鞏固一下細節,也寫一個「Solidity 極簡入門」,供小白們使用(編程大佬可以另找教程),每週更新 1-3 講。


所有代碼和教程開源在 github: github.com/AmazingAng/WTFSolidity


我們在第 31 講學習了 ERC20 Token標準。這一講,我們將學習 ERC20 水龍頭的智能合約。在這個合約中,用戶可以領到免費的 ERC20 Token。


Token水龍頭


當人渴的時候,就要去水龍頭接水;當人想要免費Token的時候,就要去Token水龍頭領。 Token水龍頭就是讓用戶免費領Token的網站/應用。


最早的Token水龍頭是比特幣(BTC)水龍頭:現在 BTC 一枚要$30,000,但是在 2010 年,BTC 的價格只有不到$0.1,並且持有人很少。為了擴大影響力,比特幣社區的 Gavin Andresen 開發了 BTC 水龍頭,讓別人可以免費領 BTC。擼羊毛大家都喜歡,當時就有很多人去擼,一部分變為了 BTC 的信徒。 BTC 水龍頭一共送出了超過 19,700 枚 BTC,現在價值約 6 億美元!


ERC20 水龍頭合約


這裡,我們實現一個簡版的 ERC20 水龍頭,邏輯非常簡單:我們將一些 ERC20 Token轉到水龍頭合約裡,用戶可以通過合約的 requestToken() 函數來領取 100 單位的Token,每個地址只能領一次。


狀態變量


我們在水龍頭合約中定義 3 個狀態變量


amountAllowed 設定每次能領取Token數量(默認為 100。不是一百枚,因為Token有小數位數)。

tokenContract 記錄發放的 ERC20 Token合約地址。

requestedAddress 記錄領取過Token的地址。   



事件


水龍頭合約中定義了 1 個 SendToken 事件,記錄了每次領取Token的地址和數量,在 requestTokens() 函數被調用時釋放。



函數


合約中只有兩個函數:


構造函數:初始化 tokenContract 狀態變量,確定發放的 ERC20 Token地址。   


requestTokens() 函數,用戶調用它可以領取 ERC20 Token。


Remix 演示


1 首先,部署 ERC20 Token合約,並給自己 mint 10000 單位Token。


部署`ERC20`


2 部署 Faucet 水龍頭合約,初始化的參數填上面 ERC20 Token的合約地址。


部署水龍頭合約


3 利用 ERC20 Token合約的 trasnfer() 函數,將 10000 單位Token轉賬到 Faucet 合約地址。


給水龍頭轉賬


4 換一個新賬戶,調用 Faucet 合約 requestTokens() 函數,領取Token。可以在終端看到 SendToken 事件被釋放。


領取Token


5 在 ERC20 Token合約上利用 balanceOf 查詢賬戶餘額,可以看到餘額變為 100,領取成功!


領取成功


總結


這一講,我們介紹了Token水龍頭的歷史和 ERC20 水龍頭合約。大家覺得下一個 BTC 水龍頭會在哪裡?


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交