ETH Price: $3,342.63 (+3.81%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Receive Air Drop84349072019-08-27 22:29:011983 days ago1566944941IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84346182019-08-27 21:26:241983 days ago1566941184IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84344812019-08-27 20:54:431983 days ago1566939283IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84341322019-08-27 19:43:281983 days ago1566935008IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84337482019-08-27 18:21:081983 days ago1566930068IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84332672019-08-27 16:33:011983 days ago1566923581IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84327442019-08-27 14:38:551983 days ago1566916735IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84326472019-08-27 14:20:391983 days ago1566915639IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84325222019-08-27 13:53:461983 days ago1566914026IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84320132019-08-27 11:56:141984 days ago1566906974IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84316972019-08-27 10:39:511984 days ago1566902391IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84314592019-08-27 9:46:381984 days ago1566899198IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84312482019-08-27 8:59:161984 days ago1566896356IN
0xAC553322...24F1830FA
0 ETH0.0015973518
Receive Air Drop84311232019-08-27 8:29:111984 days ago1566894551IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84308382019-08-27 7:25:191984 days ago1566890719IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84306442019-08-27 6:45:101984 days ago1566888310IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84298412019-08-27 3:35:221984 days ago1566876922IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84296782019-08-27 2:58:411984 days ago1566874721IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84290092019-08-27 0:25:391984 days ago1566865539IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84289222019-08-27 0:04:311984 days ago1566864271IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84288672019-08-26 23:53:461984 days ago1566863626IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84285612019-08-26 22:48:101984 days ago1566859690IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84283042019-08-26 21:46:461984 days ago1566856006IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84273712019-08-26 18:05:051984 days ago1566842705IN
0xAC553322...24F1830FA
0 ETH0.0018673518
Receive Air Drop84268722019-08-26 16:20:251984 days ago1566836425IN
0xAC553322...24F1830FA
0 ETH0.0018673518
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xb59911d8...3fF9fAbBC
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
AirDrop

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.23;

contract ERC223Interface {
    uint public totalSupply;
    uint8 public decimals;
    function balanceOf(address who) constant returns (uint);
    function transfer(address to, uint value);
    function transfer(address to, uint value, bytes data);
    event Transfer(address indexed from, address indexed to, uint value, bytes data);
}

contract ERC223ReceivingContract {

    /**
     * @dev Standard ERC223 function that will handle incoming token transfers.
     *
     * @param _from  Token sender address.
     * @param _value Amount of tokens.
     * @param _data  Transaction metadata.
     */
    function tokenFallback(address _from, uint _value, bytes _data);
}


/**
 * @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.
   */
  function Ownable() 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;
  }

}



/**
 * @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) {
    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 AirDropContract
 * Simply do the airdrop.
 */
