ETH Price: $2,040.99 (+3.75%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer45892542017-11-20 15:52:043025 days ago1511193124IN
0x6a802A8B...4935c83F7
0.3 ETH0.0004288420
Transfer45890982017-11-20 15:19:013025 days ago1511191141IN
0x6a802A8B...4935c83F7
0.08 ETH0.000203169.475
Transfer45890892017-11-20 15:17:303025 days ago1511191050IN
0x6a802A8B...4935c83F7
0.08 ETH0.000085764
Transfer45890802017-11-20 15:16:213025 days ago1511190981IN
0x6a802A8B...4935c83F7
0.085 ETH0.0002144210
Transfer45890572017-11-20 15:11:493025 days ago1511190709IN
0x6a802A8B...4935c83F7
0.09 ETH0.0004288420
Transfer45890402017-11-20 15:08:043025 days ago1511190484IN
0x6a802A8B...4935c83F7
0.09 ETH0.0004288420
Set Owner45706322017-11-17 16:23:023028 days ago1510935782IN
0x6a802A8B...4935c83F7
0 ETH0.001429750

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer45659302017-11-16 22:15:223029 days ago1510870522
0x6a802A8B...4935c83F7
 Contract Creation0 ETH
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:
Minter

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

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

/* Token - simple token for PreICO and ICO
   Copyright (C) 2017  Sergey Sherkunov <leinlawun@leinlawun.org>

   This file is part of Token.

   Token is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */

pragma solidity ^0.4.18;

library SafeMath {
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;

    assert (c >= a);
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
    assert(b <= a);

    c = a - b;
  }

  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a * b;

    assert (c / a == b);
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a / b;
  }
}

