Sponsored Link:   Trade.io - The Exchange You've Been Waiting For Has Arrived. Instant Verification, Fully Customizable. Pre-Register today
  Latest 25 txns from a total Of 4922 transactions View All

TxHash Age From To Value [TxFee]
0x319ff7cd96b2dca554ff752873f417c206fa45b931f7f589a8f3580c730f6b2513 hrs 15 mins ago0x7b474a779a9c30a58a3c6153c436d88bddd5fa4f  IN   StarbaseToken0 Ether0.000182776
0xb7a0363c2516e8ed6c7ef75e5ab6c6c5536ea6afade85e24782e253912a8672115 hrs 32 mins ago0x8541b3c4516d51e0018568a6cacd962a214230c5  IN   StarbaseToken0 Ether0.00022301
0x0eee71a7b77fabd31ed5d35e536d06efcb61b9429c6ba0a8fad76cd3c0c716511 day 3 hrs ago0x9a568990744dd4d8915e9e0b9ad94b4108dd2eb3  IN   StarbaseToken0 Ether0.000088806
0xd6a4f553bf77c9323419b54fbdceda6b85b709744f8b33ab271a11b77ef1abef1 day 4 hrs ago0xa83165ac41f84532ba1afb03e5928d55b796fc11  IN   StarbaseToken0 Ether0.000267996
0xf304b253078496e546116206552e7103680b5de505f88449d5c07b7deb200b8c1 day 6 hrs ago0x95a622d2a2e927740898a12c872ae000aadb8519  IN   StarbaseToken0 Ether0.000579258028
0x131ce5a70fd7f521dc2715127c41ab6085eb18a860ea6f2585f3a9405e9f82bf1 day 7 hrs ago0x25e63fd8e5f8f4055904d6d78b0872d70faab16b  IN   StarbaseToken0 Ether0.000059332
0x02ea811a232bd0f4f8676d8cf2c4014a513c59ab171e4ab7eda425b0194e54531 day 12 hrs ago0x41434b456b5c623db976d4f63c0f36cecd3f1d29  IN   StarbaseToken0 Ether0.00018252
0x3985fefe029235d33901ab0553e356a933852e9c3612352af6e65e69a9e59c1a2 days 5 hrs ago0x9bf2b945fdb3aebd336fe273edd0f03aa64e8a3f  IN   StarbaseToken0 Ether0.00008946
0xa3ea2b657b7c9b7cd60ef7d3bd7cd1a874a976aa4c11d29c9904dcbadddb79522 days 8 hrs ago0xa9ab4b7077a4a0179f1a715090055fd37359e1ef  IN   StarbaseToken0 Ether0.001831306
0x9643c9d795978a5f45daa63978b01646987cad0dbe9421437db8acc90cffed5a2 days 9 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00357996
0x476be420f4f1bd377d51d8fea914b3ff8d914b5be49abeaf3ca87f67f1ae56fe2 days 13 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.0035838
0x9c3790e7d28e5b44a9ebbeced86ef685271f1ca08a1dfe8885a228f2bef789392 days 17 hrs agoHitBTC_2  IN   StarbaseToken0 Ether0.000119343933
0xb355b0227ca868a575d9cac8fb3c6a5459f0f7f8bb22be21a4ced8a79d20391f3 days 8 hrs ago0x9f52ac78a919236303db06aeb1912339fa962e30  IN   StarbaseToken0 Ether0.000029666
0x83c8bef87c04139c79d979ea8fade982550573518c0f327296f7e7a7ca9f97273 days 11 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00267996
0xb81eea19b6a8acb2e8d4c043593f5879c55ba6854999ed7558d5c834fbc17f763 days 12 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00357612
0x2ebd9a8afcd346fcd770f3a9e0769a2ddb98b7167fd1b0fce26ea777f9cc65df3 days 17 hrs ago0x88f52fd4dc0c475072936b4e846d4011f33f0153  IN   StarbaseToken0 Ether0.000937986
0x7c0b57e6fcd42abfef9a34577aedd242767796a99eeb46db7ef9a76723061c393 days 23 hrs ago0x5d8a8be0621441d91a6c498328ada948e516911d  IN   StarbaseToken0 Ether0.000029602
0xa168d23b2bd3897ba91088b5a07ad00ef79fa8e398c163302028f46cccbebf894 days 6 mins ago0xafefeb0eb9875074ca2a2d508eab621fdec459e2  IN   StarbaseToken0 Ether0.0001312652
0xd2c924b58a7086872e18d8e2c2bf3a0696a0b563b9a2439a0e36acc963860a434 days 2 hrs ago0x1e1559475740623e769dd135017a63512061b3ec  IN   StarbaseToken0 Ether0.0001968978
0xd8c7ff33f77b29cc2d3b175b2b642355115a2846aa811ce2dae263894303ac554 days 8 hrs ago0x5c1ca67ea939e56ceb111a81c1a46af2f17675dc  IN   StarbaseToken0 Ether0.00003285822
0x16635becbd1a8b3ca57833de0f30c9f5dbbfc5e8fdd8bd270b5bbf2dbb65fd9e4 days 10 hrs ago0x025a33b43c9452d3b139fcc50b71af3ab498495b  IN   StarbaseToken0 Ether0.00029833
0xf7738e6bb894459944eb2b4da9b7acbf086c331003292f3362d2f350c4e1e2694 days 10 hrs ago0x01ea04d61e78b739613a8e75b30f421ef3f17b33  IN   StarbaseToken0 Ether0.002013352
0x46ee1875aef858e244d0c2450fbed4befdbf2abe4c282b2185794740f61c1cb44 days 15 hrs ago0x16f4d798888eecd194591fa7b7cee132113ac8f9  IN   StarbaseToken0 Ether0.000029602
0xcae2c2fb7aa2d3cf9d6ffbecad837aceac2735ffb26b8eddf2765772f6ee0dc04 days 16 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00267996
0x1165e5efacfdb3f252c1640481a0866616438dda21c25052906af9512011ac0d4 days 16 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00357612
[ 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 ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: StarbaseToken
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.13;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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;
  }

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

  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 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 {
  uint256 public totalSupply;
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, 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;

  /**
  * @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));

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    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 constant returns (uint256 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) public constant 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 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)) 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));

    uint256 _allowance = allowed[_from][msg.sender];

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

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    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;
    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 constant returns (uint256 remaining) {
    return allowed[_owner][_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
   */
  function increaseApproval (address _spender, uint _addedValue)
    returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval (address _spender, uint _subtractedValue)
    returns (bool success) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

contract AbstractStarbaseCrowdsale {
    function startDate() constant returns (uint256) {}
    function endedAt() constant returns (uint256) {}
    function isEnded() constant returns (bool);
    function totalRaisedAmountInCny() constant returns (uint256);
    function numOfPurchasedTokensOnCsBy(address purchaser) constant returns (uint256);
    function numOfPurchasedTokensOnEpBy(address purchaser) constant returns (uint256);
}

contract AbstractStarbaseMarketingCampaign {}

/// @title Token contract - ERC20 compatible Starbase token contract.
/// @author Starbase PTE. LTD. - <[email protected]>
contract StarbaseToken is StandardToken {
    /*
     *  Events
     */
    event PublicOfferingPlanDeclared(uint256 tokenCount, uint256 unlockCompanysTokensAt);
    event MvpLaunched(uint256 launchedAt);
    event LogNewFundraiser (address indexed fundraiserAddress, bool isBonaFide);
    event LogUpdateFundraiser(address indexed fundraiserAddress, bool isBonaFide);

    /*
     *  Types
     */
    struct PublicOfferingPlan {
        uint256 tokenCount;
        uint256 unlockCompanysTokensAt;
        uint256 declaredAt;
    }

    /*
     *  External contracts
     */
    AbstractStarbaseCrowdsale public starbaseCrowdsale;
    AbstractStarbaseMarketingCampaign public starbaseMarketingCampaign;

    /*
     *  Storage
     */
    address public company;
    PublicOfferingPlan[] public publicOfferingPlans;  // further crowdsales
    mapping(address => uint256) public initialEcTokenAllocation;    // Initial token allocations for Early Contributors
    uint256 public mvpLaunchedAt;  // 0 until a MVP of Starbase Platform launches
    mapping(address => bool) private fundraisers; // Fundraisers are vetted addresses that are allowed to execute functions within the contract

    /*
     *  Constants / Token meta data
     */
    string constant public name = "Starbase";  // Token name
    string constant public symbol = "STAR";  // Token symbol
    uint8 constant public decimals = 18;
    uint256 constant public initialSupply = 1000000000e18; // 1B STAR tokens
    uint256 constant public initialCompanysTokenAllocation = 750000000e18;  // 750M
    uint256 constant public initialBalanceForCrowdsale = 175000000e18;  // CS(125M)+EP(50M)
    uint256 constant public initialBalanceForMarketingCampaign = 12500000e18;   // 12.5M

    /*
     *  Modifiers
     */
    modifier onlyCrowdsaleContract() {
        assert(msg.sender == address(starbaseCrowdsale));
        _;
    }

    modifier onlyMarketingCampaignContract() {
        assert(msg.sender == address(starbaseMarketingCampaign));
        _;
    }

    modifier onlyFundraiser() {
        // Only rightful fundraiser is permitted.
        assert(isFundraiser(msg.sender));
        _;
    }

    modifier onlyBeforeCrowdsale() {
        require(starbaseCrowdsale.startDate() == 0);
        _;
    }

    modifier onlyAfterCrowdsale() {
        require(starbaseCrowdsale.isEnded());
        _;
    }

    modifier onlyPayloadSize(uint size) {
        assert(msg.data.length == size + 4);
        _;
    }

    /*
     *  Contract functions
     */

    /**
     * @dev Contract constructor function
     * @param starbaseCompanyAddr The address that will holds untransferrable tokens
     * @param starbaseCrowdsaleAddr Address of the crowdsale contract
     * @param starbaseMarketingCampaignAddr The address of the marketing campaign contract
     */

    function StarbaseToken(
        address starbaseCompanyAddr,
        address starbaseCrowdsaleAddr,
        address starbaseMarketingCampaignAddr
    ) {
        assert(
            starbaseCompanyAddr != 0 &&
            starbaseCrowdsaleAddr != 0 &&
            starbaseMarketingCampaignAddr != 0);

        starbaseCrowdsale = AbstractStarbaseCrowdsale(starbaseCrowdsaleAddr);
        starbaseMarketingCampaign = AbstractStarbaseMarketingCampaign(starbaseMarketingCampaignAddr);
        company = starbaseCompanyAddr;

        // msg.sender becomes first fundraiser
        fundraisers[msg.sender] = true;
        LogNewFundraiser(msg.sender, true);

        // Tokens for crowdsale and early purchasers
        balances[address(starbaseCrowdsale)] = initialBalanceForCrowdsale;
        Transfer(0, address(starbaseCrowdsale), initialBalanceForCrowdsale);

        // Tokens for marketing campaign supporters
        balances[address(starbaseMarketingCampaign)] = initialBalanceForMarketingCampaign;
        Transfer(0, address(starbaseMarketingCampaign), initialBalanceForMarketingCampaign);

        // Tokens for early contributors, should be allocated by function
        balances[0] = 62500000e18; // 62.5M

        // Starbase company holds untransferrable tokens initially
        balances[starbaseCompanyAddr] = initialCompanysTokenAllocation; // 750M
        Transfer(0, starbaseCompanyAddr, initialCompanysTokenAllocation);

        totalSupply = initialSupply;    // 1B
    }

    /**
     * @dev Setup function sets external contracts' addresses
     * @param starbaseCrowdsaleAddr Crowdsale contract address.
     * @param starbaseMarketingCampaignAddr Marketing campaign contract address
     */
    function setup(address starbaseCrowdsaleAddr, address starbaseMarketingCampaignAddr)
        external
        onlyFundraiser
        onlyBeforeCrowdsale
        returns (bool)
    {
        require(starbaseCrowdsaleAddr != 0 && starbaseMarketingCampaignAddr != 0);
        assert(balances[address(starbaseCrowdsale)] == initialBalanceForCrowdsale);
        assert(balances[address(starbaseMarketingCampaign)] == initialBalanceForMarketingCampaign);

        // Move the balances to the new ones
        balances[address(starbaseCrowdsale)] = 0;
        balances[address(starbaseMarketingCampaign)] = 0;
        balances[starbaseCrowdsaleAddr] = initialBalanceForCrowdsale;
        balances[starbaseMarketingCampaignAddr] = initialBalanceForMarketingCampaign;

        // Update the references
        starbaseCrowdsale = AbstractStarbaseCrowdsale(starbaseCrowdsaleAddr);
        starbaseMarketingCampaign = AbstractStarbaseMarketingCampaign(starbaseMarketingCampaignAddr);
        return true;
    }

    /*
     *  External functions
     */

    /**
     * @dev Returns number of declared public offering plans
     */
    function numOfDeclaredPublicOfferingPlans()
        external
        constant
        returns (uint256)
    {
        return publicOfferingPlans.length;
    }

    /**
     * @dev Declares a public offering plan to make company's tokens transferable
     * @param tokenCount Number of tokens to transfer.
     * @param unlockCompanysTokensAt Time of the tokens will be unlocked
     */
    function declarePublicOfferingPlan(uint256 tokenCount, uint256 unlockCompanysTokensAt)
        external
        onlyFundraiser
        onlyAfterCrowdsale
        returns (bool)
    {
        assert(tokenCount <= 100000000e18);    // shall not exceed 100M tokens
        assert(SafeMath.sub(now, starbaseCrowdsale.endedAt()) >= 180 days);   // shall not be declared for 6 months after the crowdsale ended
        assert(SafeMath.sub(unlockCompanysTokensAt, now) >= 60 days);   // tokens must be untransferable at least for 2 months

        // check if last declaration was more than 6 months ago
        if (publicOfferingPlans.length > 0) {
            uint256 lastDeclaredAt =
                publicOfferingPlans[publicOfferingPlans.length - 1].declaredAt;
            assert(SafeMath.sub(now, lastDeclaredAt) >= 180 days);
        }

        uint256 totalDeclaredTokenCount = tokenCount;
        for (uint8 i; i < publicOfferingPlans.length; i++) {
            totalDeclaredTokenCount = SafeMath.add(totalDeclaredTokenCount, publicOfferingPlans[i].tokenCount);
        }
        assert(totalDeclaredTokenCount <= initialCompanysTokenAllocation);   // shall not exceed the initial token allocation

        publicOfferingPlans.push(
            PublicOfferingPlan(tokenCount, unlockCompanysTokensAt, now));

        PublicOfferingPlanDeclared(tokenCount, unlockCompanysTokensAt);
    }

    /**
     * @dev Allocate tokens to a marketing supporter from the marketing campaign share
     * @param to Address to where tokens are allocated
     * @param value Number of tokens to transfer
     */
    function allocateToMarketingSupporter(address to, uint256 value)
        external
        onlyMarketingCampaignContract
        returns (bool)
    {
        require(to != address(0));
        return allocateFrom(address(starbaseMarketingCampaign), to, value);
    }

    /**
     * @dev Allocate tokens to an early contributor from the early contributor share
     * @param to Address to where tokens are allocated
     * @param value Number of tokens to transfer
     */
    function allocateToEarlyContributor(address to, uint256 value)
        external
        onlyFundraiser
        returns (bool)
    {
        require(to != address(0));
        initialEcTokenAllocation[to] =
            SafeMath.add(initialEcTokenAllocation[to], value);
        return allocateFrom(0, to, value);
    }

    /**
     * @dev Issue new tokens according to the STAR token inflation limits
     * @param _for Address to where tokens are allocated
     * @param value Number of tokens to issue
     */
    function issueTokens(address _for, uint256 value)
        external
        onlyFundraiser
        onlyAfterCrowdsale
        returns (bool)
    {
        require(_for != address(0));
        // check if the value under the limits
        assert(value <= numOfInflatableTokens());

        totalSupply = SafeMath.add(totalSupply, value);
        balances[_for] = SafeMath.add(balances[_for], value);
        return true;
    }

    /**
     * @dev Declares Starbase MVP has been launched
     * @param launchedAt When the MVP launched (timestamp)
     */
    function declareMvpLaunched(uint256 launchedAt)
        external
        onlyFundraiser
        onlyAfterCrowdsale
        returns (bool)
    {
        require(mvpLaunchedAt == 0); // overwriting the launch date is not permitted
        require(launchedAt <= now);
        require(starbaseCrowdsale.isEnded());

        mvpLaunchedAt = launchedAt;
        MvpLaunched(launchedAt);
        return true;
    }

    /**
     * @dev Allocate tokens to a crowdsale or early purchaser from the crowdsale share
     * @param to Address to where tokens are allocated
     * @param value Number of tokens to transfer
     */
    function allocateToCrowdsalePurchaser(address to, uint256 value)
        external
        onlyCrowdsaleContract
        onlyAfterCrowdsale
        returns (bool)
    {
        require(to != address(0));
        return allocateFrom(address(starbaseCrowdsale), to, value);
    }

    /*
     *  Public functions
     */

    /**
     * @dev Transfers sender's tokens to a given address. Returns success.
     * @param to Address of token receiver.
     * @param value Number of tokens to transfer.
     */
    function transfer(address to, uint256 value) public onlyPayloadSize(2*32) returns (bool) {
        assert(isTransferable(msg.sender, value));
        return super.transfer(to, value);
    }

    /**
     * @dev Allows third party to transfer tokens from one address to another. Returns success.
     * @param from Address from where tokens are withdrawn.
     * @param to Address to where tokens are sent.
     * @param value Number of tokens to transfer.
     */
    function transferFrom(address from, address to, uint256 value) public onlyPayloadSize(3*32) returns (bool) {
        assert(isTransferable(from, value));
        return super.transferFrom(from, to, value);
    }

    /**
     * @dev Adds fundraiser. Only called by another fundraiser.
     * @param fundraiserAddress The address in check
     */
    function addFundraiser(address fundraiserAddress) public onlyFundraiser {
        require(fundraiserAddress != address(0));
        assert(!isFundraiser(fundraiserAddress));

        fundraisers[fundraiserAddress] = true;
        LogNewFundraiser(fundraiserAddress, true);
    }

    /**
     * @dev Update fundraiser address rights.
     * @param fundraiserAddress The address to update
     * @param isBonaFide Boolean that denotes whether fundraiser is active or not.
     */
    function updateFundraiser(address fundraiserAddress, bool isBonaFide)
       public
       onlyFundraiser
       returns(bool)
    {
        assert(isFundraiser(fundraiserAddress));

        fundraisers[fundraiserAddress] = isBonaFide;
        LogUpdateFundraiser(fundraiserAddress, isBonaFide);
        return true;
    }

    /**
     * @dev Returns whether fundraiser address has rights.
     * @param fundraiserAddress The address in check
     */
    function isFundraiser(address fundraiserAddress) constant public returns(bool) {
        return fundraisers[fundraiserAddress];
    }

    /**
     * @dev Returns whether the transferring of tokens is available fundraiser.
     * @param from Address of token sender
     * @param tokenCount Number of tokens to transfer.
     */
    function isTransferable(address from, uint256 tokenCount)
        constant
        public
        returns (bool)
    {
        if (tokenCount == 0 || balances[from] < tokenCount) {
            return false;
        }

        // company's tokens may be locked up
        if (from == company) {
            if (tokenCount > numOfTransferableCompanysTokens()) {
                return false;
            }
        }

        uint256 untransferableTokenCount = 0;

        // early contributor's tokens may be locked up
        if (initialEcTokenAllocation[from] > 0) {
            untransferableTokenCount = SafeMath.add(
                untransferableTokenCount,
                numOfUntransferableEcTokens(from));
        }

        // EP and CS purchasers' tokens should be untransferable initially
        if (starbaseCrowdsale.isEnded()) {
            uint256 passedDays =
                SafeMath.sub(now, starbaseCrowdsale.endedAt()) / 86400; // 1d = 86400s
            if (passedDays < 7) {  // within a week
                // crowdsale purchasers cannot transfer their tokens for a week
                untransferableTokenCount = SafeMath.add(
                    untransferableTokenCount,
                    starbaseCrowdsale.numOfPurchasedTokensOnCsBy(from));
            }
            if (passedDays < 14) {  // within two weeks
                // early purchasers cannot transfer their tokens for two weeks
                untransferableTokenCount = SafeMath.add(
                    untransferableTokenCount,
                    starbaseCrowdsale.numOfPurchasedTokensOnEpBy(from));
            }
        }

        uint256 transferableTokenCount =
            SafeMath.sub(balances[from], untransferableTokenCount);

        if (transferableTokenCount < tokenCount) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * @dev Returns the number of transferable company's tokens
     */
    function numOfTransferableCompanysTokens() constant public returns (uint256) {
        uint256 unlockedTokens = 0;
        for (uint8 i; i < publicOfferingPlans.length; i++) {
            PublicOfferingPlan memory plan = publicOfferingPlans[i];
            if (plan.unlockCompanysTokensAt <= now) {
                unlockedTokens = SafeMath.add(unlockedTokens, plan.tokenCount);
            }
        }
        return SafeMath.sub(
            balances[company],
            initialCompanysTokenAllocation - unlockedTokens);
    }

    /**
     * @dev Returns the number of untransferable tokens of the early contributor
     * @param _for Address of early contributor to check
     */
    function numOfUntransferableEcTokens(address _for) constant public returns (uint256) {
        uint256 initialCount = initialEcTokenAllocation[_for];
        if (mvpLaunchedAt == 0) {
            return initialCount;
        }

        uint256 passedWeeks = SafeMath.sub(now, mvpLaunchedAt) / 7 days;
        if (passedWeeks <= 52) {    // a year ≈ 52 weeks
            // all tokens should be locked up for a year
            return initialCount;
        }

        // unlock 1/52 tokens every weeks after a year
        uint256 transferableTokenCount = initialCount / 52 * (passedWeeks - 52);
        if (transferableTokenCount >= initialCount) {
            return 0;
        } else {
            return SafeMath.sub(initialCount, transferableTokenCount);
        }
    }

    /**
     * @dev Returns number of tokens which can be issued according to the inflation rules
     */
    function numOfInflatableTokens() constant public returns (uint256) {
        if (starbaseCrowdsale.endedAt() == 0) {
            return 0;
        }
        uint256 passedDays = SafeMath.sub(now, starbaseCrowdsale.endedAt()) / 86400;  // 1d = 60s * 60m * 24h = 86400s
        uint256 passedYears = passedDays * 100 / 36525;    // about 365.25 days in a year
        uint256 inflatedSupply = initialSupply;
        for (uint256 i; i < passedYears; i++) {
            inflatedSupply = SafeMath.add(inflatedSupply, SafeMath.mul(inflatedSupply, 25) / 1000); // 2.5%/y = 0.025/y
        }

        uint256 remainderedDays = passedDays * 100 % 36525 / 100;
        if (remainderedDays > 0) {
            uint256 inflatableTokensOfNextYear =
                SafeMath.mul(inflatedSupply, 25) / 1000;
            inflatedSupply = SafeMath.add(inflatedSupply, SafeMath.mul(
                inflatableTokensOfNextYear, remainderedDays * 100) / 36525);
        }

        return SafeMath.sub(inflatedSupply, totalSupply);
    }

    /*
     *  Internal functions
     */

    /**
     * @dev Allocate tokens value from an address to another one. This function is only called internally.
     * @param from Address from where tokens come
     * @param to Address to where tokens are allocated
     * @param value Number of tokens to transfer
     */
    function allocateFrom(address from, address to, uint256 value) internal returns (bool) {
        assert(value > 0 && balances[from] >= value);
        balances[from] = SafeMath.sub(balances[from], value);
        balances[to] = SafeMath.add(balances[to], value);
        Transfer(from, to, value);
        return true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"numOfInflatableTokens","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":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"allocateToCrowdsalePurchaser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numOfDeclaredPublicOfferingPlans","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":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"allocateToMarketingSupporter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"starbaseCrowdsaleAddr","type":"address"},{"name":"starbaseMarketingCampaignAddr","type":"address"}],"name":"setup","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"starbaseMarketingCampaign","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"launchedAt","type":"uint256"}],"name":"declareMvpLaunched","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"allocateToEarlyContributor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"initialEcTokenAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_for","type":"address"},{"name":"value","type":"uint256"}],"name":"issueTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numOfTransferableCompanysTokens","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"company","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"publicOfferingPlans","outputs":[{"name":"tokenCount","type":"uint256"},{"name":"unlockCompanysTokensAt","type":"uint256"},{"name":"declaredAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"fundraiserAddress","type":"address"}],"name":"isFundraiser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"from","type":"address"},{"name":"tokenCount","type":"uint256"}],"name":"isTransferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"starbaseCrowdsale","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":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initialBalanceForMarketingCampaign","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialBalanceForCrowdsale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialCompanysTokenAllocation","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"fundraiserAddress","type":"address"},{"name":"isBonaFide","type":"bool"}],"name":"updateFundraiser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenCount","type":"uint256"},{"name":"unlockCompanysTokensAt","type":"uint256"}],"name":"declarePublicOfferingPlan","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mvpLaunchedAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_for","type":"address"}],"name":"numOfUntransferableEcTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"fundraiserAddress","type":"address"}],"name":"addFundraiser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"starbaseCompanyAddr","type":"address"},{"name":"starbaseCrowdsaleAddr","type":"address"},{"name":"starbaseMarketingCampaignAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenCount","type":"uint256"},{"indexed":false,"name":"unlockCompanysTokensAt","type":"uint256"}],"name":"PublicOfferingPlanDeclared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"launchedAt","type":"uint256"}],"name":"MvpLaunched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fundraiserAddress","type":"address"},{"indexed":false,"name":"isBonaFide","type":"bool"}],"name":"LogNewFundraiser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fundraiserAddress","type":"address"},{"indexed":false,"name":"isBonaFide","type":"bool"}],"name":"LogUpdateFundraiser","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
