Polygon Sponsored slots available. Book your slot here!
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xbb2f86c1ad930456583f8dfa3b955d9f45033bab3c9748999c4453bc1553f669 | 25426868 | 390 days 22 hrs ago | Sphere Finance: Whitelist Launch | Contract Creation | 0 MATIC |
[ Download CSV Export ]
Contract Name:
FairLaunchPool
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.7.5; import "./NRT.sol"; import "./libraries/ERC20.sol"; import "./types/Ownable.sol"; // ********************************* // Fair Launch pool // ********************************* // cap increases gradually over time // this allows a maximum number of participants and still fill the round contract FairLaunchPool is Ownable { // the token address the cash is raised in // assume decimals is 18 address public investToken; // the token to be launched address public launchToken; // proceeds go to treasury address public treasury; // the certificate NRT public nrt; // fixed single price uint256 public price = 1; // ratio quote in 1000 uint256 public priceQuote = 1000; // the cap at the beginning uint256 public initialCap; // maximum cap uint256 public maxCap; // the total amount in stables to be raised uint256 public totalraiseCap; // how much was raised uint256 public totalraised; // how much was issued uint256 public totalissued; // how much was redeemed uint256 public totalredeem; // start of the sale uint256 public startTime; // total duration uint256 public duration; // length of each epoch uint256 public epochTime; // end of the sale uint256 public endTime; // sale has started bool public saleEnabled; // redeem is possible bool public redeemEnabled; // minimum amount uint256 public mininvest; uint256 public launchDecimals = 18; // uint256 public numWhitelisted = 0; // uint256 public numInvested = 0; event SaleEnabled(bool enabled, uint256 time); event RedeemEnabled(bool enabled, uint256 time); event Invest(address investor, uint256 amount); event Redeem(address investor, uint256 amount); struct InvestorInfo { uint256 amountInvested; // Amount deposited by user bool claimed; // has claimed MAG } // user is whitelisted mapping(address => bool) public whitelisted; mapping(address => InvestorInfo) public investorInfoMap; constructor( address _investToken, uint256 _startTime, uint256 _duration, uint256 _epochTime, uint256 _initialCap, uint256 _totalraiseCap, uint256 _minInvest, address _treasury ) { investToken = _investToken; startTime = _startTime; duration = _duration; epochTime = _epochTime; initialCap = _initialCap; totalraiseCap = _totalraiseCap; mininvest = _minInvest; treasury = _treasury; require(duration < 7 days, "duration too long"); endTime = startTime + duration; nrt = new NRT("aSPHERE", 18); redeemEnabled = false; saleEnabled = false; maxCap = 4000 * 10 ** 18; } // adds an address to the whitelist function addWhitelist(address _address) external onlyOwner { require(!saleEnabled, "sale has already started"); //require(!whitelisted[_address], "already whitelisted"); if(!whitelisted[_address]) numWhitelisted+=1; whitelisted[_address] = true; } // adds multiple addresses function addMultipleWhitelist(address[] calldata _addresses) external onlyOwner { require(!saleEnabled, "sale has already started"); require(_addresses.length <= 1000, "too many addresses"); for (uint256 i = 0; i < _addresses.length; i++) { if(!whitelisted[_addresses[i]]) numWhitelisted+=1; whitelisted[_addresses[i]] = true; } } // removes a single address from the sale function removeWhitelist(address _address) external onlyOwner { require(!saleEnabled, "sale has already started"); whitelisted[_address] = false; } function currentEpoch() public view returns (uint256){ return (block.timestamp - startTime)/epochTime; } // the current cap. increases exponentially function currentCap() public view returns (uint256){ uint256 epochs = currentEpoch(); uint256 cap = initialCap * (2 ** epochs); if (cap > maxCap){ return maxCap; } else { return cap; } } // invest up to current cap function invest(uint256 investAmount) public { require(block.timestamp >= startTime, "not started yet"); require(endTime >= block.timestamp, "sale has ended"); require(saleEnabled, "not enabled yet"); require(whitelisted[msg.sender] == true, 'msg.sender is not whitelisted'); require(totalraised + investAmount <= totalraiseCap, "over total raise"); require(investAmount >= mininvest, "below minimum invest"); uint256 xcap = currentCap(); InvestorInfo storage investor = investorInfoMap[msg.sender]; require(investor.amountInvested + investAmount <= xcap, "above cap"); require( ERC20(investToken).transferFrom( msg.sender, address(this), investAmount ), "transfer failed" ); uint256 issueAmount = investAmount * priceQuote; nrt.issue(msg.sender, issueAmount); totalraised += investAmount; totalissued += issueAmount; if (investor.amountInvested == 0){ numInvested += 1; } investor.amountInvested += investAmount; emit Invest(msg.sender, investAmount); } // redeem all tokens function redeem() public { require(redeemEnabled, "redeem not enabled"); //require(block.timestamp > endTime, "not redeemable yet"); uint256 redeemAmount = nrt.balanceOf(msg.sender); require(redeemAmount > 0, "no amount issued"); InvestorInfo storage investor = investorInfoMap[msg.sender]; require(!investor.claimed, "already claimed"); require( ERC20(launchToken).transfer( msg.sender, redeemAmount ), "transfer failed" ); nrt.redeem(msg.sender, redeemAmount); totalredeem += redeemAmount; emit Redeem(msg.sender, redeemAmount); investor.claimed = true; } // -- admin functions -- // define the launch token to be redeemed function setLaunchToken(address _launchToken) public onlyOwner { launchToken = _launchToken; } //change the datetime for when the launch happens function setstartTime(uint256 _startTime) public onlyOwner { require(block.timestamp <= startTime, "too late, sale has started"); require(!saleEnabled, "sale has already started"); startTime = _startTime; endTime = _startTime + duration; } function depositLaunchtoken(uint256 amount) public onlyOwner { require( ERC20(launchToken).transferFrom(msg.sender, address(this), amount), "transfer failed" ); } // withdraw in case some tokens were not redeemed function withdrawLaunchtoken(uint256 amount) public onlyOwner { require( ERC20(launchToken).transfer(msg.sender, amount), "transfer failed" ); } // withdraw funds to treasury function withdrawTreasury(uint256 amount) public onlyOwner { require( ERC20(investToken).transfer(treasury, amount), "transfer failed" ); } function toggleSale() public onlyOwner { if(block.timestamp > endTime ) { saleEnabled = false; emit SaleEnabled(false, block.timestamp); } else { saleEnabled = true; emit SaleEnabled(true, block.timestamp); } } function enableRedeem() public onlyOwner { require(launchToken != address(0), "launch token not set"); redeemEnabled = true; emit RedeemEnabled(true, block.timestamp); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./libraries/OwnableMulti.sol"; import "./libraries/SafeMath.sol"; //NRT is like a private stock //can only be traded with the issuer who remains in control of the market //until he opens the redemption window contract NRT is OwnableMulti { uint256 private _issuedSupply; uint256 private _outstandingSupply; uint256 private _decimals; string private _symbol; using SafeMath for uint256; mapping(address => uint256) private _balances; event Issued(address account, uint256 amount); event Redeemed(address account, uint256 amount); constructor(string memory __symbol, uint256 __decimals) { _symbol = __symbol; _decimals = __decimals; _issuedSupply = 0; _outstandingSupply = 0; } // Creates amount NRT and assigns them to account function issue(address account, uint256 amount) public onlyOwner { require(account != address(0), "zero address"); _issuedSupply = _issuedSupply.add(amount); _outstandingSupply = _outstandingSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Issued(account, amount); } //redeem, caller handles transfer of created value function redeem(address account, uint256 amount) public onlyOwner { require(account != address(0), "zero address"); require(_balances[account] >= amount, "Insufficent balance"); _balances[account] = _balances[account].sub(amount); _outstandingSupply = _outstandingSupply.sub(amount); emit Redeemed(account, amount); } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint256) { return _decimals; } function issuedSupply() public view returns (uint256) { return _issuedSupply; } function outstandingSupply() public view returns (uint256) { return _outstandingSupply; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./SafeMath.sol"; interface IERC20 { function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract ERC20 is IERC20 { using SafeMath for uint256; // TODO comment actual hash value. bytes32 private constant ERC20TOKEN_ERC1820_INTERFACE_ID = keccak256("ERC20Token"); mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 internal _totalSupply; string internal _name; string internal _symbol; uint8 internal _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view override returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account_, uint256 ammount_) internal virtual { require(account_ != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(this), account_, ammount_); _totalSupply = _totalSupply.add(ammount_); _balances[account_] = _balances[account_].add(ammount_); emit Transfer(address(this), account_, ammount_); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from_, address to_, uint256 amount_ ) internal virtual {} }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IOwnable { function owner() external view returns (address); function renounceManagement() external; function pushManagement(address newOwner_) external; function pullManagement() external; } contract Ownable is IOwnable { address internal _owner; address internal _newOwner; event OwnershipPushed( address indexed previousOwner, address indexed newOwner ); event OwnershipPulled( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; emit OwnershipPushed(address(0), _owner); } function owner() public view override returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, 'Ownable: caller is not the owner'); _; } function renounceManagement() public virtual override onlyOwner { emit OwnershipPushed(_owner, address(0)); _owner = address(0); } function pushManagement(address newOwner_) public virtual override onlyOwner { require( newOwner_ != address(0), 'Ownable: new owner is the zero address' ); emit OwnershipPushed(_owner, newOwner_); _newOwner = newOwner_; } function pullManagement() public virtual override { require(msg.sender == _newOwner, 'Ownable: must be new owner to pull'); emit OwnershipPulled(_owner, _newOwner); _owner = _newOwner; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.7.5; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract OwnableMulti { mapping(address => bool) private _owners; /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _owners[msg.sender] = true; } /** * @dev Returns the address of the current owner. */ function isOwner(address _address) public view virtual returns (bool) { return _owners[_address]; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owners[msg.sender], "Ownable: caller is not an owner"); _; } function addOwner(address _newOwner) public onlyOwner { require(_newOwner != address(0)); _owners[_newOwner] = true; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, 'SafeMath: subtraction overflow'); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, 'SafeMath: division by zero'); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sqrrt(uint256 a) internal pure returns (uint256 c) { if (a > 3) { c = a; uint256 b = add(div(a, 2), 1); while (b < c) { c = b; b = div(add(div(a, b), b), 2); } } else if (a != 0) { c = 1; } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_investToken","type":"address"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_epochTime","type":"uint256"},{"internalType":"uint256","name":"_initialCap","type":"uint256"},{"internalType":"uint256","name":"_totalraiseCap","type":"uint256"},{"internalType":"uint256","name":"_minInvest","type":"uint256"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Invest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"RedeemEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"SaleEnabled","type":"event"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addMultipleWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositLaunchtoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"investAmount","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investorInfoMap","outputs":[{"internalType":"uint256","name":"amountInvested","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mininvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nrt","outputs":[{"internalType":"contract NRT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numInvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numWhitelisted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceQuote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeemEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_launchToken","type":"address"}],"name":"setLaunchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"setstartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalissued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalraiseCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalraised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalredeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawLaunchtoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260016006556103e860075560126014556000601555600060165534801561002a57600080fd5b506040516200255938038062002559833981810160405261010081101561005057600080fd5b50805160208201516040808401516060850151608086015160a087015160c088015160e090980151600080546001600160a01b031916331780825596519899979895979496939592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a3600280546001600160a01b03808b166001600160a01b031992831617909255600e899055600f88905560108790556008869055600a8590556013849055600480549284169290911691909117905562093a808610610167576040805162461bcd60e51b81526020600482015260116024820152706475726174696f6e20746f6f206c6f6e6760781b604482015290519081900360640190fd5b600f54600e540160115560405160129061018090610208565b60208101919091526040808252600781830152666153504845524560c81b60608301525190819003608001906000f0801580156101c1573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039290921691909117905550506012805461ffff19169055505068d8d726b7177a8000006009555061021692505050565b6109d68062001b8383390190565b61195d80620002266000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063856ed70311610146578063badf822b116100c3578063d936547e11610087578063d936547e146104c8578063e545338c146104ee578063f703f36f146104f6578063f80f5dd514610535578063f9fd3ba21461055b578063ff16e750146105785761025e565b8063badf822b146104a0578063bc284c5c146104a8578063bc5c619a146104b0578063be040fb0146104b8578063d2f82536146104c05761025e565b8063a035b1fe1161010a578063a035b1fe14610478578063a28a4d8614610480578063a4197afc14610488578063b5224c4414610490578063b811215e146104985761025e565b8063856ed7031461043b578063861d8e13146104435780638a5396a31461044b5780638da5cb5b14610453578063944044a11461045b5761025e565b80635053e461116101df57806371b9b646116101a357806371b9b64614610371578063729413161461038d57806376671808146103fd57806378c8cda71461040557806378e979251461042b5780637d8966e4146104335761025e565b80635053e4611461030f57806354dacb96146103175780635a96ac0a1461031f578063604a85da1461032757806361d027b31461034d5761025e565b806322e274031161022657806322e27403146102b457806323548b8b146102bc5780632afcf480146102c45780633197cbb6146102e157806346f68ee9146102e95761025e565b8063061873e814610263578063089208d81461026d5780630b1258a0146102755780630fb5a6b41461028f57806311f1fc9914610297575b600080fd5b61026b610595565b005b61026b610682565b61027d610719565b60408051918252519081900360200190f35b61027d61071f565b61026b600480360360208110156102ad57600080fd5b5035610725565b61027d61083e565b61027d610844565b61026b600480360360208110156102da57600080fd5b503561084a565b61027d610c2c565b61026b600480360360208110156102ff57600080fd5b50356001600160a01b0316610c32565b61027d610d1f565b61027d610d25565b61026b610d2b565b61026b6004803603602081101561033d57600080fd5b50356001600160a01b0316610dd5565b610355610e44565b604080516001600160a01b039092168252519081900360200190f35b610379610e53565b604080519115158252519081900360200190f35b61026b600480360360208110156103a357600080fd5b8101906020810181356401000000008111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460208302840111640100000000831117156103f257600080fd5b509092509050610e5c565b61027d610fe7565b61026b6004803603602081101561041b57600080fd5b50356001600160a01b0316610fff565b61027d6110c0565b61026b6110c6565b61027d6111b3565b61027d6111eb565b61027d6111f1565b6103556111f7565b61026b6004803603602081101561047157600080fd5b5035611206565b61027d61130b565b610355611311565b61027d611320565b61027d611326565b61027d61132c565b610355611332565b61027d611341565b61027d611347565b61026b61134d565b61037961163b565b610379600480360360208110156104de57600080fd5b50356001600160a01b0316611649565b61035561165e565b61051c6004803603602081101561050c57600080fd5b50356001600160a01b031661166d565b6040805192835290151560208301528051918290030190f35b61026b6004803603602081101561054b57600080fd5b50356001600160a01b0316611689565b61026b6004803603602081101561057157600080fd5b5035611777565b61026b6004803603602081101561058e57600080fd5b503561181e565b6000546001600160a01b031633146105e2576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b6003546001600160a01b0316610636576040805162461bcd60e51b81526020600482015260146024820152731b185d5b98da081d1bdad95b881b9bdd081cd95d60621b604482015290519081900360640190fd5b6012805461ff001916610100179055604080516001815242602082015281517fef5fd91dc9b012f3e4b41e00dc71466a39c83d97c3cc3879de5b9193f456c630929181900390910190a1565b6000546001600160a01b031633146106cf576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b60145481565b600f5481565b6000546001600160a01b03163314610772576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b600254600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018590525192169163a9059cbb916044808201926020929091908290030181600087803b1580156107cc57600080fd5b505af11580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b505161083b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b50565b600d5481565b60095481565b600e54421015610893576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd185c9d1959081e595d608a1b604482015290519081900360640190fd5b4260115410156108db576040805162461bcd60e51b815260206004820152600e60248201526d1cd85b19481a185cc8195b99195960921b604482015290519081900360640190fd5b60125460ff16610924576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd08195b98589b1959081e595d608a1b604482015290519081900360640190fd5b3360009081526017602052604090205460ff16151560011461098d576040805162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572206973206e6f742077686974656c6973746564000000604482015290519081900360640190fd5b600a5481600b540111156109db576040805162461bcd60e51b815260206004820152601060248201526f6f76657220746f74616c20726169736560801b604482015290519081900360640190fd5b601354811015610a29576040805162461bcd60e51b815260206004820152601460248201527318995b1bddc81b5a5b9a5b5d5b481a5b9d995cdd60621b604482015290519081900360640190fd5b6000610a336111b3565b3360009081526018602052604090208054919250908301821015610a8a576040805162461bcd60e51b8152602060048201526009602482015268061626f7665206361760bc1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610ae457600080fd5b505af1158015610af8573d6000803e3d6000fd5b505050506040513d6020811015610b0e57600080fd5b5051610b53576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6007546005546040805163219e412d60e21b815233600482015292860260248401819052905190926001600160a01b039092169163867904b491604480830192600092919082900301818387803b158015610bad57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b5050600b8054870190555050600c8054820190558154610be5576016805460010190555b815484018255604080513381526020810186905281517fd90d253a9de34d2fdd5a75ae49ea17fcb43af32fc8ea08cc6d2341991dd3872e929181900390910190a150505050565b60115481565b6000546001600160a01b03163314610c7f576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b6001600160a01b038116610cc45760405162461bcd60e51b81526004018080602001828103825260268152602001806118c06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b60155481565b6001546001600160a01b03163314610d745760405162461bcd60e51b81526004018080602001828103825260228152602001806118e66022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b03163314610e22576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b60125460ff1681565b6000546001600160a01b03163314610ea9576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b60125460ff1615610efc576040805162461bcd60e51b81526020600482015260186024820152771cd85b19481a185cc8185b1c9958591e481cdd185c9d195960421b604482015290519081900360640190fd5b6103e8811115610f48576040805162461bcd60e51b8152602060048201526012602482015271746f6f206d616e792061646472657373657360701b604482015290519081900360640190fd5b60005b81811015610fe25760176000848484818110610f6357fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610f97576015805460010190555b600160176000858585818110610fa957fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101610f4b565b505050565b6000601054600e54420381610ff857fe5b0490505b90565b6000546001600160a01b0316331461104c576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b60125460ff161561109f576040805162461bcd60e51b81526020600482015260186024820152771cd85b19481a185cc8185b1c9958591e481cdd185c9d195960421b604482015290519081900360640190fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b600e5481565b6000546001600160a01b03163314611113576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b601154421115611167576012805460ff19169055604080516000815242602082015281517f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb868929181900390910190a16111b1565b6012805460ff191660019081179091556040805191825242602083015280517f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb8689281900390910190a15b565b6000806111be610fe7565b905060008160020a6008540290506009548111156111e25760095492505050610ffc565b9150610ffc9050565b60165481565b600b5481565b6000546001600160a01b031690565b6000546001600160a01b03163314611253576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b600e544211156112aa576040805162461bcd60e51b815260206004820152601a60248201527f746f6f206c6174652c2073616c65206861732073746172746564000000000000604482015290519081900360640190fd5b60125460ff16156112fd576040805162461bcd60e51b81526020600482015260186024820152771cd85b19481a185cc8185b1c9958591e481cdd185c9d195960421b604482015290519081900360640190fd5b600e819055600f5401601155565b60065481565b6003546001600160a01b031681565b600c5481565b600a5481565b60085481565b6002546001600160a01b031681565b60135481565b60075481565b601254610100900460ff1661139e576040805162461bcd60e51b81526020600482015260126024820152711c995919595b481b9bdd08195b98589b195960721b604482015290519081900360640190fd5b600554604080516370a0823160e01b815233600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156113e957600080fd5b505afa1580156113fd573d6000803e3d6000fd5b505050506040513d602081101561141357600080fd5b505190508061145c576040805162461bcd60e51b815260206004820152601060248201526f1b9bc8185b5bdd5b9d081a5cdcdd595960821b604482015290519081900360640190fd5b336000908152601860205260409020600181015460ff16156114b7576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b6003546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050506040513d602081101561153557600080fd5b505161157a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b600554604080516301e9a69560e41b81523360048201526024810185905290516001600160a01b0390921691631e9a69509160448082019260009290919082900301818387803b1580156115cd57600080fd5b505af11580156115e1573d6000803e3d6000fd5b5050600d8054850190555050604080513381526020810184905281517f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6929181900390910190a16001908101805460ff1916909117905550565b601254610100900460ff1681565b60176020526000908152604090205460ff1681565b6005546001600160a01b031681565b6018602052600090815260409020805460019091015460ff1682565b6000546001600160a01b031633146116d6576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b60125460ff1615611729576040805162461bcd60e51b81526020600482015260186024820152771cd85b19481a185cc8185b1c9958591e481cdd185c9d195960421b604482015290519081900360640190fd5b6001600160a01b03811660009081526017602052604090205460ff16611753576015805460010190555b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6000546001600160a01b031633146117c4576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156107cc57600080fd5b6000546001600160a01b0316331461186b576040805162461bcd60e51b81526020600482018190526024820152600080516020611908833981519152604482015290519081900360640190fd5b6003546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107cc57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220503f8f26afadfb5c95e93f3db4404a0a68ea51f3d2065943ef6829756d3f63db64736f6c63430007050033608060405234801561001057600080fd5b506040516109d63803806109d68339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604090815260209182015133600090815280845291909120805460ff1916600117905584519093506101159250600491850190610129565b5060035550600060018190556002556101ca565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261015f57600085556101a5565b82601f1061017857805160ff19168380011785556101a5565b828001600101855582156101a5579182015b828111156101a557825182559160200191906001019061018a565b506101b19291506101b5565b5090565b5b808211156101b157600081556001016101b6565b6107fd806101d96000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637065cb48116100665780637065cb481461012257806370a0823114610148578063867904b41461016e57806395d89b411461019a578063caacafe21461021757610093565b80631e9a6950146100985780632f54bf6e146100c6578063313ce567146101005780636291f5721461011a575b600080fd5b6100c4600480360360408110156100ae57600080fd5b506001600160a01b03813516906020013561021f565b005b6100ec600480360360208110156100dc57600080fd5b50356001600160a01b03166103c4565b604080519115158252519081900360200190f35b6101086103e2565b60408051918252519081900360200190f35b6101086103e8565b6100c46004803603602081101561013857600080fd5b50356001600160a01b03166103ee565b6101086004803603602081101561015e57600080fd5b50356001600160a01b0316610489565b6100c46004803603604081101561018457600080fd5b506001600160a01b0381351690602001356104a4565b6101a26105f1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101dc5781810151838201526020016101c4565b50505050905090810190601f1680156102095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610108610687565b3360009081526020819052604090205460ff16610283576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b0382166102cd576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b6001600160a01b038216600090815260056020526040902054811115610330576040805162461bcd60e51b8152602060048201526013602482015272496e737566666963656e742062616c616e636560681b604482015290519081900360640190fd5b6001600160a01b038216600090815260056020526040902054610353908261068d565b6001600160a01b038316600090815260056020526040902055600254610379908261068d565b600255604080516001600160a01b03841681526020810183905281517f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369929181900390910190a15050565b6001600160a01b031660009081526020819052604090205460ff1690565b60035490565b60015490565b3360009081526020819052604090205460ff16610452576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b03811661046557600080fd5b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b6001600160a01b031660009081526005602052604090205490565b3360009081526020819052604090205460ff16610508576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b038216610552576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b60015461055f90826106d6565b60015560025461056f90826106d6565b6002556001600160a01b03821660009081526005602052604090205461059590826106d6565b6001600160a01b03831660008181526005602090815260409182902093909355805191825291810183905281517fa59f12e354e8cd10bb74c559844c2dd69a5458e31fe56c7594c62ca57480509a929181900390910190a15050565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561067d5780601f106106525761010080835404028352916020019161067d565b820191906000526020600020905b81548152906001019060200180831161066057829003601f168201915b5050505050905090565b60025490565b60006106cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610730565b9392505050565b6000828201838110156106cf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156107bf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561078457818101518382015260200161076c565b50505050905090810190601f1680156107b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fea2646970667358221220c3f099a03f10e048214a6acbbe048bb04c5a1987121c9db67f16d1134954b0af64736f6c63430007050033000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f100000000000000000000000000000000000000000000000000000000621cff900000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000001b1ae4d6e2ef50000000000000000000000000000000000000000000000000a0efaebbe36ceb000000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000020d61737f972eecb0af5f0a85ab358cd083dd56a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f100000000000000000000000000000000000000000000000000000000621cff900000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000001b1ae4d6e2ef50000000000000000000000000000000000000000000000000a0efaebbe36ceb000000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000020d61737f972eecb0af5f0a85ab358cd083dd56a
-----Decoded View---------------
Arg [0] : _investToken (address): 0xa3fa99a148fa48d14ed51d610c367c61876997f1
Arg [1] : _startTime (uint256): 1646067600
Arg [2] : _duration (uint256): 86400
Arg [3] : _epochTime (uint256): 900
Arg [4] : _initialCap (uint256): 500000000000000000000
Arg [5] : _totalraiseCap (uint256): 760000000000000000000000
Arg [6] : _minInvest (uint256): 50000000000000000000
Arg [7] : _treasury (address): 0x20d61737f972eecb0af5f0a85ab358cd083dd56a
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f1
Arg [1] : 00000000000000000000000000000000000000000000000000000000621cff90
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000384
Arg [4] : 00000000000000000000000000000000000000000000001b1ae4d6e2ef500000
Arg [5] : 00000000000000000000000000000000000000000000a0efaebbe36ceb000000
Arg [6] : 000000000000000000000000000000000000000000000002b5e3af16b1880000
Arg [7] : 00000000000000000000000020d61737f972eecb0af5f0a85ab358cd083dd56a
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.