contract AirDrop is Ownable {
    using SafeMath for uint256;

    // the amount that owner wants to send each time
    uint public airDropAmount;

    // the mapping to judge whether each address has already received airDropped
    mapping ( address => bool ) public invalidAirDrop;

    // the array of addresses which received airDrop
    address[] public arrayAirDropReceivers;

    // flag to stop airdrop
    bool public stop = false;

    ERC223Interface public erc20;

    uint256 public startTime;
    uint256 public endTime;

    // event
    event LogAirDrop(address indexed receiver, uint amount);
    event LogStop();
    event LogStart();
    event LogWithdrawal(address indexed receiver, uint amount);

    /**
    * @dev Constructor to set _airDropAmount and _tokenAddresss.
    * @param _airDropAmount The amount of token that is sent for doing airDrop.
    * @param _tokenAddress The address of token.
    */
    constructor(uint256 _startTime, uint256 _endTime, uint _airDropAmount, address _tokenAddress) public {
        require(_startTime >= now &&
            _endTime >= _startTime &&
            _airDropAmount > 0 &&
            _tokenAddress != address(0)
        );
        startTime = _startTime;
        endTime = _endTime;
        erc20 = ERC223Interface(_tokenAddress);
        uint tokenDecimals = erc20.decimals();
        airDropAmount = _airDropAmount.mul(10 ** tokenDecimals);
    }

    /**
     * @dev Standard ERC223 function that will handle incoming token transfers.
     *
     * @param _from  Token sender address.
     * @param _value Amount of tokens.
     * @param _data  Transaction metadata.
     */
    function tokenFallback(address _from, uint _value, bytes _data) {}

    /**
    * @dev Confirm that airDrop is available.
    * @return A bool to confirm that airDrop is available.
    */
    function isValidAirDropForAll() public view returns (bool) {
        bool validNotStop = !stop;
        bool validAmount = getRemainingToken() >= airDropAmount;
        bool validPeriod = now >= startTime && now <= endTime;
        return validNotStop && validAmount && validPeriod;
    }

    /**
    * @dev Confirm that airDrop is available for msg.sender.
    * @return A bool to confirm that airDrop is available for msg.sender.
    */
    function isValidAirDropForIndividual() public view returns (bool) {
        bool validNotStop = !stop;
        bool validAmount = getRemainingToken() >= airDropAmount;
        bool validPeriod = now >= startTime && now <= endTime;
        bool validReceiveAirDropForIndividual = !invalidAirDrop[msg.sender];
        return validNotStop && validAmount && validPeriod && validReceiveAirDropForIndividual;
    }

    /**
    * @dev Do the airDrop to msg.sender
    */
    function receiveAirDrop() public {
        require(isValidAirDropForIndividual());

        // set invalidAirDrop of msg.sender to true
        invalidAirDrop[msg.sender] = true;

        // set msg.sender to the array of the airDropReceiver
        arrayAirDropReceivers.push(msg.sender);

        // execute transferFrom
        erc20.transfer(msg.sender, airDropAmount);

        emit LogAirDrop(msg.sender, airDropAmount);
    }

    /**
    * @dev Change the state of stop flag
    */
    function toggle() public onlyOwner {
        stop = !stop;

        if (stop) {
            emit LogStop();
        } else {
            emit LogStart();
        }
    }

    /**
    * @dev Withdraw the amount of token that is remaining in this contract.
    * @param _address The address of EOA that can receive token from this contract.
    */
    function withdraw(address _address) public onlyOwner {
        require(stop || now > endTime);
        require(_address != address(0));
        uint tokenBalanceOfContract = getRemainingToken();
        erc20.transfer(_address, tokenBalanceOfContract);
        emit LogWithdrawal(_address, tokenBalanceOfContract);
    }

    /**
    * @dev Get the total number of addresses which received airDrop.
    * @return Uint256 the total number of addresses which received airDrop.
    */
    function getTotalNumberOfAddressesReceivedAirDrop() public view returns (uint256) {
        return arrayAirDropReceivers.length;
    }

    /**
    * @dev Get the remaining amount of token user can receive.
    * @return Uint256 the amount of token that user can reveive.
    */
    function getRemainingToken() public view returns (uint256) {
        return erc20.balanceOf(this);
    }

    /**
    * @dev Return the total amount of token user received.
    * @return Uint256 total amount of token user received.
    */
    function getTotalAirDroppedAmount() public view returns (uint256) {
        return airDropAmount.mul(arrayAirDropReceivers.length);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"stop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airDropAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRemainingToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"arrayAirDropReceivers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalAirDroppedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"toggle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"invalidAirDrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isValidAirDropForIndividual","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"erc20","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isValidAirDropForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"receiveAirDrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalNumberOfAddressesReceivedAirDrop","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_airDropAmount","type":"uint256"},{"name":"_tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogAirDrop","type":"event"},{"anonymous":false,"inputs":[],"name":"LogStop","type":"event"},{"anonymous":false,"inputs":[],"name":"LogStart","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Deployed Bytecode

0x6080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806307da68f51461010157806308e9988b146101305780633197cbb61461015b5780633efe6441146101865780633f4039ba146101b157806340992e9d1461021e57806340a3d2461461024957806351cff8d9146102605780636a3350c8146102a357806370cf7508146102fe578063785e9e861461032d57806378e97925146103845780638b08292d146103af5780638da5cb5b146103de578063c0ee0b8a14610435578063c1fae25b146104c8578063c7b160db146104df578063f2fde38b1461050a575b600080fd5b34801561010d57600080fd5b5061011661054d565b604051808215151515815260200191505060405180910390f35b34801561013c57600080fd5b50610145610560565b6040518082815260200191505060405180910390f35b34801561016757600080fd5b50610170610566565b6040518082815260200191505060405180910390f35b34801561019257600080fd5b5061019b61056c565b6040518082815260200191505060405180910390f35b3480156101bd57600080fd5b506101dc6004803603810190808035906020019092919050505061066b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022a57600080fd5b506102336106a9565b6040518082815260200191505060405180910390f35b34801561025557600080fd5b5061025e6106ca565b005b34801561026c57600080fd5b506102a1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b005b3480156102af57600080fd5b506102e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bd565b604051808215151515815260200191505060405180910390f35b34801561030a57600080fd5b506103136109dd565b604051808215151515815260200191505060405180910390f35b34801561033957600080fd5b50610342610a92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039057600080fd5b50610399610ab8565b6040518082815260200191505060405180910390f35b3480156103bb57600080fd5b506103c4610abe565b604051808215151515815260200191505060405180910390f35b3480156103ea57600080fd5b506103f3610b17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044157600080fd5b506104c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b3c565b005b3480156104d457600080fd5b506104dd610b41565b005b3480156104eb57600080fd5b506104f4610d43565b6040518082815260200191505060405180910390f35b34801561051657600080fd5b5061054b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d50565b005b600460009054906101000a900460ff1681565b60015481565b60065481565b6000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561062b57600080fd5b505af115801561063f573d6000803e3d6000fd5b505050506040513d602081101561065557600080fd5b8101908080519060200190929190505050905090565b60038181548110151561067a57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106c5600380549050600154610ea590919063ffffffff16565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561072557600080fd5b600460009054906101000a900460ff1615600460006101000a81548160ff021916908315150217905550600460009054906101000a900460ff1615610795577f407235ba9d50c9ec9294457c137c94dd310f8658f7c03e9061c50ac66751af1260405160405180910390a16107c2565b7fddd1002e99df5d98b17a9b830ba8e5a4f8d618d5df9ccc99c5faea5b4abdbad860405160405180910390a15b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082157600080fd5b600460009054906101000a900460ff168061083d575060065442115b151561084857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561088457600080fd5b61088c61056c565b9050600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561095357600080fd5b505af1158015610967573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e91826040518082815260200191505060405180910390a25050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000806000806000600460009054906101000a900460ff16159350600154610a0361056c565b101592506005544210158015610a1b57506006544211155b9150600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050838015610a775750825b8015610a805750815b8015610a895750805b94505050505090565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600080600460009054906101000a900460ff16159250600154610ae261056c565b101591506005544210158015610afa57506006544211155b9050828015610b065750815b8015610b0f5750805b935050505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b505050565b610b496109dd565b1515610b5457600080fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060033390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336001546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f41097886570f9a869fa2411d79ffeeeaf139da10f9050e7797b948f14ff425696001546040518082815260200191505060405180910390a2565b6000600380549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dab57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610de757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831415610eb85760009050610ed7565b8183029050818382811515610ec957fe5b04141515610ed357fe5b8090505b929150505600a165627a7a723058208768347e34f9c77a5a88ee472707a1362760098e8343f2c90d5dee786b5767b10029

Swarm Source

bzzr://8768347e34f9c77a5a88ee472707a1362760098e8343f2c90d5dee786b5767b1

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.