contract ERC20MintableToken {
  using SafeMath for uint256;

  address public owner;

  Minter public minter;

  string constant public name = "PayAll";

  string constant public symbol = "PLL";

  uint8 constant public decimals = 0;

  uint256 public totalSupply;

  mapping (address => uint256) public balanceOf;

  mapping (address => mapping (address => uint256)) public allowance;

  event Transfer(address indexed _oldTokensHolder,
                 address indexed _newTokensHolder, uint256 _tokensNumber);

  //https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
  event Transfer(address indexed _tokensSpender,
                 address indexed _oldTokensHolder,
                 address indexed _newTokensHolder, uint256 _tokensNumber);

  event Approval(address indexed _tokensHolder, address indexed _tokensSpender,
                 uint256 _newTokensNumber);

  //https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
  event Approval(address indexed _tokensHolder, address indexed _tokensSpender,
                 uint256 _oldTokensNumber, uint256 _newTokensNumber);

  modifier onlyOwner {
    require (owner == msg.sender);

    _;
  }

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

    _;
  }

  //https://vessenes.com/the-erc20-short-address-attack-explained
  //https://blog.golemproject.net/how-to-find-10m-by-just-reading-blockchain-6ae9d39fcd95
  //https://ericrafaloff.com/analyzing-the-erc20-short-address-attack
  modifier checkPayloadSize(uint256 size) {
     require (msg.data.length == size + 4);

     _;
  }

  function setOwner(address _owner) public onlyOwner {
    uint256 _allowance = allowance[this][owner];

    _approve(this, owner, 0);

    owner = _owner;

    _approve(this, owner, _allowance);
  }

  function setMinter(Minter _minter) public onlyOwner {
    uint256 _allowance = allowance[this][minter];

    _approve(this, minter, 0);

    minter = _minter;

    _approve(this, minter, _allowance);
  }

  function ERC20MintableToken(Minter _minter) public {
    owner = tx.origin;
    minter = _minter;
  }

  function _transfer(address _oldTokensHolder, address _newTokensHolder,
                     uint256 _tokensNumber) private {
    balanceOf[_oldTokensHolder] =
      balanceOf[_oldTokensHolder].sub(_tokensNumber);

    balanceOf[_newTokensHolder] =
      balanceOf[_newTokensHolder].add(_tokensNumber);

    Transfer(_oldTokensHolder, _newTokensHolder, _tokensNumber);
  }

  //https://vessenes.com/the-erc20-short-address-attack-explained
  //https://blog.golemproject.net/how-to-find-10m-by-just-reading-blockchain-6ae9d39fcd95
  //https://ericrafaloff.com/analyzing-the-erc20-short-address-attack
  function transfer(address _newTokensHolder, uint256 _tokensNumber) public
                   checkPayloadSize(2 * 32) returns (bool) {
    _transfer(msg.sender, _newTokensHolder, _tokensNumber);

    return true;
  }

  //https://vessenes.com/the-erc20-short-address-attack-explained
  //https://blog.golemproject.net/how-to-find-10m-by-just-reading-blockchain-6ae9d39fcd95
  //https://ericrafaloff.com/analyzing-the-erc20-short-address-attack
  //https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
  function transferFrom(address _oldTokensHolder, address _newTokensHolder,
                        uint256 _tokensNumber) public checkPayloadSize(3 * 32)
                       returns (bool) {
    allowance[_oldTokensHolder][msg.sender] =
      allowance[_oldTokensHolder][msg.sender].sub(_tokensNumber);

    _transfer(_oldTokensHolder, _newTokensHolder, _tokensNumber);

    Transfer(msg.sender, _oldTokensHolder, _newTokensHolder, _tokensNumber);

    return true;
  }

  function _approve(address _tokensHolder, address _tokensSpender,
                    uint256 _newTokensNumber) private {
    allowance[_tokensHolder][_tokensSpender] = _newTokensNumber;

    Approval(msg.sender, _tokensSpender, _newTokensNumber);
  }

  //https://vessenes.com/the-erc20-short-address-attack-explained
  //https://blog.golemproject.net/how-to-find-10m-by-just-reading-blockchain-6ae9d39fcd95
  //https://ericrafaloff.com/analyzing-the-erc20-short-address-attack
  //https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
  function approve(address _tokensSpender, uint256 _newTokensNumber) public
                  checkPayloadSize(2 * 32) returns (bool) {
    require (allowance[msg.sender][_tokensSpender] == 0 ||
             _newTokensNumber == 0);

    _approve(msg.sender, _tokensSpender, _newTokensNumber);

    return true;
  }

  //https://vessenes.com/the-erc20-short-address-attack-explained
  //https://blog.golemproject.net/how-to-find-10m-by-just-reading-blockchain-6ae9d39fcd95
  //https://ericrafaloff.com/analyzing-the-erc20-short-address-attack
  //https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
  function approve(address _tokensSpender, uint256 _oldTokensNumber,
                   uint256 _newTokensNumber) public checkPayloadSize(3 * 32)
                  returns (bool) {
    require (allowance[msg.sender][_tokensSpender] == _oldTokensNumber);

    _approve(msg.sender, _tokensSpender, _newTokensNumber);

    Approval(msg.sender, _tokensSpender, _oldTokensNumber, _newTokensNumber);

    return true;
  }

  function () public {
    revert();
  }

  function mint(uint256 _tokensNumber) public onlyMinter {
    totalSupply = totalSupply.add(_tokensNumber);

    balanceOf[this] = balanceOf[this].add(_tokensNumber);

    uint256 _allowance = allowance[this][msg.sender].add(_tokensNumber);

    _approve(this, minter, _allowance);

    _approve(this, owner, _allowance);
  }

  function burnUndistributed() public onlyMinter {
    _approve(this, minter, 0);

    _approve(this, owner, 0);

    totalSupply = totalSupply.sub(balanceOf[this]);

    balanceOf[this] = 0;
  }
}

