Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 654 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 6339762 | 2340 days ago | IN | 0.00376291 ETH | 0.00094707 | ||||
Receive Air Drop | 6339360 | 2340 days ago | IN | 0 ETH | 0.00129655 | ||||
Receive Air Drop | 6338378 | 2340 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6338281 | 2340 days ago | IN | 0 ETH | 0.00115249 | ||||
Receive Air Drop | 6337504 | 2340 days ago | IN | 0 ETH | 0.00092199 | ||||
Receive Air Drop | 6337504 | 2340 days ago | IN | 0 ETH | 0.00092199 | ||||
Transfer | 6336998 | 2341 days ago | IN | 0 ETH | 0.00012627 | ||||
Receive Air Drop | 6336977 | 2341 days ago | IN | 0 ETH | 0.00074911 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.0007203 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.00115249 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.00115249 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.00115249 | ||||
Receive Air Drop | 6336872 | 2341 days ago | IN | 0 ETH | 0.00115249 | ||||
Receive Air Drop | 6336773 | 2341 days ago | IN | 0 ETH | 0.00015715 | ||||
Receive Air Drop | 6336764 | 2341 days ago | IN | 0 ETH | 0.00015715 | ||||
Receive Air Drop | 6336758 | 2341 days ago | IN | 0 ETH | 0.00015715 | ||||
Receive Air Drop | 6336756 | 2341 days ago | IN | 0 ETH | 0.00047466 | ||||
Receive Air Drop | 6336756 | 2341 days ago | IN | 0 ETH | 0.00065959 | ||||
Receive Air Drop | 6336747 | 2341 days ago | IN | 0 ETH | 0.00054966 | ||||
Receive Air Drop | 6336745 | 2341 days ago | IN | 0 ETH | 0.00054966 |
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 0x66231ded...3A5589772 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
AirDropForERC223
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-29 */ 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 AirDropForERC223 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 mapping of testAccount mapping ( address => bool ) public isTestAccount; // the array of addresses which received airDrop address[] public arrayAirDropReceivers; // flag to stop airdrop bool public stop = false; ERC223Interface public token; 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); event LogInfoUpdate(uint256 startTime, uint256 endTime, uint256 airDropAmount); /** * @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, address[] _testAccounts) public { require( _startTime >= now && _endTime >= _startTime && _airDropAmount > 0 && _tokenAddress != address(0) ); startTime = _startTime; endTime = _endTime; token = ERC223Interface(_tokenAddress); uint tokenDecimals = token.decimals(); airDropAmount = _airDropAmount.mul(10 ** tokenDecimals); for (uint i = 0; i < _testAccounts.length; i++ ) { isTestAccount[_testAccounts[i]] = true; } } /** * @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 { if (isTestAccount[msg.sender]) { // execute transfer token.transfer(msg.sender, airDropAmount); } else { 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 transfer token.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(); token.transfer(_address, tokenBalanceOfContract); emit LogWithdrawal(_address, tokenBalanceOfContract); } /** * @dev Update the information regarding to period and amount. * @param _startTime The start time this airdrop starts. * @param _endTime The end time this sirdrop ends. * @param _airDropAmount The airDrop Amount that user can get via airdrop. */ function updateInfo(uint256 _startTime, uint256 _endTime, uint256 _airDropAmount) public onlyOwner { require( stop || now > endTime ); require( _startTime >= now && _endTime >= _startTime && _airDropAmount > 0 ); startTime = _startTime; endTime = _endTime; uint tokenDecimals = token.decimals(); airDropAmount = _airDropAmount.mul(10 ** tokenDecimals); emit LogInfoUpdate(startTime, endTime, airDropAmount); } /** * @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 token.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":"","type":"address"}],"name":"isTestAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_airDropAmount","type":"uint256"}],"name":"updateInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"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"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_airDropAmount","type":"uint256"},{"name":"_tokenAddress","type":"address"},{"name":"_testAccounts","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":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"endTime","type":"uint256"},{"indexed":false,"name":"airDropAmount","type":"uint256"}],"name":"LogInfoUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Deployed Bytecode
0x6080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307da68f5811461011657806308e9988b1461013f57806310665519146101665780632aec9466146101875780633197cbb6146101a75780633efe6441146101bc5780633f4039ba146101d157806340992e9d1461020557806340a3d2461461021a57806351cff8d91461022f5780636a3350c81461025057806370cf75081461027157806378e97925146102865780638b08292d1461029b5780638da5cb5b146102b0578063c0ee0b8a146102c5578063c1fae25b1461032e578063c7b160db14610343578063f2fde38b14610358578063fc0c546a14610379575b600080fd5b34801561012257600080fd5b5061012b61038e565b604080519115158252519081900360200190f35b34801561014b57600080fd5b50610154610397565b60408051918252519081900360200190f35b34801561017257600080fd5b5061012b600160a060020a036004351661039d565b34801561019357600080fd5b506101a56004356024356044356103b2565b005b3480156101b357600080fd5b50610154610520565b3480156101c857600080fd5b50610154610526565b3480156101dd57600080fd5b506101e96004356105c1565b60408051600160a060020a039092168252519081900360200190f35b34801561021157600080fd5b506101546105e9565b34801561022657600080fd5b506101a5610607565b34801561023b57600080fd5b506101a5600160a060020a0360043516610692565b34801561025c57600080fd5b5061012b600160a060020a03600435166107b4565b34801561027d57600080fd5b5061012b6107c9565b34801561029257600080fd5b5061015461083b565b3480156102a757600080fd5b5061012b610841565b3480156102bc57600080fd5b506101e9610890565b3480156102d157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101a5948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061089f9650505050505050565b34801561033a57600080fd5b506101a56108a4565b34801561034f57600080fd5b50610154610a88565b34801561036457600080fd5b506101a5600160a060020a0360043516610a8e565b34801561038557600080fd5b506101e9610b22565b60055460ff1681565b60015481565b60036020526000908152604090205460ff1681565b60008054600160a060020a031633146103ca57600080fd5b60055460ff16806103dc575060075442115b15156103e757600080fd5b4284101580156103f75750838310155b80156104035750600082115b151561040e57600080fd5b8360068190555082600781905550600560019054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561048857600080fd5b505af115801561049c573d6000803e3d6000fd5b505050506040513d60208110156104b257600080fd5b505160ff1690506104cd82600a83900a63ffffffff610b3616565b60018190556006546007546040805192835260208301919091528181019290925290517f20efc62a7a9ebf73bc01c79415ebe8e96ae9a94a0c0efed186caef56a71d5dcf9181900360600190a150505050565b60075481565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926101009004600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b5051905090565b60048054829081106105cf57fe5b600091825260209091200154600160a060020a0316905081565b600454600154600091610602919063ffffffff610b3616565b905090565b600054600160a060020a0316331461061e57600080fd5b6005805460ff19811660ff9182161517918290551615610666576040517f407235ba9d50c9ec9294457c137c94dd310f8658f7c03e9061c50ac66751af1290600090a1610690565b6040517fddd1002e99df5d98b17a9b830ba8e5a4f8d618d5df9ccc99c5faea5b4abdbad890600090a15b565b60008054600160a060020a031633146106aa57600080fd5b60055460ff16806106bc575060075442115b15156106c757600080fd5b600160a060020a03821615156106dc57600080fd5b6106e4610526565b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018590529151939450610100909204169163a9059cbb9160448082019260009290919082900301818387803b15801561075957600080fd5b505af115801561076d573d6000803e3d6000fd5b5050604080518481529051600160a060020a03861693507fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e9192509081900360200190a25050565b60026020526000908152604090205460ff1681565b60055460015460009160ff1615908290819081906107e5610526565b1015925060065442101580156107fd57506007544211155b3360009081526002602052604090205490925060ff161590508380156108205750825b80156108295750815b80156108325750805b94505050505090565b60065481565b60055460015460009160ff1615908290819061085b610526565b10159150600654421015801561087357506007544211155b905082801561087f5750815b80156108885750805b935050505090565b600054600160a060020a031681565b505050565b3360009081526003602052604090205460ff161561094c57600554600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481019290925251610100909204600160a060020a03169163a9059cbb9160448082019260009290919082900301818387803b15801561092f57600080fd5b505af1158015610943573d6000803e3d6000fd5b50505050610690565b6109546107c9565b151561095f57600080fd5b33600081815260026020526040808220805460ff191660019081179091556004805480830182558185527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff191686179055600554915483517fa9059cbb0000000000000000000000000000000000000000000000000000000081529182019590955260248101949094529051610100909104600160a060020a03169263a9059cbb92604480830193919282900301818387803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505060015460408051918252513393507f41097886570f9a869fa2411d79ffeeeaf139da10f9050e7797b948f14ff4256992509081900360200190a2565b60045490565b600054600160a060020a03163314610aa557600080fd5b600160a060020a0381161515610aba57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6005546101009004600160a060020a031681565b6000821515610b4757506000610b5f565b50818102818382811515610b5757fe5b0414610b5f57fe5b929150505600a165627a7a723058200284e563939e0d158e5940c94c46ff693da43f78a67566815dd90c943f4a67cb0029
Swarm Source
bzzr://0284e563939e0d158e5940c94c46ff693da43f78a67566815dd90c943f4a67cb
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.