Contract Overview
Balance: 86.068777720534030915 Ether
Ether Value: $18,381.71 (@ $213.57/ETH)
Transactions: 2147 txns
 Latest 25 txns From a total of 2147 Transactions

TxHash Age From To Value [TxFee]
0x7526daa0ab5127f01dc08e1663823702d9a1113bea1b3c6b8e406b30b4d960fc34 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0xbd053d36552617008a374ad59e1cf07ad9e71b559a72567e17da62a2d3dd221943 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0x9a11ff5cd9b347213e4d5c63c29611bec827853771a61af7b4219682146db8c153 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.00056426
0xfaf0aa1e951458629dcfaffe3ccf648f477da88ce64890a5f02845c8d5966b221 hr 12 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.00056426
0x8204a88c232f2c82c76795fb25fa29a1f8f663f5d2c55ff51cf1f48afbcc03c51 hr 16 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x2185278b7b732fae3804633b325c97ff2503def0023f2e106588b3ad939518191 hr 34 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0xef305bcba2e4524b03bc2ba17bd2c22da06537cbc8dd5e2bf049156da9f2a27a2 hrs 17 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.0005191192
0xd31643fea9f3118f2b5bc8d3971d767eb4b48c11001be89906fcaa3e0f49d2fd2 hrs 28 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.00056426
0x941c1fd29dbc6f0bb2707c92ef95cba5db0b038b2f2a13f5ae7ccd77eb716abf2 hrs 31 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0xc5f661bee1e13a14dcb53d590e84986b6438230803b6e61604a26c502dd1b3b33 hrs 26 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x09d97b033facb5e1861184c349fc59cf3afa75874690cf59044d8743158c33473 hrs 38 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0x1ac6ffac591c7747d3a68885fbfb5a86cd356b6214d13505c55be4c9de2946b74 hrs 29 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x8a7b150e8aaeb18dff7a9bd7bb3913095f6310330c88788b0e0baa90e79e07ff4 hrs 39 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0x4f55ba23cfa8580dbc711e8cc7ec04c234647d371e82f1f45d88236de95864d55 hrs 28 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000246213
0xb3fbd1878852f43a3f28e7f7eb2dbea86a05c9c074cb19cfe3890ff6dded333f5 hrs 38 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000267633
0xcca7c6ceb044b964175dbb7b4fa805fa933baa439e1c30c3500ea142cc11f7f16 hrs 26 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000246213
0x90445b5954743815bc1401efe835e60842413ea4bc21e6d285a730f3ec1c806a6 hrs 36 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000267633
0x4dd3312201855deaa73d89839ce13e356c35e55c2914b79fb4a257bda7122c7a6 hrs 55 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.00056426
0x309e2823f5cd8a4c80446e3153c039a3bc5c1d007ce3f5d16925c12815b8796b7 hrs 22 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x1f27640e2f643c2e1c09160d48056d4635ecd0aa0d31b08b926d3c45a8d7c6f87 hrs 31 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0x593372fb576fabb753e17660832d7a2a00255e2b6068152f0e2e5fa1c0bd7d8a8 hrs 2 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x0faef13955e2a61e2325b300db503d70fa7fdd112e627dd77fef8348a4ecb4a58 hrs 25 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000237896
0xb8167b638f8466e28848978a579f741e4dc9939f292fe838898620cb355a064c9 hrs 8 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000218856
0x30c1d94c48372f3f4b8eb58048946b7c0bf2fdedc7200a1b0286ee70efabaccd9 hrs 20 mins ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000267633
0x0f2d5e87b953dabca99992094aec7c32b4e422d2a00201f876f2c69da8a13d8f10 hrs 1 min ago0x264aef2f7b347d6b26440bbaf62e746923369159  IN   0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930 Ether0.000246213
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x3bd790a639df1f10c4f7ea0719017e12e6a77e989691a83f898f4fc8cfc4119d64021621 hr 32 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.253187364 Ether
0x7483ab1bebe28c4da9f5c5f6206e5f5f93da1d886fc36460e9111eec049d77f364019732 hrs 15 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a933.25 Ether
0x1114c24c1cadeab66584e266029bfe4a9bd99a14f4206dc0703946996424345f64013104 hrs 48 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.11 Ether
0x44200acd9ceed5f92f86061f0b3daaf3e1bf96ac1b54abeb7398cec5331e692a639886114 hrs 30 mins ago0x0b141d8d4c0eca92d75d509c25516d518fe7d3380xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.2441 Ether
0x309e836f5fa6799748feb90eb86fedbdfcf850cc3f79e709bb8a6d02f540d7b1639882614 hrs 36 mins ago0x0b141d8d4c0eca92d75d509c25516d518fe7d3380xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.240007807745534752 Ether
0x8c8fc4abb8eaf90d357018083f338db802878163d30d8d2bfe6bd9e9d697632d639881414 hrs 38 mins ago0x0b141d8d4c0eca92d75d509c25516d518fe7d3380xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.240458892 Ether
0x213d87de7a7d1e4398294ad88d5c8cd750da1eeb57148d66ff95028a296b5c01639881314 hrs 39 mins ago0x0b141d8d4c0eca92d75d509c25516d518fe7d3380xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.2441 Ether
0x187082f5f4720e3010801fb45c3a424544dcf197abcb3d635989e6de9ccea66d639877014 hrs 50 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.29855177 Ether
0xae19a155f253c7313414f73b31ede3d2d96cd035a56a5ed4a71acf6446055f2b639869815 hrs 6 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.1 Ether
0x3360965264c27c17e189b419e3924d2116a706a5f01fe63b5ec598387644870f639854715 hrs 44 mins ago0x056776fae124d8b671421d4072572dee87f891ae0xebb060f9d0029082a04f78d84b9fb9d3d26f9a931.21 Ether
0x15976acf299f25700b5e99d65621eab3c55510aeb403e9d10a0cbe2793eb2c55639837016 hrs 26 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a936.8 Ether
0x0d93ff378d1e32d1470933693a291175936b3735db5a111155c5181b170f65d7639834216 hrs 32 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a931 Ether
0x5544eeafd40b171aa4dd63ff5e0a443e7335434b788f431de387d8fdff833130639822216 hrs 58 mins ago0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930xd0f36e6e9d44346e5f86cd302140868cdb9f40ed0.650261463616017881 Ether
0x60c33cbe85dce10f35e849b28d48735f28107f5574f8940411cf80ff79f70777639796317 hrs 55 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.8 Ether
0x58b0da0fda9ae0b7874c50d3a77dd246a227e32c0ad3d36d16a0d120d283c951639793918 hrs 4 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a9310 Ether
0xb9ea9610e19a7887ac89e57b737db0f93936bc49ed5cf2e3549235a4eb7152d3639786518 hrs 22 mins ago0x0b141d8d4c0eca92d75d509c25516d518fe7d3380xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.25 Ether
0x962dc4c66cf1d92ff0a2eeb41459403ea595da14fdd81082c9cfa9fe115b024a639685722 hrs 23 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.276 Ether
0xfbe301f979b13a59957d970f41a27ece685ac8ae4372f4e701de83f64b10a5d1639682522 hrs 30 mins ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a931.415 Ether
0x0a3fa62edebb9c7f3a71fb6afac4bba39ada7cfbe8313ec4f4816c01d3f9a80f639666123 hrs 9 mins ago0xbf5eb45cb01824af3b47c656c1c8d1df630916e40xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.24 Ether
0x9512e55b1eb2b3b43a15d4b7d712321c5cbcde8289a224d1e776fecf57caf772639644223 hrs 59 mins ago0xd03d7e18e9f65c4e03b50cba3bfeb545fd7656ab0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.71439 Ether
0x1f9930b8e9b554be4e85f75235f88872704990f314c87c92c16179f66ef9a1a763957531 day 2 hrs ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.16984632951139444 Ether
0xd2ce97055c9855a0582d9b5bc0e218c1955614a67673dc783ff6c5c884d69fe963957521 day 2 hrs ago0xbf5eb45cb01824af3b47c656c1c8d1df630916e40xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.24 Ether
0x5b73e8eb6c4a050c7a6acfd6c0c17f2daf700a37639a934a8f863b34f288526963954321 day 3 hrs ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a931.7163642 Ether
0x87eb787122ac7c167b3545eea9f9633e0e0e19b1be1f5e0f4dfb1897bd47b56c63952481 day 4 hrs ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.207622400399999 Ether
0xee75f1e1f55965b5ae98694355934f3142726b94607acc9bfc95e251db92a6f663931241 day 12 hrs ago0x50c367245ae216e0e2699ba9b1d8e1645d8a7e6b0xebb060f9d0029082a04f78d84b9fb9d3d26f9a930.007136953880597015 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Referral
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure 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 a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

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

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
    public view 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 Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
    * @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(_value <= balances[msg.sender]);
        require(_to != address(0));

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit 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 view returns (uint256) {
        return balances[_owner];
    }

}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * 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)) internal 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(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(_to != address(0));

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit 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;
        emit 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
        view
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a 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
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(
        address _spender,
        uint256 _addedValue
    )
        public
        returns (bool)
    {
        allowed[msg.sender][_spender] = (
        allowed[msg.sender][_spender].add(_addedValue));
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseApproval(
        address _spender,
        uint256 _subtractedValue
    )
        public
        returns (bool)
    {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue >= oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

}

contract BlockchainToken is StandardToken, Ownable {

    string public constant name = 'Blockchain Token 2.0';

    string public constant symbol = 'BCT';

    uint32 public constant decimals = 18;

    /**
     *  how many USD cents for 1 * 10^18 token
     */
    uint public price = 210;

    function setPrice(uint _price) onlyOwner public {
        price = _price;
    }

    uint256 public INITIAL_SUPPLY = 21000000 * 1 ether;

    /**
   * @dev Constructor that gives msg.sender all of existing tokens.
   */
    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }

}

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken, Ownable {
    event Mint(address indexed to, uint256 amount);
    event Burn(address indexed burner, uint256 value);
    event MintFinished();

    bool public mintingFinished = false;


    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    modifier hasMintPermission() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(
        address _to,
        uint256 _amount
    )
        public
        hasMintPermission
        canMint
        returns (bool)
    {
        totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /**
     * @dev Burns a specific amount of tokens.
     * @param _addr The address that will have _amount of tokens burned
     * @param _value The amount of token to be burned.
     */
    function burn(
        address _addr,
        uint256 _value
    )
        public onlyOwner
    {
        _burn(_addr, _value);
    }

    function _burn(
        address _who,
        uint256 _value
    )
        internal
    {
        require(_value <= balances[_who]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
    }

    /**
     * @dev Function to stop minting new tokens.
     * @return True if the operation was successful.
     */
    function finishMinting() public onlyOwner canMint returns (bool) {
        mintingFinished = true;
        emit MintFinished();
        return true;
    }
}

contract WealthBuilderToken is MintableToken {

    string public name = 'Wealth Builder Token';

    string public symbol = 'WBT';

    uint32 public decimals = 18;

    /**
     *  how many {tokens*10^(-18)} get per 1wei
     */
    uint public rate = 10 ** 7;
    /**
     *  multiplicator for rate
     */
    uint public mrate = 10 ** 7;

    function setRate(uint _rate) onlyOwner public {
        rate = _rate;
    }

}

contract Data is Ownable {

    // node => its parent
    mapping (address => address) private parent;

    // node => its status
    mapping (address => uint8) public statuses;

    // node => sum of all his child deposits in USD cents
    mapping (address => uint) public referralDeposits;

    // client => balance in wei*10^(-6) available for withdrawal
    mapping(address => uint256) private balances;

    // investor => balance in wei*10^(-6) available for withdrawal
    mapping(address => uint256) private investorBalances;

    function parentOf(address _addr) public constant returns (address) {
        return parent[_addr];
    }

    function balanceOf(address _addr) public constant returns (uint256) {
        return balances[_addr] / 1000000;
    }

    function investorBalanceOf(address _addr) public constant returns (uint256) {
        return investorBalances[_addr] / 1000000;
    }

    /**
     * @dev The Data constructor to set up the first depositer
     */
    constructor() public {
        // DirectorOfRegion - 7
        statuses[msg.sender] = 7;
    }

    function addBalance(address _addr, uint256 amount) onlyOwner public {
        balances[_addr] += amount;
    }

    function subtrBalance(address _addr, uint256 amount) onlyOwner public {
        require(balances[_addr] >= amount);
        balances[_addr] -= amount;
    }

    function addInvestorBalance(address _addr, uint256 amount) onlyOwner public {
        investorBalances[_addr] += amount;
    }

    function subtrInvestorBalance(address _addr, uint256 amount) onlyOwner public {
        require(investorBalances[_addr] >= amount);
        investorBalances[_addr] -= amount;
    }

    function addReferralDeposit(address _addr, uint256 amount) onlyOwner public {
        referralDeposits[_addr] += amount;
    }

    function subtrReferralDeposit(address _addr, uint256 amount) onlyOwner public {
        referralDeposits[_addr] -= amount;
    }

    function setStatus(address _addr, uint8 _status) onlyOwner public {
        statuses[_addr] = _status;
    }

    function setParent(address _addr, address _parent) onlyOwner public {
        parent[_addr] = _parent;
    }

}

contract Declaration {

    // threshold in USD => status
    mapping (uint => uint8) statusThreshold;

    // status => (depositsNumber => percentage / 10)
    mapping (uint8 => mapping (uint16 => uint256)) feeDistribution;

    // status thresholds in USD
    uint[8] thresholds = [
    0, 5000, 35000, 150000, 500000, 2500000, 5000000, 10000000
    ];

    uint[5] referralFees = [50, 30, 20, 10, 5];
    uint[5] serviceFees = [25, 20, 15, 10, 5];


    /**
     * @dev The Declaration constructor to define some constants
     */
    constructor() public {
        setFeeDistributionsAndStatusThresholds();
    }


    /**
     * @dev Set up fee distribution & status thresholds
     */
    function setFeeDistributionsAndStatusThresholds() private {
        // Agent - 0
        setFeeDistributionAndStatusThreshold(0, [uint16(120), uint16(80), uint16(50), uint16(20), uint16(10)], thresholds[0]);
        // SilverAgent - 1
        setFeeDistributionAndStatusThreshold(1, [uint16(160), uint16(100), uint16(60), uint16(30), uint16(20)], thresholds[1]);
        // Manager - 2
        setFeeDistributionAndStatusThreshold(2, [uint16(200), uint16(120), uint16(80), uint16(40), uint16(25)], thresholds[2]);
        // ManagerOfGroup - 3
        setFeeDistributionAndStatusThreshold(3, [uint16(250), uint16(150), uint16(100), uint16(50), uint16(30)], thresholds[3]);
        // ManagerOfRegion - 4
        setFeeDistributionAndStatusThreshold(4, [300, 180, 120, 60, 35], thresholds[4]);
        // Director - 5
        setFeeDistributionAndStatusThreshold(5, [350, 210, 140, 70, 40], thresholds[5]);
        // DirectorOfGroup - 6
        setFeeDistributionAndStatusThreshold(6, [400, 240, 160, 80, 45], thresholds[6]);
        // DirectorOfRegion - 7
        setFeeDistributionAndStatusThreshold(7, [500, 300, 200, 100, 50], thresholds[7]);
    }


    /**
     * @dev Set up specific fee and status threshold
     * @param _st The status to set up for
     * @param _percentages Array of pecentages, which should go to member
     * @param _threshold The minimum amount of sum of children deposits to get
     *                   the status _st
     */
    function setFeeDistributionAndStatusThreshold(
        uint8 _st,
        uint16[5] _percentages,
        uint _threshold
    )
        private
    {
        statusThreshold[_threshold] = _st;
        for (uint8 i = 0; i < _percentages.length; i++) {
            feeDistribution[_st][i] = _percentages[i];
        }
    }

}

contract Referral is Declaration, Ownable {

    using SafeMath for uint;

    // reference to WBT token contract
    WealthBuilderToken private wbtToken;

    // reference to BCT2.0 token contract
    BlockchainToken private bctToken;

    // reference to data contract
    Data private data;

    /**
     *  how many USD cents get per ETH
     */
    uint public ethUsdRate;

    /**
     * @dev The Referral constructor to set up the first depositer,
     * reference to system wbt token, bct token, data and set ethUsdRate
     */
    constructor(
        uint _ethUsdRate,
        address _wbtToken,
        address _bctToken,
        address _data
    )
        public
    {
        ethUsdRate = _ethUsdRate;

        // instantiate wbtToken & data contracts
        wbtToken = WealthBuilderToken(_wbtToken);
        bctToken = BlockchainToken(_bctToken);
        data = Data(_data);
    }

    /**
     * @dev Callback function
     */
    function() payable public {
    }

    /**
     * @dev invest wbt token function
     * @param _client to transfer WBT token
     * @param _depositsCount num of the deposit
     */
    function invest(
        address _client,
        uint8 _depositsCount
    )
        payable public
    {
        uint amount = msg.value;

        // if less then 5 deposits
        if (_depositsCount < 5) {

            uint serviceFee;

            serviceFee = amount * serviceFees[_depositsCount];

            uint referralFee = amount * referralFees[_depositsCount];

            // distribute deposit fee among users above on the branch & update users' statuses
            distribute(data.parentOf(_client), 0, _depositsCount, amount);

            // update balance & number of deposits of user
            uint active = (amount * 100).sub(referralFee).sub(serviceFee);

            wbtToken.mint(_client, active / 100 * wbtToken.rate() / wbtToken.mrate());

            // update owner`s balance
            data.addBalance(owner, serviceFee * 10000);
        } else {
            wbtToken.mint(_client, amount * wbtToken.rate() / wbtToken.mrate());
        }
    }

    /**
     * @dev invest bct token function
     * @param _client to transfer BCT token
     */
    function investBct(
        address _client
    )
        public payable
    {
        uint amount = msg.value;
        // distribute deposit fee among users above on the branch & update users' statuses
        distribute(data.parentOf(_client), 0, 0, amount);

        bctToken.transfer(_client, amount * ethUsdRate / bctToken.price());
    }


    /**
     * @dev Recursively distribute deposit fee between parents
     * @param _node Parent address
     * @param _prevPercentage The percentage for previous parent
     * @param _depositsCount Count of depositer deposits
     * @param _amount The amount of deposit
     */
    function distribute(
        address _node,
        uint _prevPercentage,
        uint8 _depositsCount,
        uint _amount
    )
        private
    {
        address node = _node;
        uint prevPercentage = _prevPercentage;

        // distribute deposit fee among users above on the branch & update users' statuses
        while(node != address(0)) {
            uint8 status = data.statuses(node);

            // count fee percentage of current node
            uint nodePercentage = feeDistribution[status][_depositsCount];
            uint percentage = nodePercentage.sub(prevPercentage);
            data.addBalance(node, _amount * percentage * 1000);

            //update refferals sum amount
            data.addReferralDeposit(node, _amount * ethUsdRate / 10**18);

            //update status
            updateStatus(node, status);

            node = data.parentOf(node);
            prevPercentage = nodePercentage;
        }
    }


    /**
     * @dev Update node status if children sum amount is enough
     * @param _node Node address
     * @param _status Node current status
     */
    function updateStatus(
        address _node,
        uint8 _status
    )
        private
    {
        uint refDep = data.referralDeposits(_node);

        for (uint i = thresholds.length - 1; i > _status; i--) {
            uint threshold = thresholds[i] * 100;

            if (refDep >= threshold) {
                data.setStatus(_node, statusThreshold[thresholds[i]]);
                break;
            }
        }
    }


    /**
     * @dev Set wbtToken exchange rate
     * @param _rate wbt/eth rate
     */
    function setRate(
        uint _rate
    )
        onlyOwner public
    {
        wbtToken.setRate(_rate);
    }


    /**
     * @dev Set bctToken price
     * @param _price bct/usd rate
     */
    function setPrice(
        uint _price
    )
        onlyOwner public
    {
        bctToken.setPrice(_price);
    }


    /**
     * @dev Set ETH exchange rate
     * @param _ethUsdRate eth/usd rate
     */
    function setEthUsdRate(
        uint _ethUsdRate
    )
        onlyOwner public
    {
        ethUsdRate = _ethUsdRate;
    }


    /**
     * @dev Add new child
     * @param _inviter parent
     * @param _invitee child
     */
    function invite(
        address _inviter,
        address _invitee
    )
        public onlyOwner
    {
        data.setParent(_invitee, _inviter);
        // Agent - 0
        data.setStatus(_invitee, 0);
    }


    /**
     * @dev Set _status for _addr
     * @param _addr address
     * @param _status ref. status
     */
    function setStatus(
        address _addr,
        uint8 _status
    )
        public onlyOwner
    {
        data.setStatus(_addr, _status);
    }


    /**
     * @dev Withdraw _amount for _addr
     * @param _addr withdrawal address
     * @param _amount withdrawal amount
     * @param investor is investor
     */
    function withdraw(
        address _addr,
        uint256 _amount,
        bool investor
    )
        public onlyOwner
    {
        uint amount = investor ? data.investorBalanceOf(_addr) : data.balanceOf(_addr);
        require(amount >= _amount && address(this).balance >= _amount);

        if (investor) {
            data.subtrInvestorBalance(_addr, _amount * 1000000);
        } else {
            data.subtrBalance(_addr, _amount * 1000000);
        }

        _addr.transfer(_amount);
    }


    /**
     * @dev Withdraw contract balance to _addr
     * @param _addr withdrawal address
     */
    function withdrawOwner(
        address _addr,
        uint256 _amount
    )
        public onlyOwner
    {
        require(address(this).balance >= _amount);
        _addr.transfer(_amount);
    }


    /**
     * @dev Withdraw corresponding amount of ETH to _addr and burn _value tokens
     * @param _addr buyer address
     * @param _amount amount of tokens to buy
     */
    function transferBctToken(
        address _addr,
        uint _amount
    )
        onlyOwner public
    {
        require(bctToken.balanceOf(this) >= _amount);
        bctToken.transfer(_addr, _amount);
    }


    /**
     * @dev Withdraw corresponding amount of ETH to _addr and burn _value tokens
     * @param _addr withdrawal address
     * @param _amount amount of tokens to sell
     */
    function withdrawWbtToken(
        address _addr,
        uint256 _amount
    )
        onlyOwner public
    {
        wbtToken.burn(_addr, _amount);
        uint256 etherValue = _amount * wbtToken.mrate() / wbtToken.rate();
        _addr.transfer(etherValue);
    }


    /**
     * @dev Transfer ownership of wbtToken contract to _addr
     * @param _addr address
     */
    function transferTokenOwnership(
        address _addr
    )
        onlyOwner public
    {
        wbtToken.transferOwnership(_addr);
    }


    /**
     * @dev Transfer ownership of data contract to _addr
     * @param _addr address
     */
    function transferDataOwnership(
        address _addr
    )
        onlyOwner public
    {
        data.transferOwnership(_addr);
    }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_status","type":"uint8"}],"name":"setStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethUsdRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_client","type":"address"},{"name":"_depositsCount","type":"uint8"}],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferBctToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_inviter","type":"address"},{"name":"_invitee","type":"address"}],"name":"invite","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_client","type":"address"}],"name":"investBct","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawWbtToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"transferDataOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"},{"name":"investor","type":"bool"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ethUsdRate","type":"uint256"}],"name":"setEthUsdRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_ethUsdRate","type":"uint256"},{"name":"_wbtToken","type":"address"},{"name":"_bctToken","type":"address"},{"name":"_data","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6101806040526000608090815261138860a0526188b860c052620249f060e0526207a12061010052622625a061012052624c4b406101405262989680610160526200004f906002906008620003cf565b506040805160a08101825260328152601e6020820152601491810191909152600a606082018190526005608083018190526200008c929062000419565b506040805160a0810182526019815260146020820152600f918101829052600a6060820152600560808201819052620000c792919062000419565b50348015620000d557600080fd5b5060405160808062001d3f83398101604090815281516020830151918301516060909301519092906200011064010000000062000161810204565b6014805433600160a060020a031991821617909155601894909455601580548516600160a060020a03948516179055601680548516928416929092179091556017805490931691161790556200046f565b6040805160a081018252607881526050602082015260329181019190915260146060820152600a6080820152620001aa906000906002825b015464010000000062000359810204565b6040805160a08181018352815260646020820152603c91810191909152601e606082015260146080820152620001e69060019060028262000199565b6040805160a08101825260c881526078602082015260509181019190915260286060820152601960808201526200022290600290818062000199565b6040805160a08101825260fa81526096602082015260649181019190915260326060820152601e60808201526200025f9060039060028262000199565b6040805160a08101825261012c815260b46020820152607891810191909152603c6060820152602360808201526200029d9060049060028262000199565b6040805160a08101825261015e815260d26020820152608c918101919091526046606082015260286080820152620002db9060059060028262000199565b6040805160a08181018352610190825260f060208301529181019190915260506060820152602d6080820152620003189060069060028262000199565b6040805160a0810182526101f4815261012c602082015260c8918101919091526064606082015260326080820152620003579060079060028262000199565b565b6000818152602081905260408120805460ff191660ff86161790555b60058160ff161015620003c9578260ff8216600581106200039257fe5b6020908102919091015160ff8087166000908152600180855260408083209387168352929094522061ffff90911690550162000375565b50505050565b826008810192821562000407579160200282015b8281111562000407578251829062ffffff16905591602001919060010190620003e3565b50620004159291506200044f565b5090565b826005810192821562000407579160200282015b8281111562000407578251829060ff169055916020019190600101906200042d565b6200046c91905b8082111562000415576000815560010162000456565b90565b6118c0806200047f6000396000f3006080604052600436106100cc5763ffffffff60e060020a60003504166321e6b53d81146100ce578063278e07ce146100ef57806334fcf437146101165780633b478fc51461012e578063581c5ae6146101555780635cbb122c1461016f5780636f4c6443146101935780638da5cb5b146101ba57806391b7f5ed146101eb578063a388541314610203578063a671277814610227578063c307f6ba1461023b578063e4952ddb1461025f578063ead5d35914610280578063f2fde38b146102a9578063fb6f93a4146102ca575b005b3480156100da57600080fd5b506100cc600160a060020a03600435166102e2565b3480156100fb57600080fd5b506100cc600160a060020a036004351660ff6024351661037b565b34801561012257600080fd5b506100cc60043561041e565b34801561013a57600080fd5b5061014361049b565b60408051918252519081900360200190f35b6100cc600160a060020a036004351660ff602435166104a1565b34801561017b57600080fd5b506100cc600160a060020a0360043516602435610994565b34801561019f57600080fd5b506100cc600160a060020a0360043581169060243516610ae6565b3480156101c657600080fd5b506101cf610bee565b60408051600160a060020a039092168252519081900360200190f35b3480156101f757600080fd5b506100cc600435610bfd565b34801561020f57600080fd5b506100cc600160a060020a0360043516602435610c7a565b6100cc600160a060020a0360043516610cda565b34801561024757600080fd5b506100cc600160a060020a0360043516602435610e70565b34801561026b57600080fd5b506100cc600160a060020a0360043516611060565b34801561028c57600080fd5b506100cc600160a060020a036004351660243560443515156110de565b3480156102b557600080fd5b506100cc600160a060020a036004351661139f565b3480156102d657600080fd5b506100cc6004356113c2565b601454600160a060020a031633146102f957600080fd5b601554604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561036057600080fd5b505af1158015610374573d6000803e3d6000fd5b5050505050565b601454600160a060020a0316331461039257600080fd5b601754604080517f278e07ce000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015260ff851660248301529151919092169163278e07ce91604480830192600092919082900301818387803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b505050505050565b601454600160a060020a0316331461043557600080fd5b601554604080517f34fcf437000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916334fcf4379160248082019260009290919082900301818387803b15801561036057600080fd5b60185481565b3460008080600560ff861610156107e357600f60ff8616600581106104c257fe5b015484029250600a60ff8616600581106104d857fe5b0154601754604080517fee08388e000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301529151938802955061058093919092169163ee08388e9160248083019260209291908290030181600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b505050506040513d602081101561057557600080fd5b5051600087876113de565b6105a383610597606487028563ffffffff61169616565b9063ffffffff61169616565b601554604080517ef3e7170000000000000000000000000000000000000000000000000000000081529051929350600160a060020a03909116916340c10f19918991849162f3e7179160048083019260209291908290030181600087803b15801561060d57600080fd5b505af1158015610621573d6000803e3d6000fd5b505050506040513d602081101561063757600080fd5b5051601554604080517f2c4e722e0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691632c4e722e916004808201926020929091908290030181600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b505160648604028115156106d357fe5b046040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561072657600080fd5b505af115801561073a573d6000803e3d6000fd5b505050506040513d602081101561075057600080fd5b5050601754601454604080517f21e5383a000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015261271087026024820152905191909216916321e5383a91604480830192600092919082900301818387803b1580156107c657600080fd5b505af11580156107da573d6000803e3d6000fd5b50505050610416565b601554604080517ef3e7170000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916340c10f19918991849162f3e7179160048083019260209291908290030181600087803b15801561084a57600080fd5b505af115801561085e573d6000803e3d6000fd5b505050506040513d602081101561087457600080fd5b5051601554604080517f2c4e722e0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691632c4e722e916004808201926020929091908290030181600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b505050506040513d602081101561090057600080fd5b5051880281151561090d57fe5b046040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561096057600080fd5b505af1158015610974573d6000803e3d6000fd5b505050506040513d602081101561098a57600080fd5b5050505050505050565b601454600160a060020a031633146109ab57600080fd5b601654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518392600160a060020a0316916370a082319160248083019260209291908290030181600087803b158015610a1057600080fd5b505af1158015610a24573d6000803e3d6000fd5b505050506040513d6020811015610a3a57600080fd5b50511015610a4757600080fd5b601654604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610ab657600080fd5b505af1158015610aca573d6000803e3d6000fd5b505050506040513d6020811015610ae057600080fd5b50505050565b601454600160a060020a03163314610afd57600080fd5b601754604080517fb3204b8b000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015285811660248301529151919092169163b3204b8b91604480830192600092919082900301818387803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b5050601754604080517f278e07ce000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260006024830181905292519316945063278e07ce93506044808201939182900301818387803b15801561040257600080fd5b601454600160a060020a031681565b601454600160a060020a03163314610c1457600080fd5b601654604080517f91b7f5ed000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916391b7f5ed9160248082019260009290919082900301818387803b15801561036057600080fd5b601454600160a060020a03163314610c9157600080fd5b3031811115610c9f57600080fd5b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610cd5573d6000803e3d6000fd5b505050565b601754604080517fee08388e000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015291513493610d7a93169163ee08388e9160248083019260209291908290030181600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505050506040513d6020811015610d6f57600080fd5b5051600080846113de565b601654604080517fa035b1fe0000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169163a9059cbb918591849163a035b1fe9160048083019260209291908290030181600087803b158015610de357600080fd5b505af1158015610df7573d6000803e3d6000fd5b505050506040513d6020811015610e0d57600080fd5b50516018548502811515610e1d57fe5b046040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610ab657600080fd5b601454600090600160a060020a03163314610e8a57600080fd5b601554604080517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820186905291519190921691639dc29fac91604480830192600092919082900301818387803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b50505050601560009054906101000a9004600160a060020a0316600160a060020a0316632c4e722e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b5051601554604080517ef3e7170000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169162f3e717916004808201926020929091908290030181600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506040513d602081101561101757600080fd5b5051830281151561102457fe5b04905082600160a060020a03166108fc829081150290604051600060405180830381858888f19350505050158015610ae0573d6000803e3d6000fd5b601454600160a060020a0316331461107757600080fd5b601754604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561036057600080fd5b601454600090600160a060020a031633146110f857600080fd5b8161119657601754604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915191909216916370a082319160248083019260209291908290030181600087803b15801561116557600080fd5b505af1158015611179573d6000803e3d6000fd5b505050506040513d602081101561118f57600080fd5b505161122b565b601754604080517f61fba37d000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915191909216916361fba37d9160248083019260209291908290030181600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b505050506040513d602081101561122857600080fd5b50515b905082811015801561123e575030318311155b151561124957600080fd5b81156112de57601754604080517f0452396c000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152620f42408702602483015291519190921691630452396c91604480830192600092919082900301818387803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050611369565b601754604080517f5a6af33b000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152620f42408702602483015291519190921691635a6af33b91604480830192600092919082900301818387803b15801561135057600080fd5b505af1158015611364573d6000803e3d6000fd5b505050505b604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015610374573d6000803e3d6000fd5b601454600160a060020a031633146113b657600080fd5b6113bf816116a8565b50565b601454600160a060020a031633146113d957600080fd5b601855565b8383600080805b600160a060020a0385161561168b57601754604080517faf11c1f0000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301529151919092169163af11c1f09160248083019260209291908290030181600087803b15801561145c57600080fd5b505af1158015611470573d6000803e3d6000fd5b505050506040513d602081101561148657600080fd5b505160ff8082166000908152600160209081526040808320938c168352929052205490935091506114bd828563ffffffff61169616565b601754604080517f21e5383a000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301526103e88b860202602483015291519394509116916321e5383a9160448082019260009290919082900301818387803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b5050601754601854604080517fa7f1b77a000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152670de0b6b3a7640000938d02939093046024820152905191909216935063a7f1b77a9250604480830192600092919082900301818387803b1580156115c957600080fd5b505af11580156115dd573d6000803e3d6000fd5b505050506115eb8584611726565b601754604080517fee08388e000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301529151919092169163ee08388e9160248083019260209291908290030181600087803b15801561165357600080fd5b505af1158015611667573d6000803e3d6000fd5b505050506040513d602081101561167d57600080fd5b5051945090925082906113e5565b505050505050505050565b6000828211156116a257fe5b50900390565b600160a060020a03811615156116bd57600080fd5b601454604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36014805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b601754604080517f6244cfa4000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915160009384938493911691636244cfa49160248082019260209290919082900301818787803b15801561179357600080fd5b505af11580156117a7573d6000803e3d6000fd5b505050506040513d60208110156117bd57600080fd5b50519250600791505b8360ff1682111561037457600282600881106117de57fe5b0154606402905080831061188857601754600160a060020a031663278e07ce866000806002876008811061180e57fe5b0154815260208101919091526040908101600090812054825160e060020a63ffffffff8716028152600160a060020a03909416600485015260ff166024840152905160448084019382900301818387803b15801561186b57600080fd5b505af115801561187f573d6000803e3d6000fd5b50505050610374565b600019909101906117c65600a165627a7a72305820bba32abb07ae2cf88961ad327fb68ff2d9053bbcd8553390d7909bc9d007d0a500290000000000000000000000000000000000000000000000000000000000009e32000000000000000000000000a7cb7f55ece2d1df3379f303f33dd3e1ee593b8f0000000000000000000000005c523d6abe17e98eaa58c2df62a6ec9162f3b9a10000000000000000000000006c3699aeb742bb0a179c0ac1628dedf0b1db8554

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

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000009e32
Arg [1] : 000000000000000000000000a7cb7f55ece2d1df3379f303f33dd3e1ee593b8f
Arg [2] : 0000000000000000000000005c523d6abe17e98eaa58c2df62a6ec9162f3b9a1
Arg [3] : 0000000000000000000000006c3699aeb742bb0a179c0ac1628dedf0b1db8554


   Swarm Source:
bzzr://bba32abb07ae2cf88961ad327fb68ff2d9053bbcd8553390d7909bc9d007d0a5

 

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