Contract 0xEF68e7C694F40c8202821eDF525dE3782458639f

 

Contract Overview

Loopring
Balance:
0 Ether

EtherValue:
$0

Token:
TxHash Block Age From To Value [TxFee]
0x565a77b7567ac91a3ac9ac5bcd37e7d0d107e8ca974154876e4abe3cb488fa08(pending)10 hrs 3 mins ago0x3d2f9caef6625f406176058b7998452f934826ef  IN  0xef68e7c694f40c8202821edf525de3782458639f0 Ether(Pending)
0x4bbe31666d72240023b3074e034eeccb7cd4cfe1e84ba2bd1846362033bd75b2(pending)15 hrs 41 mins ago0x0b4b6d57ea8649adfbbf709709f7ff3ff2ce31f2  IN  0xef68e7c694f40c8202821edf525de3782458639f0 Ether(Pending)
0x07caba45a78fe4702444c6f4d22d203e155f73569ef07572eec82952c3d29df2723754216 mins ago0x09ba17767fa2c115f3fd7acac424c14e991e79d4  IN   Loopring0 Ether0.000332235
0x87bccd983d042fa13fb7171d09ac0c57d15c2995c98730c2697acdc0bca82c33723751029 mins ago0x3b64824af88dd5a4fbd5831971c735b039392a9a  IN   Loopring0 Ether0.00021915
0x3f4d13bd58fff509166c9c83e98237a9931932c32600a859ee847be98af1358f723750630 mins ago0x349627ba8b2db20e9f569e5dde327dbf4339a7da  IN   Loopring0 Ether0.00131874
0xed6ffe5ca79f2c0212774669bb107eabcece97e20715d39db8723ebcefa49242723750331 mins ago0x986ccf5234d9cfbb25246f1a5bfa51f4ccfcb308  IN   Loopring0 Ether0.00043702
0x7326d41e790a3a8ce58b595474516b2a03bd728d2d3b9c4ac10b9cfd8cb99f79723749434 mins agoBinance_3  IN   Loopring0 Ether0.0014766
0x5c37205c4344f1340e664883e0b9f4c7a23b39e704777132777445fe700e5102723748835 mins ago0x266f108bf1e68c2f98719a45e80d2e62da576059  IN   Loopring0 Ether0.000071398812
0x156654d3804ea1ea656ca39fb0422ad9be98422dcea2bd937647eee96ef8fc8d723748435 mins agoOkex_1  IN   Loopring0 Ether0.001819265
0x007c096cb6cd0b33942e284e44f675537f78606967e8f4a62ca5dcc5556deb35723747837 mins ago0xef596382a66ba22ea53227c3a80224adfb50b386  IN   Loopring0 Ether0.00021851
0x529d8690475ea096be54ee305f46554b9e51f70bbd8451c041077aaf8b58a5d9723746143 mins agoBittrex_1  IN   Loopring0 Ether0.00259575
0xcad7c2a540edb8e1b446c83d0d03cfb40cb05b025dc8c54d3409c440678922f8723745346 mins agoBinance_2  IN   Loopring0 Ether0.00207916
0x07d2cde6cbb72c0672614bcc1485651c236c02a4379fdb802a35b3aff5dceeba72374081 hr ago0x52e6920141bf00d4535c1dd4420cdec0b633a6c4  IN   Loopring0 Ether0.000331659
0x4bcb137beff138ff3dbd3868e0819b1ed69abce235499b0f4fd273a847031b0072374061 hr ago0x9ca2d3d9d04f8a46da242716302469510fc0ebfc  IN   Loopring0 Ether0.0013149
0xa15bc82af5164bd1f6e93511f14eb2adcee318be6e45a95de3513ab92444afc172374051 hr ago0xd99ebf86e34cf04328d93fab89f7cab12044e89d  IN   Loopring0 Ether0.000466083
0x9c2c2b560096f45e8d912231ccc2c1e974046723ff1dc995ef9f6e1fda6c694172373911 hr 5 mins ago0x0a2311594059b468c9897338b027c8782398b481  IN   Loopring0 Ether0.000197235
0xbe8e4ed5243636da62e8463335a2e9f1eb1459105466ec595e8d39a9fdb8487972373451 hr 22 mins agoBinance_4  IN   Loopring0 Ether0.0020766
0x1eb76f933e5ea42373fcf7bff91fe7a7e457212cbeac11ef2c87d234ae578ca672372731 hr 45 mins ago0x9fb807d1d9b10d28a5a6381633ed7da6824a66c8  IN   Loopring0 Ether0.0013149
0x171897c6f693284ee28caf33ddf3cf89e331f4e4d17653e88f7c4d302397a5fa72372651 hr 48 mins ago0xc315345cab7088e46304e02c097f0a922893302c  IN   Loopring0 Ether0.000278568
0x5572a11c6defb43300496f23d4d951bdc7381f58aacf66a671acc6939ceb7de772372601 hr 50 mins ago0x885f9346e1b8db6758b1aeadf4ad7678792008a3  IN   Loopring0 Ether0.0004383
0x9f9f9d2bff91c52daf07944919db3685621fe62f9100ceb2bd97b53ad4672e1c72372551 hr 54 mins agoBinance_2  IN   Loopring0 Ether0.0014766
0xe504c9ec5599dbf9aebacc9adc032e76dde89fb63b9ab94b57d89a6203dea86172372352 hrs ago0x349627ba8b2db20e9f569e5dde327dbf4339a7da  IN   Loopring0 Ether0.00131874
0x3988d4b48a734c41389fe81473c94f482887c68c73c3d52c9c4b0211212721b072372302 hrs 1 min agoBinance_2  IN   Loopring0 Ether0.0020766
0x81451038afb10ff515ed1d459dbb816ea30006f9b616b7e8bff4438fa0a6fb1c72372212 hrs 7 mins agoBinance_3  IN   Loopring0 Ether0.0020766
0xb737e8d762442c145dcc7d1851d9f1920a3dbfe1b7ae13015af31e0c4d1729e272372052 hrs 12 mins ago0xe01d3aeed36eb59c9321e4266b561d8588c2c5d2  IN   Loopring0 Ether0.000571065
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x563fe10af69086b73efa003995ddfc899f7399eb696ea29bf0b9d38483cc10114168082550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c321039.9 Ether
0x4ea19862a4e036e2d63dd57c13e66a6c502a0a13bf942e6db37eecc69116887c4168082550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c321010 Ether
0x00035691a1ff88de5d31044ac6a99fa425abfdd8f3dbd07959e8e7a703a51afc4168079550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32102 Ether
0x06131c985c31a822ee4fc7aac04cdcc3740ff355f6f912303920a63d7c569f804168079550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.01 Ether
0x4b76fc288c02b402d58bc779f5794a7fb870e61651dd06386bae0df6f854aaf64168077550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c321011 Ether
0x24422c3742742111be4991ff05844c4f827df0d3116a0ded90fc49421411ce854168071550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32101 Ether
0x49c945616444b324188e19f3cf3dc287bd85b7102d77c8fef3e8bc9f37aef9a44168071550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32103.02 Ether
0x9090d964f60e3ac2396967825dc45dd1df594309f42ffe0a878e05c56d4acf664168071550 days 14 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.5 Ether
0x48b7c0711d25e8fd0e6441334f9c615cc0ee9a1466f5cc601a4c714bc041d3784168064550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32102.4 Ether
0x71981693d9467ac501e59dd88ae7dc33d9626e8aa69d2f73fda1d6cf3094f70d4168064550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32101 Ether
0xbb3c131765b167956613269283e8efb5e276610f0a3adcec7e318ea4bf8bde2c4168059550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32101.5 Ether
0x8a02b3207c8cbea6f7ac513d78ab8f4f1912bb491326a2ec232218dc595b84464168059550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c321010 Ether
0xc09e69eb20f81c8507c1a27375729b689859afe72d34ab81a5ab78cd1a73fad74168057550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.06 Ether
0xfca5dc056c837579ae97ba0e95cd2b61d66727b5e0a024dce1d9d7c85daf4c7e4168054550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32102 Ether
0x9ad229e3b20dcbec16f3da7fd7da7b4399c0964e6b85b55d11be5e4107e3316d4168054550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.5 Ether
0x51105d7f4160c4b572128f199b08aa03c8d30fc5fb8919690790763f75b936ca4168051550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32101 Ether
0x41b70620be547e66ecd65ecd1e30c3184c8ef1a01a2cafbbb26bc91d7bdee5114168051550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32104.280637246025 Ether
0xb9ac8c5c972f0513250cc8220c722c0be03b15354b5ae05eeec2f7fe2c18fa5f4168049550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c3210389 Ether
0xd935883034b49003083869c44c0ccbe5430dbe3317bf99f6a186d59df5dba7a14168046550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c3210284.8 Ether
0x36945d17845a06c94a8ce23e201b446cdb093dfb3839c4ac1f28bda152dd55914168046550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c3210330 Ether
0xf5f84bf164dbcea5b6a0747be52680353d8529594f2e73bf07e65f2eee3bf1174168046550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.01 Ether
0x2f467860510f9c5b98749c88750473008fc017df0d2ddc612cc1c1bb755102484168046550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.5 Ether
0xf96bcbba4cda2e28645167a1a4fd9610ac60a60fbb4161fadd2765eb2b0ab2394168044550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.01 Ether
0x897c9850d8c5151c968a638cb388091f9d41f9069c4f4e5209075068ca1be2694168044550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32100.4 Ether
0xe4f25cab5e78fea6e0645d66cf12f406a9f5209e4265edca18cd735fb69abaf14168044550 days 15 hrs ago0xef68e7c694f40c8202821edf525de3782458639f0x00073f7155459c9205010cb3453a0f392a0c32101.2198 Ether
[ Download CSV Export 
Contract Name: LoopringToken
Compiler Version: v0.4.13+commit.fb4cb1a
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
/*

  Copyright 2017 Loopring Foundation.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

*/
pragma solidity ^0.4.11;

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

/**
 * Math operations with safety checks
 */
library SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint a, uint b) internal returns (uint) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function add(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}

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

  mapping(address => uint) balances;

  /**
   * @dev Fix for the ERC20 short address attack.
   */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }

  /**
  * @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, uint _value) onlyPayloadSize(2 * 32) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
  }

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

}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint);
  function transferFrom(address from, address to, uint value);
  function approve(address spender, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implemantation of the basic standart 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 BasicToken, ERC20 {

  mapping (address => mapping (address => uint)) 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 uint the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;

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

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on beahlf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint _value) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
  }

  /**
   * @dev Function to check the amount of tokens than 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 uint specifing the amount of tokens still avaible for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}

/// @title Loopring Protocol Token.
/// For more information about this token sale, please visit https://loopring.org
/// @author Kongliang Zhong - <[email protected]>, Daniel Wang - <[email protected]>.
contract LoopringToken is StandardToken {
    string public constant NAME = "LoopringCoin";
    string public constant SYMBOL = "LRC";
    uint public constant DECIMALS = 18;

    /// During token sale, we use one consistent price: 5000 LRC/ETH.
    /// We split the entire token sale period into 10 phases, each
    /// phase has a different bonus setting as specified in `bonusPercentages`.
    /// The real price for phase i is `(1 + bonusPercentages[i]/100.0) * BASE_RATE`.
    /// The first phase or early-bird phase has a much higher bonus.
    uint8[10] public bonusPercentages = [
        20,
        16,
        14,
        12,
        10,
        8,
        6,
        4,
        2,
        0
    ];

    uint public constant NUM_OF_PHASE = 10;
  
    /// Each phase contains exactly 15250 Ethereum blocks, which is roughly 3 days,
    /// which makes this 10-phase sale period roughly 30 days.
    /// See https://www.ethereum.org/crowdsale#scheduling-a-call
    uint16 public constant BLOCKS_PER_PHASE = 15250;

    /// This is where we hold ETH during this token sale. We will not transfer any Ether
    /// out of this address before we invocate the `close` function to finalize the sale. 
    /// This promise is not guanranteed by smart contract by can be verified with public
    /// Ethereum transactions data available on several blockchain browsers.
    /// This is the only address from which `start` and `close` can be invocated.
    ///
    /// Note: this will be initialized during the contract deployment.
    address public target;

    /// `firstblock` specifies from which block our token sale starts.
    /// This can only be modified once by the owner of `target` address.
    uint public firstblock = 0;

    /// Indicates whether unsold token have been issued. This part of LRC token
    /// is managed by the project team and is issued directly to `target`.
    bool public unsoldTokenIssued = false;

    /// Minimum amount of funds to be raised for the sale to succeed. 
    uint256 public constant GOAL = 50000 ether;

    /// Maximum amount of fund to be raised, the sale ends on reaching this amount.
    uint256 public constant HARD_CAP = 120000 ether;

    /// Maximum unsold ratio, this is hit when the mininum level of amount of fund is raised.
    uint public constant MAX_UNSOLD_RATIO = 675; // 67.5%

    /// Base exchange rate is set to 1 ETH = 5000 LRC.
    uint256 public constant BASE_RATE = 5000;

    /// A simple stat for emitting events.
    uint public totalEthReceived = 0;

    /// Issue event index starting from 0.
    uint public issueIndex = 0;

    /* 
     * EVENTS
     */

    /// Emitted only once after token sale starts.
    event SaleStarted();

    /// Emitted only once after token sale ended (all token issued).
    event SaleEnded();

    /// Emitted when a function is invocated by unauthorized addresses.
    event InvalidCaller(address caller);

    /// Emitted when a function is invocated without the specified preconditions.
    /// This event will not come alone with an exception.
    event InvalidState(bytes msg);

    /// Emitted for each sucuessful token purchase.
    event Issue(uint issueIndex, address addr, uint ethAmount, uint tokenAmount);

    /// Emitted if the token sale succeeded.
    event SaleSucceeded();

    /// Emitted if the token sale failed.
    /// When token sale failed, all Ether will be return to the original purchasing
    /// address with a minor deduction of transaction fee(gas)
    event SaleFailed();

    /*
     * MODIFIERS
     */

    modifier onlyOwner {
        if (target == msg.sender) {
            _;
        } else {
            InvalidCaller(msg.sender);
            throw;
        }
    }

    modifier beforeStart {
        if (!saleStarted()) {
            _;
        } else {
            InvalidState("Sale has not started yet");
            throw;
        }
    }

    modifier inProgress {
        if (saleStarted() && !saleEnded()) {
            _;
        } else {
            InvalidState("Sale is not in progress");
            throw;
        }
    }

    modifier afterEnd {
        if (saleEnded()) {
            _;
        } else {
            InvalidState("Sale is not ended yet");
            throw;
        }
    }

    /**
     * CONSTRUCTOR 
     * 
     * @dev Initialize the Loopring Token
     * @param _target The escrow account address, all ethers will
     * be sent to this address.
     * This address will be : 0x00073F7155459C9205010Cb3453a0f392a0C3210
     */
    function LoopringToken(address _target) {
        target = _target;
    }

    /*
     * PUBLIC FUNCTIONS
     */

    /// @dev Start the token sale.
    /// @param _firstblock The block from which the sale will start.
    function start(uint _firstblock) public onlyOwner beforeStart {
        if (_firstblock <= block.number) {
            // Must specify a block in the future.
            throw;
        }

        firstblock = _firstblock;
        SaleStarted();
    }

    /// @dev Triggers unsold tokens to be issued to `target` address.
    function close() public onlyOwner afterEnd {
        if (totalEthReceived < GOAL) {
            SaleFailed();
        } else {
            issueUnsoldToken();
            SaleSucceeded();
        }
    }

    /// @dev Returns the current price.
    function price() public constant returns (uint tokens) {
        return computeTokenAmount(1 ether);
    }

    /// @dev This default function allows token to be purchased by directly
    /// sending ether to this smart contract.
    function () payable {
        issueToken(msg.sender);
    }

    /// @dev Issue token based on Ether received.
    /// @param recipient Address that newly issued token will be sent to.
    function issueToken(address recipient) payable inProgress {
        // We only accept minimum purchase of 0.01 ETH.
        assert(msg.value >= 0.01 ether);

        uint tokens = computeTokenAmount(msg.value);
        totalEthReceived = totalEthReceived.add(msg.value);
        totalSupply = totalSupply.add(tokens);
        balances[recipient] = balances[recipient].add(tokens);

        Issue(
            issueIndex++,
            recipient,
            msg.value,
            tokens
        );

        if (!target.send(msg.value)) {
            throw;
        }
    }

    /*
     * INTERNAL FUNCTIONS
     */
  
    /// @dev Compute the amount of LRC token that can be purchased.
    /// @param ethAmount Amount of Ether to purchase LRC.
    /// @return Amount of LRC token to purchase
    function computeTokenAmount(uint ethAmount) internal constant returns (uint tokens) {
        uint phase = (block.number - firstblock).div(BLOCKS_PER_PHASE);

        // A safe check
        if (phase >= bonusPercentages.length) {
            phase = bonusPercentages.length - 1;
        }

        uint tokenBase = ethAmount.mul(BASE_RATE);
        uint tokenBonus = tokenBase.mul(bonusPercentages[phase]).div(100);

        tokens = tokenBase.add(tokenBonus);
    }

    /// @dev Issue unsold token to `target` address.
    /// The math is as follows:
    ///   +-------------------------------------------------------------+
    ///   |       Total Ethers Received        |                        |
    ///   +------------------------------------+  Unsold Token Portion  |
    ///   |   Lower Bound   |   Upper Bound    |                        |
    ///   +-------------------------------------------------------------+
    ///   |      50,000     |     60,000       |         67.5%          |
    ///   +-------------------------------------------------------------+
    ///   |      60,000     |     70,000       |         65.0%          |
    ///   +-------------------------------------------------------------+
    ///   |      70,000     |     80,000       |         62.5%          |
    ///   +-------------------------------------------------------------+
    ///   |      80,000     |     90,000       |         60.0%          |
    ///   +-------------------------------------------------------------+
    ///   |      90,000     |    100,000       |         57.5%          |
    ///   +-------------------------------------------------------------+
    ///   |     100,000     |    110,000       |         55.0%          |
    ///   +-------------------------------------------------------------+
    ///   |     110,000     |    120,000       |         52.5%          |
    ///   +-------------------------------------------------------------+
    ///   |     120,000     |                  |         50.0%          |
    ///   +-------------------------------------------------------------+
    function issueUnsoldToken() internal {
        if (unsoldTokenIssued) {
            InvalidState("Unsold token has been issued already");
        } else {
            // Add another safe guard 
            require(totalEthReceived >= GOAL);

            uint level = totalEthReceived.sub(GOAL).div(10000 ether);
            if (level > 7) {
                level = 7;
            }

            uint unsoldRatioInThousand = MAX_UNSOLD_RATIO - 25 * level;


            // Calculate the `unsoldToken` to be issued, the amount of `unsoldToken`
            // is based on the issued amount, that is the `totalSupply`, during 
            // the sale:
            //                   totalSupply
            //   unsoldToken = --------------- * r
            //                      1 - r
            uint unsoldToken = totalSupply.div(1000 - unsoldRatioInThousand).mul(unsoldRatioInThousand);

            // Adjust `totalSupply`.
            totalSupply = totalSupply.add(unsoldToken);
            // Issue `unsoldToken` to the target account.
            balances[target] = balances[target].add(unsoldToken);

            Issue(
                issueIndex++,
                target,
                0,
                unsoldToken
            );
            
            unsoldTokenIssued = true;
        }
    }

    /// @return true if sale has started, false otherwise.
    function saleStarted() constant returns (bool) {
        return (firstblock > 0 && block.number >= firstblock);
    }

    /// @return true if sale has ended, false otherwise.
    function saleEnded() constant returns (bool) {
        return firstblock > 0 && (saleDue() || hardCapReached());
    }

    /// @return true if sale is due when the last phase is finished.
    function saleDue() constant returns (bool) {
        return block.number >= firstblock + BLOCKS_PER_PHASE * NUM_OF_PHASE;
    }

    /// @return true if the hard cap is reached.
    function hardCapReached() constant returns (bool) {
        return totalEthReceived >= HARD_CAP;
    }
}