606060405234156200001057600080fd5b6040516060806200229e8339810160405280805191906020018051919060200180519150505b600160a060020a03831615801590620000575750600160a060020a03821615155b80156200006c5750600160a060020a03811615155b15156200007557fe5b60038054600160a060020a03808516600160a060020a03199283161790925560048054848416908316179055600580548684169216919091179055331660008181526009602052604090819020805460ff191660019081179091557f22b12f3851b54c6634c282f9b575540c2ad483f802ec70c4af3e08e8ae8530239151901515815260200160405180910390a260038054600160a060020a039081166000908152600160205260408082206a90c1b1025e16710f0000009081905593549092169290916000805160206200227e83398151915291905190815260200160405180910390a360048054600160a060020a039081166000908152600160205260408082206a0a56fa5b99019a5c8000009081905593549092169290916000805160206200227e83398151915291905190815260200160405180910390a360016020526a33b2e3c9fd0803ce8000007fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4955600160a060020a038316600081815260408082206b026c62ad77dc602dae000000908190556000805160206200227e833981519152915190815260200160405180910390a36b033b2e3c9fd0803ce80000006000555b5050505b612030806200024e6000396000f300606060405236156101a65763ffffffff60e060020a60003504166303771f2f81146101ab57806306fdde03146101d0578063095ea7b31461025b5780630ef5a7e014610291578063168b912d146102c757806318160ddd146102ec578063202b876a1461031157806323b872dd146103475780632d34ba7914610383578063313ce567146103bc5780633774e6f5146103e5578063378dc3dc1461041457806337918bcb146104395780633923afee1461046357806339b584b114610499578063475a9fa9146104ca5780634a418fb71461050057806366188463146105255780636904c94d1461055b57806370a082311461058a578063772ad01f146105bb5780637f7977d1146105f557806388fc65fb1461062857806389ede7841461065e57806395d89b411461068d578063a9059cbb14610718578063adbf54b71461074e578063b006de0d14610773578063c3a3954414610798578063d73dd623146107bd578063dd62ed3e146107f3578063df50a8c11461082a578063e1ab586014610862578063e1e463511461088f578063e531a9b8146108b4578063ef688df5146108e5575b600080fd5b34156101b657600080fd5b6101be610906565b60405190815260200160405180910390f35b34156101db57600080fd5b6101e3610ace565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102205780820151818401525b602001610207565b50505050905090810190601f16801561024d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026657600080fd5b61027d600160a060020a0360043516602435610b05565b604051901515815260200160405180910390f35b341561029c57600080fd5b61027d600160a060020a0360043516602435610b72565b604051901515815260200160405180910390f35b34156102d257600080fd5b6101be610c32565b60405190815260200160405180910390f35b34156102f757600080fd5b6101be610c39565b60405190815260200160405180910390f35b341561031c57600080fd5b61027d600160a060020a0360043516602435610c3f565b604051901515815260200160405180910390f35b341561035257600080fd5b61027d600160a060020a0360043581169060243516604435610c90565b604051901515815260200160405180910390f35b341561038e57600080fd5b61027d600160a060020a0360043581169060243516610cc7565b604051901515815260200160405180910390f35b34156103c757600080fd5b6103cf610e64565b60405160ff909116815260200160405180910390f35b34156103f057600080fd5b6103f8610e69565b604051600160a060020a03909116815260200160405180910390f35b341561041f57600080fd5b6101be610e78565b60405190815260200160405180910390f35b341561044457600080fd5b61027d600435610e88565b604051901515815260200160405180910390f35b341561046e57600080fd5b61027d600160a060020a0360043516602435610fd4565b604051901515815260200160405180910390f35b34156104a457600080fd5b6101be600160a060020a0360043516611050565b60405190815260200160405180910390f35b34156104d557600080fd5b61027d600160a060020a0360043516602435611062565b604051901515815260200160405180910390f35b341561050b57600080fd5b6101be611164565b60405190815260200160405180910390f35b341561053057600080fd5b61027d600160a060020a036004351660243561122e565b604051901515815260200160405180910390f35b341561056657600080fd5b6103f861132a565b604051600160a060020a03909116815260200160405180910390f35b341561059557600080fd5b6101be600160a060020a0360043516611339565b60405190815260200160405180910390f35b34156105c657600080fd5b6105d1600435611358565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561060057600080fd5b61027d600160a060020a036004351661138b565b604051901515815260200160405180910390f35b341561063357600080fd5b61027d600160a060020a03600435166024356113ad565b604051901515815260200160405180910390f35b341561066957600080fd5b6103f8611690565b604051600160a060020a03909116815260200160405180910390f35b341561069857600080fd5b6101e361169f565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102205780820151818401525b602001610207565b50505050905090810190601f16801561024d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561072357600080fd5b61027d600160a060020a03600435166024356116d6565b604051901515815260200160405180910390f35b341561075957600080fd5b6101be61170b565b60405190815260200160405180910390f35b341561077e57600080fd5b6101be61171a565b60405190815260200160405180910390f35b34156107a357600080fd5b6101be611729565b60405190815260200160405180910390f35b34156107c857600080fd5b61027d600160a060020a0360043516602435611739565b604051901515815260200160405180910390f35b34156107fe57600080fd5b6101be600160a060020a03600435811690602435166117de565b60405190815260200160405180910390f35b341561083557600080fd5b61027d600160a060020a0360043516602435151561180b565b604051901515815260200160405180910390f35b341561086d57600080fd5b61027d600435602435611895565b604051901515815260200160405180910390f35b341561089a57600080fd5b6101be611b10565b60405190815260200160405180910390f35b34156108bf57600080fd5b6101be600160a060020a0360043516611b16565b60405190815260200160405180910390f35b34156108f057600080fd5b610904600160a060020a0360043516611ba3565b005b600354600090819081908190819081908190600160a060020a0316633d6a71e482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561095c57600080fd5b6102c65a03f1151561096d57600080fd5b5050506040518051151590506109865760009650610ac5565b60035462015180906109f9904290600160a060020a0316633d6a71e46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109d957600080fd5b6102c65a03f115156109ea57600080fd5b50505060405180519050611c39565b811515610a0257fe5b049550618ead606487025b0494506b033b2e3c9fd0803ce800000093505b84831015610a5757610a49846103e8610a3a876019611c50565b811515610a4357fe5b04611c7f565b93505b600190920191610a20565b6064618ead8782025b06811515610a6a57fe5b0491506000821115610ab6576103e8610a84856019611c50565b811515610a8d57fe5b049050610ab384618ead610a3a8486606402611c50565b811515610a4357fe5b04611c7f565b93505b610ac284600054611c39565b96505b50505050505090565b60408051908101604052600881527f5374617262617365000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60035460009033600160a060020a03908116911614610b8d57fe5b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610bd557600080fd5b6102c65a03f11515610be657600080fd5b505050604051805190501515610bfb57600080fd5b600160a060020a0383161515610c1057600080fd5b600354610c2790600160a060020a03168484611c99565b90505b5b5b92915050565b6006545b90565b60005481565b60045460009033600160a060020a03908116911614610c5a57fe5b600160a060020a0383161515610c6f57600080fd5b600454610c2790600160a060020a03168484611c99565b90505b5b92915050565b6000606036606414610c9e57fe5b610ca885846113ad565b1515610cb057fe5b610cbb858585611d7f565b91505b5b509392505050565b6000610cd23361138b565b1515610cda57fe5b600354600160a060020a0316630b97bc866000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d2257600080fd5b6102c65a03f11515610d3357600080fd5b5050506040518051159050610d4757600080fd5b600160a060020a03831615801590610d675750600160a060020a03821615155b1515610d7257600080fd5b600354600160a060020a03166000908152600160205260409020546a90c1b1025e16710f00000014610da057fe5b600454600160a060020a03166000908152600160205260409020546a0a56fa5b99019a5c80000014610dce57fe5b5060038054600160a060020a03908116600090815260016020819052604080832083905560048054851684528184208490558785168085528285206a90c1b1025e16710f0000009055948716808552919093206a0a56fa5b99019a5c8000009055845473ffffffffffffffffffffffffffffffffffffffff1990811690941790945581549092169092179091555b5b5b92915050565b601281565b600454600160a060020a031681565b6b033b2e3c9fd0803ce800000081565b6000610e933361138b565b1515610e9b57fe5b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ee357600080fd5b6102c65a03f11515610ef457600080fd5b505050604051805190501515610f0957600080fd5b60085415610f1657600080fd5b42821115610f2357600080fd5b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6b57600080fd5b6102c65a03f11515610f7c57600080fd5b505050604051805190501515610f9157600080fd5b60088290557fd94b06865896e1de625324a14ebf271925fd43405351ff908ab157b6b5e46e818260405190815260200160405180910390a15060015b5b5b919050565b6000610fdf3361138b565b1515610fe757fe5b600160a060020a0383161515610ffc57600080fd5b600160a060020a03831660009081526007602052604090205461101f9083611c7f565b600160a060020a038416600090815260076020526040812091909155610c27908484611c99565b90505b5b92915050565b60076020526000908152604090205481565b600061106d3361138b565b151561107557fe5b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156110bd57600080fd5b6102c65a03f115156110ce57600080fd5b5050506040518051905015156110e357600080fd5b600160a060020a03831615156110f857600080fd5b611100610906565b82111561110957fe5b61111560005483611c7f565b6000908155600160a060020a03841681526001602052604090205461113a9083611c7f565b600160a060020a03841660009081526001602081905260409091209190915590505b5b5b92915050565b6000806000611171611f82565b600092505b60065460ff831610156111f1576006805460ff841690811061119457fe5b906000526020600020906003020160005b506060604051908101604090815282548252600183015460208301908152600290930154908201529150429051116111e5576111e2838251611c7f565b92505b5b600190910190611176565b600554600160a060020a0316600090815260016020526040902054611225906b026c62ad77dc602dae000000859003611c39565b93505b50505090565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561128b57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556112c2565b61129b818463ffffffff611c3916565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600554600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b600680548290811061136657fe5b906000526020600020906003020160005b508054600182015460029092015490925083565b600160a060020a03811660009081526009602052604090205460ff165b919050565b60008080808415806113d75750600160a060020a0386166000908152600160205260409020548590105b156113e55760009350611686565b600554600160a060020a038781169116141561141357611403611164565b8511156114135760009350611686565b5b600160a060020a0386166000908152600760205260408120549093508390111561144d5761144a8361144588611b16565b611c7f565b92505b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561149557600080fd5b6102c65a03f115156114a657600080fd5b505050604051805190501561164a576003546201518090611528904290600160a060020a0316633d6a71e46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109d957600080fd5b6102c65a03f115156109ea57600080fd5b50505060405180519050611c39565b81151561153157fe5b04915060078210156115bf576003546115bc908490600160a060020a0316637a9601548960006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b50505060405180519050611c7f565b92505b600e82101561164a57600354611647908490600160a060020a0316634d730d518960006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b50505060405180519050611c7f565b92505b5b600160a060020a03861660009081526001602052604090205461166e9084611c39565b9050848110156116815760009350611686565b600193505b5b50505092915050565b600354600160a060020a031681565b60408051908101604052600481527f5354415200000000000000000000000000000000000000000000000000000000602082015281565b60006040366044146116e457fe5b6116ee33846113ad565b15156116f657fe5b6117008484611eab565b91505b5b5092915050565b6a0a56fa5b99019a5c80000081565b6a90c1b1025e16710f00000081565b6b026c62ad77dc602dae00000081565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611771908363ffffffff611c7f16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60006118163361138b565b151561181e57fe5b6118278361138b565b151561182f57fe5b600160a060020a03831660008181526009602052604090819020805460ff19168515151790557f75014c5ef16a5a3d68049061808282329efbd39868b2a99a1f9427f7be622af290849051901515815260200160405180910390a25060015b5b92915050565b6000806000806118a43361138b565b15156118ac57fe5b600354600160a060020a031663a4fd6f566000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118f457600080fd5b6102c65a03f1151561190557600080fd5b50505060405180519050151561191a57600080fd5b6a52b7d2dcc80cd2e400000086111561192f57fe5b60035462ed4e00906119a2904290600160a060020a0316633d6a71e46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109d957600080fd5b6102c65a03f115156109ea57600080fd5b50505060405180519050611c39565b10156119aa57fe5b624f1a006119b88642611c39565b10156119c057fe5b6006546000901115611a0c576006805460001981019081106119de57fe5b906000526020600020906003020160005b5060020154925062ed4e00611a044285611c39565b1015611a0c57fe5b5b8591505b60065460ff82161015611a5757611a4c8260068360ff16815481101515611a3457fe5b906000526020600020906003020160005b5054611c7f565b91505b600101611a11565b6b026c62ad77dc602dae000000821115611a6d57fe5b6006805460018101611a7f8382611fa4565b916000526020600020906003020160005b606060405190810160409081528a8252602082018a905242908201529190508151815560208201518160010155604082015181600201555050507f8a8a98fdc53b8f3144b328ef8e38a44f5a856263cdd4071f161e62d9e15e1fa9868660405191825260208201526040908101905180910390a15b5b5b50505092915050565b60085481565b600160a060020a038116600090815260076020526040812054600854829081901515611b4457829350611b9a565b62093a80611b5442600854611c39565b811515611b5d57fe5b04915060348211611b7057829350611b9a565b60331982016034845b04029050828110611b8d5760009350611b9a565b611b978382611c39565b93505b5b505050919050565b611bac3361138b565b1515611bb457fe5b600160a060020a0381161515611bc957600080fd5b611bd28161138b565b15611bd957fe5b600160a060020a03811660008181526009602052604090819020805460ff191660019081179091557f22b12f3851b54c6634c282f9b575540c2ad483f802ec70c4af3e08e8ae8530239151901515815260200160405180910390a25b5b50565b600082821115611c4557fe5b508082035b92915050565b6000828202831580611c6c5750828482811515611c6957fe5b04145b1515611c7457fe5b8091505b5092915050565b600082820183811015611c7457fe5b8091505b5092915050565b60008082118015611cc35750600160a060020a038416600090815260016020526040902054829010155b1515611ccb57fe5b600160a060020a038416600090815260016020526040902054611cee9083611c39565b600160a060020a038086166000908152600160205260408082209390935590851681522054611d1d9083611c7f565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b600080600160a060020a0384161515611d9757600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054611ddd908463ffffffff611c3916565b600160a060020a038087166000908152600160205260408082209390935590861681522054611e12908463ffffffff611c7f16565b600160a060020a038516600090815260016020526040902055611e3b818463ffffffff611c3916565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b6000600160a060020a0383161515611ec257600080fd5b600160a060020a033316600090815260016020526040902054611eeb908363ffffffff611c3916565b600160a060020a033381166000908152600160205260408082209390935590851681522054611f20908363ffffffff611c7f16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b6060604051908101604052806000815260200160008152602001600081525090565b815481835581811511611fd057600302816003028360005260206000209182019101611fd09190611fd6565b5b505050565b610c3691905b80821115611ffd576000808255600182018190556002820155600301611fdc565b5090565b905600a165627a7a7230582080d59bed20a206aac3d8c04eef71a72c349854b90471633196e79ea1aca9f0e40029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000006c9e70d6682ea36ff340153d574b2c523671b107000000000000000000000000c03ab1fc46c6d01238707426c929e9eed3e7f9b3000000000000000000000000ed9d813c4a82a9d76eba8ea666a7a0ab95f7bb29

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006c9e70d6682ea36ff340153d574b2c523671b107000000000000000000000000c03ab1fc46c6d01238707426c929e9eed3e7f9b3000000000000000000000000ed9d813c4a82a9d76eba8ea666a7a0ab95f7bb29

-----Decoded View---------------
Found 3 constructor arguments :
Arg [0] : 0000000000000000000000006c9e70d6682ea36ff340153d574b2c523671b107
Arg [1] : 000000000000000000000000c03ab1fc46c6d01238707426c929e9eed3e7f9b3
Arg [2] : 000000000000000000000000ed9d813c4a82a9d76eba8ea666a7a0ab95f7bb29


   Swarm Source:
bzzr://80d59bed20a206aac3d8c04eef71a72c349854b90471633196e79ea1aca9f0e4

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.