Contract Overview | StarbaseToken
Balance: 0 Ether
Ether Value: $0
Transactions: 5653 txns
Token Tracker: Starbase (STAR)
 Latest 25 txns From a total of 5653 Transactions

TxHash Age From To Value [TxFee]
0xce29d41548edb4cd462f04e94c778fd54fbed0c0d90f46456a8252a8bdc178fd2 days 16 hrs ago0x33214ede3aef510f1f5b35bdf3017ed6552fe741  IN   StarbaseToken0 Ether0.000207662
0xe8facdc16a59697fe9af49fe65dbe11e9f766a0b3e4d801020e4340cf99148a12 days 17 hrs ago0x33214ede3aef510f1f5b35bdf3017ed6552fe741  IN   StarbaseToken0 Ether0.000417214
0x399a713a9bfe2c2fa6617bf279f61f51e509b6bc72493e93cbd1f63e046b553c2 days 17 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.00178998
0x741ff27e260a30fcd72e080bc85d55273d101a09fff4198fc55db0ca01a700f02 days 19 hrs ago0x3e3131672eea51837094e3caf4770bd02d651a1c  IN   StarbaseToken0 Ether0.000238248629
0xf0a8dcdcac60d9c8ed758bd67686f74c01feb9d1447bff8c82c88687213ee7693 days 1 hr ago0x12c3fd99ab45bd806128e96062dc5a6c273d8af6  IN   StarbaseToken0 Ether0.000274164
0x780252c698cdb71ce70fd0e2eaf9a56c335a57400a3874775a65b26210aa0ae43 days 1 hr ago0x09a9a5de88f68aee50a62ef4ea15bd0c552fb572  IN   StarbaseToken0 Ether0.00022365
0xc0942af8aa41e855277cd0564c5a1b9885b3a4803e30120a3378b43e219d64633 days 6 hrs ago0xfee1005e198e4895252eed9b842661fb4893f816  IN   StarbaseToken0 Ether0.003255946
0x9b925e196c5e1bef01976276e5544955215ab392b3494b378ff78fc9676bf4483 days 16 hrs ago0x31773b70f485f8557cc82675e31d2d200225b36b  IN   StarbaseToken0 Ether0.001271847647
0x998775fa4a7b58969ef0b45493bcdc1fea7c306316b73262e9c3c9e106508d4e6 days 6 hrs agoHitBTC_2  IN   StarbaseToken0 Ether0.000356816
0xac4d7457b673a0b5a42453a49c3ad2aded674ccaca050928fc10f396de5e0c7e6 days 7 hrs agoHitBTC_2  IN   StarbaseToken0 Ether0.000715992
0x223635ac60e56b7374403cf03615853acf35fc1703b1507b7718d7c708c267277 days 19 hrs ago0x423efc9081a4bc21fb5f1cd569f09c7197dafece  IN   StarbaseToken0 Ether0.000401994
0xdcbe7b37a88caa0c20564ef7c1a16a231c0bae3c12529576dbf3fa2db3a3fbfd8 days 16 hrs ago0x4cf47d9730a9740f140265d46c5e0cb7e73893a6  IN   StarbaseToken0 Ether0.000267612
0xcb93148fcaa0e2de5e1d40a4b359ca66197ef51cd88f372aa27f2778efe6a6478 days 16 hrs ago0xd2471acb58d2fca6bbb961a57978737f7190b67a  IN   StarbaseToken0 Ether0.0017919
0x78acb723d3c9ac66db2e331e7b5b939f69d8cf8f2192b0ace100d16fc16548699 days 22 hrs ago0xa3f59ebc3bf8fa664ce12e2f841fe6556289f053  IN   StarbaseToken0 Ether0.000183393
0x85128a55d4549931eb0cb8b02dd4ba554d6dfb97d6f0974a8c1b7e2c97a849a111 days 14 hrs ago0xfee1005e198e4895252eed9b842661fb4893f816  IN   StarbaseToken0 Ether0.00218136
0xca4990c31116f0ebba2a6401bd3c29193cc4d9c2d7255f5e501e7a61d99b312811 days 14 hrs ago0xfee1005e198e4895252eed9b842661fb4893f816  IN   StarbaseToken0 Ether0.00145424
0xc0370b63e5266f32099c1b0001c4e861637e26ab463b08d6d35ebf13997cabd612 days 16 hrs ago0x997e04d7273996350c4a14678ebf235cbb0a7545  IN   StarbaseToken0 Ether0.000182776
0x8eac589cf46376a6d0408f67f2648a1661afac469a37b4db195c857b2aac97ed12 days 23 hrs agoHitBTC_2  IN   StarbaseToken0 Ether0.000178664
0xb34e5ac6b19391fcd5c70ec3c545bdae1aadb07cec27cb37ca6d610a59fefd2212 days 23 hrs agoHitBTC_3  IN   StarbaseToken0 Ether0.0001741974
0x8c498012366437df3f7d7f097d8440c49e3e1546682e97c261ef2df359d24e4e13 days 11 hrs ago0x09a9a5de88f68aee50a62ef4ea15bd0c552fb572  IN   StarbaseToken0 Ether0.000238664
0x1a8ffaaa5c5b9e6d64ecdf34aaeea833cc2fd208b4b7c3dcc7a905e56e4e11ec14 days 1 hr ago0xbb6a783707f9fff6eb5d97d7053ef06151f0b125  IN   StarbaseToken0 Ether0.000800503953
0xa8e192e9b281ca5e857d8533ef7f45bf85a258b30ad0fea2f7eb72a1760b086015 days 3 hrs ago0xe868576f360f2884287ecb6351f15e9366dc0aad  IN   StarbaseToken0 Ether0.000268764
0x9ef84449fe5fe53166988ff173226d928d142b6ff25cd118d8457ee6b679455116 days 9 hrs ago0xf88e5b0304e9a9989e5ba60569c6b79897481684  IN   StarbaseToken0 Ether0.00200421
0x1f50df5951f2a618a4e93be581d6a16af6442a50ad847e83205fa54e4ee83a9317 days 17 hrs agoHitBTC_2  IN   StarbaseToken0 Ether0.000656326
0x0f2858b306f40259508f28002f1a47774610e648e43c52e0bd529e8eb6ce33b618 days 6 hrs ago0xff4ac03cdd0287e6e3554e9042ff490e2beb6eb3  IN   StarbaseToken0 Ether0.00089332
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: StarbaseToken
Compiler Text: 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

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c9e70d6682ea36ff340153d574b2c523671b107
Arg [1] : 000000000000000000000000c03ab1fc46c6d01238707426c929e9eed3e7f9b3
Arg [2] : 000000000000000000000000ed9d813c4a82a9d76eba8ea666a7a0ab95f7bb29


   Swarm Source:
bzzr://80d59bed20a206aac3d8c04eef71a72c349854b90471633196e79ea1aca9f0e4

 

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