ETH Price: $3,108.80 (+1.09%)
Gas: 6 Gwei

Contract

0xe2612b9bC5Cc0abf3fd35400cc2E49b3d426c56f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Airdrop73119772019-03-05 22:21:091953 days ago1551824469IN
0xe2612b9b...3d426c56f
0.00017 ETH0.0005326620
Airdrop70598312019-01-13 15:26:392004 days ago1547393199IN
0xe2612b9b...3d426c56f
0 ETH0.00016156
Airdrop70201962019-01-06 12:59:042011 days ago1546779544IN
0xe2612b9b...3d426c56f
0 ETH0.000026851
Airdrop70116862019-01-05 0:36:152013 days ago1546648575IN
0xe2612b9b...3d426c56f
0 ETH0.000026851
Airdrop70106332019-01-04 20:07:312013 days ago1546632451IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop70070162019-01-04 4:22:392014 days ago1546575759IN
0xe2612b9b...3d426c56f
0 ETH0.000026851
Airdrop70050442019-01-03 19:44:512014 days ago1546544691IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop70048682019-01-03 19:01:582014 days ago1546542118IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop70046722019-01-03 18:09:502014 days ago1546538990IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop70046332019-01-03 17:58:532014 days ago1546538333IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop70045282019-01-03 17:33:182014 days ago1546536798IN
0xe2612b9b...3d426c56f
0 ETH0.000026851
Airdrop69715142018-12-29 2:48:052020 days ago1546051685IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop66447902018-11-04 23:45:212074 days ago1541375121IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop66309132018-11-02 17:22:372076 days ago1541179357IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop65947192018-10-27 18:45:512082 days ago1540665951IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Airdrop65797252018-10-25 8:03:482084 days ago1540454628IN
0xe2612b9b...3d426c56f
0 ETH0.000026911
Transfer65695722018-10-23 16:20:572086 days ago1540311657IN
0xe2612b9b...3d426c56f
0 ETH0.000126276
Airdrop65649192018-10-22 22:08:222087 days ago1540246102IN
0xe2612b9b...3d426c56f
0 ETH0.000107664
Airdrop65649162018-10-22 22:07:422087 days ago1540246062IN
0xe2612b9b...3d426c56f
0 ETH0.000026851
Transfer65642072018-10-22 19:22:122087 days ago1540236132IN
0xe2612b9b...3d426c56f
0 ETH0.000084184
Transfer65641952018-10-22 19:19:302087 days ago1540235970IN
0xe2612b9b...3d426c56f
0 ETH0.000084184
Lock65630482018-10-22 14:47:262087 days ago1540219646IN
0xe2612b9b...3d426c56f
0 ETH0.000168876
Airdrop65625132018-10-22 12:30:072087 days ago1540211407IN
0xe2612b9b...3d426c56f
0 ETH0.0011075812
Airdrop65624882018-10-22 12:25:322087 days ago1540211132IN
0xe2612b9b...3d426c56f
0 ETH0.0011068212
Airdrop65618712018-10-22 10:01:212087 days ago1540202481IN
0xe2612b9b...3d426c56f
0 ETH0.000309194
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BITOXAirdrop

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-09-26
*/

pragma solidity 0.4.24;

// File: contracts/commons/SafeMath.sol

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

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

// File: contracts/flavours/Ownable.sol

/**
 * @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 {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

// File: contracts/flavours/Lockable.sol

/**
 * @title Lockable
 * @dev Base contract which allows children to
 *      implement main operations locking mechanism.
 */
contract Lockable is Ownable {
    event Lock();
    event Unlock();

    bool public locked = false;

    /**
     * @dev Modifier to make a function callable
    *       only when the contract is not locked.
     */
    modifier whenNotLocked() {
        require(!locked);
        _;
    }

    /**
     * @dev Modifier to make a function callable
     *      only when the contract is locked.
     */
    modifier whenLocked() {
        require(locked);
        _;
    }

    /**
     * @dev called by the owner to lock, triggers locked state
     */
    function lock() public onlyOwner whenNotLocked {
        locked = true;
        emit Lock();
    }

    /**
     * @dev called by the owner
     *      to unlock, returns to unlocked state
     */
    function unlock() public onlyOwner whenLocked {
        locked = false;
        emit Unlock();
    }
}

// File: contracts/base/ERC20Token.sol

interface ERC20Token {
    function transferFrom(address from_, address to_, uint value_) external returns (bool);
    function transfer(address to_, uint value_) external returns (bool);
    function balanceOf(address owner_) external returns (uint);
}

// File: contracts/base/BaseAirdrop.sol

