Contract Overview
ETH Balance: 0.031 Ether
ETH USD Value: $2.18 (@ $70.19/ETH)
No Of Transactions: 5062 txns + 189 internalTxns
Token Tracker FirstBlood
Misc QRCODE
Address Watch Add To Watch List
Contract Creator 0x7b174763483367307a177ecebf043697eb4673c7at txn 0x9b6767e5ebece4d04676efc3f1f479a27c59e92366cc1b902f16125739fb5de3
Token Tracker
  Latest 25 txns from a total Of 5062 transactions View All

TxHash Block Age From To Value [TxFee]
0xd9bfc71916d3d6a356681e6f3a6ae32eb8bcf4bb4601a874955ff19506e34d51362544330 mins agoyunbi.com_1  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075424
0x362755cd528a5c68828a944a3553f37215bd8d0a213690febc2bf8def17377c3362541537 mins ago0x57f6b52c6390cedcdfae26cb2edab0d65d4e75ad  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.0004568
0x8749b323ec41c47f1fe73c16af2bbc6e0b264847958dba0581c1c32f97084cbe362539242 mins ago0xd22fb85ade1490876f26bd78bbb07986d32681b5  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00073976
0x5f4d42e733575840d76f9ad7bdca8bd6bbb6fe24449fe77b6ddc52c9143387da362536849 mins ago0xc07ab4a5d706ed71e23dcf607d7cf6f5934201d1  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00045552
0x5bec8d26f4c816a45a0f764b7f667b1606a14d634d6a88c094009abe80661cd6362534752 mins ago0xdd1bf60a430bdba445b3d21e5e4be7c22d1ef917  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105552
0xd7cf87877c991924c0d320d02adb64da9519a5d25ac043d9a31c0afbbefac83b362533855 mins ago0xc07ab4a5d706ed71e23dcf607d7cf6f5934201d1  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00045552
0xbc8e2882618757c23dd574c7061866f5bf07b82ad5cdd73d62d640cede067e7f36253141 hr 3 mins ago0xdd1bf60a430bdba445b3d21e5e4be7c22d1ef917  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075552
0x36b35c09ab23b19b28121224adea15d176b0cb67e71e582e42df4aa3eccb926736252271 hr 27 mins ago0xdd1bf60a430bdba445b3d21e5e4be7c22d1ef917  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105296
0x792800defb2b1981489f6510d217b34f4013e91d5ce6897e23b0760d41c0e63c36250712 hrs 7 mins ago0xc7743371c4d972fca62b1abb4de1ff954bd983e9  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00049806
0xadacfc7fc8299dfd4631242ae0d846fe3a6295aa4ec8b3d91935296f9abbdbc436244124 hrs 59 mins ago0xc080eebebafaa673c479ecc59331e55eef8a2bb8  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075424
0x614d24b05dc410ade483992e7bb125bf90a986f75b2919de65c5e9a6a5c9ee3d36244035 hrs 2 mins ago0xc080eebebafaa673c479ecc59331e55eef8a2bb8  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00147593
0x378883545e0e9d1c66447c96ad631047638e10ba8d912cab1d1d75ced72c5cfb36239656 hrs 50 mins ago0xd9bd20efca7b0e6606b969548b1516c08d37374b  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105552
0xa08a00a39c990fed64dc6cab5bf6cfcd5b5ff52c8b36719ec19871977af39cc336239007 hrs 9 mins ago0x6cf7d6a990fc023a28139f761f850d53b6f08951  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00045552
0xfe2c65cd47f0ee95f709f584fb4f76ae3e70e5581c953897ecb7d1fba35d44e836238147 hrs 32 mins ago0xd9bd20efca7b0e6606b969548b1516c08d37374b  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.0007568
0xe3d2c6a717dd9f98e86ac1c6995d8706e477f265c41f45ecd94e690f97fb3f42362220814 hrs 29 mins ago0xdd1bf60a430bdba445b3d21e5e4be7c22d1ef917  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075552
0x046bc69e0428fa65b0a5e2183a57840ed9d61cec974fa19d572d8f1cb9726393362217814 hrs 38 mins ago0xdd1bf60a430bdba445b3d21e5e4be7c22d1ef917  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105296
0x601bf121e28b5839042f294fe251c2fa0bb843ada5ea0178a9dedd588002f9f6362184316 hrs 7 mins ago0xd9bd20efca7b0e6606b969548b1516c08d37374b  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.0007568
0x2ff585cb3c48b8ae489be5e75545493413d96eb25eee53f7afd035678265c1fc362182916 hrs 11 mins ago0xd9bd20efca7b0e6606b969548b1516c08d37374b  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00107767
0x4dc2e481982c8f0b66dbd6d85b980c49273278bae69f2a12e582cc729bbdd72b362179016 hrs 21 mins ago0xfbf88e3712c0936c44823cd0482c19acab7ba3dd  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00048914
0xe0e8d2489bd4b26204a18dea1ac1c06315a91a191e4f9596b13fa5f4b7997bd3362176416 hrs 28 mins ago0x452c693e64b29fa2d2c7ceba2e7b4422c84cd0a3  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075552
0xa2d99122ce308339d93fb9a2a5ca08d0ea0df0805a9c39677778b6e25c89dc37362171516 hrs 41 mins agoyunbi.com_1  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105552
0x04421d899aa483718ecd81d8239bf5ca97003c2dfddc2bd14d942b586a4879f0362171516 hrs 41 mins agoyunbi.com_1  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105424
0x30443b1a55fffa7689548c33a5080a9e1ba31e35c674517f6beb015a0e91219c362122218 hrs 43 mins ago0x4166e9784c230f058cb520acb909f77f1518444c  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105552
0x5133ed48b884c9fba99362e2f97b2ae1f11baad695334637207f6243719ec060362077520 hrs 38 mins ago0xd9bd20efca7b0e6606b969548b1516c08d37374b  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00105424
0x5ec0945030a0c33d0c20314de60c633218ea485335ffe8ba154f113c3695fab7362063021 hrs 11 mins ago0x88733425ca833b0123e2cacfb85846f20762f970  IN   0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70 Ether0.00075552

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 189 View All
ParentTxHash Block Age From To Value
0x8a89392af27ed588ef095192143532bd6a8815f0d072110612308c9f32e0dd6e2346771213 days 3 hrs ago0xaa1a6e3e6ef20068f7f8d8c835d2d22fd51164440xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70.01 Ether
0x656331405c6c06606e0625cd5b30aee9b63d734775699f09d3544e8bd0b275662327898216 days 6 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef70.026 Ether
0xcdf3dac8e37353cea709df5776f838c7e902b9e5f1ea4b78204761f2a388e84c2327830216 days 6 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef70.1 Ether
0x22992b3d6f24a8049c60c11e1e2cb0935d38a51fdff098e51a1dfa2b46839fd92327823216 days 6 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef70.1 Ether
0x327cdbd6688c5c3f45207bf9e6c9d4f7527e36efbc989de8a3e9c78069fc0c1a2327818216 days 6 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef70.1 Ether
0x6acc698ca05ad2335040401075b0a05edf4ed4975e46ad55341d7f1895a997bd2327532216 days 7 hrs ago0x1ca4a86bba124426507d1ef67ad271cc5a02820a0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc72 Ether
0x860a0a6de1e64f835a9d71f5fc9193ed989e8253a92d9ba5ba96626b7d5b76dc2327512216 days 8 hrs ago0x1ca4a86bba124426507d1ef67ad271cc5a02820a0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc74.689 Ether
0x4d3a3bc82c349bf2d3840151f434234230bd8e0af6df198bad276206089874af2327381216 days 8 hrs ago0xaa1a6e3e6ef20068f7f8d8c835d2d22fd51164440xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc71 Ether
0x269f15635aa5d4cc6a3d34bf62b5928001ecfa8024bc8fa7c97ca3a3c2c5bf422327281216 days 8 hrs ago0xaa1a6e3e6ef20068f7f8d8c835d2d22fd51164440xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc71 Ether
0xc0b3fce147ca08801dbb287c29a87a55fd67ed7c35dd3ad414106e1713f2b8392327256216 days 9 hrs ago0xaa1a6e3e6ef20068f7f8d8c835d2d22fd51164440xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7500 Ether
0x30bd5b485c314faad4e9b823ca86eaf0d986bc71a885a0599f9d59b6d2bc7eea2327255216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef71 Ether
0xf40e3e9f46295e9f474faf5fea9fe91fe2ec2f93040768104db945a657fe1d942327255216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef71 Ether
0x5c1ce2f41b22950584ed6adc8557cf7e237faa737c49ef143e57596e12f9d9bd2327251216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef71 Ether
0x3039c40b3072e4769c9afd2a835b3e5705413c6ddf840a713e047416ce2686df2327251216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef710 Ether
0x1f5c567dbe93d2ec0dbd5da36f1da2159ad3def17ad196441c697c42324f8b9f2327249216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef710.9 Ether
0x11b37badbf485cfd6174c4dffdbd09830c08a6146b902b83850d5e5e304161302327249216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7230 Ether
0x0e0baadc9923ed3a043d9e9f2d2f55d57573b06ef7da445b852df071cef4c63d2327249216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef71 Ether
0x0f883bcd00b54b9d3a26133d19034901cbbf9dac00acf08414e3bda45f3588772327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef774.7 Ether
0x3aba3ef2c050201273412ffb70bba0325f2906ff85fcd089d0010825b9d8b8082327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7121 Ether
0xcdcc70bba9a873627ce9eaa4287ad41b2d9aa47a24f2fa73939c9c066c68c0352327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef76 Ether
0x3fd3fdcdadef3a2f31ce61a3dfc51987c8eab6db2e090b9505cad8fb0b7359962327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef72.5 Ether
0xced4311be65b064fccf999ca7c6e4cdcc0a586538c9a92d1c6cc4ee2f3806c252327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7100 Ether
0xfafc122b63f5617685df7a131f88dc5e12c9c1fa4ba75da7176dabae33bf08012327248216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7100 Ether
0x97ae861827b8fc648de773980100587e817ac2f4732ab44e690a9a79dca37f692327243216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7690 Ether
0x9780c63678ace4a6a347a0b5b0d17bc47d19c0c28f984af913dfa902be1137332327243216 days 9 hrs ago0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc70xa5384627f6dcd3440298e2d8b0da9d5f0fcbcef7600 Ether

