Sponsored Link:   BubbleTone - Blockchain in Telecom, directly connecting mobile operators and users globally, launches its unique ICO!
  Latest 25 txns from a total Of 1589 transactions (+1 PendingTxn) View All

TxHash Age From To Value [TxFee]
0x51e02de2d5553c7348bee1aca141fa1d88248dff5df25e079b0181a121b0e05d(pending) 7 secs ago0x442c64cf83dfa0d52db53873ede794f8fb9ca996  IN  0xa28fc2102da86e424b37ad86c7bc7855fc4412391 Ether(pending)
0x5c913d8c2304437ffdc58884d3b973c9bbc4215b613293bb05cc2257ea26bd471 min ago0xa66775b93c654905a9441250936b63749d5b2b92  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.2 Ether0.0004030065
0x19a36db9bb7d58dbca16c78be0f2c0d8632bf24a6b744edae1cd3fa4c66f542a23 mins ago0x4f37072334ef55b864a39e78415c3d4b5b406f5f  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391 Ether0.0041334
0x19e8c656386bc49301732c5645f10e09aac69622fd74f7e5e4bdf324e457d76131 mins ago0xb6916aa2edf08859fd265c2411f67983f675e833  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.58914042 Ether0.00041334
0x1e5d1b1b2a4c4cf82b7b06e3ccc29959163f69fad5037e46e01a2e10e73428a641 mins ago0xa4d5aec4f4fec0feee3daf9185df14af7283bb68  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123915 Ether0.000516675
0xc7c19a0c202b9f77751d1714d9b33e61e8f92c92badf4c676b56fa9d16e59bd942 mins ago0x122718ae12ff4239c033bfba00f7901e36dd5e30  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412392.5 Ether0.000310005
0x08fc4e1a41491e5910e3bcb07a78f8c8157c9d118b71fd2e74173b8a4d5c4da546 mins ago0xd96551b1d13db3569aaabcf63a9fbaca31068f0d  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391 Ether0.00041334
0x29d364b6dec087ccee69e3fd6d4aecb1484d0e6606267bd1e0a677380149a88a47 mins ago0x75fbe164439289a830939cf4ec0f9845fab9ba23  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.813 Ether0.000103335
0x8c5db686b3cd8f475d68f6696d841e2615071a6cbaa61a095e63daa97adfb9c849 mins ago0x89846d7acc6652b4f55e0bf5f1654d614c17fe18  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.28 Ether0.000103335
0xb094df1a7f88e38c6a412022be51d40327fea9a2b98e71ba21e5c69f81cac8c654 mins ago0x72705657a219aaa87e5b7223cc79cd15e33e18af  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412393.5 Ether0.00041334
0x1abac74678c91e49f5e95b6b825f545c74c8ca9166f8e33f03c084d8b215651d55 mins ago0x955dcea06677c537c5c5666a87a827ad0270d60f  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412393 Ether0.00041334
0x3a70c3f8916248f49666f668e078258978e381131e761ea054916a8b0bb36a151 hr 2 mins ago0xdb7a7e799c94e441e4e4858354bcc2286a2664c0  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391 Ether0.00310005
0xa20cd996493502f6878110a642eb4802acd1a90c735e4d56c5456f00e8bb997d1 hr 8 mins ago0x04abf492d5a407550c7129e72294a3b7a2ffc6dc  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391 Ether0.00012059
0xf36464792f65501fdc5b3568c9c694e3364b171da30365bd705cb0318d6be4b71 hr 8 mins ago0xefd33f891394cee21c5a769c4a136c2f5ab03ab7  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.9003 Ether0.0000252
0x3444f750af7375743725f6ad03250b7fe50062d6f2068c00a97afc49b1f1bcb41 hr 18 mins ago0xd9a75f0036784604d218fdfee9d0534a65a17afb  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412392.4 Ether0.004236735
0xc27c740505ed2bb8d186a71f330e1236005b60de7da79efb5030c4a6eeff39d61 hr 24 mins ago0xd9055ba6b1bda8ea22756c64a99b6eb0de0fba85  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.6979 Ether0.00041334
0xba261b3b8c757d5492e076588b04f3c0a2ef757f40f4fd3ddd4a64de68a5ab7b1 hr 42 mins ago0x6c41f4653f8bbeea2b6771d45940293a4dbd9fd7  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391.29 Ether0.00041334
0x1caae672558fc4dbe6e4350129a87ed73ad7473272706060e225b95c0bc8da241 hr 43 mins ago0x81ce5e4d5e1f048c04244e4ad32ae1e05cf20720  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412390.226718966197789 Ether0.00020667
0x30f7bb336956d4014e0b217ac4840c852b83a908e650bf6df4286a903560cfce1 hr 44 mins ago0x53eb5d6225a54b8c90c5de95209167ba06b9c1be  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123930 Ether0.00165336
0x09ada75f3ce29d2c47b4d200aa76dd3eadadff8f75a228372d5ffe2c540ecb2f1 hr 57 mins ago0xe84d63ff06aa15b8e12e31637fe806bc7695d53e  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412391.5 Ether0.004236735
0xc43e020570d3e57d751855bd80dd16c7e31124096bebce5c164283ccc4f346251 hr 59 mins ago0x01015aec4170d9a7aa060fc44d0af303b90715cb  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123913.5 Ether0.000088335
0x88ccc87518618e83f0c582fa9949568c5c88bc9ec6d5d5891d25e43d508514bc2 hrs 24 mins ago0x833c0d780e36fcd9f3c3a2e85d1d985f858f3090  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123923 Ether0.003451389
0xe14b4a3bdc447c0b842cd5d00ac74aaffe10f077c0426a21fd5c4c1d6924eb502 hrs 52 mins ago0xb7529598d685220d0a3bbb202d784b05263d03ac  IN   0xa28fc2102da86e424b37ad86c7bc7855fc4412395 Ether0.004236735
0xe8945158219c20a300c7431808e881db7bcd42911be5aa1cba218f7e80a800dd3 hrs 3 mins ago0xccb33a817c396a1c20e0c778a068ec26d1f600c7  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123930 Ether0.00017667
0xed5ddf6f7ae13b0baa6acba1ce63bf5da16451387417c6dca9e1d4eaddc3e87b3 hrs 36 mins ago0xf8ff64e8b92636d657337b3a70e06fc180d0d435  IN   0xa28fc2102da86e424b37ad86c7bc7855fc44123938.5 Ether0.007508475
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x5c913d8c2304437ffdc58884d3b973c9bbc4215b613293bb05cc2257ea26bd4754994641 min ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.2 Ether
0x19a36db9bb7d58dbca16c78be0f2c0d8632bf24a6b744edae1cd3fa4c66f542a549937023 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751 Ether
0x19e8c656386bc49301732c5645f10e09aac69622fd74f7e5e4bdf324e457d761549934231 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.58914042 Ether
0x1e5d1b1b2a4c4cf82b7b06e3ccc29959163f69fad5037e46e01a2e10e73428a6549930241 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7515 Ether
0xc7c19a0c202b9f77751d1714d9b33e61e8f92c92badf4c676b56fa9d16e59bd9549929842 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f752.5 Ether
0x08fc4e1a41491e5910e3bcb07a78f8c8157c9d118b71fd2e74173b8a4d5c4da5549927446 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751 Ether
0x29d364b6dec087ccee69e3fd6d4aecb1484d0e6606267bd1e0a677380149a88a549927247 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.813 Ether
0x8c5db686b3cd8f475d68f6696d841e2615071a6cbaa61a095e63daa97adfb9c8549926049 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.28000000000000003 Ether
0xb094df1a7f88e38c6a412022be51d40327fea9a2b98e71ba21e5c69f81cac8c6549923654 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f753.5 Ether
0x1abac74678c91e49f5e95b6b825f545c74c8ca9166f8e33f03c084d8b215651d549923255 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f753 Ether
0x3a70c3f8916248f49666f668e078258978e381131e761ea054916a8b0bb36a1554992031 hr 2 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751 Ether
0x3444f750af7375743725f6ad03250b7fe50062d6f2068c00a97afc49b1f1bcb454991281 hr 18 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f752.4 Ether
0xc27c740505ed2bb8d186a71f330e1236005b60de7da79efb5030c4a6eeff39d654991071 hr 24 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.6979 Ether
0xba261b3b8c757d5492e076588b04f3c0a2ef757f40f4fd3ddd4a64de68a5ab7b54990271 hr 42 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751.29 Ether
0x1caae672558fc4dbe6e4350129a87ed73ad7473272706060e225b95c0bc8da2454990201 hr 43 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f750.22671896619778915 Ether
0x30f7bb336956d4014e0b217ac4840c852b83a908e650bf6df4286a903560cfce54990171 hr 44 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7530 Ether
0x09ada75f3ce29d2c47b4d200aa76dd3eadadff8f75a228372d5ffe2c540ecb2f54989651 hr 57 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751.5 Ether
0xc43e020570d3e57d751855bd80dd16c7e31124096bebce5c164283ccc4f3462554989511 hr 59 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7513.5 Ether
0x88ccc87518618e83f0c582fa9949568c5c88bc9ec6d5d5891d25e43d508514bc54988472 hrs 24 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7523 Ether
0xe14b4a3bdc447c0b842cd5d00ac74aaffe10f077c0426a21fd5c4c1d6924eb5054987332 hrs 52 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f755 Ether
0xe8945158219c20a300c7431808e881db7bcd42911be5aa1cba218f7e80a800dd54986903 hrs 3 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7530 Ether
0xed5ddf6f7ae13b0baa6acba1ce63bf5da16451387417c6dca9e1d4eaddc3e87b54985673 hrs 36 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f7538.5 Ether
0x9bc09ac090292948f2f331322fe89febaa4f7a36e0ae22c3da037cc096754da254985483 hrs 40 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f754 Ether
0x13eaeb446a4a5d8c071130be3364fa5f1f27b5db90a0ac9d729a884b7e1a177054985403 hrs 42 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751.49 Ether
0xca245a71739690ab6165959d68466f9049bb21095c9728445caf4b330b26d3a254985173 hrs 48 mins ago0xa28fc2102da86e424b37ad86c7bc7855fc4412390x60b3226af1f4a745a19bb0b2ebea1d9bc7864f751 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Similar match)
Note: Displaying similar matching verified source code at contract 0x45d090f5786f634879d35933fdf7b025903f807a(excluding Constructor Arguments if any)
Contract Name: HoloSale
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.18;


