Sponsored Link:   SHIFT.cash - 1st ever car title loan platform on blockchain. Join NOW.
Contract Overview | StarbaseToken
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 1130 txns
Token Tracker 0xf70a642bd387f94380ffb90451c2c81d4eb82cbc
  Latest 25 txns from a total Of 1130 transactions (+11 PendingTxns) View All

TxHash Age From To Value [TxFee]
0x146f4904c7f74385f8518bfccaf52d3af44bc7d3c3815400e8996a7a84800e3e(pending)3 hrs 53 mins ago0x603a75e3023e61bc29826c36fe0df3f5a6a87127  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0xca0d5c31f4a570e6e4c32f32ca5e3fb7e659a9cbb8dbef7fd61cdb1afbad8ca9(pending)3 hrs 55 mins ago0x77259b80b0b7ecbfb7baaa675b9026fd3765f789  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0xe9a5e7d7e2975e413f7acd01dd5b07cfdda165caa0f2e1de4ad97d67e2f52baa(pending)3 hrs 56 mins ago0x4a977beecfc59e754e96917e592662c1db82cca6  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x431ab12beaa8c2f685274e6631d8cb055327d84eb90774c99211a0ca7ccc81b1(pending)3 hrs 57 mins ago0x7b474a779a9c30a58a3c6153c436d88bddd5fa4f  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0xc37919389748a83ae127e7ce5ece0c4a876bfb6a637770d7aa09d394facffa87(pending)4 hrs 1 min ago0x9ea349cf62802bce84bdd565cc0050f2d13cffd4  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0xdaaee41ef6f5e8599f421826436e81e07cfdc8d6838a5f16cf4ad05956a4b435(pending)4 hrs 4 mins ago0x5183c0a3e7799c40fd0ebe798c9db7c01bb3eacd  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x8977af308d4540fadb2eb5898426fbd9444334e70aab3a33b9cd9f31027ae80f(pending)4 hrs 6 mins ago0xeee37dfbddeffa1de5888375865fcb0b8514492f  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x59272428150e867b1225a1603f106e73ba6c1306fcd3b01b0d0e67cb5eb6560d(pending)4 hrs 7 mins ago0x1b47b017e1da4d34bde40fe7a67c74ef10e6b3f2  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x1e289d4a4db4383ed04b3555c8bab37c15f94a35415385d6475bd73c0f07f832(pending)4 hrs 14 mins ago0xee167e321be3e024617445f03c5eb771df00aa7b  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0xbd7fa87f584dbe9609021ccc636a16a1c239ec929b673edfa561e5521b56a2d3(pending)4 hrs 18 mins ago0x3229b2aa8a1b07d3812f954db8eaf700ff788842  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x45e3254144398bcd9d5d25d2481bc0c6a6d319c6ce6a13fb002d758e7f8f4e6c(pending)4 hrs 19 mins ago0x044f53921cc8057079d274a91a484abd94045160  IN  0xf70a642bd387f94380ffb90451c2c81d4eb82cbc0 Ether(pending)
0x38f65f5fedb4dac989a3587f37de18958d961c81a1f63f9ad1b71453e4c383d73 hrs 55 mins ago0x284f52181d53a8e412ec5a6ee1f76d97f773f6b8  IN   StarbaseToken0 Ether0.00089204
0xad22710e1172f1c3538caba09eb5dca32f586f2b2742a4f2b9ea35905ff9217c3 hrs 55 mins ago0x4320fd268360941220bd571cccd17db16b4bebe8  IN   StarbaseToken0 Ether0.001444095331
0xd8a8ee2de16b1eba8c5279f9bc52199491200c11ecceed2a362c629b6b921ee73 hrs 59 mins ago0x4320fd268360941220bd571cccd17db16b4bebe8  IN   StarbaseToken0 Ether0.001607954014
0x9dc270b1ab8ede95c265be3ce79421ba8631d6605c98a7c62907c8d4b163c15f4 hrs 15 mins ago0x4320fd268360941220bd571cccd17db16b4bebe8  IN   StarbaseToken0 Ether0.001984829474
0x84efc7c101cc24e9545eccdc06e0297dcbe49f6b96862b918398b51fa22ee3364 hrs 20 mins ago0x6d655fee24f7f97d0f47e3e41c130ae8d49d0a6d  IN   StarbaseToken0 Ether0.001216306
0x8d563d7f118939b9252dcb37247f7abdae5ae5b286da2cdd58917ad09f4d6d1b4 hrs 25 mins ago0x6d655fee24f7f97d0f47e3e41c130ae8d49d0a6d  IN   StarbaseToken0 Ether0.001828682
0x8c763fe784234e62968bb43bd53aeea1b06355aeba787c07f96100ab6809e5db4 hrs 32 mins ago0xec9729045b3e062af8719d4fa455cfdc60805842  IN   StarbaseToken0 Ether0.000476816
0xdba10ca068de15194775dbbb3b9c16771a2038cab698b8e57af5ea802979b9fe4 hrs 35 mins ago0x6d655fee24f7f97d0f47e3e41c130ae8d49d0a6d  IN   StarbaseToken0 Ether0.001828682
0x3f231bf43e26ff09a2bc3c6d0fdcab36fffe95eb1ea25ee1df348cad0f6ffe194 hrs 56 mins ago0x36193753a254bcae7064da0c987487bf3dca61b9  IN   StarbaseToken0 Ether0.00049619725
0x3a76d204fcbeb86a078b01e37e591a4de9a65b416c9096d7de5c2d61e7e5b8085 hrs 19 mins ago0x8cb649f655e89c270c9129f800449ec5267bad6e  IN   StarbaseToken0 Ether0.0022847
0xc636bab95de114107f0676eeb0436925df4f44b7258b73ff9d7cfa60db7a73335 hrs 21 mins ago0x99a0295096311d6e6fb96c86fd3ddc7476dd3331  IN   StarbaseToken0 Ether0.002443682
0x107271441280c7ea0e74623cf1513717b02e7ffe05fa507d0236d5bc7b8abf3d5 hrs 46 mins ago0xd02ce37882ed1760327acaa5831dbf6b4e681869  IN   StarbaseToken0 Ether0.001246126589
0xcbce821cdf6dea798f383e9c1a7155494ad3b5db60d96c0308305b3592c87fb76 hrs 7 mins ago0x0cd814155ce9b9170348e4f27b4a71102677d630  IN   StarbaseToken0 Ether0.00178664
0x72ad336bb5f6389979994c616b459d058b3a93fb2c1bf928db4a7aaed3994e146 hrs 9 mins ago0x47917f39f2088341f187515490bc08f63bd1a614  IN   StarbaseToken0 Ether0.00149165
[ 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
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.