ETH Price: $2,072.44 (+1.08%)

Contract

0xb0bd79eFa8C100b28a0dF875e8e4f60f51834FF5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...66369882018-11-03 17:10:492685 days ago1541265049IN
0xb0bd79eF...f51834FF5
0 ETH0.000139896
Owner Recover To...66369592018-11-03 17:04:312685 days ago1541264671IN
0xb0bd79eF...f51834FF5
0 ETH0.000116155
Transfer61224462018-08-10 13:07:042771 days ago1533906424IN
0xb0bd79eF...f51834FF5
0 ETH0.0074218510.01
Transfer61224112018-08-10 12:58:512771 days ago1533905931IN
0xb0bd79eF...f51834FF5
0 ETH0.0037220410.1
Transfer60341692018-07-26 15:48:072786 days ago1532620087IN
0xb0bd79eF...f51834FF5
0 ETH0.000089982
Transfer60341372018-07-26 15:42:002786 days ago1532619720IN
0xb0bd79eF...f51834FF5
0 ETH0.002767542
Transfer60341142018-07-26 15:35:042786 days ago1532619304IN
0xb0bd79eF...f51834FF5
0 ETH0.006731132
Transfer60338692018-07-26 14:37:002786 days ago1532615820IN
0xb0bd79eF...f51834FF5
0 ETH0.002456972
Transfer60338072018-07-26 14:22:132786 days ago1532614933IN
0xb0bd79eF...f51834FF5
0 ETH0.001411272
Transfer60337532018-07-26 14:08:542786 days ago1532614134IN
0xb0bd79eF...f51834FF5
0 ETH0.000059982

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PixieTokenAirdropper

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.24;

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @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;
  }
}

// File: openzeppelin-solidity/contracts/ownership/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 OwnershipRenounced(address indexed previousOwner);
  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 relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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;
  }
}

// File: openzeppelin-solidity/contracts/ownership/HasNoEther.sol

/**
 * @title Contracts that should not own Ether
 * @author Remco Bloemen <remco@2π.com>
 * @dev This tries to block incoming ether to prevent accidental loss of Ether. Should Ether end up
 * in the contract, it will allow the owner to reclaim this ether.
 * @notice Ether can still be sent to this contract by:
 * calling functions labeled `payable`
 * `selfdestruct(contract_address)`
 * mining directly to the contract address
 */
contract HasNoEther is Ownable {

  /**
  * @dev Constructor that rejects incoming Ether
  * @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we
  * leave out payable, then Solidity will allow inheriting contracts to implement a payable
  * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
  * we could use assembly to access msg.value.
  */
  constructor() public payable {
    require(msg.value == 0);
  }

  /**
   * @dev Disallows direct send by settings a default function without the `payable` flag.
   */
  function() external {
  }

  /**
   * @dev Transfer all Ether held by the contract to the owner.
   */
  function reclaimEther() external onlyOwner {
    owner.transfer(address(this).balance);
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev 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);
}

// File: contracts/pixie/PixieTokenAirdropper.sol