/**
 * @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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}


/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


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

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

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}



/**
 * @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) {
    if (a == 0) {
      return 0;
    }
    uint256 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 c;
  }

  /**
  * @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) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


// This is an ERC-20 token contract based on Open Zepplin's StandardToken
// and MintableToken plus the ability to burn tokens.
//
// We had to copy over the code instead of inheriting because of changes
// to the modifier lists of some functions:
//   * transfer(), transferFrom() and approve() are not callable during
//     the minting period, only after MintingFinished()
//   * mint() can only be called by the minter who is not the owner
//     but the HoloTokenSale contract.
//
// Token can be burned by a special 'destroyer' role that can only
// burn its tokens.
contract HoloToken is Ownable {
  string public constant name = "HoloToken";
  string public constant symbol = "HOT";
  uint8 public constant decimals = 18;

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Mint(address indexed to, uint256 amount);
  event MintingFinished();
  event Burn(uint256 amount);

  uint256 public totalSupply;


  //==================================================================================
  // Zeppelin BasicToken (plus modifier to not allow transfers during minting period):
  //==================================================================================

  using SafeMath for uint256;

  mapping(address => uint256) public balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public whenMintingFinished returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }


  //=====================================================================================
  // Zeppelin StandardToken (plus modifier to not allow transfers during minting period):
  //=====================================================================================
  mapping (address => mapping (address => uint256)) public allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) public whenMintingFinished returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public whenMintingFinished returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }


  //=====================================================================================
  // Minting:
  //=====================================================================================

  bool public mintingFinished = false;
  address public destroyer;
  address public minter;

  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  modifier whenMintingFinished() {
    require(mintingFinished);
    _;
  }

  modifier onlyMinter() {
    require(msg.sender == minter);
    _;
  }

  function setMinter(address _minter) external onlyOwner {
    minter = _minter;
  }

  function mint(address _to, uint256 _amount) external onlyMinter canMint  returns (bool) {
    require(balances[_to] + _amount > balances[_to]); // Guard against overflow
    require(totalSupply + _amount > totalSupply);     // Guard against overflow  (this should never happen)
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    return true;
  }

  function finishMinting() external onlyMinter returns (bool) {
    mintingFinished = true;
    MintingFinished();
    return true;
  }


  //=====================================================================================
  // Burning:
  //=====================================================================================


  modifier onlyDestroyer() {
     require(msg.sender == destroyer);
     _;
  }

  function setDestroyer(address _destroyer) external onlyOwner {
    destroyer = _destroyer;
  }

  function burn(uint256 _amount) external onlyDestroyer {
    require(balances[destroyer] >= _amount && _amount > 0);
    balances[destroyer] = balances[destroyer].sub(_amount);
    totalSupply = totalSupply.sub(_amount);
    Burn(_amount);
  }
}


// This contract holds a mapping of known funders with:
// * a boolean flag for whitelist status
// * number of reserved tokens for each day
contract HoloWhitelist is Ownable {
  address public updater;

  struct KnownFunder {
    bool whitelisted;
    mapping(uint => uint256) reservedTokensPerDay;
  }

  mapping(address => KnownFunder) public knownFunders;

  event Whitelisted(address[] funders);
  event ReservedTokensSet(uint day, address[] funders, uint256[] reservedTokens);

  modifier onlyUpdater {
    require(msg.sender == updater);
    _;
  }

  function HoloWhitelist() public {
    updater = msg.sender;
  }

  function setUpdater(address new_updater) external onlyOwner {
    updater = new_updater;
  }

  // Adds funders to the whitelist in batches.
  function whitelist(address[] funders) external onlyUpdater {
    for (uint i = 0; i < funders.length; i++) {
        knownFunders[funders[i]].whitelisted = true;
    }
    Whitelisted(funders);
  }

  // Removes funders from the whitelist in batches.
  function unwhitelist(address[] funders) external onlyUpdater {
    for (uint i = 0; i < funders.length; i++) {
        knownFunders[funders[i]].whitelisted = false;
    }
  }

  // Stores reserved tokens for several funders in a batch
  // but all for the same day.
  // * day is 0-based
  function setReservedTokens(uint day, address[] funders, uint256[] reservedTokens) external onlyUpdater {
    for (uint i = 0; i < funders.length; i++) {
        knownFunders[funders[i]].reservedTokensPerDay[day] = reservedTokens[i];
    }
    ReservedTokensSet(day, funders, reservedTokens);
  }

  // Used in HoloSale to check if funder is allowed
  function isWhitelisted(address funder) external view returns (bool) {
    return knownFunders[funder].whitelisted;
  }

  // Used in HoloSale to get reserved tokens per funder
  // and per day.
  // * day is 0-based
  function reservedTokens(address funder, uint day) external view returns (uint256) {
    return knownFunders[funder].reservedTokensPerDay[day];
  }


}


// This contract is a crowdsale based on Zeppelin's Crowdsale.sol but with
// several changes:
//   * the token contract as well as the supply contract get injected
//     with setTokenContract() and setSupplyContract()
//   * we have a dynamic token supply per day which we hold in the statsByDay
//   * once per day, the *updater* role runs the update function to make the
//     contract read the new supply and switch to the next day
//   * we have a minimum amount in ETH per transaction
//   * we have a maximum amount per transaction relative to the daily supply
//
//
contract HoloSale is Ownable, Pausable{
  using SafeMath for uint256;

  // Start and end block where purchases are allowed (both inclusive)
  uint256 public startBlock;
  uint256 public endBlock;
  // Factor between wei and full Holo tokens.
  // (i.e. a rate of 10^18 means one Holo per Ether)
  uint256 public rate;
  // Ratio of the current supply a transaction is allowed to by
  uint256 public maximumPercentageOfDaysSupply;
  // Minimum amount of wei a transaction has to send
  uint256 public minimumAmountWei;
  // address where funds are being send to on successful buy
  address public wallet;

  // The token being minted on sale
  HoloToken private tokenContract;
  // The contract to check beneficiaries' address against
  // and to hold number of reserved tokens per day
  HoloWhitelist private whitelistContract;

  // The account that is allowed to call update()
  // which will happen once per day during the sale period
  address private updater;

  // Will be set to true by finalize()
  bool private finalized = false;

  uint256 public totalSupply;

  // For every day of the sale we store one instance of this struct
  struct Day {
    // The supply available to sell on this day
    uint256 supply;
    // The number of unreserved tokens sold on this day
    uint256 soldFromUnreserved;
    // Number of tokens reserved today
    uint256 reserved;
    // Number of reserved tokens sold today
    uint256 soldFromReserved;
    // We are storing how much fuel each user has bought per day
    // to be able to apply our relative cap per user per day
    // (i.e. nobody is allowed to buy more than 10% of each day's supply)
    mapping(address => uint256) fuelBoughtByAddress;
  }

  // Growing list of days
  Day[] public statsByDay;

  event CreditsCreated(address beneficiary, uint256 amountWei, uint256 amountHolos);
  event Update(uint256 newTotalSupply, uint256 reservedTokensNextDay);

  modifier onlyUpdater {
    require(msg.sender == updater);
    _;
  }

  // Converts wei to smallest fraction of Holo tokens.
  // 'rate' is meant to give the factor between weis and full Holo tokens,
  // hence the division by 10^18.
  function holosForWei(uint256 amountWei) internal view returns (uint256) {
    return amountWei * rate / 1000000000000000000;
  }

  // Contstructor takes start and end block of the sale period,
  // the rate that defines how many full Holo token are being minted per wei
  // (since the Holo token has 18 decimals, 1000000000000000000 would mean that
  // one full Holo is minted per Ether),
  // minimum and maximum limits for incoming ETH transfers
  // and the wallet to which the Ethers are being transfered on updated()
  function HoloSale(
    uint256 _startBlock, uint256 _endBlock,
    uint256 _rate,
    uint256 _minimumAmountWei, uint256 _maximumPercentageOfDaysSupply,
    address _wallet) public
  {
    require(_startBlock >= block.number);
    require(_endBlock >= _startBlock);
    require(_rate > 0);
    require(_wallet != 0x0);

    updater = msg.sender;
    startBlock = _startBlock;
    endBlock = _endBlock;
    rate = _rate;
    maximumPercentageOfDaysSupply = _maximumPercentageOfDaysSupply;
    minimumAmountWei = _minimumAmountWei;
    wallet = _wallet;
  }

  //---------------------------------------------------------------------------
  // Setters and Getters:
  //---------------------------------------------------------------------------

  function setUpdater(address _updater) external onlyOwner {
    updater = _updater;
  }

  function setTokenContract(HoloToken _tokenContract) external onlyOwner {
    tokenContract = _tokenContract;
  }

  function setWhitelistContract(HoloWhitelist _whitelistContract) external onlyOwner {
    whitelistContract = _whitelistContract;
  }

  function currentDay() public view returns (uint) {
    return statsByDay.length;
  }

  function todaysSupply() external view returns (uint) {
    return statsByDay[currentDay()-1].supply;
  }

  function todaySold() external view returns (uint) {
    return statsByDay[currentDay()-1].soldFromUnreserved + statsByDay[currentDay()-1].soldFromReserved;
  }

  function todayReserved() external view returns (uint) {
    return statsByDay[currentDay()-1].reserved;
  }

  function boughtToday(address beneficiary) external view returns (uint) {
    return statsByDay[currentDay()-1].fuelBoughtByAddress[beneficiary];
  }

  //---------------------------------------------------------------------------
  // Sending money / adding asks
  //---------------------------------------------------------------------------

  // Fallback function can be used to buy fuel
  function () public payable {
    buyFuel(msg.sender);
  }

  // Main function that checks all conditions and then mints fuel tokens
  // and transfers the ETH to our wallet
  function buyFuel(address beneficiary) public payable whenNotPaused{
    require(currentDay() > 0);
    require(whitelistContract.isWhitelisted(beneficiary));
    require(beneficiary != 0x0);
    require(withinPeriod());

    // Calculate how many Holos this transaction would buy
    uint256 amountOfHolosAsked = holosForWei(msg.value);

    // Get current day
    uint dayIndex = statsByDay.length-1;
    Day storage today = statsByDay[dayIndex];

    // Funders who took part in the crowdfund could have reserved tokens
    uint256 reservedHolos = whitelistContract.reservedTokens(beneficiary, dayIndex);
    // If they do, make sure to subtract what they bought already today
    uint256 alreadyBought = today.fuelBoughtByAddress[beneficiary];
    if(alreadyBought >= reservedHolos) {
      reservedHolos = 0;
    } else {
      reservedHolos = reservedHolos.sub(alreadyBought);
    }

    // Calculate if they asked more than they have reserved
    uint256 askedMoreThanReserved;
    uint256 useFromReserved;
    if(amountOfHolosAsked > reservedHolos) {
      askedMoreThanReserved = amountOfHolosAsked.sub(reservedHolos);
      useFromReserved = reservedHolos;
    } else {
      askedMoreThanReserved = 0;
      useFromReserved = amountOfHolosAsked;
    }

    if(reservedHolos == 0) {
      // If this transaction is not claiming reserved tokens
      // it has to be over the minimum.
      // (Reserved tokens must be claimable even if it would be just few)
      require(msg.value >= minimumAmountWei);
    }

    // The non-reserved tokens asked must not exceed the max-ratio
    // nor the available supply.
    require(lessThanMaxRatio(beneficiary, askedMoreThanReserved, today));
    require(lessThanSupply(askedMoreThanReserved, today));

    // Everything fine if we're here
    // Send ETH to our wallet
    wallet.transfer(msg.value);
    // Mint receipts
    tokenContract.mint(beneficiary, amountOfHolosAsked);
    // Log this sale
    today.soldFromUnreserved = today.soldFromUnreserved.add(askedMoreThanReserved);
    today.soldFromReserved = today.soldFromReserved.add(useFromReserved);
    today.fuelBoughtByAddress[beneficiary] = today.fuelBoughtByAddress[beneficiary].add(amountOfHolosAsked);
    CreditsCreated(beneficiary, msg.value, amountOfHolosAsked);
  }

  // Returns true if we are in the live period of the sale
  function withinPeriod() internal constant returns (bool) {
    uint256 current = block.number;
    return current >= startBlock && current <= endBlock;
  }

  // Returns true if amount + plus fuel bought today already is not above
  // the maximum share one could buy today
  function lessThanMaxRatio(address beneficiary, uint256 amount, Day storage today) internal view returns (bool) {
    uint256 boughtTodayBefore = today.fuelBoughtByAddress[beneficiary];
    return boughtTodayBefore.add(amount).mul(100).div(maximumPercentageOfDaysSupply) <= today.supply;
  }

  // Returns false if amount would buy more fuel than we can sell today
  function lessThanSupply(uint256 amount, Day today) internal pure returns (bool) {
    return today.soldFromUnreserved.add(amount) <= today.supply.sub(today.reserved);
  }

  //---------------------------------------------------------------------------
  // Update
  //---------------------------------------------------------------------------


  function update(uint256 newTotalSupply, uint256 reservedTokensNextDay) external onlyUpdater {
    totalSupply = newTotalSupply;
    // daysSupply is the amount of tokens (*10^18) that we can sell today
    uint256 daysSupply = newTotalSupply.sub(tokenContract.totalSupply());
    statsByDay.push(Day(daysSupply, 0, reservedTokensNextDay, 0));
    Update(newTotalSupply, reservedTokensNextDay);
  }

  //---------------------------------------------------------------------------
  // Finalize
  //---------------------------------------------------------------------------

  // Returns true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    return block.number > endBlock;
  }

  // Mints a third of all tokens minted so far for the team.
  // => Team ends up with 25% of all tokens.
  // Also calls finishMinting() on the token contract which makes it
  // impossible to mint more.
  function finalize() external onlyOwner {
    require(!finalized);
    require(hasEnded());
    uint256 receiptsMinted = tokenContract.totalSupply();
    uint256 shareForTheTeam = receiptsMinted.div(3);
    tokenContract.mint(wallet, shareForTheTeam);
    tokenContract.finishMinting();
    finalized = true;
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_whitelistContract","type":"address"}],"name":"setWhitelistContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newTotalSupply","type":"uint256"},{"name":"reservedTokensNextDay","type":"uint256"}],"name":"update","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"todaySold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"beneficiary","type":"address"}],"name":"boughtToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"todaysSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumAmountWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"statsByDay","outputs":[{"name":"supply","type":"uint256"},{"name":"soldFromUnreserved","type":"uint256"},{"name":"reserved","type":"uint256"},{"name":"soldFromReserved","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_updater","type":"address"}],"name":"setUpdater","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maximumPercentageOfDaysSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyFuel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"todayReserved","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":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_minimumAmountWei","type":"uint256"},{"name":"_maximumPercentageOfDaysSupply","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amountWei","type":"uint256"},{"indexed":false,"name":"amountHolos","type":"uint256"}],"name":"CreditsCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newTotalSupply","type":"uint256"},{"indexed":false,"name":"reservedTokensNextDay","type":"uint256"}],"name":"Update","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405260008060146101000a81548160ff0219169083151502179055506000600960146101000a81548160ff021916908315150217905550341561004457600080fd5b60405160c080611c0b83398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504386101515156100dc57600080fd5b8585101515156100eb57600080fd5b6000841115156100fa57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561012057600080fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550856001819055508460028190555083600381905550816004819055508260058190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050611a31806101da6000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063083c63231461015457806312f261401461017d57806318160ddd146101b65780632c4e722e146101df5780632fb565e8146102085780633f4ba83a1461023457806348cd4cb1146102495780634bb278f3146102725780634bc4549c1461028757806351d10161146102b0578063521eb273146102fd578063536cfceb146103525780635c9302c91461037b5780635c975abb146103a45780637f3cb47b146103d15780638456cb59146103fa5780638da5cb5b1461040f57806399fc381b146104645780639d54f419146104b0578063bbcd5bbe146104e9578063daa1d7d414610522578063e52eb2881461054b578063ecb70fb714610579578063f2c402b6146105a6578063f2fde38b146105cf575b61015233610608565b005b341561015f57600080fd5b610167610c39565b6040518082815260200191505060405180910390f35b341561018857600080fd5b6101b4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c3f565b005b34156101c157600080fd5b6101c9610cde565b6040518082815260200191505060405180910390f35b34156101ea57600080fd5b6101f2610ce4565b6040518082815260200191505060405180910390f35b341561021357600080fd5b6102326004808035906020019091908035906020019091905050610cea565b005b341561023f57600080fd5b610247610ec8565b005b341561025457600080fd5b61025c610f86565b6040518082815260200191505060405180910390f35b341561027d57600080fd5b610285610f8c565b005b341561029257600080fd5b61029a6112ae565b6040518082815260200191505060405180910390f35b34156102bb57600080fd5b6102e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061130c565b6040518082815260200191505060405180910390f35b341561030857600080fd5b61031061137d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035d57600080fd5b6103656113a3565b6040518082815260200191505060405180910390f35b341561038657600080fd5b61038e6113d5565b6040518082815260200191505060405180910390f35b34156103af57600080fd5b6103b76113e2565b604051808215151515815260200191505060405180910390f35b34156103dc57600080fd5b6103e46113f5565b6040518082815260200191505060405180910390f35b341561040557600080fd5b61040d6113fb565b005b341561041a57600080fd5b6104226114bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561046f57600080fd5b61048560048080359060200190919050506114e0565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156104bb57600080fd5b6104e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061151f565b005b34156104f457600080fd5b610520600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115be565b005b341561052d57600080fd5b61053561165d565b6040518082815260200191505060405180910390f35b610577600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610608565b005b341561058457600080fd5b61058c611663565b604051808215151515815260200191505060405180910390f35b34156105b157600080fd5b6105b961166f565b6040518082815260200191505060405180910390f35b34156105da57600080fd5b610606600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116a1565b005b60008060008060008060008060149054906101000a900460ff1615151561062e57600080fd5b60006106386113d5565b11151561064457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf896000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561070957600080fd5b6102c65a03f1151561071a57600080fd5b50505060405180519050151561072f57600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff161415151561075557600080fd5b61075d6117f6565b151561076857600080fd5b61077134611816565b96506001600b80549050039550600b8681548110151561078d57fe5b90600052602060002090600502019450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e74a48be89886000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561086a57600080fd5b6102c65a03f1151561087b57600080fd5b5050506040518051905093508460040160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925083831015156108dd57600093506108f3565b6108f0838561183790919063ffffffff16565b93505b838711156109185761090e848861183790919063ffffffff16565b9150839050610920565b600091508690505b600084141561093b57600554341015151561093a57600080fd5b5b610946888387611850565b151561095157600080fd5b61098f8286608060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815250506118e2565b151561099a57600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156109fc57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1989896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610ac957600080fd5b6102c65a03f11515610ada57600080fd5b5050506040518051905050610afc82866001015461192090919063ffffffff16565b8560010181905550610b1b81866003015461192090919063ffffffff16565b8560030181905550610b77878660040160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192090919063ffffffff16565b8560040160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f3f47b3be2da0491a20f4f13ae3cc3a095cbbec3c88dd8b6bfdaae7e65d9f4b59883489604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050505050505050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9a57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b60035481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4857600080fd5b82600a81905550610e0a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610de057600080fd5b6102c65a03f11515610df157600080fd5b505050604051805190508461183790919063ffffffff16565b9050600b8054806001018281610e209190611994565b916000526020600020906005020160006080604051908101604052808581526020016000815260200186815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155606082015181600301555050507f8ecf343d22d1934aea3fb34b7332371552b19286c5bc696adae16c7690a90d548383604051808381526020018281526020019250505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f2357600080fd5b600060149054906101000a900460ff161515610f3e57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60015481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fea57600080fd5b600960149054906101000a900460ff1615151561100657600080fd5b61100e611663565b151561101957600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156110a757600080fd5b6102c65a03f115156110b857600080fd5b5050506040518051905091506110d860038361193e90919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156111c957600080fd5b6102c65a03f115156111da57600080fd5b5050506040518051905050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561127357600080fd5b6102c65a03f1151561128457600080fd5b50505060405180519050506001600960146101000a81548160ff0219169083151502179055505050565b6000600b60016112bc6113d5565b038154811015156112c957fe5b906000526020600020906005020160030154600b60016112e76113d5565b038154811015156112f457fe5b90600052602060002090600502016001015401905090565b6000600b600161131a6113d5565b0381548110151561132757fe5b906000526020600020906005020160040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60016113b16113d5565b038154811015156113be57fe5b906000526020600020906005020160000154905090565b6000600b80549050905090565b600060149054906101000a900460ff1681565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561145657600080fd5b600060149054906101000a900460ff1615151561147257600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b818154811015156114ef57fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561157a57600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161957600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b60006002544311905090565b6000600b600161167d6113d5565b0381548110151561168a57fe5b906000526020600020906005020160020154905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116fc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561173857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080439050600154811015801561181057506002548111155b91505090565b6000670de0b6b3a7640000600354830281151561182f57fe5b049050919050565b600082821115151561184557fe5b818303905092915050565b6000808260040160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600001546118d66004546118c860646118ba898761192090919063ffffffff16565b61195990919063ffffffff16565b61193e90919063ffffffff16565b11159150509392505050565b60006118ff8260400151836000015161183790919063ffffffff16565b61191684846020015161192090919063ffffffff16565b1115905092915050565b600080828401905083811015151561193457fe5b8091505092915050565b600080828481151561194c57fe5b0490508091505092915050565b600080600084141561196e576000915061198d565b828402905082848281151561197f57fe5b0414151561198957fe5b8091505b5092915050565b8154818355818115116119c1576005028160050283600052602060002091820191016119c091906119c6565b5b505050565b611a0291905b808211156119fe57600080820160009055600182016000905560028201600090556003820160009055506005016119cc565b5090565b905600a165627a7a7230582007130e7540ed2bb62e03a8937f85b88cd2047ad457f0d0bda4754753bcd08ff2002900000000000000000000000000000000000000000000000000000000005185240000000000000000000000000000000000000000000000000000000000544b4c00000000000000000000000000000000000000000003a60317502b839a7c7600000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000007912afd603e09a3d379658fd01777b117265e3b8

   Swarm Source:
bzzr://07130e7540ed2bb62e03a8937f85b88cd2047ad457f0d0bda4754753bcd08ff2

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.