Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 75847 txns
Token Tracker: EmcoToken (EMCO)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x75c6a0af58ceecd9f6e691dec7cee280d5aba3c5at txn 0x0063f1f1cc65030f4a70acab5fb9592a9dc86eb2bac1495e77d2f6a8538cac00
Token Balance:
 Latest 25 transactions from a total of 75847 transactions
(+6 PendingTxns)

TxHash Age From To Value [TxFee]
0x913d5207cf09856e3c01f1a04b5c78ad8f24e041b45f9015713de13d573e9d08(pending)0x7cde0eeee5f83a5ab1e03ef3f62945156973e4e8  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0x6da22d0288519b2165d327c2ba6ffd7e8117e785c1b36b250a03b8edff05794f(pending)0xe0436e523af2df112f77ff70aaec1ab6e7607f5c  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0x95fa93c10543e1cb4911f79cf19fbe7c88a33c7161bea65f75a075a733c7a2d4(pending)0x4c5b5f14911318014915f22f36aa13cb822602ce  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0x6ca7399e61a033ea2afbeaa3eee5eea6ef7619e354944a1c8b8f26ff393a691f(pending)0x7a40e8aa3b2eefb70e6980656ac7802ee4287e26  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0x46c3a52cc863b36cc4e0029d8971faf2ad9909e19674e927c465cd98668fc764(pending)0x2d77750f6d78dc9b5cf5bd49a1abcef8c2fa9faf  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0xb2a96660c1818c19f841c6cfadf76aedf398c359256b5665b662a6949f96a683(pending)0x0728ed244ec033621d88d43681cf06ed5436ad5a  IN  0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether(Pending)
0x49db0c232d8369b55f342226d49aff16f0c451742098f6cfc3df3273f7c7c7f92 mins ago0x121cb78606fbcec1a1f80d3e7c5cc08bd8009250  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000326024
0xa16d0d8cee6d3552815be7274c6261cfd7fa2983cfefc29486ec8915d5a909b13 mins ago0x8211d5900206813c09395cf4c2f9ac00f07ddad1  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000208816
0xee7eee997c8dc3f8799947f71fb3cc72812e6f8cd8abdc930f2875776459afa83 mins ago0xe9416f338f81810fe82da3a905e29eeafd77490c  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.00026166
0xf528e91a23711335726c97b43d076c6e472db6b9bebf4e39f325f1f3094ee4093 mins ago0x5e1299ea5a72232cf916042f34324268712de8a9  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000362355
0x37b0f98a437f5e63c987993be51dd371e7aa381d75203a7ea940c5be6ad9b27d3 mins ago0x75ef22ecb87605036d2a2ea77b76f0508bdb8d43  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.00045655
0x2750b6f95ae1d82c211f4ae9e7c361fbd163190f9c84df6ee4a36887709bd1363 mins ago0x75ef22ecb87605036d2a2ea77b76f0508bdb8d43  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.00015207
0xd114c386438a931d8012f522c8197f08fd0ba8c51cb6c1626c6e5332427edd233 mins ago0x673d458a36252fc336b7da0bd5bbc7393e241cda  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.00045655
0x4af74fcbf4ec635874264ffe938e6e3cf2e86d1d2dc800cb03f1915bcac56ae44 mins ago0x5bd5502b2e309920eb2ce1343f52f8c5a1f0d278  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0x7ae5beddc5ef8416800053b0b065fe935de9cb9eb617ff62e5eab17bbbaf69b15 mins ago0x5e59cb004ed3c06c1dcd5899a6db0afcfc097222  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000336312
0x7c6e1a364c8b600f87bb0f3364905a8834081137c087c1f48c76b992008842415 mins ago0xe630de57eb6bffd926b970eb66ac96a5dccc4ea9  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0xbb11a7ae78a15b1175675733ec4e7c73cb9c7e4fb26725117eb61ad63b779cca6 mins ago0xb7eac76fac1059c327154ab1addbdf50bd5b5429  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0xdc4e33597b1092f4454a831dbbe66ab9397c3f0c6147a0e2d51d5438335b55a16 mins ago0xe9416f338f81810fe82da3a905e29eeafd77490c  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0x5e52902996fe6694cf499f0a9f654bb48d52445fb75b8236ff89ecd4fcb5d5476 mins ago0xbc9f33e74ad4e67d432fd5b2bd0e3b9cce36c6fc  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000326024
0x381a01731ba8cbc4fa618ba960e157a357b7a1a85bf173e5e427a37d53be43a76 mins ago0xaed09af0a83b24b65adeb45941bf256d808dfbb6  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0x20010029b5f88bd1edc419beb48e92fb667e1da1cd94fabd76110c21d9397fdf7 mins ago0x3325e2ec3843db0b4ae87d460e3c4b447b8505f4  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000652239
0x4d7b120a737e3bb29f1709e7a00ee11f15ef2aa516c7692f9d94929eefd84d667 mins ago0xb6649eb78166197a41c677a3ccf8234bc1d15b89  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000335736
0xc371327e014308e50398a77c472b3fed938d22dbd702ace0b95bd1323cca2ba07 mins ago0x64713ed40ba93ac0ff10c47a1676ec1c884fb391  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000289884
0x9f6bde0db0995b170d34992fe0499a6ab811a469e8bd5a60eb8126665f4330537 mins ago0xbe27d934787689a11c10f7ab2e0e7989483c22d5  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000733554
0x0ac00685e69c27159a228d7362481a8fdf33fb7315e49c28cc0ddd06c39e01f58 mins ago0x75ef22ecb87605036d2a2ea77b76f0508bdb8d43  IN   0xd97e471695f73d8186deabc1ab5b8765e667cd960 Ether0.000470412
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: EmcoToken
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;
/**
 * @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 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    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 a / b;
  }

  /**
  * @dev Subtracts 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 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender)
    public view returns (uint256);

  function transferFrom(address from, address to, uint256 value)
    public returns (bool);

  function approve(address spender, uint256 value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint _subtractedValue
  )
    public
    returns (bool)
  {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

/**
* @title Emco token
* @dev Emco token implementation
*/
contract EmcoToken is StandardToken, Ownable {

	string public constant name = "EmcoToken";
	string public constant symbol = "EMCO";
	uint8 public constant decimals = 18;

	uint public constant INITIAL_SUPPLY = 1500000 * (10 ** uint(decimals));
	uint public constant MAX_SUPPLY = 36000000 * (10 ** uint(decimals));

	mapping (address => uint) public miningBalances;
	mapping (address => uint) public lastMiningBalanceUpdateTime;

	address systemAddress;

	uint public constant DAY_MINING_DEPOSIT_LIMIT = 360000 * (10 ** uint(decimals));
	uint public constant TOTAL_MINING_DEPOSIT_LIMIT = 3600000 * (10 ** uint(decimals));
	uint currentDay;
	uint currentDayDeposited;
	uint public miningTotalDeposited;

	mapping(address => bytes32) public userReferralCodes;
	mapping(bytes32 => address) public referralCodeOwners;
	mapping(address => address) public referrals;

	event Mine(address indexed beneficiary, uint value);

	event MiningBalanceUpdated(address indexed owner, uint amount, bool isDeposit);

	constructor() public {
		balances[msg.sender] = INITIAL_SUPPLY;
		systemAddress = msg.sender;
		totalSupply_ = INITIAL_SUPPLY;
		emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
	}

	function setReferralCode(bytes32 _code) public returns (bytes32) {
		require(_code != "", "Ref code should not be empty");
		require(referralCodeOwners[_code] == address(0), "This referral code is already used");
		require(userReferralCodes[msg.sender] == "", "Referal code is already set");
		userReferralCodes[msg.sender] = _code;
		referralCodeOwners[_code] = msg.sender;
		return userReferralCodes[msg.sender];
	}

	function setReferral(bytes32 _code) public {
		require(referralCodeOwners[_code] != address(0), "Invalid referral code");
		require(referrals[msg.sender] == address(0), "You already have a referrer");
		address referrer = referralCodeOwners[_code];
		require(referrer != msg.sender, "Can not invite yourself");
		referrals[msg.sender] = referrer;
	}

	/**
	* @dev Gets the balance of specified address (amount of tokens on main balance 
	* plus amount of tokens on mining balance).
	* @param _owner The address to query the balance of.
	* @return An uint256 representing the amount owned by the passed address.
	*/
	function balanceOf(address _owner) public view returns (uint balance) {
		return balances[_owner].add(miningBalances[_owner]);
	}

	/**
	* @dev Gets the mining balance if caller.
	* @param _owner The address to query the balance of.
	* @return An uint256 representing the amount of tokens of caller's mining balance
	*/
	function miningBalanceOf(address _owner) public view returns (uint balance) {
		return miningBalances[_owner];
	}

	/**
	* @dev Moves specified amount of tokens from main balance to mining balance 
	* @param _amount An uint256 representing the amount of tokens to transfer to main balance
	*/
	function depositToMiningBalance(uint _amount) public {
		require(balances[msg.sender] >= _amount, "not enough tokens");
		require(getCurrentDayDeposited().add(_amount) <= DAY_MINING_DEPOSIT_LIMIT,
			"Day mining deposit exceeded");
		require(miningTotalDeposited.add(_amount) <= TOTAL_MINING_DEPOSIT_LIMIT,
			"Total mining deposit exceeded");

		balances[msg.sender] = balances[msg.sender].sub(_amount);
		miningBalances[msg.sender] = miningBalances[msg.sender].add(_amount);
		miningTotalDeposited = miningTotalDeposited.add(_amount);
		updateCurrentDayDeposited(_amount);
		lastMiningBalanceUpdateTime[msg.sender] = now;
		emit MiningBalanceUpdated(msg.sender, _amount, true);
	}

	/**
	* @dev Moves specified amount of tokens from mining balance to main balance
	* @param _amount An uint256 representing the amount of tokens to transfer to mining balance
	*/
	function withdrawFromMiningBalance(uint _amount) public {
		require(miningBalances[msg.sender] >= _amount, "not enough tokens on mining balance");

		miningBalances[msg.sender] = miningBalances[msg.sender].sub(_amount);
		balances[msg.sender] = balances[msg.sender].add(_amount);

		//updating mining limits
		miningTotalDeposited.sub(_amount);
		lastMiningBalanceUpdateTime[msg.sender] = now;
		emit MiningBalanceUpdated(msg.sender, _amount, false);
	}

	/**
	* @dev Mine tokens. For every 24h for each user�s token on mining balance, 
	* 1% is burnt on mining balance and Reward % is minted to the main balance. 15% fee of difference 
	* between minted coins and burnt coins goes to system address.
	*/ 
	function mine() public {
		require(totalSupply_ < MAX_SUPPLY, "mining is over");
		uint reward = getReward(totalSupply_);
		uint daysForReward = getDaysForReward();

		uint mintedAmount = miningBalances[msg.sender].mul(reward.sub(1000000000))
										.mul(daysForReward).div(100000000000);
		require(mintedAmount != 0, "mining will not produce any reward");

		uint amountToBurn = miningBalances[msg.sender].mul(daysForReward).div(100);

		//check exceeding max number of tokens
		if(totalSupply_.add(mintedAmount) > MAX_SUPPLY) {
			uint availableToMint = MAX_SUPPLY.sub(totalSupply_);
			amountToBurn = availableToMint.div(mintedAmount).mul(amountToBurn);
			mintedAmount = availableToMint;
		}

		totalSupply_ = totalSupply_.add(mintedAmount);

		miningBalances[msg.sender] = miningBalances[msg.sender].sub(amountToBurn);
		balances[msg.sender] = balances[msg.sender].add(amountToBurn);

		uint userReward;
		uint referrerReward = 0;
		address referrer = referrals[msg.sender];
		
		if(referrer == address(0)) {
			userReward = mintedAmount.mul(85).div(100);
		} else {
			userReward = mintedAmount.mul(86).div(100);
			referrerReward = mintedAmount.div(100);
			balances[referrer] = balances[referrer].add(referrerReward);
			emit Mine(referrer, referrerReward);
			emit Transfer(address(0), referrer, referrerReward);
		}
		balances[msg.sender] = balances[msg.sender].add(userReward);

		emit Mine(msg.sender, userReward);
		emit Transfer(address(0), msg.sender, userReward);

		//update limits
		miningTotalDeposited = miningTotalDeposited.sub(amountToBurn);
		emit MiningBalanceUpdated(msg.sender, amountToBurn, false);

		//set system fee
		uint systemFee = mintedAmount.sub(userReward).sub(referrerReward);
		balances[systemAddress] = balances[systemAddress].add(systemFee);

		emit Mine(systemAddress, systemFee);
		emit Transfer(address(0), systemAddress, systemFee);

		lastMiningBalanceUpdateTime[msg.sender] = now;
	}

	/**
	* @dev Set system address
	* @param _systemAddress An address to set
	*/
	function setSystemAddress(address _systemAddress) public onlyOwner {
		systemAddress = _systemAddress;
	}

	/**
	* @dev Get sum of deposits to mining accounts for current day
	*/
	function getCurrentDayDeposited() public view returns (uint) {
		if(now / 1 days == currentDay) {
			return currentDayDeposited;
		} else {
			return 0;
		}
	}

	/**
	* @dev Get number of days for reward on mining. Maximum 100 days.
	* @return An uint256 representing number of days user will get reward for.
	*/
	function getDaysForReward() public view returns (uint rewardDaysNum){
		if(lastMiningBalanceUpdateTime[msg.sender] == 0) {
			return 0;
		} else {
			uint value = (now - lastMiningBalanceUpdateTime[msg.sender]) / (1 days);
			if(value > 100) {
				return 100;
			} else {
				return value;
			}
		}
	}

	/**
	* @dev Calculate current mining reward based on total supply of tokens
	* @return An uint256 representing reward in percents multiplied by 1000000000
	*/
	function getReward(uint _totalSupply) public pure returns (uint rewardPercent){
		uint rewardFactor = 1000000 * (10 ** uint256(decimals));
		uint decreaseFactor = 41666666;

		if(_totalSupply < 23 * rewardFactor) {
			return 2000000000 - (decreaseFactor.mul(_totalSupply.div(rewardFactor)));
		}

		if(_totalSupply < MAX_SUPPLY) {
			return 1041666666;
		} else {
			return 1000000000;
		} 
	}

	function updateCurrentDayDeposited(uint _addedTokens) private {
		if(now / 1 days == currentDay) {
			currentDayDeposited = currentDayDeposited.add(_addedTokens);
		} else {
			currentDay = now / 1 days;
			currentDayDeposited = _addedTokens;
		}
	}

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"TOTAL_MINING_DEPOSIT_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_systemAddress","type":"address"}],"name":"setSystemAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAY_MINING_DEPOSIT_LIMIT","outputs":[{"name":"","type":"uint256"}],"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":"_totalSupply","type":"uint256"}],"name":"getReward","outputs":[{"name":"rewardPercent","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getDaysForReward","outputs":[{"name":"rewardDaysNum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes32"}],"name":"setReferralCode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes32"}],"name":"setReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawFromMiningBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miningTotalDeposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"referralCodeOwners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastMiningBalanceUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userReferralCodes","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referrals","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"depositToMiningBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"miningBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"miningBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentDayDeposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mine","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"isDeposit","type":"bool"}],"name":"MiningBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b506003805433600160a060020a031991821681179092556000828152602081815260408083206a013da329b633647180000090819055600680549095168617909455600184905580519384525191927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611af5806100996000396000f3006080604052600436106101ab5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630557cac081146101b057806306210197146101d757806306fdde03146101fa578063095ea7b31461028457806317d40160146102bc57806318160ddd146102d15780631c4b774b146102e65780631dcf0dd8146102fe57806323b872dd146103135780632d5aa3ad1461033d5780632ff2e9dc14610355578063313ce5671461036a57806332cb6b0c1461039557806338b3ee85146103aa5780634a207b75146103c257806355ae74d6146103da5780635d430302146103ef57806362b347bc14610423578063661884631461044457806370a0823114610468578063715018a6146104895780638da5cb5b1461049e57806395d89b41146104b357806399f4b251146104c85780639b2c76d4146104dd5780639ca423b3146104fe578063a9059cbb1461051f578063b1e5e92814610543578063c0c9b55a1461055b578063d73dd6231461057c578063dd62ed3e146105a0578063f2fde38b146105c7578063fca4bfdf146105e8578063ff3aac9914610609575b600080fd5b3480156101bc57600080fd5b506101c561061e565b60408051918252519081900360200190f35b3480156101e357600080fd5b506101f8600160a060020a036004351661062d565b005b34801561020657600080fd5b5061020f610673565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610249578181015183820152602001610231565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029057600080fd5b506102a8600160a060020a03600435166024356106aa565b604080519115158252519081900360200190f35b3480156102c857600080fd5b506101c5610711565b3480156102dd57600080fd5b506101c561071f565b3480156102f257600080fd5b506101c5600435610726565b34801561030a57600080fd5b506101c56107a6565b34801561031f57600080fd5b506102a8600160a060020a03600435811690602435166044356107fb565b34801561034957600080fd5b506101c5600435610960565b34801561036157600080fd5b506101c5610af7565b34801561037657600080fd5b5061037f610b06565b6040805160ff9092168252519081900360200190f35b3480156103a157600080fd5b506101c5610b0b565b3480156103b657600080fd5b506101f8600435610b1a565b3480156103ce57600080fd5b506101f8600435610ca4565b3480156103e657600080fd5b506101c5610df1565b3480156103fb57600080fd5b50610407600435610df7565b60408051600160a060020a039092168252519081900360200190f35b34801561042f57600080fd5b506101c5600160a060020a0360043516610e12565b34801561045057600080fd5b506102a8600160a060020a0360043516602435610e24565b34801561047457600080fd5b506101c5600160a060020a0360043516610f14565b34801561049557600080fd5b506101f8610f46565b3480156104aa57600080fd5b50610407610fb4565b3480156104bf57600080fd5b5061020f610fc3565b3480156104d457600080fd5b506101f8610ffa565b3480156104e957600080fd5b506101c5600160a060020a0360043516611540565b34801561050a57600080fd5b50610407600160a060020a0360043516611552565b34801561052b57600080fd5b506102a8600160a060020a036004351660243561156d565b34801561054f57600080fd5b506101f860043561163c565b34801561056757600080fd5b506101c5600160a060020a036004351661185f565b34801561058857600080fd5b506102a8600160a060020a0360043516602435611871565b3480156105ac57600080fd5b506101c5600160a060020a036004358116906024351661190a565b3480156105d357600080fd5b506101f8600160a060020a0360043516611935565b3480156105f457600080fd5b506101c5600160a060020a0360043516611958565b34801561061557600080fd5b506101c5611973565b6a02fa54641bae8aaa00000081565b600354600160a060020a0316331461064457600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408051808201909152600981527f456d636f546f6b656e0000000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b694c3ba39c5e411100000081565b6001545b90565b600069d3c21bcecceda100000063027bc86a6a1306707f946959770000008410156107785761076b61075e858463ffffffff61199616565b829063ffffffff6119ab16565b637735940003925061079f565b6a1dc74be914d16aa400000084101561079757633e16926a925061079f565b633b9aca0092505b5050919050565b33600090815260056020526040812054819015156107c757600091506107f7565b336000908152600560205260409020546201518090420304905060648111156107f357606491506107f7565b8091505b5090565b6000600160a060020a038316151561081257600080fd5b600160a060020a03841660009081526020819052604090205482111561083757600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561086757600080fd5b600160a060020a038416600090815260208190526040902054610890908363ffffffff6119d416565b600160a060020a0380861660009081526020819052604080822093909355908516815220546108c5908363ffffffff6119e616565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610907908363ffffffff6119d416565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611aaa833981519152929181900390910190a35060019392505050565b60008115156109b9576040805160e560020a62461bcd02815260206004820152601c60248201527f52656620636f64652073686f756c64206e6f7420626520656d70747900000000604482015290519081900360640190fd5b6000828152600b6020526040902054600160a060020a031615610a4c576040805160e560020a62461bcd02815260206004820152602260248201527f5468697320726566657272616c20636f646520697320616c726561647920757360448201527f6564000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600a602052604090205415610ab1576040805160e560020a62461bcd02815260206004820152601b60248201527f5265666572616c20636f646520697320616c7265616479207365740000000000604482015290519081900360640190fd5b50336000818152600a60208181526040808420868155958452600b82528320805473ffffffffffffffffffffffffffffffffffffffff1916851790559290915290525490565b6a013da329b633647180000081565b601281565b6a1dc74be914d16aa400000081565b6000818152600b6020526040812054600160a060020a03161515610b88576040805160e560020a62461bcd02815260206004820152601560248201527f496e76616c696420726566657272616c20636f64650000000000000000000000604482015290519081900360640190fd5b336000908152600c6020526040902054600160a060020a031615610bf6576040805160e560020a62461bcd02815260206004820152601b60248201527f596f7520616c7265616479206861766520612072656665727265720000000000604482015290519081900360640190fd5b506000818152600b6020526040902054600160a060020a031633811415610c67576040805160e560020a62461bcd02815260206004820152601760248201527f43616e206e6f7420696e7669746520796f757273656c66000000000000000000604482015290519081900360640190fd5b336000908152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b33600090815260046020526040902054811115610d31576040805160e560020a62461bcd02815260206004820152602360248201527f6e6f7420656e6f75676820746f6b656e73206f6e206d696e696e672062616c6160448201527f6e63650000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054610d51908263ffffffff6119d416565b336000908152600460209081526040808320939093558190522054610d7c908263ffffffff6119e616565b33600090815260208190526040902055600954610d9f908263ffffffff6119d416565b5033600081815260056020908152604080832042905580518581529182019290925281517f822ade8c81d527897e088fa789edb7c459003f063f4f89c9d7fe43a0b0da10f3929181900390910190a250565b60095481565b600b60205260009081526040902054600160a060020a031681565b60056020526000908152604090205481565b336000908152600260209081526040808320600160a060020a038616845290915281205480831115610e7957336000908152600260209081526040808320600160a060020a0388168452909152812055610eae565b610e89818463ffffffff6119d416565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a0381166000908152600460209081526040808320549183905282205461070b9163ffffffff6119e616565b600354600160a060020a03163314610f5d57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600160a060020a031681565b60408051808201909152600481527f454d434f00000000000000000000000000000000000000000000000000000000602082015281565b6000806000806000806000806000601260ff16600a0a630225510002600154101515611070576040805160e560020a62461bcd02815260206004820152600e60248201527f6d696e696e67206973206f766572000000000000000000000000000000000000604482015290519081900360640190fd5b61107b600154610726565b98506110856107a6565b97506110df64174876e8006110d38a6110c76110ab8e633b9aca0063ffffffff6119d416565b336000908152600460205260409020549063ffffffff6119ab16565b9063ffffffff6119ab16565b9063ffffffff61199616565b965086151561115e576040805160e560020a62461bcd02815260206004820152602260248201527f6d696e696e672077696c6c206e6f742070726f6475636520616e79207265776160448201527f7264000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054611185906064906110d3908b63ffffffff6119ab16565b6001549096506a1dc74be914d16aa4000000906111a8908963ffffffff6119e616565b11156111e9576001546111cd906a1dc74be914d16aa40000009063ffffffff6119d416565b94506111e3866110c7878a63ffffffff61199616565b95508496505b6001546111fc908863ffffffff6119e616565b6001553360009081526004602052604090205461121f908763ffffffff6119d416565b33600090815260046020908152604080832093909355819052205461124a908763ffffffff6119e616565b3360009081526020818152604080832093909355600c905290812054909350600160a060020a031691508115156112985761129160646110d389605563ffffffff6119ab16565b935061136d565b6112ae60646110d389605663ffffffff6119ab16565b93506112c187606463ffffffff61199616565b600160a060020a0383166000908152602081905260409020549093506112ed908463ffffffff6119e616565b600160a060020a03831660008181526020818152604091829020939093558051868152905191927ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d192918290030190a2604080518481529051600160a060020a03841691600091600080516020611aaa8339815191529181900360200190a35b3360009081526020819052604090205461138d908563ffffffff6119e616565b3360008181526020818152604091829020939093558051878152905191927ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d192918290030190a26040805185815290513391600091600080516020611aaa8339815191529181900360200190a360095461140d908763ffffffff6119d416565b6009556040805187815260006020820152815133927f822ade8c81d527897e088fa789edb7c459003f063f4f89c9d7fe43a0b0da10f3928290030190a261146a8361145e898763ffffffff6119d416565b9063ffffffff6119d416565b600654600160a060020a0316600090815260208190526040902054909150611498908263ffffffff6119e616565b60068054600160a060020a0390811660009081526020818152604091829020949094559154825185815292519116927ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d1928290030190a2600654604080518381529051600160a060020a0390921691600091600080516020611aaa833981519152919081900360200190a3505033600090815260056020526040902042905550505050505050565b600a6020526000908152604090205481565b600c60205260009081526040902054600160a060020a031681565b6000600160a060020a038316151561158457600080fd5b336000908152602081905260409020548211156115a057600080fd5b336000908152602081905260409020546115c0908363ffffffff6119d416565b3360009081526020819052604080822092909255600160a060020a038516815220546115f2908363ffffffff6119e616565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611aaa8339815191529281900390910190a350600192915050565b336000908152602081905260409020548111156116a3576040805160e560020a62461bcd02815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000604482015290519081900360640190fd5b694c3ba39c5e41110000006116c6826116ba611973565b9063ffffffff6119e616565b111561171c576040805160e560020a62461bcd02815260206004820152601b60248201527f446179206d696e696e67206465706f7369742065786365656465640000000000604482015290519081900360640190fd5b6009546a02fa54641bae8aaa0000009061173c908363ffffffff6119e616565b1115611792576040805160e560020a62461bcd02815260206004820152601d60248201527f546f74616c206d696e696e67206465706f736974206578636565646564000000604482015290519081900360640190fd5b336000908152602081905260409020546117b2908263ffffffff6119d416565b33600090815260208181526040808320939093556004905220546117dc908263ffffffff6119e616565b336000908152600460205260409020556009546117ff908263ffffffff6119e616565b60095561180b816119f3565b33600081815260056020908152604091829020429055815184815260019181019190915281517f822ade8c81d527897e088fa789edb7c459003f063f4f89c9d7fe43a0b0da10f3929181900390910190a250565b60046020526000908152604090205481565b336000908152600260209081526040808320600160a060020a03861684529091528120546118a5908363ffffffff6119e616565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461194c57600080fd5b61195581611a2b565b50565b600160a060020a031660009081526004602052604090205490565b600754600090620151804204141561198e5750600854610723565b506000610723565b600081838115156119a357fe5b049392505050565b60008215156119bc5750600061070b565b508181028183828115156119cc57fe5b041461070b57fe5b6000828211156119e057fe5b50900390565b8181018281101561070b57fe5b6007546201518042041415611a1d57600854611a15908263ffffffff6119e616565b600855611955565b620151804204600755600855565b600160a060020a0381161515611a4057600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820c189e63afbb9179236d1708615a937d530a465bcdec5d276e9e295c080fdab860029

   Swarm Source:
bzzr://c189e63afbb9179236d1708615a937d530a465bcdec5d276e9e295c080fdab86

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.