My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x5ef8334877eb6a161b8a08c38e6c20ddbcf270f586b96e0edfcd0bf8110e019b | 25483444 | 389 days 10 hrs ago | Sphere Finance: aSPHERE | Contract Creation | 0 MATIC |
[ Download CSV Export ]
Contract Name:
CompensationLaunchPool
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 CompensationLaunchPool 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; uint256 prePaid; // Amount deposited by user in 1.0 vault (first WL) } // 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("bSPHERE", 18); redeemEnabled = false; saleEnabled = false; maxCap = 1000 * 10 ** 18; } // adds an address to the whitelist function addWhitelist(address _address) internal 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) internal 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; } } // update the Investor's prepaid function updateInvestorMapPrePaid(address _address, uint256 _value) external onlyOwner { require(!saleEnabled, "sale has already started"); InvestorInfo storage investor = investorInfoMap[_address]; investor.prePaid = _value; addWhitelist(_address); } // adds multiple addresses function updateMultipleInvestorMapPrePaid(address[] calldata _addresses, uint256[] calldata _value) external onlyOwner { require(!saleEnabled, "sale has already started"); require(_addresses.length <= 1000, "too many addresses"); for (uint256 i = 0; i < _addresses.length; i++) { InvestorInfo storage investor = investorInfoMap[_addresses[i]]; investor.prePaid = _value[i]; addWhitelist(_addresses[i]); } } // 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 + investor.prePaid <= 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":[],"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"},{"internalType":"uint256","name":"prePaid","type":"uint256"}],"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":"_address","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"updateInvestorMapPrePaid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_value","type":"uint256[]"}],"name":"updateMultipleInvestorMapPrePaid","outputs":[],"stateMutability":"nonpayable","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
608060405260016006556103e860075560126014556000601555600060165534801561002a57600080fd5b506040516200266f3803806200266f833981810160405261010081101561005057600080fd5b50805160208201516040808401516060850151608086015160a087015160c088015160e090980151600080546001600160a01b031916331780825596519899979895979496939592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a3600280546001600160a01b03808b166001600160a01b031992831617909255600e899055600f88905560108790556008869055600a8590556013849055600480549284169290911691909117905562093a808610610167576040805162461bcd60e51b81526020600482015260116024820152706475726174696f6e20746f6f206c6f6e6760781b604482015290519081900360640190fd5b600f54600e540160115560405160129061018090610208565b60208101919091526040808252600781830152666253504845524560c81b60608301525190819003608001906000f0801580156101c1573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039290921691909117905550506012805461ffff191690555050683635c9adc5dea000006009555061021692505050565b6109d68062001c9983390190565b611a7380620002266000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063856ed70311610146578063ba7ab52f116100c3578063d2f8253611610087578063d2f825361461053e578063d936547e14610546578063e545338c1461056c578063f703f36f14610574578063f9fd3ba2146105b8578063ff16e750146105d55761025e565b8063ba7ab52f1461045c578063badf822b1461051e578063bc284c5c14610526578063bc5c619a1461052e578063be040fb0146105365761025e565b8063a035b1fe1161010a578063a035b1fe14610434578063a28a4d861461043c578063a4197afc14610444578063b5224c441461044c578063b811215e146104545761025e565b8063856ed703146103f7578063861d8e13146103ff5780638a5396a3146104075780638da5cb5b1461040f578063944044a1146104175761025e565b806346f68ee9116101df57806361d027b3116101a357806361d027b31461037957806371b9b6461461039d57806376671808146103b957806378c8cda7146103c157806378e97925146103e75780637d8966e4146103ef5761025e565b806346f68ee9146103155780635053e4611461033b57806354dacb96146103435780635a96ac0a1461034b578063604a85da146103535761025e565b806322e274031161022657806322e27403146102b457806323548b8b146102bc5780632afcf480146102c45780633197cbb6146102e15780633dbb3097146102e95761025e565b8063061873e814610263578063089208d81461026d5780630b1258a0146102755780630fb5a6b41461028f57806311f1fc9914610297575b600080fd5b61026b6105f2565b005b61026b6106df565b61027d610776565b60408051918252519081900360200190f35b61027d61077c565b61026b600480360360208110156102ad57600080fd5b5035610782565b61027d61089b565b61027d6108a1565b61026b600480360360208110156102da57600080fd5b50356108a7565b61027d610c90565b61026b600480360360408110156102ff57600080fd5b506001600160a01b038135169060200135610c96565b61026b6004803603602081101561032b57600080fd5b50356001600160a01b0316610d56565b61027d610e43565b61027d610e49565b61026b610e4f565b61026b6004803603602081101561036957600080fd5b50356001600160a01b0316610ef9565b610381610f68565b604080516001600160a01b039092168252519081900360200190f35b6103a5610f77565b604080519115158252519081900360200190f35b61027d610f80565b61026b600480360360208110156103d757600080fd5b50356001600160a01b0316610f98565b61027d61104c565b61026b611052565b61027d61113f565b61027d611177565b61027d61117d565b610381611183565b61026b6004803603602081101561042d57600080fd5b5035611192565b61027d61128a565b610381611290565b61027d61129f565b61027d6112a5565b61027d6112ab565b61026b6004803603604081101561047257600080fd5b81019060208101813564010000000081111561048d57600080fd5b82018360208201111561049f57600080fd5b803590602001918460208302840111640100000000831117156104c157600080fd5b9193909290916020810190356401000000008111156104df57600080fd5b8201836020820111156104f157600080fd5b8035906020019184602083028401116401000000008311171561051357600080fd5b5090925090506112b1565b61038161142d565b61027d61143c565b61027d611442565b61026b611448565b6103a5611736565b6103a56004803603602081101561055c57600080fd5b50356001600160a01b0316611744565b610381611759565b61059a6004803603602081101561058a57600080fd5b50356001600160a01b0316611768565b60408051938452911515602084015282820152519081900360600190f35b61026b600480360360208110156105ce57600080fd5b503561178c565b61026b600480360360208110156105eb57600080fd5b5035611833565b6000546001600160a01b0316331461063f576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b6003546001600160a01b0316610693576040805162461bcd60e51b81526020600482015260146024820152731b185d5b98da081d1bdad95b881b9bdd081cd95d60621b604482015290519081900360640190fd5b6012805461ff001916610100179055604080516001815242602082015281517fef5fd91dc9b012f3e4b41e00dc71466a39c83d97c3cc3879de5b9193f456c630929181900390910190a1565b6000546001600160a01b0316331461072c576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b60145481565b600f5481565b6000546001600160a01b031633146107cf576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b600254600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018590525192169163a9059cbb916044808201926020929091908290030181600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b505050506040513d602081101561085357600080fd5b5051610898576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b50565b600d5481565b60095481565b600e544210156108f0576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd185c9d1959081e595d608a1b604482015290519081900360640190fd5b426011541015610938576040805162461bcd60e51b815260206004820152600e60248201526d1cd85b19481a185cc8195b99195960921b604482015290519081900360640190fd5b60125460ff16610981576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd08195b98589b1959081e595d608a1b604482015290519081900360640190fd5b3360009081526017602052604090205460ff1615156001146109ea576040805162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572206973206e6f742077686974656c6973746564000000604482015290519081900360640190fd5b600a5481600b54011115610a38576040805162461bcd60e51b815260206004820152601060248201526f6f76657220746f74616c20726169736560801b604482015290519081900360640190fd5b601354811015610a86576040805162461bcd60e51b815260206004820152601460248201527318995b1bddc81b5a5b9a5b5d5b481a5b9d995cdd60621b604482015290519081900360640190fd5b6000610a9061113f565b336000908152601860205260409020600281015481549293509091840101821015610aee576040805162461bcd60e51b8152602060048201526009602482015268061626f7665206361760bc1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b505050506040513d6020811015610b7257600080fd5b5051610bb7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b6007546005546040805163219e412d60e21b815233600482015292860260248401819052905190926001600160a01b039092169163867904b491604480830192600092919082900301818387803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b5050600b8054870190555050600c8054820190558154610c49576016805460010190555b815484018255604080513381526020810186905281517fd90d253a9de34d2fdd5a75ae49ea17fcb43af32fc8ea08cc6d2341991dd3872e929181900390910190a150505050565b60115481565b6000546001600160a01b03163314610ce3576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b60125460ff1615610d29576040805162461bcd60e51b815260206004820152601860248201526000805160206119b6833981519152604482015290519081900360640190fd5b6001600160a01b038216600090815260186020526040902060028101829055610d51836118d4565b505050565b6000546001600160a01b03163314610da3576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b6001600160a01b038116610de85760405162461bcd60e51b81526004018080602001828103825260268152602001806119d66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b60155481565b6001546001600160a01b03163314610e985760405162461bcd60e51b81526004018080602001828103825260228152602001806119fc6022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b03163314610f46576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b60125460ff1681565b6000601054600e54420381610f9157fe5b0490505b90565b6000546001600160a01b03163314610fe5576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b60125460ff161561102b576040805162461bcd60e51b815260206004820152601860248201526000805160206119b6833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b600e5481565b6000546001600160a01b0316331461109f576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b6011544211156110f3576012805460ff19169055604080516000815242602082015281517f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb868929181900390910190a161113d565b6012805460ff191660019081179091556040805191825242602083015280517f020b56eb5031e351b28c7914a3185d679342016d533b3fe0d056b43fe5ecb8689281900390910190a15b565b60008061114a610f80565b905060008160020a60085402905060095481111561116e5760095492505050610f95565b9150610f959050565b60165481565b600b5481565b6000546001600160a01b031690565b6000546001600160a01b031633146111df576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b600e54421115611236576040805162461bcd60e51b815260206004820152601a60248201527f746f6f206c6174652c2073616c65206861732073746172746564000000000000604482015290519081900360640190fd5b60125460ff161561127c576040805162461bcd60e51b815260206004820152601860248201526000805160206119b6833981519152604482015290519081900360640190fd5b600e819055600f5401601155565b60065481565b6003546001600160a01b031681565b600c5481565b600a5481565b60085481565b6000546001600160a01b031633146112fe576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b60125460ff1615611344576040805162461bcd60e51b815260206004820152601860248201526000805160206119b6833981519152604482015290519081900360640190fd5b6103e8831115611390576040805162461bcd60e51b8152602060048201526012602482015271746f6f206d616e792061646472657373657360701b604482015290519081900360640190fd5b60005b83811015611426576000601860008787858181106113ad57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002090508383838181106113eb57fe5b602002919091013560028301555061141d86868481811061140857fe5b905060200201356001600160a01b03166118d4565b50600101611393565b5050505050565b6002546001600160a01b031681565b60135481565b60075481565b601254610100900460ff16611499576040805162461bcd60e51b81526020600482015260126024820152711c995919595b481b9bdd08195b98589b195960721b604482015290519081900360640190fd5b600554604080516370a0823160e01b815233600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156114e457600080fd5b505afa1580156114f8573d6000803e3d6000fd5b505050506040513d602081101561150e57600080fd5b5051905080611557576040805162461bcd60e51b815260206004820152601060248201526f1b9bc8185b5bdd5b9d081a5cdcdd595960821b604482015290519081900360640190fd5b336000908152601860205260409020600181015460ff16156115b2576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b6003546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561160657600080fd5b505af115801561161a573d6000803e3d6000fd5b505050506040513d602081101561163057600080fd5b5051611675576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b600554604080516301e9a69560e41b81523360048201526024810185905290516001600160a01b0390921691631e9a69509160448082019260009290919082900301818387803b1580156116c857600080fd5b505af11580156116dc573d6000803e3d6000fd5b5050600d8054850190555050604080513381526020810184905281517f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6929181900390910190a16001908101805460ff1916909117905550565b601254610100900460ff1681565b60176020526000908152604090205460ff1681565b6005546001600160a01b031681565b601860205260009081526040902080546001820154600290920154909160ff169083565b6000546001600160a01b031633146117d9576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561082957600080fd5b6000546001600160a01b03163314611880576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b6003546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561082957600080fd5b6000546001600160a01b03163314611921576040805162461bcd60e51b81526020600482018190526024820152600080516020611a1e833981519152604482015290519081900360640190fd5b60125460ff1615611967576040805162461bcd60e51b815260206004820152601860248201526000805160206119b6833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526017602052604090205460ff16611991576015805460010190555b6001600160a01b03166000908152601760205260409020805460ff1916600117905556fe73616c652068617320616c7265616479207374617274656400000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220c3a3e1557a9b8a142f50a9b5b635a3c72b050dd361140f9dd6f224bd56e93a0864736f6c63430007050033608060405234801561001057600080fd5b506040516109d63803806109d68339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604090815260209182015133600090815280845291909120805460ff1916600117905584519093506101159250600491850190610129565b5060035550600060018190556002556101ca565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261015f57600085556101a5565b82601f1061017857805160ff19168380011785556101a5565b828001600101855582156101a5579182015b828111156101a557825182559160200191906001019061018a565b506101b19291506101b5565b5090565b5b808211156101b157600081556001016101b6565b6107fd806101d96000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637065cb48116100665780637065cb481461012257806370a0823114610148578063867904b41461016e57806395d89b411461019a578063caacafe21461021757610093565b80631e9a6950146100985780632f54bf6e146100c6578063313ce567146101005780636291f5721461011a575b600080fd5b6100c4600480360360408110156100ae57600080fd5b506001600160a01b03813516906020013561021f565b005b6100ec600480360360208110156100dc57600080fd5b50356001600160a01b03166103c4565b604080519115158252519081900360200190f35b6101086103e2565b60408051918252519081900360200190f35b6101086103e8565b6100c46004803603602081101561013857600080fd5b50356001600160a01b03166103ee565b6101086004803603602081101561015e57600080fd5b50356001600160a01b0316610489565b6100c46004803603604081101561018457600080fd5b506001600160a01b0381351690602001356104a4565b6101a26105f1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101dc5781810151838201526020016101c4565b50505050905090810190601f1680156102095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610108610687565b3360009081526020819052604090205460ff16610283576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b0382166102cd576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b6001600160a01b038216600090815260056020526040902054811115610330576040805162461bcd60e51b8152602060048201526013602482015272496e737566666963656e742062616c616e636560681b604482015290519081900360640190fd5b6001600160a01b038216600090815260056020526040902054610353908261068d565b6001600160a01b038316600090815260056020526040902055600254610379908261068d565b600255604080516001600160a01b03841681526020810183905281517f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369929181900390910190a15050565b6001600160a01b031660009081526020819052604090205460ff1690565b60035490565b60015490565b3360009081526020819052604090205460ff16610452576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b03811661046557600080fd5b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b6001600160a01b031660009081526005602052604090205490565b3360009081526020819052604090205460ff16610508576040805162461bcd60e51b815260206004820152601f60248201527f4f776e61626c653a2063616c6c6572206973206e6f7420616e206f776e657200604482015290519081900360640190fd5b6001600160a01b038216610552576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b60015461055f90826106d6565b60015560025461056f90826106d6565b6002556001600160a01b03821660009081526005602052604090205461059590826106d6565b6001600160a01b03831660008181526005602090815260409182902093909355805191825291810183905281517fa59f12e354e8cd10bb74c559844c2dd69a5458e31fe56c7594c62ca57480509a929181900390910190a15050565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561067d5780601f106106525761010080835404028352916020019161067d565b820191906000526020600020905b81548152906001019060200180831161066057829003601f168201915b5050505050905090565b60025490565b60006106cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610730565b9392505050565b6000828201838110156106cf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156107bf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561078457818101518382015260200161076c565b50505050905090810190601f1680156107b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fea2646970667358221220c3f099a03f10e048214a6acbbe048bb04c5a1987121c9db67f16d1134954b0af64736f6c63430007050033000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f10000000000000000000000000000000000000000000000000000000062224590000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000001fc3842bd1f071c000000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000020d61737f972eecb0af5f0a85ab358cd083dd56a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f10000000000000000000000000000000000000000000000000000000062224590000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000001fc3842bd1f071c000000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000020d61737f972eecb0af5f0a85ab358cd083dd56a
-----Decoded View---------------
Arg [0] : _investToken (address): 0xa3fa99a148fa48d14ed51d610c367c61876997f1
Arg [1] : _startTime (uint256): 1646413200
Arg [2] : _duration (uint256): 28800
Arg [3] : _epochTime (uint256): 1020
Arg [4] : _initialCap (uint256): 250000000000000000000
Arg [5] : _totalraiseCap (uint256): 150000000000000000000000
Arg [6] : _minInvest (uint256): 100000000000000000000
Arg [7] : _treasury (address): 0x20d61737f972eecb0af5f0a85ab358cd083dd56a
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000a3fa99a148fa48d14ed51d610c367c61876997f1
Arg [1] : 0000000000000000000000000000000000000000000000000000000062224590
Arg [2] : 0000000000000000000000000000000000000000000000000000000000007080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003fc
Arg [4] : 00000000000000000000000000000000000000000000000d8d726b7177a80000
Arg [5] : 000000000000000000000000000000000000000000001fc3842bd1f071c00000
Arg [6] : 0000000000000000000000000000000000000000000000056bc75e2d63100000
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.