Contract ABI
[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusPercentages","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DECIMALS","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"BLOCKS_PER_PHASE","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_UNSOLD_RATIO","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"BASE_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"saleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"issueIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"issueToken","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_firstblock","type":"uint256"}],"name":"start","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"hardCapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"saleEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"unsoldTokenIssued","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"tokens","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"GOAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalEthReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"saleDue","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"target","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"NUM_OF_PHASE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"firstblock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[{"name":"_target","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"SaleStarted","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"caller","type":"address"}],"name":"InvalidCaller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg","type":"bytes"}],"name":"InvalidState","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"issueIndex","type":"uint256"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"ethAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleSucceeded","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleFailed","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
606060405261014060405190810160405280601460ff168152602001601060ff168152602001600e60ff168152602001600c60ff168152602001600a60ff168152602001600860ff168152602001600660ff168152602001600460ff168152602001600260ff168152602001600060ff16815250600390600a6200008592919062000123565b5060006005556000600660006101000a81548160ff021916908315150217905550600060075560006008553415620000bc57600080fd5b60405160208062001cd6833981016040528080519060200190919050505b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50620001f7565b82600a601f01602090048101928215620001b15791602002820160005b838211156200018057835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262000140565b8015620001af5782816101000a81549060ff021916905560010160208160000104928301926001030262000180565b505b509050620001c09190620001c4565b5090565b620001f491905b80821115620001f057600081816101000a81549060ff021916905550600101620001cb565b5090565b90565b611acf80620002076000396000f30060606040523615610173576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461018557806318160ddd146101c75780631e85107c146101f057806323b872dd1461022d5780632e0f26251461028e5780632e5ab94f146102b75780632f969d43146102e85780633a03171c1461031157806341910f901461033a57806343d726d6146103635780635c474f9e146103785780636a28f828146103a557806370a08231146103ce578063890340821461041b57806395805dad146104495780639762f8021461046c5780639b8906ae146104995780639d0f17c8146104c6578063a035b1fe146104f3578063a1bed0be1461051c578063a3f4df7e14610545578063a9059cbb146105d4578063a9a18dda14610616578063bea4ae881461063f578063d4b839921461066c578063dbefe789146106c1578063dd62ed3e146106ea578063e85365d514610756578063f76f8d781461077f575b6101835b6101803361080e565b5b565b005b341561019057600080fd5b6101c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a7c565b005b34156101d257600080fd5b6101da610bff565b6040518082815260200191505060405180910390f35b34156101fb57600080fd5b6102116004808035906020019091905050610c05565b604051808260ff1660ff16815260200191505060405180910390f35b341561023857600080fd5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c2f565b005b341561029957600080fd5b6102a1610ef1565b6040518082815260200191505060405180910390f35b34156102c257600080fd5b6102ca610ef6565b604051808261ffff1661ffff16815260200191505060405180910390f35b34156102f357600080fd5b6102fb610efc565b6040518082815260200191505060405180910390f35b341561031c57600080fd5b610324610f02565b6040518082815260200191505060405180910390f35b341561034557600080fd5b61034d610f10565b6040518082815260200191505060405180910390f35b341561036e57600080fd5b610376610f16565b005b341561038357600080fd5b61038b6110d7565b604051808215151515815260200191505060405180910390f35b34156103b057600080fd5b6103b86110f2565b6040518082815260200191505060405180910390f35b34156103d957600080fd5b610405600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110f8565b6040518082815260200191505060405180910390f35b610447600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061080e565b005b341561045457600080fd5b61046a6004808035906020019091905050611142565b005b341561047757600080fd5b61047f6112cc565b604051808215151515815260200191505060405180910390f35b34156104a457600080fd5b6104ac6112e4565b604051808215151515815260200191505060405180910390f35b34156104d157600080fd5b6104d9611310565b604051808215151515815260200191505060405180910390f35b34156104fe57600080fd5b610506611323565b6040518082815260200191505060405180910390f35b341561052757600080fd5b61052f61133c565b6040518082815260200191505060405180910390f35b341561055057600080fd5b61055861134a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105995780820151818401525b60208101905061057d565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105df57600080fd5b610614600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611383565b005b341561062157600080fd5b61062961152f565b6040518082815260200191505060405180910390f35b341561064a57600080fd5b610652611535565b604051808215151515815260200191505060405180910390f35b341561067757600080fd5b61067f61154e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106cc57600080fd5b6106d4611574565b6040518082815260200191505060405180910390f35b34156106f557600080fd5b610740600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611579565b6040518082815260200191505060405180910390f35b341561076157600080fd5b610769611601565b6040518082815260200191505060405180910390f35b341561078a57600080fd5b610792611607565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d35780820151818401525b6020810190506107b7565b50505050905090810190601f1680156108005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006108186110d7565b801561082957506108276112e4565b155b15610a0a57662386f26fc10000341015151561084157fe5b61084a34611640565b9050610861346007546116fc90919063ffffffff16565b60078190555061087c816000546116fc90919063ffffffff16565b6000819055506108d481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fe316e9c07bf6ee91102f762d73f95b6cab9dcc157278814c7408906855c6a3a66008600081548092919060010191905055833484604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610a0457600080fd5b5b610a77565b7fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260178152602001807f53616c65206973206e6f7420696e2070726f677265737300000000000000000081525060200191505060405180910390a1600080fd5b5b5050565b60008114158015610b0a57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610b1457600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b60005481565b600381600a81101515610c1457fe5b602091828204019190065b915054906101000a900460ff1681565b600060606004810160003690501015610c4757600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150610d1883600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dad83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e03838361171b90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b5b5050505050565b601281565b613b9281565b6102a381565b691969368974c05b00000081565b61138881565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561106c57610f746112e4565b15610ff957690a968163f0a57b4000006007541015610fbe577f100c98fe43bef515268f854995b9fe23e0d72dbe3f2726094d9f1864ab4afde260405160405180910390a1610ff3565b610fc6611735565b7f0151fbf6d2def4666ab0f87412daa4ac6a67e9fa86a50cfbd7b36b16d72705d960405160405180910390a15b5b611066565b7fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260158152602001807f53616c65206973206e6f7420656e64656420796574000000000000000000000081525060200191505060405180910390a1600080fd5b5b6110d4565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600080fd5b5b565b6000806005541180156110ec57506005544310155b90505b90565b60085481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611260576111a06110d7565b15156111ed5743811115156111b457600080fd5b806005819055507f912ee23dde46ec889d6748212cce445d667f7041597691dc89e8549ad8bc0acb60405160405180910390a15b61125a565b7fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260188152602001807f53616c6520686173206e6f74207374617274656420796574000000000000000081525060200191505060405180910390a1600080fd5b5b6112c8565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600080fd5b5b50565b6000691969368974c05b000000600754101590505b90565b60008060055411801561130a57506112fa611535565b8061130957506113086112cc565b5b5b90505b90565b600660009054906101000a900460ff1681565b6000611336670de0b6b3a7640000611640565b90505b90565b690a968163f0a57b40000081565b6040805190810160405280600c81526020017f4c6f6f7072696e67436f696e000000000000000000000000000000000000000081525081565b6040600481016000369050101561139957600080fd5b6113eb82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b505050565b60075481565b6000600a613b9261ffff16026005540143101590505b90565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60055481565b6040805190810160405280600381526020017f4c5243000000000000000000000000000000000000000000000000000000000081525081565b600080600080611663613b9261ffff166005544303611a4390919063ffffffff16565b9250600a83101515611677576001600a0392505b61168c61138886611a5f90919063ffffffff16565b91506116dc60646116ce600386600a811015156116a557fe5b602091828204019190065b9054906101000a900460ff1660ff1685611a5f90919063ffffffff16565b611a4390919063ffffffff16565b90506116f181836116fc90919063ffffffff16565b93505b505050919050565b600080828401905061171084821015611a93565b8091505b5092915050565b600061172983831115611a93565b81830390505b92915050565b6000806000600660009054906101000a900460ff16156117e2577fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260248152602001807f556e736f6c6420746f6b656e20686173206265656e2069737375656420616c7281526020017f656164790000000000000000000000000000000000000000000000000000000081525060400191505060405180910390a1611a3d565b690a968163f0a57b400000600754101515156117fd57600080fd5b61183869021e19e0c9bab240000061182a690a968163f0a57b40000060075461171b90919063ffffffff16565b611a4390919063ffffffff16565b9250600783111561184857600792505b826019026102a303915061187d8261186f846103e803600054611a4390919063ffffffff16565b611a5f90919063ffffffff16565b9050611894816000546116fc90919063ffffffff16565b60008190555061190e8160016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc90919063ffffffff16565b60016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fe316e9c07bf6ee91102f762d73f95b6cab9dcc157278814c7408906855c6a3a66008600081548092919060010191905055600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600084604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a16001600660006101000a81548160ff0219169083151502179055505b5b505050565b6000808284811515611a5157fe5b0490508091505b5092915050565b6000808284029050611a886000851480611a835750838583811515611a8057fe5b04145b611a93565b8091505b5092915050565b801515611a9f57600080fd5b5b505600a165627a7a72305820c28f0e4dfa60c1f704fec244ecddb7b811aeeeacfae31316717dd89fcca1aa44002900000000000000000000000000073f7155459c9205010cb3453a0f392a0c3210


    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000073f7155459c9205010cb3453a0f392a0c3210

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000073f7155459c9205010cb3453a0f392a0c3210


   Swarm Source:
bzzr://c28f0e4dfa60c1f704fec244ecddb7b811aeeeacfae31316717dd89fcca1aa44
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.