contract PixieTokenAirdropper is Ownable, HasNoEther {

  // The token which is already deployed to the network
  ERC20Basic public token;

  event AirDroppedTokens(uint256 addressCount);
  event AirDrop(address indexed receiver, uint256 total);

  // After this contract is deployed, we will grant access to this contract
  // by calling methods on the token since we are using the same owner
  // and granting the distribution of tokens to this contract
  constructor(address _token) public payable {
    require(_token != address(0), "Must be a non-zero address");

    token = ERC20Basic(_token);
  }

  function transfer(address[] _address, uint256[] _values) onlyOwner public {
    require(_address.length == _values.length, "Address array and values array must be same length");

    for (uint i = 0; i < _address.length; i += 1) {
      _transfer(_address[i], _values[i]);
    }

    emit AirDroppedTokens(_address.length);
  }

  function transferSingle(address _address, uint256 _value) onlyOwner public {
    _transfer(_address, _value);

    emit AirDroppedTokens(1);
  }

  function _transfer(address _address, uint256 _value) internal {
    require(_address != address(0), "Address invalid");
    require(_value > 0, "Value invalid");

    token.transfer(_address, _value);

    emit AirDrop(_address, _value);
  }

  function remainingBalance() public view returns (uint256) {
    return token.balanceOf(address(this));
  }

  // after we distribute the bonus tokens, we will send them back to the coin itself
  function ownerRecoverTokens(address _beneficiary) external onlyOwner {
    require(_beneficiary != address(0));
    require(_beneficiary != address(token));

    uint256 _tokensRemaining = token.balanceOf(address(this));
    if (_tokensRemaining > 0) {
      token.transfer(_beneficiary, _tokensRemaining);
    }
  }

}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"renounceOwnership","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":"_beneficiary","type":"address"}],"name":"ownerRecoverTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"remainingBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferSingle","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"constant":false,"inputs":[{"name":"_address","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addressCount","type":"uint256"}],"name":"AirDroppedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"total","type":"uint256"}],"name":"AirDrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052604051602080610a20833981016040525160008054600160a060020a03191633179055341561003257600080fd5b600160a060020a03811615156100a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d7573742062652061206e6f6e2d7a65726f2061646472657373000000000000604482015290519081900360640190fd5b60018054600160a060020a031916600160a060020a0392909216919091179055610948806100d86000396000f3006080604052600436106100985763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663715018a681146100a75780638da5cb5b146100be5780639427dfea146100ef5780639f727c2714610110578063da25de3c14610125578063dfc3ed371461014c578063f2fde38b14610170578063fc0c546a14610191578063ffc3a769146101a6575b3480156100a457600080fd5b50005b3480156100b357600080fd5b506100bc610234565b005b3480156100ca57600080fd5b506100d36102a0565b60408051600160a060020a039092168252519081900360200190f35b3480156100fb57600080fd5b506100bc600160a060020a03600435166102af565b34801561011c57600080fd5b506100bc610434565b34801561013157600080fd5b5061013a610489565b60408051918252519081900360200190f35b34801561015857600080fd5b506100bc600160a060020a036004351660243561051f565b34801561017c57600080fd5b506100bc600160a060020a0360043516610578565b34801561019d57600080fd5b506100d3610598565b3480156101b257600080fd5b50604080516020600480358082013583810280860185019096528085526100bc95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506105a79650505050505050565b600054600160a060020a0316331461024b57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a031633146102c757600080fd5b600160a060020a03821615156102dc57600080fd5b600154600160a060020a03838116911614156102f757600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561035d57600080fd5b505af1158015610371573d6000803e3d6000fd5b505050506040513d602081101561038757600080fd5b50519050600081111561043057600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b505050506040513d602081101561042d57600080fd5b50505b5050565b600054600160a060020a0316331461044b57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610486573d6000803e3d6000fd5b50565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b1580156104ee57600080fd5b505af1158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905090565b600054600160a060020a0316331461053657600080fd5b61054082826106db565b604080516001815290517fa2a256b95d31e8cbc055315d9e75869394b96e9b6ff78d8f1de8d7123c49deb59181900360200190a15050565b600054600160a060020a0316331461058f57600080fd5b6104868161089f565b600154600160a060020a031681565b60008054600160a060020a031633146105bf57600080fd5b815183511461065557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4164647265737320617272617920616e642076616c756573206172726179206d60448201527f7573742062652073616d65206c656e6774680000000000000000000000000000606482015290519081900360840190fd5b5060005b82518110156106a25761069a838281518110151561067357fe5b90602001906020020151838381518110151561068b57fe5b906020019060200201516106db565b600101610659565b825160408051918252517fa2a256b95d31e8cbc055315d9e75869394b96e9b6ff78d8f1de8d7123c49deb59181900360200190a1505050565b600160a060020a038216151561075257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4164647265737320696e76616c69640000000000000000000000000000000000604482015290519081900360640190fd5b600081116107c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f56616c756520696e76616c696400000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561083057600080fd5b505af1158015610844573d6000803e3d6000fd5b505050506040513d602081101561085a57600080fd5b5050604080518281529051600160a060020a038416917f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd98919081900360200190a25050565b600160a060020a03811615156108b457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058206cb9d58ac5e35103a4bc46a6092fc5d57a2add49dd762d46552a495dfa60ce2d00290000000000000000000000002c61c057c4d599f21d11533d321c1d3e25d16afc

