Overview
ETH Balance
1.797796955162872899 ETH
Eth Value
$4,729.68 (@ $2,630.82/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 933 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit | 8616581 | 1849 days ago | IN | 0 ETH | 0.00208634 | ||||
Buy | 7020477 | 2111 days ago | IN | 0.000593 ETH | 0.00020046 | ||||
Buy | 6896634 | 2132 days ago | IN | 0.00009 ETH | 0.00033393 | ||||
Withdraw | 6785801 | 2150 days ago | IN | 0 ETH | 0.00008567 | ||||
Sell | 6785788 | 2150 days ago | IN | 0 ETH | 0.00032223 | ||||
Withdraw | 6666305 | 2170 days ago | IN | 0 ETH | 0.00013004 | ||||
Sell | 6666241 | 2170 days ago | IN | 0 ETH | 0.00071766 | ||||
Withdraw | 6666219 | 2170 days ago | IN | 0 ETH | 0.00019622 | ||||
Sell | 6666201 | 2170 days ago | IN | 0 ETH | 0.00084497 | ||||
Buy | 6344945 | 2223 days ago | IN | 0.02 ETH | 0.00043557 | ||||
Buy | 6331671 | 2225 days ago | IN | 0.00012 ETH | 0.00047383 | ||||
Buy | 6014057 | 2278 days ago | IN | 0.0001 ETH | 0.00061782 | ||||
Sell | 5987243 | 2283 days ago | IN | 0 ETH | 0.00022882 | ||||
Sell | 5983456 | 2284 days ago | IN | 0 ETH | 0.00023789 | ||||
Withdraw | 5946251 | 2290 days ago | IN | 0 ETH | 0.00044497 | ||||
Sell | 5861776 | 2304 days ago | IN | 0 ETH | 0.000066 | ||||
Buy | 5846530 | 2307 days ago | IN | 0.001 ETH | 0.0001575 | ||||
Withdraw | 5842926 | 2308 days ago | IN | 0 ETH | 0.00000856 | ||||
Sell | 5842914 | 2308 days ago | IN | 0 ETH | 0.00004046 | ||||
Buy | 5842587 | 2308 days ago | IN | 0.001 ETH | 0.00012856 | ||||
Withdraw | 5840050 | 2308 days ago | IN | 0 ETH | 0.00005527 | ||||
Sell | 5840035 | 2308 days ago | IN | 0 ETH | 0.00020802 | ||||
Sell | 5839997 | 2308 days ago | IN | 0 ETH | 0.00002375 | ||||
Withdraw | 5813067 | 2313 days ago | IN | 0 ETH | 0.00030401 | ||||
Withdraw | 5812777 | 2313 days ago | IN | 0 ETH | 0.0000304 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8616581 | 1849 days ago | 0.00006419 ETH | ||||
8616581 | 1849 days ago | 0.00000713 ETH | ||||
7020477 | 2111 days ago | 0.0000593 ETH | ||||
6896634 | 2132 days ago | 0.000009 ETH | ||||
6785801 | 2150 days ago | 0.00062746 ETH | ||||
6785788 | 2150 days ago | 0.00006971 ETH | ||||
6666305 | 2170 days ago | 0.0883374 ETH | ||||
6666241 | 2170 days ago | 0.00972637 ETH | ||||
6666219 | 2170 days ago | 0.11023116 ETH | ||||
6666201 | 2170 days ago | 0.0122479 ETH | ||||
6344945 | 2223 days ago | 0.002 ETH | ||||
6331671 | 2225 days ago | 0.000012 ETH | ||||
6014057 | 2278 days ago | 0.000008 ETH | ||||
5987243 | 2283 days ago | 0.00050904 ETH | ||||
5983456 | 2284 days ago | 0.00008372 ETH | ||||
5946251 | 2290 days ago | 0.05962817 ETH | ||||
5846530 | 2307 days ago | 0.0001 ETH | ||||
5842926 | 2308 days ago | 0.00155234 ETH | ||||
5842914 | 2308 days ago | 0.00017248 ETH | ||||
5842587 | 2308 days ago | 0.0001 ETH | ||||
5840050 | 2308 days ago | 0.00917694 ETH | ||||
5840035 | 2308 days ago | 0.00101966 ETH | ||||
5813067 | 2313 days ago | 6.76016999 ETH | ||||
5812777 | 2313 days ago | 0.40172566 ETH | ||||
5812372 | 2313 days ago | 0.01912193 ETH |
Loading...
Loading
Contract Name:
ProductionUnitToken
Compiler Version
v0.4.20+commit.3155dd80
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-23 */ pragma solidity 0.4.20; /* * Team AppX presents - Moon, Inc. | Competitive Ethereum Idle Pyramid * Website: https://mooninc.io/ * Backup: https://mooninc.surge.sh/ * Discord: https://discord.gg/9Ab8Az3 * * There are 2 contracts: * 1. MoonInc: handle Cookie production, cookie price calulation and cookie selling * - Reference: [Goo] https://etherscan.io/address/0x57b116da40f21f91aec57329ecb763d29c1b2355#code * 2. ProductionUnitToken: handle production units tokens buy, sell, reinvest and withdraw * - Reference: [PoWTF] https://etherscan.io/address/0x702392282255f8c0993dbbbb148d80d2ef6795b1#code * * Features: * - You can buy workers with ETH to increase your cookies production. * - You can sell your cookies and claim a proportion of the cookie fund. * - You cannot sell cookies within the first hour of a new production unit launch. * - The selling price of a cookie depends on the Cookie Fund and the total cookies supply, the formula is: * CookiePrice = CookieFund / TotalCookieSupply * Multiplier * * Where Multiplier is a number from 0.5 to 1, which starts with 0.5 after a new production unit started, and reaches maximum value (1) after 5 days. * - You can sell your workers at any time like normal tokens * * Developed by by AppX Matthew, ft. MrBlobby | GOO * */ /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ProductionUnitToken { /*================================= = MODIFIERS = =================================*/ /// @dev Only people with tokens modifier onlyBagholders { require(myTokens() > 0); _; } /// @dev Only people with profits modifier onlyStronghands { require(myDividends(true) > 0); _; } /*============================== = EVENTS = ==============================*/ event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted, address indexed referredBy, uint timestamp, uint256 price ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned, uint timestamp, uint256 price ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); // ERC20 event Transfer( address indexed from, address indexed to, uint256 tokens ); /*===================================== = DEPENDENCIES = =====================================*/ // MoonInc contract MoonInc public moonIncContract; /*===================================== = CONFIGURABLES = =====================================*/ string public name = "Production Unit | Moon, Inc."; string public symbol = "ProductionUnit"; uint8 constant public decimals = 18; /// @dev dividends for token purchase uint8 public entryFee_; /// @dev dividends for token transfer uint8 public transferFee_; /// @dev dividends for token selling uint8 public exitFee_; /// @dev 20% of entryFee_ is given to referrer uint8 constant internal refferalFee_ = 20; uint256 public tokenPriceInitial_; // original is 0.0000001 ether uint256 public tokenPriceIncremental_; // original is 0.00000001 ether uint256 constant internal magnitude = 2 ** 64; /// @dev proof of stake (10 tokens) uint256 public stakingRequirement = 10e18; // cookie production multiplier (how many cookies do 1 token make per second) uint256 public cookieProductionMultiplier; // auto start timer uint256 public startTime; // Maximum amount of dev one time pre-mine mapping(address => uint) public ambassadorsMaxPremine; mapping(address => bool) public ambassadorsPremined; mapping(address => address) public ambassadorsPrerequisite; /*================================= = DATASETS = ================================*/ // amount of shares for each address (scaled number) mapping(address => uint256) internal tokenBalanceLedger_; mapping(address => uint256) internal referralBalance_; mapping(address => int256) internal payoutsTo_; uint256 internal tokenSupply_; /*======================================= = PUBLIC FUNCTIONS = =======================================*/ /// @dev Set the MoonInc contract address to notify when token amount changes function ProductionUnitToken( address _moonIncContractAddress, uint8 _entryFee, uint8 _transferFee, uint8 _exitFee, uint _tokenPriceInitial, uint _tokenPriceIncremental, uint _cookieProductionMultiplier, uint _startTime ) public { moonIncContract = MoonInc(_moonIncContractAddress); entryFee_ = _entryFee; transferFee_ = _transferFee; exitFee_ = _exitFee; tokenPriceInitial_ = _tokenPriceInitial; tokenPriceIncremental_ = _tokenPriceIncremental; cookieProductionMultiplier = _cookieProductionMultiplier; startTime = _startTime; // Set ambassadors' maximum one time pre-mine amount (Total 1.47 ETH pre-mine including last 2 ambassadors from contest). // MA ambassadorsMaxPremine[0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD] = 0.28 ether; ambassadorsPremined[address(0)] = true; // first ambassador don't need prerequisite // BL ambassadorsMaxPremine[0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f] = 0.28 ether; ambassadorsPrerequisite[0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f] = 0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD; // PH ambassadorsMaxPremine[0x183feBd8828a9ac6c70C0e27FbF441b93004fC05] = 0.28 ether; ambassadorsPrerequisite[0x183feBd8828a9ac6c70C0e27FbF441b93004fC05] = 0xc951D3463EbBa4e9Ec8dDfe1f42bc5895C46eC8f; // RS ambassadorsMaxPremine[0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d] = 0.09 ether; ambassadorsPrerequisite[0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d] = 0x183feBd8828a9ac6c70C0e27FbF441b93004fC05; // LN ambassadorsMaxPremine[0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05] = 0.09 ether; ambassadorsPrerequisite[0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05] = 0x1fbc2Ca750E003A56d706C595b49a0A430EBA92d; // LE ambassadorsMaxPremine[0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41] = 0.09 ether; ambassadorsPrerequisite[0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41] = 0x41F29054E7c0BC59a8AF10f3a6e7C0E53B334e05; // MI ambassadorsMaxPremine[0x0a3239799518E7F7F339867A4739282014b97Dcf] = 0.09 ether; ambassadorsPrerequisite[0x0a3239799518E7F7F339867A4739282014b97Dcf] = 0x15Fda64fCdbcA27a60Aa8c6ca882Aa3e1DE4Ea41; // PO ambassadorsMaxPremine[0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87] = 0.09 ether; ambassadorsPrerequisite[0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87] = 0x0a3239799518E7F7F339867A4739282014b97Dcf; } bool public lastTwoAmbassadorsAdded; /// @dev Add the last 2 ambassadors from the invite contest because they both offline in the time the contract is deployed. function addLastTwoAmbassadors(address _address1, address _address2) public { require(msg.sender == 0xFEA0904ACc8Df0F3288b6583f60B86c36Ea52AcD && !lastTwoAmbassadorsAdded); lastTwoAmbassadorsAdded = true; // KHAN ambassadorsMaxPremine[_address1] = 0.09 ether; ambassadorsPrerequisite[_address1] = 0x31529d5Ab0D299D9b0594B7f2ef3515Be668AA87; // CRYPTOWHALE ambassadorsMaxPremine[_address2] = 0.09 ether; ambassadorsPrerequisite[_address2] = _address1; } /// @dev Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any) function buy(address _referredBy) public payable returns (uint256) { purchaseTokens(msg.value, _referredBy); } /** * @dev Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() payable public { purchaseTokens(msg.value, 0x0); } /// @dev Converts all of caller's dividends to tokens. function reinvest() onlyStronghands public { // fetch dividends uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code // pay out the dividends virtually address _customerAddress = msg.sender; payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); // retrieve ref. bonus _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; // dispatch a buy order with the virtualized "withdrawn dividends" uint256 _tokens = purchaseTokens(_dividends, 0x0); // fire event onReinvestment(_customerAddress, _dividends, _tokens); } /// @dev Alias of sell() and withdraw(). function exit() public { // get token count for caller & sell them all address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if (_tokens > 0) sell(_tokens); // lambo delivery service withdraw(); } /// @dev Withdraws all of the callers earnings. function withdraw() onlyStronghands public { // setup data address _customerAddress = msg.sender; uint256 _dividends = myDividends(false); // get ref. bonus later in the code // update dividend tracker payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); // add ref. bonus _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; // lambo delivery service _customerAddress.transfer(_dividends); // fire event onWithdraw(_customerAddress, _dividends); } /// @dev Liquifies tokens to ethereum. function sell(uint256 _amountOfTokens) onlyBagholders public { require(now >= startTime); // setup data address _customerAddress = msg.sender; // russian hackers BTFO require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); // burn the sold tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens); // update dividends tracker int256 _updatedPayouts = (int256) (_taxedEthereum * magnitude); payoutsTo_[_customerAddress] -= _updatedPayouts; // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionDecrease.value(_dividends)(_customerAddress, _tokens * cookieProductionMultiplier); // fire event onTokenSell(_customerAddress, _tokens, _taxedEthereum, now, buyPrice()); } /** * @dev Transfer tokens from the caller to a new holder. * Remember, there's a fee here as well. */ function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) { // setup address _customerAddress = msg.sender; // make sure we have the requested tokens require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); // withdraw all outstanding dividends first if (myDividends(true) > 0) { withdraw(); } // liquify 10% of the tokens that are transfered // these are dispersed to shareholders uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100); uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee); uint256 _dividends = tokensToEthereum_(_tokenFee); // burn the fee tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee); // exchange tokens tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens); tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens); // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionDecrease.value(_dividends)(_customerAddress, _amountOfTokens * cookieProductionMultiplier); moonIncContract.handleProductionIncrease(_toAddress, _taxedTokens * cookieProductionMultiplier); // fire event Transfer(_customerAddress, _toAddress, _taxedTokens); // ERC20 return true; } /*===================================== = HELPERS AND CALCULATORS = =====================================*/ function getSettings() public view returns (uint8, uint8, uint8, uint256, uint256, uint256, uint256) { return (entryFee_, transferFee_, exitFee_, tokenPriceInitial_, tokenPriceIncremental_, cookieProductionMultiplier, startTime); } /** * @dev Method to view the current Ethereum stored in the contract * Example: totalEthereumBalance() */ function totalEthereumBalance() public view returns (uint256) { return this.balance; } /// @dev Retrieve the total token supply. function totalSupply() public view returns (uint256) { return tokenSupply_; } /// @dev Retrieve the tokens owned by the caller. function myTokens() public view returns (uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } /** * @dev Retrieve the dividends owned by the caller. * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations. * The reason for this, is that in the frontend, we will want to get the total divs (global + ref) * But in the internal calculations, we want them separate. */ function myDividends(bool _includeReferralBonus) public view returns (uint256) { address _customerAddress = msg.sender; return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ; } /// @dev Retrieve the token balance of any single address. function balanceOf(address _customerAddress) public view returns (uint256) { return tokenBalanceLedger_[_customerAddress]; } /// @dev Retrieve the dividend balance of any single address. function dividendsOf(address _customerAddress) public view returns (uint256) { return (uint256) ((int256) (-payoutsTo_[_customerAddress])) / magnitude; } /// @dev Return the sell price of 1 individual token. function sellPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. Doh. if (tokenSupply_ == 0) { return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } } /// @dev Return the buy price of 1 individual token. function buyPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. Doh. if (tokenSupply_ == 0) { return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, entryFee_), 100); uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends); return _taxedEthereum; } } /// @dev Function for the frontend to dynamically retrieve the price scaling of buy orders. function calculateTokensReceived(uint256 _ethereumToSpend) public view returns (uint256) { uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, entryFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } /// @dev Function for the frontend to dynamically retrieve the price scaling of sell orders. function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ /// @dev Internal function to actually purchase the tokens. function purchaseTokens(uint256 _incomingEthereum, address _referredBy) internal returns (uint256) { require( // auto start now >= startTime || // ambassador pre-mine within 1 hour before startTime, sequences enforced (now >= startTime - 1 hours && !ambassadorsPremined[msg.sender] && ambassadorsPremined[ambassadorsPrerequisite[msg.sender]] && _incomingEthereum <= ambassadorsMaxPremine[msg.sender]) || // ambassador pre-mine within 10 minutes before startTime, sequences not enforced (now >= startTime - 10 minutes && !ambassadorsPremined[msg.sender] && _incomingEthereum <= ambassadorsMaxPremine[msg.sender]) ); if (now < startTime) { ambassadorsPremined[msg.sender] = true; } // data setup address _customerAddress = msg.sender; uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100); uint256 _referralBonus = SafeMath.div(SafeMath.mul(_undividedDividends, refferalFee_), 100); uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus); uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); // no point in continuing execution if OP is a poorfag russian hacker // prevents overflow in the case that the pyramid somehow magically starts being used by everyone in the world // (or hackers) // and yes we know that the safemath function automatically rules out the "greater then" equasion. require(_amountOfTokens > 0 && SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_); // is the user referred by a masternode? if ( // is this a referred purchase? _referredBy != 0x0000000000000000000000000000000000000000 && // no cheating! _referredBy != _customerAddress && // does the referrer have at least X whole tokens? // i.e is the referrer a godly chad masternode tokenBalanceLedger_[_referredBy] >= stakingRequirement ) { // wealth redistribution referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus); } else { // no ref purchase // add the referral bonus back to the global dividends cake _dividends = SafeMath.add(_dividends, _referralBonus); } // add tokens to the pool tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens); // update circulating supply & the ledger address for the customer tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens); // Tell MoonInc contract for tokens amount change, and transfer dividends. moonIncContract.handleProductionIncrease.value(_dividends)(_customerAddress, _amountOfTokens * cookieProductionMultiplier); // fire event onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy, now, buyPrice()); return _amountOfTokens; } /** * @dev Calculate Token price based on an amount of incoming ethereum * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function ethereumToTokens_(uint256 _ethereum) internal view returns (uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = ( ( // underflow attempts BTFO SafeMath.sub( (sqrt ( (_tokenPriceInitial ** 2) + (2 * (tokenPriceIncremental_ * 1e18) * (_ethereum * 1e18)) + ((tokenPriceIncremental_ ** 2) * (tokenSupply_ ** 2)) + (2 * tokenPriceIncremental_ * _tokenPriceInitial*tokenSupply_) ) ), _tokenPriceInitial ) ) / (tokenPriceIncremental_) ) - (tokenSupply_); return _tokensReceived; } /** * @dev Calculate token sell value. * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = ( // underflow attempts BTFO SafeMath.sub( ( ( ( tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18)) ) - tokenPriceIncremental_ ) * (tokens_ - 1e18) ), (tokenPriceIncremental_ * ((tokens_ ** 2 - tokens_) / 1e18)) / 2 ) / 1e18); return _etherReceived; } /// @dev This is where all your gas goes. function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } contract MoonInc { string public constant name = "Cookie | Moon, Inc."; string public constant symbol = "Cookie"; uint8 public constant decimals = 18; // Global balances uint256 public totalCookieProduction; uint256 private roughSupply; uint256 private lastTotalCookieSaveTime; // Last time any player claimed their produced cookie // Balances for each player mapping(address => uint256) public cookieProduction; mapping(address => uint256) public cookieBalance; mapping(address => uint256) private lastCookieSaveTime; // Last time player claimed their produced cookie // Mapping of approved ERC20 transfers (by player) mapping(address => mapping(address => uint256)) internal allowed; // Production unit contracts ProductionUnitToken[] public productionUnitTokenContracts; mapping(address => bool) productionUnitTokenContractAddresses; // Store the production unit start time to calculate sell price. uint256[] public tokenContractStartTime; // Public launch at: Wed, 23 May 2018, 21:00 GMT uint256 public constant firstUnitStartTime = 1527109200; // ERC20 events event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); // Constructor function MoonInc() public payable { // Create first production unit (Space Kitty) createProductionUnit1(); } // No fallback function to avoid accidentally sending money to this contract instead of ProductionUnitToken contract. // function() public payable {} // Public function to create the ProductionUnitToken contracts. function createProductionUnit1() public { require(productionUnitTokenContracts.length == 0); createProductionUnitTokenContract(10, 10, 10, 0.0000001 ether, 0.00000001 ether, 1, firstUnitStartTime); } function createProductionUnit2() public { require(productionUnitTokenContracts.length == 1); createProductionUnitTokenContract(15, 15, 15, 0.0000001 ether, 0.00000001 ether, 3, firstUnitStartTime + 2 days); } function createProductionUnit3() public { require(productionUnitTokenContracts.length == 2); createProductionUnitTokenContract(20, 20, 20, 0.0000001 ether, 0.00000001 ether, 9, firstUnitStartTime + 4 days); } function createProductionUnit4() public { require(productionUnitTokenContracts.length == 3); createProductionUnitTokenContract(25, 25, 25, 0.0000001 ether, 0.00000001 ether, 3**3, firstUnitStartTime + 7 days); } function createProductionUnit5() public { require(productionUnitTokenContracts.length == 4); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**4, firstUnitStartTime + 11 days); } function createProductionUnit6() public { require(productionUnitTokenContracts.length == 5); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**5, firstUnitStartTime + 16 days); } function createProductionUnit7() public { require(productionUnitTokenContracts.length == 6); createProductionUnitTokenContract(30, 30, 30, 0.0000001 ether, 0.00000001 ether, 3**6, firstUnitStartTime + 21 days); } function createProductionUnitTokenContract( uint8 _entryFee, uint8 _transferFee, uint8 _exitFee, uint256 _tokenPriceInitial, uint256 _tokenPriceIncremental, uint256 _cookieProductionMultiplier, uint256 _startTime ) internal { ProductionUnitToken newContract = new ProductionUnitToken(address(this), _entryFee, _transferFee, _exitFee, _tokenPriceInitial, _tokenPriceIncremental, _cookieProductionMultiplier, _startTime); productionUnitTokenContracts.push(newContract); productionUnitTokenContractAddresses[address(newContract)] = true; tokenContractStartTime.push(_startTime); } function productionUnitTokenContractCount() public view returns (uint) { return productionUnitTokenContracts.length; } function handleProductionIncrease(address player, uint256 amount) public payable { require(productionUnitTokenContractAddresses[msg.sender]); updatePlayersCookie(player); totalCookieProduction = SafeMath.add(totalCookieProduction, amount); cookieProduction[player] = SafeMath.add(cookieProduction[player], amount); } function handleProductionDecrease(address player, uint256 amount) public payable { require(productionUnitTokenContractAddresses[msg.sender]); updatePlayersCookie(player); totalCookieProduction = SafeMath.sub(totalCookieProduction, amount); cookieProduction[player] = SafeMath.sub(cookieProduction[player], amount); } function getState() public view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { return (totalCookieProduction, cookieProduction[msg.sender], totalSupply(), balanceOf(msg.sender), address(this).balance, lastTotalCookieSaveTime, computeSellPrice()); } function totalSupply() public constant returns(uint256) { return roughSupply + balanceOfTotalUnclaimedCookie(); } function balanceOf(address player) public constant returns(uint256) { return cookieBalance[player] + balanceOfUnclaimedCookie(player); } function balanceOfTotalUnclaimedCookie() public constant returns(uint256) { if (lastTotalCookieSaveTime > 0 && lastTotalCookieSaveTime < block.timestamp) { return (totalCookieProduction * (block.timestamp - lastTotalCookieSaveTime)); } return 0; } function balanceOfUnclaimedCookie(address player) internal constant returns (uint256) { uint256 lastSave = lastCookieSaveTime[player]; if (lastSave > 0 && lastSave < block.timestamp) { return (cookieProduction[player] * (block.timestamp - lastSave)); } return 0; } function transfer(address recipient, uint256 amount) public returns (bool) { updatePlayersCookie(msg.sender); require(amount <= cookieBalance[msg.sender]); cookieBalance[msg.sender] -= amount; cookieBalance[recipient] += amount; Transfer(msg.sender, recipient, amount); return true; } function transferFrom(address player, address recipient, uint256 amount) public returns (bool) { updatePlayersCookie(player); require(amount <= allowed[player][msg.sender] && amount <= cookieBalance[player]); cookieBalance[player] -= amount; cookieBalance[recipient] += amount; allowed[player][msg.sender] -= amount; Transfer(player, recipient, amount); return true; } function approve(address approvee, uint256 amount) public returns (bool){ allowed[msg.sender][approvee] = amount; Approval(msg.sender, approvee, amount); return true; } function allowance(address player, address approvee) public constant returns(uint256){ return allowed[player][approvee]; } function updatePlayersCookie(address player) internal { roughSupply += balanceOfTotalUnclaimedCookie(); cookieBalance[player] += balanceOfUnclaimedCookie(player); lastTotalCookieSaveTime = block.timestamp; lastCookieSaveTime[player] = block.timestamp; } // Sell all cookies, the eth earned is calculated by the proportion of cookies owned. // Selling of cookie is forbidden within one hour of new production unit launch. function sellAllCookies() public { updatePlayersCookie(msg.sender); uint256 sellPrice = computeSellPrice(); require(sellPrice > 0); uint256 myCookies = cookieBalance[msg.sender]; uint256 value = myCookies * sellPrice / (1 ether); cookieBalance[msg.sender] = 0; msg.sender.transfer(value); } // Compute sell price for 1 cookie, it is 0.5 when a new token contract is deployed, // and then goes up until it reaches the maximum sell price after 5 days. function computeSellPrice() public view returns (uint) { uint256 supply = totalSupply(); if (supply == 0) { return 0; } uint index; uint lastTokenContractStartTime = now; while (index < tokenContractStartTime.length && tokenContractStartTime[index] < now) { lastTokenContractStartTime = tokenContractStartTime[index]; index++; } if (now < lastTokenContractStartTime + 1 hours) { return 0; } uint timeToMaxValue = 5 days; uint256 secondsPassed = now - lastTokenContractStartTime; secondsPassed = secondsPassed <= timeToMaxValue ? secondsPassed : timeToMaxValue; uint256 multiplier = 5000 + 5000 * secondsPassed / timeToMaxValue; return 1 ether * address(this).balance / supply * multiplier / 10000; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceIncremental_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTwoAmbassadorsAdded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"entryFee_","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exitFee_","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"moonIncContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cookieProductionMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ambassadorsPrerequisite","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSettings","outputs":[{"name":"","type":"uint8"},{"name":"","type":"uint8"},{"name":"","type":"uint8"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address1","type":"address"},{"name":"_address2","type":"address"}],"name":"addLastTwoAmbassadors","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ambassadorsMaxPremine","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceInitial_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferFee_","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ambassadorsPremined","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_moonIncContractAddress","type":"address"},{"name":"_entryFee","type":"uint8"},{"name":"_transferFee","type":"uint8"},{"name":"_exitFee","type":"uint8"},{"name":"_tokenPriceInitial","type":"uint256"},{"name":"_tokenPriceIncremental","type":"uint256"},{"name":"_cookieProductionMultiplier","type":"uint256"},{"name":"_startTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
606060405260408051908101604052601c81527f50726f64756374696f6e20556e6974207c204d6f6f6e2c20496e632e00000000602082015260019080516200004d92916020019062000490565b5060408051908101604052600e81527f50726f64756374696f6e556e6974000000000000000000000000000000000000602082015260029080516200009792916020019062000490565b50678ac7230489e800006006553415620000b057600080fd5b6040516101008062001a88833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03909b16600160a060020a03199b8c161781556003805460ff998a16620100000262ff0000199b8b166101000261ff00199b909d1660ff19928316179a909a169b909b17999099169790971790975550506004929092556005556007556008919091556703e2c284391c00007fdc959cfe2b175ed260f0d29d50a22c723de07c076741b0738b156a69a84636998190557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380549093166001179092557fb695afe0815f1a0fca34d55e5d648a369b4989966d7594ae6f113a618370409b8290557f730ff749317258461f89653602b716cd5c77b4430f734b68615d399e235daab48054841673fea0904acc8df0f3288b6583f60b86c36ea52acd1790557fc68aad4c1efaa842aea3a9d2ef6d3c57921a98bd08630ba918f144f511e9aa09919091557f632d53bb0a06b84f57f84351b146332d537795c36068497ae9ec22629c7cdc3c8054831673c951d3463ebba4e9ec8ddfe1f42bc5895c46ec8f17905567013fbe85edc900007fef927b934bc32d82ae7d641a23d3f563a41aa8e146f895d08c46497d785bdc008190557f5822f778597e038424f954d4d0a4ec35b70e4c7dc48356651af02ae4ce3acf4a8054841673183febd8828a9ac6c70c0e27fbf441b93004fc051790557f7f06417dd09751df064645fc55f4e3ad35f1aa4997f158e6625cc6c9ffe22bab8190557fa9e140e18b8636e4180c954d35a67013fae2eac65cafdc8af79fff5936148ce480548416731fbc2ca750e003a56d706c595b49a0a430eba92d1790557f29a99edf4941a3eac30edf3a60256cf4422b9bb9fb28a920b99c1f4dd243783d8190557f56121a7225f2a97c74a8b467e786fb63acc82e3c5d55a7c61bfec773825930cc805484167341f29054e7c0bc59a8af10f3a6e7c0e53b334e051790557fedf7f37d95c8653e131d57ed11c4929c66f3d8a74fde852c94dc8c9af46ca8a48190557fd433f2f4e53512cb54961dced8a1916be6e9fd9110abd57b77b2e5c3beb9b0fb805484167315fda64fcdbca27a60aa8c6ca882aa3e1de4ea411790557331529d5ab0d299d9b0594b7f2ef3515be668aa879091527fecaa8676ca64deffc478fdaf3eb925484756642be5d1b665f32b3a356ab3ec1155600b6020527f6f28103fc34e8f0762bbb16833a0dc581d4a584d896cd233edbb7c8d133e6df88054909116730a3239799518e7f7f339867a4739282014b97dcf17905562000535565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000503565b8280016001018555821562000503579182015b8281111562000503578251825591602001919060010190620004e6565b506200051192915062000515565b5090565b6200053291905b808211156200051157600081556001016200051c565b90565b61154380620005456000396000f3006060604052600436106101915763ffffffff60e060020a60003504166265318b811461019f57806306fdde03146101d05780630ea8e5ac1461025a57806310d0ffdd1461026d5780631162247e1461028357806318160ddd146102aa57806322609373146102bd5780632290d6e2146102d35780632b38ee56146102fc578063313ce5671461030f5780633ccfd60b146103225780634abb525a146103375780634b7503341461036657806356d399e814610379578063577ec5ae1461038c578063688abbf71461039f5780636b2f4632146103b757806370a08231146103ca57806375fb4540146103e957806378e979251461040857806385b4bb531461041b5780638620410b146104725780638ce2e0ea14610485578063949e8acd146104aa57806395d89b41146104bd578063a14b972b146104d0578063a9059cbb146104ef578063c4c1b39a14610511578063cb8cd7cb14610524578063d292d5d714610537578063e4849b3214610556578063e9fad8ee1461056c578063f088d5471461057f578063fdb5a03e14610593575b61019c3460006105a6565b50005b34156101aa57600080fd5b6101be600160a060020a0360043516610920565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610948565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021f578082015183820152602001610207565b50505050905090810190601f16801561024c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026557600080fd5b6101be6109e6565b341561027857600080fd5b6101be6004356109ec565b341561028e57600080fd5b610296610a2a565b604051901515815260200160405180910390f35b34156102b557600080fd5b6101be610a33565b34156102c857600080fd5b6101be600435610a39565b34156102de57600080fd5b6102e6610a83565b60405160ff909116815260200160405180910390f35b341561030757600080fd5b6102e6610a8c565b341561031a57600080fd5b6102e6610a9b565b341561032d57600080fd5b610335610aa0565b005b341561034257600080fd5b61034a610b6c565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b6101be610b7b565b341561038457600080fd5b6101be610be1565b341561039757600080fd5b6101be610be7565b34156103aa57600080fd5b6101be6004351515610bed565b34156103c257600080fd5b6101be610c30565b34156103d557600080fd5b6101be600160a060020a0360043516610c3e565b34156103f457600080fd5b61034a600160a060020a0360043516610c59565b341561041357600080fd5b6101be610c74565b341561042657600080fd5b61042e610c7a565b60405160ff97881681529587166020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015260e001905180910390f35b341561047d57600080fd5b6101be610ca7565b341561049057600080fd5b610335600160a060020a0360043581169060243516610cfb565b34156104b557600080fd5b6101be610dcb565b34156104c857600080fd5b6101e3610ddd565b34156104db57600080fd5b6101be600160a060020a0360043516610e48565b34156104fa57600080fd5b610296600160a060020a0360043516602435610e5a565b341561051c57600080fd5b6101be61109a565b341561052f57600080fd5b6102e66110a0565b341561054257600080fd5b610296600160a060020a03600435166110ae565b341561056157600080fd5b6103356004356110c3565b341561057757600080fd5b610335611295565b6101be600160a060020a03600435166112cc565b341561059e57600080fd5b6103356112d8565b6000806000806000806000600854421015806106435750610e106008540342101580156105ec5750600160a060020a0333166000908152600a602052604090205460ff16155b801561061f5750600160a060020a033381166000908152600b60209081526040808320549093168252600a9052205460ff165b80156106435750600160a060020a0333166000908152600960205260409020548911155b8061069c57506102586008540342101580156106785750600160a060020a0333166000908152600a602052604090205460ff16155b801561069c5750600160a060020a0333166000908152600960205260409020548911155b15156106a757600080fd5b6008544210156106d557600160a060020a0333166000908152600a60205260409020805460ff191660011790555b6003543396506106f4906106ed908b9060ff16611393565b60646113c9565b94506107046106ed866014611393565b935061071085856113e0565b925061071c89866113e0565b9150610727826113f2565b90506000811180156107435750600f54610741828261146c565b115b151561074e57600080fd5b600160a060020a03881615801590610778575085600160a060020a031688600160a060020a031614155b801561079e5750600654600160a060020a0389166000908152600c602052604090205410155b156107e457600160a060020a0388166000908152600d60205260409020546107c6908561146c565b600160a060020a0389166000908152600d60205260409020556107f1565b6107ee838561146c565b92505b6107fd600f548261146c565b600f55600160a060020a0386166000908152600c6020526040902054610823908261146c565b600160a060020a038088166000908152600c60205260408082209390935554600754911691632c3ca9249186918a918602905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561089557600080fd5b6125ee5a03f115156108a657600080fd5b5050505087600160a060020a031686600160a060020a03167f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8b84426108ea610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a398975050505050505050565b600160a060020a03166000908152600e60205260408120546801000000000000000091030490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081565b60055481565b600354600090819081908190610a0a906106ed90879060ff16611393565b9250610a1685846113e0565b9150610a21826113f2565b95945050505050565b60105460ff1681565b600f5490565b600080600080600f548511151515610a5057600080fd5b610a598561147b565b600354909350610a77906106ed90859062010000900460ff16611393565b9150610a2183836113e0565b60035460ff1681565b60035462010000900460ff1681565b601281565b6000806000610aaf6001610bed565b11610ab957600080fd5b339150610ac66000610bed565b600160a060020a0383166000818152600e602090815260408083208054680100000000000000008702019055600d9091528082208054929055920192509082156108fc0290839051600060405180830381858888f193505050501515610b2b57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b600054600160a060020a031681565b600080600080600f5460001415610b9a57600554600454039350610bdb565b610bab670de0b6b3a764000061147b565b600354909350610bc9906106ed90859062010000900460ff16611393565b9150610bd583836113e0565b90508093505b50505090565b60065481565b60075481565b60003382610c0357610bfe81610920565b610c27565b600160a060020a0381166000908152600d6020526040902054610c2582610920565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a03166000908152600c602052604090205490565b600b60205260009081526040902054600160a060020a031681565b60085481565b60035460045460055460075460085460ff8086169661010087048216966201000090049091169493929190565b600080600080600f5460001415610cc657600554600454019350610bdb565b610cd7670de0b6b3a764000061147b565b600354909350610cef906106ed90859060ff16611393565b9150610bd5838361146c565b73fea0904acc8df0f3288b6583f60b86c36ea52acd600160a060020a033316148015610d2a575060105460ff16155b1515610d3557600080fd5b6010805460ff19166001179055600160a060020a03918216600081815260096020818152604080842067013fbe85edc9000090819055600b808452828620805473ffffffffffffffffffffffffffffffffffffffff199081167331529d5ab0d299d9b0594b7f2ef3515be668aa871790915597909816855292825280842092909255949094529290922080549091169091179055565b600033610dd781610c3e565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b60096020526000908152604090205481565b600080600080600080610e6b610dcb565b11610e7557600080fd5b33600160a060020a0381166000908152600c6020526040902054909450861115610e9e57600080fd5b6000610eaa6001610bed565b1115610eb857610eb8610aa0565b600354610ed2906106ed908890610100900460ff16611393565b9250610ede86846113e0565b9150610ee98361147b565b9050610ef7600f54846113e0565b600f55600160a060020a0384166000908152600c6020526040902054610f1d90876113e0565b600160a060020a038086166000908152600c60205260408082209390935590891681522054610f4c908361146c565b600160a060020a038089166000908152600c60205260408082209390935554600754911691637f7de18591849188918b02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b1515610fbe57600080fd5b6125ee5a03f11515610fcf57600080fd5b5050600054600754600160a060020a039091169250632c3ca92491508990850260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103257600080fd5b6102c65a03f1151561104357600080fd5b50505086600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b60045481565b600354610100900460ff1681565b600a6020526000908152604090205460ff1681565b60008060008060008060006110d6610dcb565b116110e057600080fd5b6008544210156110ef57600080fd5b33600160a060020a0381166000908152600c602052604090205490965087111561111857600080fd5b8694506111248561147b565b600354909450611142906106ed90869062010000900460ff16611393565b925061114e84846113e0565b915061115c600f54866113e0565b600f55600160a060020a0386166000908152600c602052604090205461118290866113e0565b600160a060020a038088166000908152600c6020908152604080832094909455600e9052828120805468010000000000000000870290819003909155905460075491945090911691637f7de1859186918a918a02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561121757600080fd5b6125ee5a03f1151561122857600080fd5b5050505085600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442611262610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a0381166000908152600c6020526040812054908111156112c0576112c0816110c3565b6112c8610aa0565b5050565b6000610c2a34836105a6565b6000806000806112e86001610bed565b116112f257600080fd5b6112fc6000610bed565b33600160a060020a0381166000908152600e602090815260408083208054680100000000000000008702019055600d9091528120805490829055909201945092506113489084906105a6565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000808315156113a657600091506113c2565b508282028284828115156113b657fe5b04146113be57fe5b8091505b5092915050565b60008082848115156113d757fe5b04949350505050565b6000828211156113ec57fe5b50900390565b6000806000600454670de0b6b3a7640000029150600f54600554611459611453600f548660055460020202026002600f540a60026005540a0289670de0b6b3a764000002600554670de0b6b3a764000002600202026002890a0101016114e2565b856113e0565b81151561146257fe5b0403949350505050565b6000828201838110156113be57fe5b600f54600554600454600092670de0b6b3a7640000858101939181019285926114cf91838604820201038702600283670de0b6b3a763ffff1982890a8b90030104600554028115156114c957fe5b046113e0565b8115156114d857fe5b0495945050505050565b80600260018201045b81811015610c2a57809150600281828581151561150457fe5b040181151561150f57fe5b0490506114eb5600a165627a7a72305820e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d0029000000000000000000000000881ef8c83e612f8573cfcc9c8a078d6f17a52bd8000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000174876e80000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000005b05d650
Deployed Bytecode
0x6060604052600436106101915763ffffffff60e060020a60003504166265318b811461019f57806306fdde03146101d05780630ea8e5ac1461025a57806310d0ffdd1461026d5780631162247e1461028357806318160ddd146102aa57806322609373146102bd5780632290d6e2146102d35780632b38ee56146102fc578063313ce5671461030f5780633ccfd60b146103225780634abb525a146103375780634b7503341461036657806356d399e814610379578063577ec5ae1461038c578063688abbf71461039f5780636b2f4632146103b757806370a08231146103ca57806375fb4540146103e957806378e979251461040857806385b4bb531461041b5780638620410b146104725780638ce2e0ea14610485578063949e8acd146104aa57806395d89b41146104bd578063a14b972b146104d0578063a9059cbb146104ef578063c4c1b39a14610511578063cb8cd7cb14610524578063d292d5d714610537578063e4849b3214610556578063e9fad8ee1461056c578063f088d5471461057f578063fdb5a03e14610593575b61019c3460006105a6565b50005b34156101aa57600080fd5b6101be600160a060020a0360043516610920565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610948565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021f578082015183820152602001610207565b50505050905090810190601f16801561024c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026557600080fd5b6101be6109e6565b341561027857600080fd5b6101be6004356109ec565b341561028e57600080fd5b610296610a2a565b604051901515815260200160405180910390f35b34156102b557600080fd5b6101be610a33565b34156102c857600080fd5b6101be600435610a39565b34156102de57600080fd5b6102e6610a83565b60405160ff909116815260200160405180910390f35b341561030757600080fd5b6102e6610a8c565b341561031a57600080fd5b6102e6610a9b565b341561032d57600080fd5b610335610aa0565b005b341561034257600080fd5b61034a610b6c565b604051600160a060020a03909116815260200160405180910390f35b341561037157600080fd5b6101be610b7b565b341561038457600080fd5b6101be610be1565b341561039757600080fd5b6101be610be7565b34156103aa57600080fd5b6101be6004351515610bed565b34156103c257600080fd5b6101be610c30565b34156103d557600080fd5b6101be600160a060020a0360043516610c3e565b34156103f457600080fd5b61034a600160a060020a0360043516610c59565b341561041357600080fd5b6101be610c74565b341561042657600080fd5b61042e610c7a565b60405160ff97881681529587166020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015260e001905180910390f35b341561047d57600080fd5b6101be610ca7565b341561049057600080fd5b610335600160a060020a0360043581169060243516610cfb565b34156104b557600080fd5b6101be610dcb565b34156104c857600080fd5b6101e3610ddd565b34156104db57600080fd5b6101be600160a060020a0360043516610e48565b34156104fa57600080fd5b610296600160a060020a0360043516602435610e5a565b341561051c57600080fd5b6101be61109a565b341561052f57600080fd5b6102e66110a0565b341561054257600080fd5b610296600160a060020a03600435166110ae565b341561056157600080fd5b6103356004356110c3565b341561057757600080fd5b610335611295565b6101be600160a060020a03600435166112cc565b341561059e57600080fd5b6103356112d8565b6000806000806000806000600854421015806106435750610e106008540342101580156105ec5750600160a060020a0333166000908152600a602052604090205460ff16155b801561061f5750600160a060020a033381166000908152600b60209081526040808320549093168252600a9052205460ff165b80156106435750600160a060020a0333166000908152600960205260409020548911155b8061069c57506102586008540342101580156106785750600160a060020a0333166000908152600a602052604090205460ff16155b801561069c5750600160a060020a0333166000908152600960205260409020548911155b15156106a757600080fd5b6008544210156106d557600160a060020a0333166000908152600a60205260409020805460ff191660011790555b6003543396506106f4906106ed908b9060ff16611393565b60646113c9565b94506107046106ed866014611393565b935061071085856113e0565b925061071c89866113e0565b9150610727826113f2565b90506000811180156107435750600f54610741828261146c565b115b151561074e57600080fd5b600160a060020a03881615801590610778575085600160a060020a031688600160a060020a031614155b801561079e5750600654600160a060020a0389166000908152600c602052604090205410155b156107e457600160a060020a0388166000908152600d60205260409020546107c6908561146c565b600160a060020a0389166000908152600d60205260409020556107f1565b6107ee838561146c565b92505b6107fd600f548261146c565b600f55600160a060020a0386166000908152600c6020526040902054610823908261146c565b600160a060020a038088166000908152600c60205260408082209390935554600754911691632c3ca9249186918a918602905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561089557600080fd5b6125ee5a03f115156108a657600080fd5b5050505087600160a060020a031686600160a060020a03167f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8b84426108ea610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a398975050505050505050565b600160a060020a03166000908152600e60205260408120546801000000000000000091030490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081565b60055481565b600354600090819081908190610a0a906106ed90879060ff16611393565b9250610a1685846113e0565b9150610a21826113f2565b95945050505050565b60105460ff1681565b600f5490565b600080600080600f548511151515610a5057600080fd5b610a598561147b565b600354909350610a77906106ed90859062010000900460ff16611393565b9150610a2183836113e0565b60035460ff1681565b60035462010000900460ff1681565b601281565b6000806000610aaf6001610bed565b11610ab957600080fd5b339150610ac66000610bed565b600160a060020a0383166000818152600e602090815260408083208054680100000000000000008702019055600d9091528082208054929055920192509082156108fc0290839051600060405180830381858888f193505050501515610b2b57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b600054600160a060020a031681565b600080600080600f5460001415610b9a57600554600454039350610bdb565b610bab670de0b6b3a764000061147b565b600354909350610bc9906106ed90859062010000900460ff16611393565b9150610bd583836113e0565b90508093505b50505090565b60065481565b60075481565b60003382610c0357610bfe81610920565b610c27565b600160a060020a0381166000908152600d6020526040902054610c2582610920565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a03166000908152600c602052604090205490565b600b60205260009081526040902054600160a060020a031681565b60085481565b60035460045460055460075460085460ff8086169661010087048216966201000090049091169493929190565b600080600080600f5460001415610cc657600554600454019350610bdb565b610cd7670de0b6b3a764000061147b565b600354909350610cef906106ed90859060ff16611393565b9150610bd5838361146c565b73fea0904acc8df0f3288b6583f60b86c36ea52acd600160a060020a033316148015610d2a575060105460ff16155b1515610d3557600080fd5b6010805460ff19166001179055600160a060020a03918216600081815260096020818152604080842067013fbe85edc9000090819055600b808452828620805473ffffffffffffffffffffffffffffffffffffffff199081167331529d5ab0d299d9b0594b7f2ef3515be668aa871790915597909816855292825280842092909255949094529290922080549091169091179055565b600033610dd781610c3e565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109de5780601f106109b3576101008083540402835291602001916109de565b60096020526000908152604090205481565b600080600080600080610e6b610dcb565b11610e7557600080fd5b33600160a060020a0381166000908152600c6020526040902054909450861115610e9e57600080fd5b6000610eaa6001610bed565b1115610eb857610eb8610aa0565b600354610ed2906106ed908890610100900460ff16611393565b9250610ede86846113e0565b9150610ee98361147b565b9050610ef7600f54846113e0565b600f55600160a060020a0384166000908152600c6020526040902054610f1d90876113e0565b600160a060020a038086166000908152600c60205260408082209390935590891681522054610f4c908361146c565b600160a060020a038089166000908152600c60205260408082209390935554600754911691637f7de18591849188918b02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b1515610fbe57600080fd5b6125ee5a03f11515610fcf57600080fd5b5050600054600754600160a060020a039091169250632c3ca92491508990850260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103257600080fd5b6102c65a03f1151561104357600080fd5b50505086600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b60045481565b600354610100900460ff1681565b600a6020526000908152604090205460ff1681565b60008060008060008060006110d6610dcb565b116110e057600080fd5b6008544210156110ef57600080fd5b33600160a060020a0381166000908152600c602052604090205490965087111561111857600080fd5b8694506111248561147b565b600354909450611142906106ed90869062010000900460ff16611393565b925061114e84846113e0565b915061115c600f54866113e0565b600f55600160a060020a0386166000908152600c602052604090205461118290866113e0565b600160a060020a038088166000908152600c6020908152604080832094909455600e9052828120805468010000000000000000870290819003909155905460075491945090911691637f7de1859186918a918a02905160e060020a63ffffffff8616028152600160a060020a03909216600483015260248201526044016000604051808303818588803b151561121757600080fd5b6125ee5a03f1151561122857600080fd5b5050505085600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442611262610ca7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a0381166000908152600c6020526040812054908111156112c0576112c0816110c3565b6112c8610aa0565b5050565b6000610c2a34836105a6565b6000806000806112e86001610bed565b116112f257600080fd5b6112fc6000610bed565b33600160a060020a0381166000908152600e602090815260408083208054680100000000000000008702019055600d9091528120805490829055909201945092506113489084906105a6565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000808315156113a657600091506113c2565b508282028284828115156113b657fe5b04146113be57fe5b8091505b5092915050565b60008082848115156113d757fe5b04949350505050565b6000828211156113ec57fe5b50900390565b6000806000600454670de0b6b3a7640000029150600f54600554611459611453600f548660055460020202026002600f540a60026005540a0289670de0b6b3a764000002600554670de0b6b3a764000002600202026002890a0101016114e2565b856113e0565b81151561146257fe5b0403949350505050565b6000828201838110156113be57fe5b600f54600554600454600092670de0b6b3a7640000858101939181019285926114cf91838604820201038702600283670de0b6b3a763ffff1982890a8b90030104600554028115156114c957fe5b046113e0565b8115156114d857fe5b0495945050505050565b80600260018201045b81811015610c2a57809150600281828581151561150457fe5b040181151561150f57fe5b0490506114eb5600a165627a7a72305820e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000881ef8c83e612f8573cfcc9c8a078d6f17a52bd8000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000174876e80000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000005b05d650
-----Decoded View---------------
Arg [0] : _moonIncContractAddress (address): 0x881Ef8C83e612F8573cfcC9C8a078d6f17a52BD8
Arg [1] : _entryFee (uint8): 10
Arg [2] : _transferFee (uint8): 10
Arg [3] : _exitFee (uint8): 10
Arg [4] : _tokenPriceInitial (uint256): 100000000000
Arg [5] : _tokenPriceIncremental (uint256): 10000000000
Arg [6] : _cookieProductionMultiplier (uint256): 1
Arg [7] : _startTime (uint256): 1527109200
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000881ef8c83e612f8573cfcc9c8a078d6f17a52bd8
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 000000000000000000000000000000000000000000000000000000174876e800
Arg [5] : 00000000000000000000000000000000000000000000000000000002540be400
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 000000000000000000000000000000000000000000000000000000005b05d650
Swarm Source
bzzr://e6acb19058a6fbafd5e5b80ae474f4fe25e8f09876fe5a085a86acd0bec86b7d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,630.82 | 1.7978 | $4,729.68 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.