contract BaseAirdrop is Lockable {
    using SafeMath for uint;

    ERC20Token public token;

    address public tokenHolder;

    mapping(address => bool) public users;

    event AirdropToken(address indexed to, uint amount);

    constructor(address _token, address _tokenHolder) public {
        require(_token != address(0) && _tokenHolder != address(0));
        token = ERC20Token(_token);
        tokenHolder = _tokenHolder;
    }

    function airdrop(uint8 v, bytes32 r, bytes32 s, uint amount) public whenNotLocked {
        if (users[msg.sender] || ecrecover(prefixedHash(amount), v, r, s) != owner) {
            revert();
        }
        users[msg.sender] = true;
        token.transferFrom(tokenHolder, msg.sender, amount);
        emit AirdropToken(msg.sender, amount);
    }

    function getAirdropStatus(address user) public constant returns (bool success) {
        return users[user];
    }

    function originalHash(uint amount) internal view returns (bytes32) {
        return keccak256(abi.encodePacked(
                "Signed for Airdrop",
                address(this),
                address(token),
                msg.sender,
                amount
            ));
    }

    function prefixedHash(uint amount) internal view returns (bytes32) {
        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        return keccak256(abi.encodePacked(prefix, originalHash(amount)));
    }
}

// File: contracts/BITOXAirdrop.sol

/**
 * @title BITOX token airdrop contract.
 */
