-
-
Save petejkim/31085e6df58d304b459d4e81a5178417 to your computer and use it in GitHub Desktop.
// 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); | |
} | |
} |
0x819594F2Fbb656c71B6Dd6CdD315d96043d93047
0x6BC099C01467aF656183ab55492801ae073cbDC6
0x891d198698Af8A928b1da9319aa4E32062c85845
0xD59606fc9403Cf80FED00FE6a74C5F9901820c75
0xA9dcb671cD48C94acD46b091Ea38C49694Fbc12c
0x680578Bd8a1a59dc83EE67b10f02ac4F61391417
0x31148e9423E6Abdcdcf4Cd6B13CBEBdECA29a9fE
0xd96e2250a15Aab7c43dC2dAd7d53904Ec4B41b30
0x55b33c314560016688D4764f1eAE288aD49576aC
0xCDe1F7338B80B0894544278e4aCF5Ae590251027
0xc4c8ac5FB438f592740c94E2Bd663B25e32cC45f
0xFEF924C379472B1AE4d5C4485a277E2123Faa780
0xdbafafc363578276c89b02d0d5334ac47e06a3ee
0x4fa3329d76608F53f151e77442373DF544952D56
0x2D46ee82527205eA59B1d7940987CC6879800D86
0xe8c512a0D0DB43081b372A9436D7b16A01265F6c
0x7D9063f8EC74588cea572F5E6298E2b2645Ca887
0x4d74D2c2a4a7a0135877eB9AEbB71855ffeaEB91
0xd570059e4C63AFb0ddb9Ffa2a9EAb27780BA4614
0x43769c085C82A61c7c961Ed5741De278b4A56b24
0xF250b1d39600B00994F55d48bD7b6a94CA60965e
0x51AC19579aB065b2E0228d3EbcA99fd99015ee11
0x28c0b3642930c1448594d4b97056efb78ab15643
EAmFfKHiYsHhavN9yQDtoGBs7YgXfi4sYwHYMuEgav6E
0x7b63b475f60e848E2b2010a62c9c0cF5D6396Fcd
0x67fA94b65fb7e850240E4687928E423eDCB25235