Deployed Bytecode

0x6080604052600436106100985763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663715018a681146100a75780638da5cb5b146100be5780639427dfea146100ef5780639f727c2714610110578063da25de3c14610125578063dfc3ed371461014c578063f2fde38b14610170578063fc0c546a14610191578063ffc3a769146101a6575b3480156100a457600080fd5b50005b3480156100b357600080fd5b506100bc610234565b005b3480156100ca57600080fd5b506100d36102a0565b60408051600160a060020a039092168252519081900360200190f35b3480156100fb57600080fd5b506100bc600160a060020a03600435166102af565b34801561011c57600080fd5b506100bc610434565b34801561013157600080fd5b5061013a610489565b60408051918252519081900360200190f35b34801561015857600080fd5b506100bc600160a060020a036004351660243561051f565b34801561017c57600080fd5b506100bc600160a060020a0360043516610578565b34801561019d57600080fd5b506100d3610598565b3480156101b257600080fd5b50604080516020600480358082013583810280860185019096528085526100bc95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506105a79650505050505050565b600054600160a060020a0316331461024b57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a031633146102c757600080fd5b600160a060020a03821615156102dc57600080fd5b600154600160a060020a03838116911614156102f757600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561035d57600080fd5b505af1158015610371573d6000803e3d6000fd5b505050506040513d602081101561038757600080fd5b50519050600081111561043057600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b505050506040513d602081101561042d57600080fd5b50505b5050565b600054600160a060020a0316331461044b57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610486573d6000803e3d6000fd5b50565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b1580156104ee57600080fd5b505af1158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905090565b600054600160a060020a0316331461053657600080fd5b61054082826106db565b604080516001815290517fa2a256b95d31e8cbc055315d9e75869394b96e9b6ff78d8f1de8d7123c49deb59181900360200190a15050565b600054600160a060020a0316331461058f57600080fd5b6104868161089f565b600154600160a060020a031681565b60008054600160a060020a031633146105bf57600080fd5b815183511461065557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4164647265737320617272617920616e642076616c756573206172726179206d60448201527f7573742062652073616d65206c656e6774680000000000000000000000000000606482015290519081900360840190fd5b5060005b82518110156106a25761069a838281518110151561067357fe5b90602001906020020151838381518110151561068b57fe5b906020019060200201516106db565b600101610659565b825160408051918252517fa2a256b95d31e8cbc055315d9e75869394b96e9b6ff78d8f1de8d7123c49deb59181900360200190a1505050565b600160a060020a038216151561075257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4164647265737320696e76616c69640000000000000000000000000000000000604482015290519081900360640190fd5b600081116107c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f56616c756520696e76616c696400000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561083057600080fd5b505af1158015610844573d6000803e3d6000fd5b505050506040513d602081101561085a57600080fd5b5050604080518281529051600160a060020a038416917f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd98919081900360200190a25050565b600160a060020a03811615156108b457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058206cb9d58ac5e35103a4bc46a6092fc5d57a2add49dd762d46552a495dfa60ce2d0029

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

0000000000000000000000002c61c057c4d599f21d11533d321c1d3e25d16afc

-----Decoded View---------------
Arg [0] : _token (address): 0x2C61c057c4d599F21D11533D321C1D3e25d16AFC

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002c61c057c4d599f21d11533d321c1d3e25d16afc


Swarm Source

bzzr://6cb9d58ac5e35103a4bc46a6092fc5d57a2add49dd762d46552a495dfa60ce2d

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.