contract BITOXAirdrop is BaseAirdrop {

    constructor(address _token, address _tokenHolder) public BaseAirdrop(_token, _tokenHolder) {
        locked = true;
    }

    // Disable direct payments
    function() external payable {
        revert();
    }

    // withdraw funds only for owner
    function withdraw() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    // withdraw stuck tokens only for owner
    function withdrawTokens(address _someToken) public onlyOwner {
        ERC20Token someToken = ERC20Token(_someToken);
        uint balance = someToken.balanceOf(this);
        someToken.transfer(owner, balance);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenHolder","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_someToken","type":"address"}],"name":"withdrawTokens","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":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"users","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getAirdropStatus","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_tokenHolder","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AirdropToken","type":"event"},{"anonymous":false,"inputs":[],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526000805460a060020a60ff021916905534801561002057600080fd5b50604051604080610abe83398101604052805160209091015160008054600160a060020a031916331790558181600160a060020a0382161580159061006d5750600160a060020a03811615155b151561007857600080fd5b60018054600160a060020a03938416600160a060020a0319918216179091556002805492909316911617905550506000805460a060020a60ff021916740100000000000000000000000000000000000000001790556109e2806100dc6000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ccfd60b81146100be578063420a83e7146100d557806349df728c146101065780638da5cb5b14610127578063a69df4b51461013c578063a87430ba14610151578063caf91b3014610186578063cf309012146101aa578063eed7eaea146101bf578063f2fde38b146101e0578063f83d08ba14610201578063fc0c546a14610216575b600080fd5b3480156100ca57600080fd5b506100d361022b565b005b3480156100e157600080fd5b506100ea610280565b60408051600160a060020a039092168252519081900360200190f35b34801561011257600080fd5b506100d3600160a060020a036004351661028f565b34801561013357600080fd5b506100ea6103de565b34801561014857600080fd5b506100d36103ed565b34801561015d57600080fd5b50610172600160a060020a0360043516610474565b604080519115158252519081900360200190f35b34801561019257600080fd5b506100d360ff60043516602435604435606435610489565b3480156101b657600080fd5b50610172610650565b3480156101cb57600080fd5b50610172600160a060020a0360043516610671565b3480156101ec57600080fd5b506100d3600160a060020a036004351661068f565b34801561020d57600080fd5b506100d3610723565b34801561022257600080fd5b506100ea6107c0565b600054600160a060020a0316331461024257600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f1935050505015801561027d573d6000803e3d6000fd5b50565b600254600160a060020a031681565b600080548190600160a060020a031633146102a957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561030d57600080fd5b505af1158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156103ad57600080fd5b505af11580156103c1573d6000803e3d6000fd5b505050506040513d60208110156103d757600080fd5b5050505050565b600054600160a060020a031681565b600054600160a060020a0316331461040457600080fd5b60005474010000000000000000000000000000000000000000900460ff16151561042d57600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e9190a1565b60036020526000908152604090205460ff1681565b60005474010000000000000000000000000000000000000000900460ff16156104b157600080fd5b3360009081526003602052604090205460ff168061054d5750600054600160a060020a031660016104e1836107cf565b60408051600080825260208083018085529490945260ff8a16828401526060820189905260808201889052915160a08083019493601f198301938390039091019190865af1158015610537573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b1561055757600080fd5b336000818152600360209081526040808320805460ff191660019081179091555460025482517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101969096526044860187905291519116936323b872dd9360648083019493928390030190829087803b1580156105e857600080fd5b505af11580156105fc573d6000803e3d6000fd5b505050506040513d602081101561061257600080fd5b505060408051828152905133917fb6b09d42fae5c5eedc2e2b4c72342ea7f76d69f00732b2183cf65d40b5afaeb3919081900360200190a250505050565b60005474010000000000000000000000000000000000000000900460ff1681565b600160a060020a031660009081526003602052604090205460ff1690565b600054600160a060020a031633146106a657600080fd5b600160a060020a03811615156106bb57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461073a57600080fd5b60005474010000000000000000000000000000000000000000900460ff161561076257600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001781556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db969190a1565b600154600160a060020a031681565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260009080610810846108d5565b6040516020018083805190602001908083835b602083106108425780518252601f199092019160209182019101610823565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106108a25780518252601f199092019160209182019101610883565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600154604080517f5369676e656420666f722041697264726f7000000000000000000000000000006020808301919091526c010000000000000000000000003081026032840152600160a060020a03909416840260468301523393909302605a820152606e80820185905282518083039091018152608e9091019182905280516000939192918291908401908083835b602083106109845780518252601f199092019160209182019101610965565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120959450505050505600a165627a7a7230582039f99304fcee6a180ec49f6af953b6e7605656f91bb1305796681f57adbfffa10029000000000000000000000000bdda280ee7bccc68f3be60a369b6b1eaee02493c000000000000000000000000521aff68ac6f05f36ae75fc786eec3b310baf68b

Deployed Bytecode

0x6080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ccfd60b81146100be578063420a83e7146100d557806349df728c146101065780638da5cb5b14610127578063a69df4b51461013c578063a87430ba14610151578063caf91b3014610186578063cf309012146101aa578063eed7eaea146101bf578063f2fde38b146101e0578063f83d08ba14610201578063fc0c546a14610216575b600080fd5b3480156100ca57600080fd5b506100d361022b565b005b3480156100e157600080fd5b506100ea610280565b60408051600160a060020a039092168252519081900360200190f35b34801561011257600080fd5b506100d3600160a060020a036004351661028f565b34801561013357600080fd5b506100ea6103de565b34801561014857600080fd5b506100d36103ed565b34801561015d57600080fd5b50610172600160a060020a0360043516610474565b604080519115158252519081900360200190f35b34801561019257600080fd5b506100d360ff60043516602435604435606435610489565b3480156101b657600080fd5b50610172610650565b3480156101cb57600080fd5b50610172600160a060020a0360043516610671565b3480156101ec57600080fd5b506100d3600160a060020a036004351661068f565b34801561020d57600080fd5b506100d3610723565b34801561022257600080fd5b506100ea6107c0565b600054600160a060020a0316331461024257600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f1935050505015801561027d573d6000803e3d6000fd5b50565b600254600160a060020a031681565b600080548190600160a060020a031633146102a957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561030d57600080fd5b505af1158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156103ad57600080fd5b505af11580156103c1573d6000803e3d6000fd5b505050506040513d60208110156103d757600080fd5b5050505050565b600054600160a060020a031681565b600054600160a060020a0316331461040457600080fd5b60005474010000000000000000000000000000000000000000900460ff16151561042d57600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e9190a1565b60036020526000908152604090205460ff1681565b60005474010000000000000000000000000000000000000000900460ff16156104b157600080fd5b3360009081526003602052604090205460ff168061054d5750600054600160a060020a031660016104e1836107cf565b60408051600080825260208083018085529490945260ff8a16828401526060820189905260808201889052915160a08083019493601f198301938390039091019190865af1158015610537573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b1561055757600080fd5b336000818152600360209081526040808320805460ff191660019081179091555460025482517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101969096526044860187905291519116936323b872dd9360648083019493928390030190829087803b1580156105e857600080fd5b505af11580156105fc573d6000803e3d6000fd5b505050506040513d602081101561061257600080fd5b505060408051828152905133917fb6b09d42fae5c5eedc2e2b4c72342ea7f76d69f00732b2183cf65d40b5afaeb3919081900360200190a250505050565b60005474010000000000000000000000000000000000000000900460ff1681565b600160a060020a031660009081526003602052604090205460ff1690565b600054600160a060020a031633146106a657600080fd5b600160a060020a03811615156106bb57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461073a57600080fd5b60005474010000000000000000000000000000000000000000900460ff161561076257600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001781556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db969190a1565b600154600160a060020a031681565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260009080610810846108d5565b6040516020018083805190602001908083835b602083106108425780518252601f199092019160209182019101610823565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b602083106108a25780518252601f199092019160209182019101610883565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600154604080517f5369676e656420666f722041697264726f7000000000000000000000000000006020808301919091526c010000000000000000000000003081026032840152600160a060020a03909416840260468301523393909302605a820152606e80820185905282518083039091018152608e9091019182905280516000939192918291908401908083835b602083106109845780518252601f199092019160209182019101610965565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120959450505050505600a165627a7a7230582039f99304fcee6a180ec49f6af953b6e7605656f91bb1305796681f57adbfffa10029

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

000000000000000000000000bdda280ee7bccc68f3be60a369b6b1eaee02493c000000000000000000000000521aff68ac6f05f36ae75fc786eec3b310baf68b

-----Decoded View---------------
Arg [0] : _token (address): 0xbDda280Ee7bcCC68F3be60a369b6B1eAee02493C
Arg [1] : _tokenHolder (address): 0x521aFF68aC6F05f36ae75Fc786eeC3B310BaF68B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bdda280ee7bccc68f3be60a369b6b1eaee02493c
Arg [1] : 000000000000000000000000521aff68ac6f05f36ae75fc786eec3b310baf68b


Swarm Source

bzzr://39f99304fcee6a180ec49f6af953b6e7605656f91bb1305796681f57adbfffa1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.