[Download: CSV Export ]    
Warning: The compiled contract might be susceptible to IdentityPrecompileReturnIgnored (low-severity), HighOrderByteCleanStorage (high-severity), OptimizerStaleKnowledgeAboutSHA3 (medium-severity), SendFailsForZeroEther (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: FirstBloodToken
Compiler Version: v0.3.6-nightly.2016.8.15+commit.868a167
Optimization Enabled: Yes
Online Solidity Editor:  -NA-



  Contract Source Code   Find Similiar Contracts
/**
 * Overflow aware uint math functions.
 *
 * Inspired by https://github.com/MakerDAO/maker-otc/blob/master/contracts/simple_market.sol
 */
contract SafeMath {
  //internals

  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

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

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

/**
 * ERC 20 token
 *
 * https://github.com/ethereum/EIPs/issues/20
 */
contract Token {

    /// @return total amount of tokens
    function totalSupply() constant returns (uint256 supply) {}

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance) {}

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success) {}

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}

    /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success) {}

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}

/**
 * ERC 20 token
 *
 * https://github.com/ethereum/EIPs/issues/20
 */
contract StandardToken is Token {

    /**
     * Reviewed:
     * - Interger overflow = OK, checked
     */
    function transfer(address _to, uint256 _value) returns (bool success) {
        //Default assumes totalSupply can't be over max (2^256 - 1).
        //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
        //Replace the if with this one instead.
        if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        //if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping(address => uint256) balances;

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

    uint256 public totalSupply;

}


/**
 * First blood crowdsale crowdsale contract.
 *
 * Security criteria evaluated against http://ethereum.stackexchange.com/questions/8551/methodological-security-review-of-a-smart-contract
 *
 *
 */
contract FirstBloodToken is StandardToken, SafeMath {

    string public name = "FirstBlood Token";
    string public symbol = "1ST";
    uint public decimals = 18;
    uint public startBlock; //crowdsale start block (set in constructor)
    uint public endBlock; //crowdsale end block (set in constructor)

    // Initial founder address (set in constructor)
    // All deposited ETH will be instantly forwarded to this address.
    // Address is a multisig wallet.
    address public founder = 0x0;

    // signer address (for clickwrap agreement)
    // see function() {} for comments
    address public signer = 0x0;

    uint public etherCap = 465313 * 10**18; //max amount raised during crowdsale (5.5M USD worth of ether will be measured with a moving average market price at beginning of the crowdsale)
    uint public transferLockup = 370285; //transfers are locked for this many blocks after endBlock (assuming 14 second blocks, this is 2 months)
    uint public founderLockup = 2252571; //founder allocation cannot be created until this many blocks after endBlock (assuming 14 second blocks, this is 1 year)
    uint public bountyAllocation = 2500000 * 10**18; //2.5M tokens allocated post-crowdsale for the bounty fund
    uint public ecosystemAllocation = 5 * 10**16; //5% of token supply allocated post-crowdsale for the ecosystem fund
    uint public founderAllocation = 10 * 10**16; //10% of token supply allocated post-crowdsale for the founder allocation
    bool public bountyAllocated = false; //this will change to true when the bounty fund is allocated
    bool public ecosystemAllocated = false; //this will change to true when the ecosystem fund is allocated
    bool public founderAllocated = false; //this will change to true when the founder fund is allocated
    uint public presaleTokenSupply = 0; //this will keep track of the token supply created during the crowdsale
    uint public presaleEtherRaised = 0; //this will keep track of the Ether raised during the crowdsale
    bool public halted = false; //the founder address can set this to true to halt the crowdsale due to emergency
    event Buy(address indexed sender, uint eth, uint fbt);
    event Withdraw(address indexed sender, address to, uint eth);
    event AllocateFounderTokens(address indexed sender);
    event AllocateBountyAndEcosystemTokens(address indexed sender);

    function FirstBloodToken(address founderInput, address signerInput, uint startBlockInput, uint endBlockInput) {
        founder = founderInput;
        signer = signerInput;
        startBlock = startBlockInput;
        endBlock = endBlockInput;
    }

    /**
     * Security review
     *
     * - Integer overflow: does not apply, blocknumber can't grow that high
     * - Division is the last operation and constant, should not cause issues
     * - Price function plotted https://github.com/Firstbloodio/token/issues/2
     */
    function price() constant returns(uint) {
        if (block.number>=startBlock && block.number<startBlock+250) return 170; //power hour
        if (block.number<startBlock || block.number>endBlock) return 100; //default price
        return 100 + 4*(endBlock - block.number)/(endBlock - startBlock + 1)*67/4; //crowdsale price
    }

    // price() exposed for unit tests
    function testPrice(uint blockNumber) constant returns(uint) {
        if (blockNumber>=startBlock && blockNumber<startBlock+250) return 170; //power hour
        if (blockNumber<startBlock || blockNumber>endBlock) return 100; //default price
        return 100 + 4*(endBlock - blockNumber)/(endBlock - startBlock + 1)*67/4; //crowdsale price
    }

    // Buy entry point
    function buy(uint8 v, bytes32 r, bytes32 s) {
        buyRecipient(msg.sender, v, r, s);
    }

    /**
     * Main token buy function.
     *
     * Security review
     *
     * - Integer math: ok - using SafeMath
     *
     * - halt flag added - ok
     *
     * Applicable tests:
     *
     * - Test halting, buying, and failing
     * - Test buying on behalf of a recipient
     * - Test buy
     * - Test unhalting, buying, and succeeding
     * - Test buying after the sale ends
     *
     */
    function buyRecipient(address recipient, uint8 v, bytes32 r, bytes32 s) {
        bytes32 hash = sha256(msg.sender);
        if (ecrecover(hash,v,r,s) != signer) throw;
        if (block.number<startBlock || block.number>endBlock || safeAdd(presaleEtherRaised,msg.value)>etherCap || halted) throw;
        uint tokens = safeMul(msg.value, price());
        balances[recipient] = safeAdd(balances[recipient], tokens);
        totalSupply = safeAdd(totalSupply, tokens);
        presaleEtherRaised = safeAdd(presaleEtherRaised, msg.value);

        if (!founder.call.value(msg.value)()) throw; //immediately send Ether to founder address

        Buy(recipient, msg.value, tokens);
    }

    /**
     * Set up founder address token balance.
     *
     * allocateBountyAndEcosystemTokens() must be calld first.
     *
     * Security review
     *
     * - Integer math: ok - only called once with fixed parameters
     *
     * Applicable tests:
     *
     * - Test bounty and ecosystem allocation
     * - Test bounty and ecosystem allocation twice
     *
     */
    function allocateFounderTokens() {
        if (msg.sender!=founder) throw;
        if (block.number <= endBlock + founderLockup) throw;
        if (founderAllocated) throw;
        if (!bountyAllocated || !ecosystemAllocated) throw;
        balances[founder] = safeAdd(balances[founder], presaleTokenSupply * founderAllocation / (1 ether));
        totalSupply = safeAdd(totalSupply, presaleTokenSupply * founderAllocation / (1 ether));
        founderAllocated = true;
        AllocateFounderTokens(msg.sender);
    }

    /**
     * Set up founder address token balance.
     *
     * Set up bounty pool.
     *
     * Security review
     *
     * - Integer math: ok - only called once with fixed parameters
     *
     * Applicable tests:
     *
     * - Test founder token allocation too early
     * - Test founder token allocation on time
     * - Test founder token allocation twice
     *
     */
    function allocateBountyAndEcosystemTokens() {
        if (msg.sender!=founder) throw;
        if (block.number <= endBlock) throw;
        if (bountyAllocated || ecosystemAllocated) throw;
        presaleTokenSupply = totalSupply;
        balances[founder] = safeAdd(balances[founder], presaleTokenSupply * ecosystemAllocation / (1 ether));
        totalSupply = safeAdd(totalSupply, presaleTokenSupply * ecosystemAllocation / (1 ether));
        balances[founder] = safeAdd(balances[founder], bountyAllocation);
        totalSupply = safeAdd(totalSupply, bountyAllocation);
        bountyAllocated = true;
        ecosystemAllocated = true;
        AllocateBountyAndEcosystemTokens(msg.sender);
    }

    /**
     * Emergency Stop crowdsale.
     *
     *  Applicable tests:
     *
     * - Test unhalting, buying, and succeeding
     */
    function halt() {
        if (msg.sender!=founder) throw;
        halted = true;
    }

    function unhalt() {
        if (msg.sender!=founder) throw;
        halted = false;
    }

    /**
     * Change founder address (where crowdsale ETH is being forwarded).
     *
     * Applicable tests:
     *
     * - Test founder change by hacker
     * - Test founder change
     * - Test founder token allocation twice
     *
     */

    function changeFounder(address newFounder) {
        if (msg.sender!=founder) throw;
        founder = newFounder;
    }

    /**
     * ERC 20 Standard Token interface transfer function
     *
     * Prevent transfers until freeze period is over.
     *
     * Applicable tests:
     *
     * - Test restricted early transfer
     * - Test transfer after restricted period
     */
    function transfer(address _to, uint256 _value) returns (bool success) {
        if (block.number <= endBlock + transferLockup && msg.sender!=founder) throw;
        return super.transfer(_to, _value);
    }
    /**
     * ERC 20 Standard Token interface transfer function
     *
     * Prevent transfers until freeze period is over.
     */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (block.number <= endBlock + transferLockup && msg.sender!=founder) throw;
        return super.transferFrom(_from, _to, _value);
    }

    /**
     * Do not allow direct deposits.
     *
     * All crowdsale depositors must have read the legal agreement.
     * This is confirmed by having them signing the terms of service on the website.
     * They give their crowdsale Ethereum source address on the website.
     * Website signs this address using crowdsale private key (different from founders key).
     * buy() takes this signature as input and rejects all deposits that do not have
     * signature you receive after reading terms of service.
     *
     */
    function() {
        throw;
    }

}

  Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"bountyAllocated","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"signer","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"blockNumber","type":"uint256"}],"name":"testPrice","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"presaleEtherRaised","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"allocateBountyAndEcosystemTokens","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"founder","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"etherCap","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"ecosystemAllocated","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"founderAllocation","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"founderLockup","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"newFounder","type":"address"}],"name":"changeFounder","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":true,"inputs":[],"name":"founderAllocated","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"allocateFounderTokens","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"ecosystemAllocation","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"transferLockup","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"presaleTokenSupply","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyRecipient","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buy","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"bountyAllocation","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"founderInput","type":"address"},{"name":"signerInput","type":"address"},{"name":"startBlockInput","type":"uint256"},{"name":"endBlockInput","type":"uint256"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"fbt","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"eth","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"}],"name":"AllocateFounderTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"}],"name":"AllocateBountyAndEcosystemTokens","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"},{"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"}]

  Contract Creation Code Switch To Opcodes View
60a060405260106060527f4669727374426c6f6f6420546f6b656e000000000000000000000000000000006080526003805460008290527f4669727374426c6f6f6420546f6b656e0000000000000000000000000000002082556100b5907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b602060026001841615610100026000190190931692909204601f01919091048101905b8082111561014857600081556001016100a1565b505060408051808201909152600381527f31535400000000000000000000000000000000000000000000000000000000006020918201908152600480546000829052915160ff191660061781559161014c9160026001821615610100026000190190911604601f01047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b908101906100a1565b5090565b50506012600581905560088054600160a060020a0319908116909155600980549091169055696288ab14061109e40000600a556205a66d600b5562225f1b600c556a0211654585005212800000600d5566b1a2bc2ec50000600e5567016345785d8a0000600f556010805462ffffff191690556000601181905590556013805460ff19169055604051608080610faf8339810160405280805190602001909190805190602001909190805190602001909190805190602001909190505060088054600160a060020a0319908116861790915560098054909116841790556006829055600781905550505050610d6a806102456000396000f36060604052361561018a5760e060020a600035046306fdde038114610192578063083c6323146101f0578063095ea7b3146101f957806318160ddd1461026d5780631bc59aa614610276578063238ac9331461028257806323b872dd146102945780632af7ceff146102d4578063313ce5671461030057806344b499581461030957806348cd4cb1146103125780634a8b53891461031b5780634d853ee51461033b5780635ed7ca5b1461034d57806370a082311461036d5780637228b9db14610392578063771d9d051461039b578063824338bd146103ac57806383e811a6146103b557806393c32e06146103be57806395d89b41146103e157806399d22e481461043f578063a035b1fe14610451578063a9059cbb1461047b578063b9b8af0b146104b8578063bcfcb03e146104c4578063c0f496ac146104e4578063c24fe21b146104ed578063c4fc3a3b146104f6578063cb3e64fd146104ff578063dd62ed3e1461051f578063dda44b1014610553578063e5fe4f3114610610578063f6b9d05d14610628575b610631610002565b6040805160038054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610633939083018282801561070f5780601f106106e45761010080835404028352916020019161070f565b6106a160075481565b6106b3600435602435600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6106a160025481565b6106b360105460ff1681565b6106c7600954600160a060020a031681565b6106b3600435602435604435600754600b546000910143118015906102ca5750600854600160a060020a03908116339190911614155b1561072157610002565b6106a160043560065460009082108015906102f3575060065460fa0182105b15610820575060aa61038d565b6106a160055481565b6106a160125481565b6106a160065481565b610631600854600160a060020a0390811633919091161461086357610002565b6106c7600854600160a060020a031681565b610631600854600160a060020a039081163391909116146109cd57610002565b6106a1600435600160a060020a0381166000908152602081905260409020545b919050565b6106a1600a5481565b6106b3601054610100900460ff1681565b6106a1600f5481565b6106a1600c5481565b610631600435600854600160a060020a039081163391909116146109dc57610002565b6040805160048054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610633939083018282801561070f5780601f106106e45761010080835404028352916020019161070f565b6106b360105462010000900460ff1681565b6106a15b600654600090431080159061046e575060065460fa0143105b15610a2a575060aa610a27565b6106b3600435602435600754600b546000910143118015906104ae5750600854600160a060020a03908116339190911614155b15610a4857610002565b6106b360135460ff1681565b610631600854600160a060020a03908116339190911614610b0057610002565b6106a1600e5481565b6106a1600b5481565b6106a160115481565b610631600854600160a060020a03908116339190911614610c0757610002565b6106a1600435602435600160a060020a03828116600090815260016020908152604080832093851683529290522054610267565b6106316004356024356044356064355b600060006002336040518082600160a060020a03166c010000000000000000000000000281526014019150506020604051808303816000866161da5a03f11561000257505060408051805160095460ff8916602084810191909152838501899052606084018890529351919550600160a060020a0316926001926080818101939182900301816000866161da5a03f11561000257505060405151600160a060020a031614610c1357610002565b610631600435602435604435610d5533848484610563565b6106a1600d5481565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b604080519115158252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b505050505081565b90505b9392505050565b610717848484600160a060020a03831660009081526020819052604081205482901080159061076e5750600160209081526040808320600160a060020a0333168452909152812054829010155b80156107935750600160a060020a038316600090815260208190526040902054808301115b15610d5a57600160a060020a038381166000818152602081815260408083208054880190558885168084528184208054899003905560018352818420339690961684529482529182902080548790039055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600161071a565b600654821080610831575060075482115b1561083e5750606461038d565b506007546006546004908203600101918390038102919091046043020460640161038d565b600754431161087157610002565b60105460ff16806108895750601054610100900460ff165b1561089357610002565b6002546011819055600854600160a060020a0316600090815260208190526040902054600e546108ee92670de0b6b3a76400009102045b600082820161071a8482108015906108e25750838210155b8015156109fc57610002565b600854600160a060020a0316600090815260208190526040902055600254601154600e546109289291670de0b6b3a76400009102046108ca565b600255600854600160a060020a0316600090815260208190526040902054600d5461095391906108ca565b600854600160a060020a0316600090815260208190526040902055600254600d5461097e91906108ca565b6002556010805460ff191660011761ff001916610100179055604051600160a060020a033316907fad156d34337c07db4f9b140cea03fb74d167641e252f85c85ccf3b47f36c9c4990600090a2565b6013805460ff19166001179055565b6008805473ffffffffffffffffffffffffffffffffffffffff1916821790555b50565b6004600660005054600760005054036001014360076000505403600402046043020460640190505b90565b600654431080610a3b575060075443115b156109ff57506064610a27565b610af98383600160a060020a033316600090815260208190526040812054829010801590610a875750600160a060020a03831681526040812054808301115b15610d6257600160a060020a0333811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610267565b9050610267565b600c54600754014311610b1257610002565b60105462010000900460ff1615610b2857610002565b60105460ff161580610b425750601054610100900460ff16155b15610b4c57610002565b600854600160a060020a0316600090815260208190526040902054600f54601154610b839291670de0b6b3a76400009102046108ca565b600854600160a060020a0316600090815260208190526040902055600254600f54601154610bbd9291670de0b6b3a76400009102046108ca565b6002556010805462ff0000191662010000179055604051600160a060020a033316907f1c8a3821e439862f28669f7fbc210e74e947ebf0e947b591cc5a02e41003026590600090a2565b6013805460ff19169055565b600654431080610c24575060075443115b80610c3c5750600a54601254610c3a90346108ca565b115b80610c49575060135460ff165b15610c5357610002565b610c5f34610c85610455565b600160a060020a038716600090815260208190526040902054909150610ca090826108ca565b600082820261071a848314806108e2575083858304146108e2565b600160a060020a038716600090815260208190526040902055600254610cc690826108ca565b600255601254610cd690346108ca565b601255600854604051600160a060020a0391909116903490600081818185876185025a03f1925050501515610d0a57610002565b60408051348152602081018390528151600160a060020a038916927f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed928290030190a2505050505050565b505050565b50600061071a565b50600061026756

    Constructor Arguments (ABI-encoded and appended to the ByteCode above)
000000000000000000000000a5384627f6dcd3440298e2d8b0da9d5f0fcbcef70000000000000000000000003286652eacf7abf27383dd1a9218ba9d8169d15e00000000000000000000000000000000000000000000000000000000002382ac00000000000000000000000000000000000000000000000000000000002625ac

-----Decoded View---------------
Found 4 constructor arguments :
Arg [0] : 000000000000000000000000a5384627f6dcd3440298e2d8b0da9d5f0fcbcef7
Arg [1] : 0000000000000000000000003286652eacf7abf27383dd1a9218ba9d8169d15e
Arg [2] : 00000000000000000000000000000000000000000000000000000000002382ac
Arg [3] : 00000000000000000000000000000000000000000000000000000000002625ac

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward