More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 487 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Receive Air Drop | 8434907 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8434618 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8434481 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8434132 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8433748 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8433267 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8432744 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8432647 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8432522 | 1983 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8432013 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8431697 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8431459 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8431248 | 1984 days ago | IN | 0 ETH | 0.00159735 | ||||
Receive Air Drop | 8431123 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8430838 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8430644 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8429841 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8429678 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8429009 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8428922 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8428867 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8428561 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8428304 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8427371 | 1984 days ago | IN | 0 ETH | 0.00186735 | ||||
Receive Air Drop | 8426872 | 1984 days ago | IN | 0 ETH | 0.00186735 |
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
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.