contract Minter {
  using SafeMath for uint256;

  enum MinterState {
    PreICOWait,
    PreICOStarted,
    ICOWait,
    ICOStarted,
    Over
  }

  struct Tokensale {
    uint256 startTime;
    uint256 endTime;
    uint256 tokensMinimumNumberForBuy;
    uint256 tokensCost;
    uint256 tokensNumberForMint;
    bool tokensMinted;
    uint256 tokensStepOneBountyTime;
    uint256 tokensStepTwoBountyTime;
    uint256 tokensStepThreeBountyTime;
    uint256 tokensStepFourBountyTime;
    uint8 tokensStepOneBounty;
    uint8 tokensStepTwoBounty;
    uint8 tokensStepThreeBounty;
    uint8 tokensStepFourBounty;
  }

  address public owner;

  ERC20MintableToken public token;

  Tokensale public PreICO =
    Tokensale(1511211600, 1513803600, 150, 340000000000000 wei, 10000000, false,
              1 weeks, 2 weeks, 3 weeks, 4 weeks + 2 days, 25, 15, 10, 5);

  Tokensale public ICO =
    Tokensale(1526850000, 1529528400, 150, 340000000000000 wei, 290000000,
              false, 1 weeks, 2 weeks, 3 weeks, 4 weeks + 3 days, 20, 10, 5, 0);

  bool public paused = false;

  modifier onlyOwner {
    require (owner == msg.sender);

    _;
  }

  modifier onlyDuringTokensale {
    MinterState _minterState_ = _minterState();

    require (_minterState_ == MinterState.PreICOStarted ||
             _minterState_ == MinterState.ICOStarted);

    _;
  }

  modifier onlyAfterTokensaleOver {
    MinterState _minterState_ = _minterState();

    require (_minterState_ == MinterState.Over);

    _;
  }

  modifier onlyNotPaused {
    require (!paused);

    _;
  }

  modifier checkLimitsToBuyTokens {
    MinterState _minterState_ = _minterState();

    require (_minterState_ == MinterState.PreICOStarted &&
             PreICO.tokensMinimumNumberForBuy <= msg.value / PreICO.tokensCost ||
             _minterState_ == MinterState.ICOStarted &&
             ICO.tokensMinimumNumberForBuy <= msg.value / ICO.tokensCost);

    _;
  }

  function setOwner(address _owner) public onlyOwner {
    owner = _owner;
  }

  function setPaused(bool _paused) public onlyOwner {
    paused = _paused;
  }

  function Minter() public {
    owner = msg.sender;
    token = new ERC20MintableToken(this);
  }

  function _minterState() private constant returns (MinterState) {
    if (PreICO.startTime > now) {
      return MinterState.PreICOWait;
    } else if (PreICO.endTime > now) {
      return MinterState.PreICOStarted;
    } else if (ICO.startTime > now) {
      return MinterState.ICOWait;
    } else if (ICO.endTime > now) {
      return MinterState.ICOStarted;
    } else {
      return MinterState.Over;
    }
  }

  function _tokensaleCountTokensNumber(Tokensale _tokensale, uint256 _timestamp,
                                       uint256 _wei, uint256 _totalTokensNumber,
                                       uint256 _totalTokensNumberAllowance)
                                      private pure
                                      returns (uint256, uint256) {
    uint256 _tokensNumber = _wei.div(_tokensale.tokensCost);

    require (_tokensNumber >= _tokensale.tokensMinimumNumberForBuy);

    uint256 _aviableTokensNumber =
      _totalTokensNumber <= _totalTokensNumberAllowance ?
        _totalTokensNumber : _totalTokensNumberAllowance;

    uint256 _restWei = 0;

    if (_tokensNumber >= _aviableTokensNumber) {
      uint256 _restTokensNumber = _tokensNumber.sub(_aviableTokensNumber);

      _restWei = _restTokensNumber.mul(_tokensale.tokensCost);

      _tokensNumber = _aviableTokensNumber;
    } else {
      uint256 _timePassed = _timestamp.sub(_tokensale.startTime);

      uint256 _tokensNumberBounty = 0;

      if (_timePassed < _tokensale.tokensStepOneBountyTime) {
        _tokensNumberBounty = _tokensNumber.mul(_tokensale.tokensStepOneBounty)
                                           .div(100);
      } else if (_timePassed < _tokensale.tokensStepTwoBountyTime) {
        _tokensNumberBounty = _tokensNumber.mul(_tokensale.tokensStepTwoBounty)
                                           .div(100);
      } else if (_timePassed < _tokensale.tokensStepThreeBountyTime) {
        _tokensNumberBounty =
          _tokensNumber.mul(_tokensale.tokensStepThreeBounty).div(100);
      } else if (_timePassed < _tokensale.tokensStepFourBountyTime) {
        _tokensNumberBounty = _tokensNumber.mul(_tokensale.tokensStepFourBounty)
                                           .div(100);
      }

      _tokensNumber = _tokensNumber.add(_tokensNumberBounty);

      if (_tokensNumber > _aviableTokensNumber) {
        _tokensNumber = _aviableTokensNumber;
      }
    }

    return (_tokensNumber, _restWei);
  }

  function _tokensaleStart(Tokensale storage _tokensale) private {
    if (!_tokensale.tokensMinted) {
      token.mint(_tokensale.tokensNumberForMint);

      _tokensale.tokensMinted = true;
    }

    uint256 _totalTokensNumber = token.balanceOf(token);

    uint256 _totalTokensNumberAllowance = token.allowance(token, this);

    var (_tokensNumber, _restWei) =
      _tokensaleCountTokensNumber(_tokensale, now, msg.value,
                                  _totalTokensNumber,
                                  _totalTokensNumberAllowance);

    token.transferFrom(token, msg.sender, _tokensNumber);

    if (_restWei > 0) {
      msg.sender.transfer(_restWei);
    }
  }

  function _tokensaleSelect() private constant returns (Tokensale storage) {
    MinterState _minterState_ = _minterState();

    if (_minterState_ == MinterState.PreICOStarted) {
      return PreICO;
    } else if (_minterState_ == MinterState.ICOStarted) {
      return ICO;
    } else {
      revert();
    }
  }

  function () public payable onlyDuringTokensale onlyNotPaused
    checkLimitsToBuyTokens {
    Tokensale storage _tokensale = _tokensaleSelect();

    _tokensaleStart(_tokensale);
  }

  function mint(uint256 _tokensNumber) public onlyOwner onlyDuringTokensale {
    token.mint(_tokensNumber);
  }

  function burnUndistributed() public onlyAfterTokensaleOver {
    token.burnUndistributed();
  }

  function withdraw() public onlyOwner {
    msg.sender.transfer(this.balance);
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"PreICO","outputs":[{"name":"startTime","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"tokensMinimumNumberForBuy","type":"uint256"},{"name":"tokensCost","type":"uint256"},{"name":"tokensNumberForMint","type":"uint256"},{"name":"tokensMinted","type":"bool"},{"name":"tokensStepOneBountyTime","type":"uint256"},{"name":"tokensStepTwoBountyTime","type":"uint256"},{"name":"tokensStepThreeBountyTime","type":"uint256"},{"name":"tokensStepFourBountyTime","type":"uint256"},{"name":"tokensStepOneBounty","type":"uint8"},{"name":"tokensStepTwoBounty","type":"uint8"},{"name":"tokensStepThreeBounty","type":"uint8"},{"name":"tokensStepFourBounty","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"burnUndistributed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ICO","outputs":[{"name":"startTime","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"tokensMinimumNumberForBuy","type":"uint256"},{"name":"tokensCost","type":"uint256"},{"name":"tokensNumberForMint","type":"uint256"},{"name":"tokensMinted","type":"bool"},{"name":"tokensStepOneBountyTime","type":"uint256"},{"name":"tokensStepTwoBountyTime","type":"uint256"},{"name":"tokensStepThreeBountyTime","type":"uint256"},{"name":"tokensStepFourBountyTime","type":"uint256"},{"name":"tokensStepOneBounty","type":"uint8"},{"name":"tokensStepTwoBounty","type":"uint8"},{"name":"tokensStepThreeBounty","type":"uint8"},{"name":"tokensStepFourBounty","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","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":"_tokensNumber","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

60606040526101c06040519081016040908152635a1342508252635a3acf5060208301526096908201526601353a6b3940006060820152629896806080820152600060a082015262093a8060c08201526212750060e0820152621baf8061010082015262278d006101208201526019610140820152600f610160820152600a61018082015260056101a08201526002815181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015160058201805460ff191691151591909117905560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090155610140820151600a8201805460ff191660ff9290921691909117905561016082015181600a0160016101000a81548160ff021916908360ff16021790555061018082015181600a0160026101000a81548160ff021916908360ff1602179055506101a082015181600a0160036101000a81548160ff021916908360ff16021790555050506101c06040519081016040908152635b01e1d08252635b2ac05060208301526096908201526601353a6b39400060608201526311490c806080820152600060a0820181905262093a8060c08301526212750060e0830152621baf806101008301526228de806101208301526014610140830152600a61016083015260056101808301526101a0820152600d815181556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015160058201805460ff191691151591909117905560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090155610140820151600a8201805460ff191660ff9290921691909117905561016082015181600a0160016101000a81548160ff021916908360ff16021790555061018082015181600a0160026101000a81548160ff021916908360ff1602179055506101a0820151600a909101805460ff9290921663010000000263ff00000019909216919091179055506018805460ff19169055341561031757600080fd5b60008054600160a060020a03191633600160a060020a03161790553061033b610386565b600160a060020a039091168152602001604051809103906000f080151561036157600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055610396565b604051610a8c80610ef883390190565b610b53806103a56000396000f30060606040526004361061008a5763ffffffff60e060020a60003504166310c2a365811461016557806313af4035146101f757806316c38b3c1461021857806326abfe0914610230578063273ba6bb146102435780633ccfd60b146102565780635c975abb146102695780638da5cb5b14610290578063a0712d68146102bf578063fc0c546a146102d5575b6000806100956102e8565b905060018160048111156100a557fe5b14806100bc575060038160048111156100ba57fe5b145b15156100c757600080fd5b60185460ff16156100d757600080fd5b60006100e16102e8565b905060018160048111156100f157fe5b14801561010f57506005543481151561010657fe5b04600280015411155b806101425750600381600481111561012357fe5b14801561014257506010543481151561013857fe5b04600d6002015411155b151561014d57600080fd5b61015561033f565b92506101608361038f565b505050005b341561017057600080fd5b61017861069a565b6040519d8e5260208e019c909c526040808e019b909b5260608d019990995260808c019790975294151560a08b015260c08a019390935260e089019190915261010088015261012087015260ff9081166101408701529081166101608601529081166101808501529091166101a08301526101c0909101905180910390f35b341561020257600080fd5b610216600160a060020a03600435166106e1565b005b341561022357600080fd5b610216600435151561072b565b341561023b57600080fd5b610216610759565b341561024e57600080fd5b6101786107d3565b341561026157600080fd5b61021661081a565b341561027457600080fd5b61027c610874565b604051901515815260200160405180910390f35b341561029b57600080fd5b6102a361087d565b604051600160a060020a03909116815260200160405180910390f35b34156102ca57600080fd5b61021660043561088c565b34156102e057600080fd5b6102a361093c565b60004260026000015411156102ff5750600061033c565b600354429011156103125750600161033c565b600d54429011156103255750600261033c565b600e54429011156103385750600361033c565b5060045b90565b60008061034a6102e8565b9050600181600481111561035a57fe5b1415610369576002915061038b565b600381600481111561037757fe5b141561038657600d915061038b565b600080fd5b5090565b600581015460009081908190819060ff16151561041a576001546004860154600160a060020a039091169063a0712d689060405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156103f657600080fd5b6102c65a03f1151561040757600080fd5b50505060058501805460ff191660011790555b600154600160a060020a03166370a082318160006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561047357600080fd5b6102c65a03f1151561048457600080fd5b5050506040518051600154909550600160a060020a0316905063dd62ed3e813060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156104f257600080fd5b6102c65a03f1151561050357600080fd5b5050506040518051905092506105cd856101c0604051908101604090815282548252600183015460208301526002830154908201526003820154606082015260048201546080820152600582015460ff908116151560a0830152600683015460c0830152600783015460e08301526008830154610100808401919091526009840154610120840152600a909301548082166101408401529283048116610160830152620100008304811661018083015263010000009092049091166101a08201524234878761094b565b6001549193509150600160a060020a03166323b872dd81338560006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561063e57600080fd5b6102c65a03f1151561064f57600080fd5b50505060405180515050600081111561069357600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561069357600080fd5b5050505050565b600254600354600454600554600654600754600854600954600a54600b54600c5460ff9586169581811691610100810482169162010000820481169163010000009004168e565b60005433600160a060020a039081169116146106fc57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461074657600080fd5b6018805460ff1916911515919091179055565b60006107636102e8565b9050600481600481111561077357fe5b1461077d57600080fd5b600154600160a060020a03166326abfe096040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156107bc57600080fd5b6102c65a03f115156107cd57600080fd5b50505050565b600d54600e54600f5460105460115460125460135460145460155460165460175460ff9586169581811691610100810482169162010000820481169163010000009004168e565b60005433600160a060020a0390811691161461083557600080fd5b33600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561087257600080fd5b565b60185460ff1681565b600054600160a060020a031681565b60005433600160a060020a039081169116146108a757600080fd5b60006108b16102e8565b905060018160048111156108c157fe5b14806108d8575060038160048111156108d657fe5b145b15156108e357600080fd5b600154600160a060020a031663a0712d688360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561092b57600080fd5b6102c65a03f1151561069357600080fd5b600154600160a060020a031681565b60008060008060008060008061096c8d606001518c9063ffffffff610ad616565b95508c6040015186101561097f57600080fd5b888a111561098d578861098f565b895b9450600093508486106109cd576109ac868663ffffffff610aeb16565b92506109c38d60600151849063ffffffff610afd16565b9350849550610ac3565b6109df8d518d9063ffffffff610aeb16565b9150600090508c60c00151821015610a2257610a1b6064610a0f8f6101400151899060ff1663ffffffff610afd16565b9063ffffffff610ad616565b9050610aa5565b8c60e00151821015610a4c57610a1b6064610a0f8f6101600151899060ff1663ffffffff610afd16565b8c6101000151821015610a7757610a1b6064610a0f8f6101800151899060ff1663ffffffff610afd16565b8c6101200151821015610aa557610aa26064610a0f8f6101a00151899060ff1663ffffffff610afd16565b90505b610ab5868263ffffffff610b1a16565b955084861115610ac3578495505b50939b919a509098505050505050505050565b60008183811515610ae357fe5b049392505050565b600082821115610af757fe5b50900390565b818102818382811515610b0c57fe5b0414610b1457fe5b92915050565b81810182811015610b1457fe00a165627a7a7230582031bdd28d5e12d9771497936c6743ed760c0174b22ff984c75826feaa4862475c00296060604052341561000f57600080fd5b604051602080610a8c8339810160405280805160008054600160a060020a03328116600160a060020a031992831617909255600180549290931691161790555050610a2d8061005f6000396000f3006060604052600436106100e55763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f5578063075461721461017f578063095ea7b3146101ae57806313af4035146101e457806318160ddd1461020557806323b872dd1461022a57806326abfe0914610252578063313ce56714610265578063426a84931461028e57806370a08231146102b35780638da5cb5b146102d257806395d89b41146102e5578063a0712d68146102f8578063a9059cbb1461030e578063dd62ed3e14610330578063fca3b5aa14610355575b34156100f057600080fd5b600080fd5b341561010057600080fd5b610108610374565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561014457808201518382015260200161012c565b50505050905090810190601f1680156101715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018a57600080fd5b6101926103ab565b604051600160a060020a03909116815260200160405180910390f35b34156101b957600080fd5b6101d0600160a060020a03600435166024356103ba565b604051901515815260200160405180910390f35b34156101ef57600080fd5b610203600160a060020a036004351661041b565b005b341561021057600080fd5b6102186104ae565b60405190815260200160405180910390f35b341561023557600080fd5b6101d0600160a060020a03600435811690602435166044356104b4565b341561025d57600080fd5b61020361058a565b341561027057600080fd5b610278610620565b60405160ff909116815260200160405180910390f35b341561029957600080fd5b6101d0600160a060020a0360043516602435604435610625565b34156102be57600080fd5b610218600160a060020a03600435166106cb565b34156102dd57600080fd5b6101926106dd565b34156102f057600080fd5b6101086106ec565b341561030357600080fd5b610203600435610723565b341561031957600080fd5b6101d0600160a060020a03600435166024356107f6565b341561033b57600080fd5b610218600160a060020a0360043581169060243516610812565b341561036057600080fd5b610203600160a060020a036004351661082f565b60408051908101604052600681527f506179416c6c0000000000000000000000000000000000000000000000000000602082015281565b600154600160a060020a031681565b60006040366044146103cb57600080fd5b600160a060020a0333811660009081526004602090815260408083209388168352929052205415806103fb575082155b151561040657600080fd5b6104113385856108bb565b5060019392505050565b6000805433600160a060020a0390811691161461043757600080fd5b50600160a060020a033081811660009081526004602090815260408083208354909516808452949091528120549261046f92916108bb565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384811691909117918290556104aa91309116836108bb565b5050565b60025481565b60006060366064146104c557600080fd5b600160a060020a03808616600090815260046020908152604080832033909416835292905220546104fc908463ffffffff61092216565b600160a060020a038087166000908152600460209081526040808320339094168352929052205561052e858585610934565b83600160a060020a031685600160a060020a031633600160a060020a03167fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f8660405190815260200160405180910390a4506001949350505050565b60015433600160a060020a039081169116146105a557600080fd5b6001546105be903090600160a060020a031660006108bb565b600080546105d7913091600160a060020a0316906108bb565b600160a060020a0330166000908152600360205260409020546002546106029163ffffffff61092216565b600255600160a060020a033016600090815260036020526040812055565b600081565b600060603660641461063657600080fd5b600160a060020a03338116600090815260046020908152604080832093891683529290522054841461066757600080fd5b6106723386856108bb565b84600160a060020a031633600160a060020a03167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7868660405191825260208201526040908101905180910390a3506001949350505050565b60036020526000908152604090205481565b600054600160a060020a031681565b60408051908101604052600381527f504c4c0000000000000000000000000000000000000000000000000000000000602082015281565b60015460009033600160a060020a0390811691161461074157600080fd5b600254610754908363ffffffff6109ee16565b600255600160a060020a033016600090815260036020526040902054610780908363ffffffff6109ee16565b600160a060020a03308116600090815260036020908152604080832094909455600481528382203390931682529190915220546107c3908363ffffffff6109ee16565b6001549091506107de903090600160a060020a0316836108bb565b6000546104aa903090600160a060020a0316836108bb565b600060403660441461080757600080fd5b610411338585610934565b600460209081526000928352604080842090915290825290205481565b6000805433600160a060020a0390811691161461084b57600080fd5b50600160a060020a03308181166000908152600460209081526040808320600154909516808452949091528120549261088492916108bb565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384811691909117918290556104aa91309116835b600160a060020a038084166000908152600460209081526040808320868516808552925291829020849055913316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a3505050565b60008282111561092e57fe5b50900390565b600160a060020a03831660009081526003602052604090205461095d908263ffffffff61092216565b600160a060020a038085166000908152600360205260408082209390935590841681522054610992908263ffffffff6109ee16565b600160a060020a03808416600081815260036020526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b818101828110156109fb57fe5b929150505600a165627a7a72305820651a97c64aa33644f03e2dae4e1e48b44316db559251feef2a22f3a78d1680d30029

Deployed Bytecode

0x60606040526004361061008a5763ffffffff60e060020a60003504166310c2a365811461016557806313af4035146101f757806316c38b3c1461021857806326abfe0914610230578063273ba6bb146102435780633ccfd60b146102565780635c975abb146102695780638da5cb5b14610290578063a0712d68146102bf578063fc0c546a146102d5575b6000806100956102e8565b905060018160048111156100a557fe5b14806100bc575060038160048111156100ba57fe5b145b15156100c757600080fd5b60185460ff16156100d757600080fd5b60006100e16102e8565b905060018160048111156100f157fe5b14801561010f57506005543481151561010657fe5b04600280015411155b806101425750600381600481111561012357fe5b14801561014257506010543481151561013857fe5b04600d6002015411155b151561014d57600080fd5b61015561033f565b92506101608361038f565b505050005b341561017057600080fd5b61017861069a565b6040519d8e5260208e019c909c526040808e019b909b5260608d019990995260808c019790975294151560a08b015260c08a019390935260e089019190915261010088015261012087015260ff9081166101408701529081166101608601529081166101808501529091166101a08301526101c0909101905180910390f35b341561020257600080fd5b610216600160a060020a03600435166106e1565b005b341561022357600080fd5b610216600435151561072b565b341561023b57600080fd5b610216610759565b341561024e57600080fd5b6101786107d3565b341561026157600080fd5b61021661081a565b341561027457600080fd5b61027c610874565b604051901515815260200160405180910390f35b341561029b57600080fd5b6102a361087d565b604051600160a060020a03909116815260200160405180910390f35b34156102ca57600080fd5b61021660043561088c565b34156102e057600080fd5b6102a361093c565b60004260026000015411156102ff5750600061033c565b600354429011156103125750600161033c565b600d54429011156103255750600261033c565b600e54429011156103385750600361033c565b5060045b90565b60008061034a6102e8565b9050600181600481111561035a57fe5b1415610369576002915061038b565b600381600481111561037757fe5b141561038657600d915061038b565b600080fd5b5090565b600581015460009081908190819060ff16151561041a576001546004860154600160a060020a039091169063a0712d689060405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156103f657600080fd5b6102c65a03f1151561040757600080fd5b50505060058501805460ff191660011790555b600154600160a060020a03166370a082318160006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561047357600080fd5b6102c65a03f1151561048457600080fd5b5050506040518051600154909550600160a060020a0316905063dd62ed3e813060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156104f257600080fd5b6102c65a03f1151561050357600080fd5b5050506040518051905092506105cd856101c0604051908101604090815282548252600183015460208301526002830154908201526003820154606082015260048201546080820152600582015460ff908116151560a0830152600683015460c0830152600783015460e08301526008830154610100808401919091526009840154610120840152600a909301548082166101408401529283048116610160830152620100008304811661018083015263010000009092049091166101a08201524234878761094b565b6001549193509150600160a060020a03166323b872dd81338560006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561063e57600080fd5b6102c65a03f1151561064f57600080fd5b50505060405180515050600081111561069357600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561069357600080fd5b5050505050565b600254600354600454600554600654600754600854600954600a54600b54600c5460ff9586169581811691610100810482169162010000820481169163010000009004168e565b60005433600160a060020a039081169116146106fc57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461074657600080fd5b6018805460ff1916911515919091179055565b60006107636102e8565b9050600481600481111561077357fe5b1461077d57600080fd5b600154600160a060020a03166326abfe096040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156107bc57600080fd5b6102c65a03f115156107cd57600080fd5b50505050565b600d54600e54600f5460105460115460125460135460145460155460165460175460ff9586169581811691610100810482169162010000820481169163010000009004168e565b60005433600160a060020a0390811691161461083557600080fd5b33600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561087257600080fd5b565b60185460ff1681565b600054600160a060020a031681565b60005433600160a060020a039081169116146108a757600080fd5b60006108b16102e8565b905060018160048111156108c157fe5b14806108d8575060038160048111156108d657fe5b145b15156108e357600080fd5b600154600160a060020a031663a0712d688360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561092b57600080fd5b6102c65a03f1151561069357600080fd5b600154600160a060020a031681565b60008060008060008060008061096c8d606001518c9063ffffffff610ad616565b95508c6040015186101561097f57600080fd5b888a111561098d578861098f565b895b9450600093508486106109cd576109ac868663ffffffff610aeb16565b92506109c38d60600151849063ffffffff610afd16565b9350849550610ac3565b6109df8d518d9063ffffffff610aeb16565b9150600090508c60c00151821015610a2257610a1b6064610a0f8f6101400151899060ff1663ffffffff610afd16565b9063ffffffff610ad616565b9050610aa5565b8c60e00151821015610a4c57610a1b6064610a0f8f6101600151899060ff1663ffffffff610afd16565b8c6101000151821015610a7757610a1b6064610a0f8f6101800151899060ff1663ffffffff610afd16565b8c6101200151821015610aa557610aa26064610a0f8f6101a00151899060ff1663ffffffff610afd16565b90505b610ab5868263ffffffff610b1a16565b955084861115610ac3578495505b50939b919a509098505050505050505050565b60008183811515610ae357fe5b049392505050565b600082821115610af757fe5b50900390565b818102818382811515610b0c57fe5b0414610b1457fe5b92915050565b81810182811015610b1457fe00a165627a7a7230582031bdd28d5e12d9771497936c6743ed760c0174b22ff984c75826feaa4862475c0029

Swarm Source

bzzr://651a97c64aa33644f03e2dae4e1e48b44316db559251feef2a22f3a78d1680d3

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.