Created
September 17, 2020 14:32
-
-
Save petejkim/31085e6df58d304b459d4e81a5178417 to your computer and use it in GitHub Desktop.
USDC Faucet in Goerli
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
// Copyright (c) 2020 petejkim | |
pragma solidity 0.6.12; | |
import { Ownable } from "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol"; | |
import { IERC20 } from "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/token/ERC20/IERC20.sol"; | |
import { SafeERC20 } from "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/token/ERC20/SafeERC20.sol"; | |
contract USDCFaucet is Ownable { | |
using SafeERC20 for IERC20; | |
mapping (address => uint256) public lastClaimedAt; | |
uint256 public amount = 100000000; | |
uint256 public waitPeriod = 3600; | |
address public tokenAddress = 0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557; | |
function configure(uint256 newAmount, uint256 newWaitPeriod, address newTokenAddress) external onlyOwner { | |
amount = newAmount; | |
waitPeriod = newWaitPeriod; | |
tokenAddress = newTokenAddress; | |
} | |
function canClaim(address account) external view returns (bool) { | |
return lastClaimedAt[account] + waitPeriod < now; | |
} | |
function claim() external { | |
require(lastClaimedAt[msg.sender] + waitPeriod < now, "You cannot claim again so soon!"); | |
lastClaimedAt[msg.sender] = now; | |
IERC20(tokenAddress).safeTransfer(msg.sender, amount); | |
} | |
function drain() external onlyOwner { | |
IERC20 token = IERC20(tokenAddress); | |
token.safeTransfer(msg.sender, token.balanceOf(address(this))); | |
} | |
function destroy() external onlyOwner { | |
selfdestruct(msg.sender); | |
} | |
} |
0x55b33c314560016688D4764f1eAE288aD49576aC
0xCDe1F7338B80B0894544278e4aCF5Ae590251027
0xc4c8ac5FB438f592740c94E2Bd663B25e32cC45f
0xFEF924C379472B1AE4d5C4485a277E2123Faa780
0xdbafafc363578276c89b02d0d5334ac47e06a3ee
0x4fa3329d76608F53f151e77442373DF544952D56
0x2D46ee82527205eA59B1d7940987CC6879800D86
0xe8c512a0D0DB43081b372A9436D7b16A01265F6c
0x7D9063f8EC74588cea572F5E6298E2b2645Ca887
0x4d74D2c2a4a7a0135877eB9AEbB71855ffeaEB91
0xd570059e4C63AFb0ddb9Ffa2a9EAb27780BA4614
0x43769c085C82A61c7c961Ed5741De278b4A56b24
0xF250b1d39600B00994F55d48bD7b6a94CA60965e
0x51AC19579aB065b2E0228d3EbcA99fd99015ee11
0x28c0b3642930c1448594d4b97056efb78ab15643
EAmFfKHiYsHhavN9yQDtoGBs7YgXfi4sYwHYMuEgav6E
0x7b63b475f60e848E2b2010a62c9c0cF5D6396Fcd
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
0xd96e2250a15Aab7c43dC2dAd7d53904Ec4B41b30