Contract Source Code:
File 1 of 1 : GenesisWhitelist
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; interface IERC20 { function balanceOf(address user) external view returns (uint256); function transferFrom(address from, address to, uint256 amount) external; } contract GenesisWhitelist { address public immutable xHUBBLE; uint256 public totalSubmissions = 0; mapping (address => uint256) public submissionCountByUser; mapping (uint256 => address) public tokenByIndex; mapping (address => address) public submitterByToken; mapping (address => bool) public isSubmitted; constructor (address _xhubble) { xHUBBLE = _xhubble; } function _submit(address token, address submitter) internal { require(!isSubmitted[token], "token is already submitted"); require(IERC20(xHUBBLE).balanceOf(submitter) >= 42e18*(submissionCountByUser[submitter] + 1),"must have 42 xHUBBLE per submission"); IERC20(token).transferFrom(submitter,address(this),1); totalSubmissions++; submissionCountByUser[submitter]++; tokenByIndex[totalSubmissions] = token; submitterByToken[token] = submitter; isSubmitted[token] = true; } function fetchSubmissions() public view returns (address[] memory) { address[] memory submissions = new address[](totalSubmissions); for (uint256 index = 1; index <= totalSubmissions;index++) { submissions[index-1] = tokenByIndex[index]; } return submissions; } function fetchSubmitters() public view returns (address[] memory) { address[] memory submitters = new address[](totalSubmissions); for (uint256 index = 1; index <= totalSubmissions;index++) { submitters[index-1] = submitterByToken[tokenByIndex[index]]; } return submitters; } function submit(address token) external { _submit(token, msg.sender); } }
Please enter a contract address above to load the contract details and source code.
Please DO NOT store any passwords or private keys here. A private note (up to 100 characters) can be saved and is useful for transaction tracking.
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.