ETH Price: $3,418.31 (-7.38%)

Contract

0x826f6D1242231B70832d009f7d2C99A0CA8b7A12
 

Overview

ETH Balance

0.000980602928298961 ETH

Eth Value

$3.35 (@ $3,418.31/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase92306772020-01-07 2:05:061808 days ago1578362706IN
0x826f6D12...0CA8b7A12
0.04 ETH0.000588115
Try Flush92306772020-01-07 2:05:061808 days ago1578362706IN
0x826f6D12...0CA8b7A12
0.002 ETH0.00017415
Try Flush92306772020-01-07 2:05:061808 days ago1578362706IN
0x826f6D12...0CA8b7A12
0.002 ETH0.00049945
Try Flush92306732020-01-07 2:04:111808 days ago1578362651IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000173285
Try Flush92306732020-01-07 2:04:111808 days ago1578362651IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000390210
Try Flush92306712020-01-07 2:03:431808 days ago1578362623IN
0x826f6D12...0CA8b7A12
0.002 ETH0.00398004102
Try Flush92306702020-01-07 2:03:351808 days ago1578362615IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000194285
Try Flush92306682020-01-07 2:03:121808 days ago1578362592IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000039021
Try Flush92306662020-01-07 2:03:071808 days ago1578362587IN
0x826f6D12...0CA8b7A12
0.002 ETH0.00351682101
Try Flush92306662020-01-07 2:03:071808 days ago1578362587IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000039021
Try Flush92306642020-01-07 2:03:001808 days ago1578362580IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000194285
Purchase92306612020-01-07 2:02:181808 days ago1578362538IN
0x826f6D12...0CA8b7A12
0.005 ETH0.000340315
Try Flush92306592020-01-07 2:01:591808 days ago1578362519IN
0x826f6D12...0CA8b7A12
0.002 ETH0.00017415
Try Flush92306592020-01-07 2:01:591808 days ago1578362519IN
0x826f6D12...0CA8b7A12
0.002 ETH0.0003885610
Try Flush92306552020-01-07 2:01:221808 days ago1578362482IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000229816.6
Try Flush92306552020-01-07 2:01:221808 days ago1578362482IN
0x826f6D12...0CA8b7A12
0.002 ETH0.0003885610
Purchase92306542020-01-07 2:00:581808 days ago1578362458IN
0x826f6D12...0CA8b7A12
0.02 ETH0.000358035
Try Flush92306542020-01-07 2:00:581808 days ago1578362458IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000257536.6
Try Flush92306512020-01-07 2:00:241808 days ago1578362424IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000229816.6
Try Flush92306512020-01-07 2:00:241808 days ago1578362424IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000229816.6
Try Flush92306512020-01-07 2:00:241808 days ago1578362424IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000229816.6
Try Flush92306512020-01-07 2:00:241808 days ago1578362424IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000263167.55776173
Try Flush92306512020-01-07 2:00:241808 days ago1578362424IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000390210
Try Flush92306482020-01-07 1:59:281808 days ago1578362368IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000229816.6
Try Flush92306482020-01-07 1:59:281808 days ago1578362368IN
0x826f6D12...0CA8b7A12
0.002 ETH0.000390210
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.01863145 ETH
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.0248 ETH
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.0032 ETH
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.0002 ETH
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.11042911 ETH
92306772020-01-07 2:05:061808 days ago1578362706
0x826f6D12...0CA8b7A12
0.0002 ETH
92306732020-01-07 2:04:111808 days ago1578362651
0x826f6D12...0CA8b7A12
0.0002 ETH
92306732020-01-07 2:04:111808 days ago1578362651
0x826f6D12...0CA8b7A12
0.0002 ETH
92306712020-01-07 2:03:431808 days ago1578362623
0x826f6D12...0CA8b7A12
0.0002 ETH
92306702020-01-07 2:03:351808 days ago1578362615
0x826f6D12...0CA8b7A12
0.0002 ETH
92306682020-01-07 2:03:121808 days ago1578362592
0x826f6D12...0CA8b7A12
0.0002 ETH
92306662020-01-07 2:03:071808 days ago1578362587
0x826f6D12...0CA8b7A12
0.0002 ETH
92306662020-01-07 2:03:071808 days ago1578362587
0x826f6D12...0CA8b7A12
0.0002 ETH
92306642020-01-07 2:03:001808 days ago1578362580
0x826f6D12...0CA8b7A12
0.0002 ETH
92306612020-01-07 2:02:181808 days ago1578362538
0x826f6D12...0CA8b7A12
0.0004 ETH
92306592020-01-07 2:01:591808 days ago1578362519
0x826f6D12...0CA8b7A12
0.0002 ETH
92306592020-01-07 2:01:591808 days ago1578362519
0x826f6D12...0CA8b7A12
0.0002 ETH
92306552020-01-07 2:01:221808 days ago1578362482
0x826f6D12...0CA8b7A12
0.0002 ETH
92306552020-01-07 2:01:221808 days ago1578362482
0x826f6D12...0CA8b7A12
0.0002 ETH
92306542020-01-07 2:00:581808 days ago1578362458
0x826f6D12...0CA8b7A12
0.0124 ETH
92306542020-01-07 2:00:581808 days ago1578362458
0x826f6D12...0CA8b7A12
0.0016 ETH
92306542020-01-07 2:00:581808 days ago1578362458
0x826f6D12...0CA8b7A12
0.0002 ETH
92306512020-01-07 2:00:241808 days ago1578362424
0x826f6D12...0CA8b7A12
0.0002 ETH
92306512020-01-07 2:00:241808 days ago1578362424
0x826f6D12...0CA8b7A12
0.0002 ETH
92306512020-01-07 2:00:241808 days ago1578362424
0x826f6D12...0CA8b7A12
0.0002 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoPoosToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-11
*/

pragma solidity ^0.4.18; 



/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
contract ERC721 {
  // Required methods
  function approve(address _to, uint256 _tokenId) public;
  function balanceOf(address _owner) public view returns (uint256 balance);
  function implementsERC721() public pure returns (bool);
  function ownerOf(uint256 _tokenId) public view returns (address addr);
  function takeOwnership(uint256 _tokenId) public;
  function totalSupply() public view returns (uint256 total);
  function transferFrom(address _from, address _to, uint256 _tokenId) public;
  function transfer(address _to, uint256 _tokenId) public;

  event Transfer(address indexed from, address indexed to, uint256 tokenId);
  event Approval(address indexed owner, address indexed approved, uint256 tokenId);

  // Optional
  // function name() public view returns (string name);
  // function symbol() public view returns (string symbol);
  // function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 tokenId);
  // function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);
}


contract CryptoPoosToken is ERC721 {

  // Modified CryptoCelebs contract
  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new poo comes into existence.
  event Birth(uint256 tokenId, string name, address owner);

  /// @dev The TokenSold event is fired whenever a token is sold.
  event TokenSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, string name);

  /// @dev Transfer event as defined in current draft of ERC721. 
  ///  ownership is assigned, including births.
  event Transfer(address from, address to, uint256 tokenId);

  // Triggered on toilet flush
  event ToiletPotChange();

  /*** CONSTANTS ***/

  /// @notice Name and symbol of the non fungible token, as defined in ERC721.
  string public constant NAME = "CryptoPoos"; // solhint-disable-line
  string public constant SYMBOL = "CryptoPoosToken"; // solhint-disable-line

  uint256 private startingPrice = 0.005 ether;
  uint256 private constant PROMO_CREATION_LIMIT = 5000;
  
  // Min price to flush the toilet
  uint256 private minFlushPrice = 0.002 ether;


  /*** STORAGE ***/

  /// @dev A mapping from poo IDs to the address that owns them. All poos have
  ///  some valid owner address.
  mapping (uint256 => address) public pooIndexToOwner;

  // @dev A mapping from owner address to count of tokens that address owns.
  //  Used internally inside balanceOf() to resolve ownership count.
  mapping (address => uint256) private ownershipTokenCount;

  /// @dev A mapping from PooIDs to an address that has been approved to call
  ///  transferFrom(). Each poo can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public pooIndexToApproved;

  // @dev A mapping from PooIDs to the price of the token.
  mapping (uint256 => uint256) private pooIndexToPrice;
  
  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;
  
  uint256 roundCounter;
  address lastFlusher;   // Person that flushed
  uint256 flushedTokenId;   // Poo that got flushed
  uint256 lastPotSize; //Stores last pot size obviously
  uint256 goldenPooId; // Current golden poo id
  uint public lastPurchaseTime; // Tracks time since last purchase

  /*** DATATYPES ***/
  struct Poo {
    string name;
  }

  Poo[] private poos;

  /*** ACCESS MODIFIERS ***/
  /// @dev Access modifier for CEO-only functionality
  modifier onlyCEO() {
    require(msg.sender == ceoAddress);
    _;
  }

  /// @dev Access modifier for COO-only functionality
  modifier onlyCOO() {
    require(msg.sender == cooAddress);
    _;
  }

  /// Access modifier for contract owner only functionality
  modifier onlyCLevel() {
    require(
      msg.sender == ceoAddress ||
      msg.sender == cooAddress
    );
    _;
  }

  /*** CONSTRUCTOR ***/
  function CryptoPoosToken() public {
    ceoAddress = msg.sender;
    cooAddress = msg.sender;
	
	createContractPoo("1");
	createContractPoo("2");
	createContractPoo("3");
	createContractPoo("4");
	createContractPoo("5");
	createContractPoo("6");
	roundCounter = 1;
  }

  /*** PUBLIC FUNCTIONS ***/
  /// @notice Grant another address the right to transfer token via takeOwnership() and transferFrom().
  /// @param _to The address to be granted transfer approval. Pass address(0) to
  ///  clear all approvals.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function approve(
    address _to,
    uint256 _tokenId
  ) public {
    // Caller must own token.
    require(_owns(msg.sender, _tokenId));

    pooIndexToApproved[_tokenId] = _to;

    Approval(msg.sender, _to, _tokenId);
  }

  /// For querying balance of a particular account
  /// @param _owner The address for balance query
  /// @dev Required for ERC-721 compliance.
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return ownershipTokenCount[_owner];
  }

  /// @dev Creates a new poo with the given name.
  function createContractPoo(string _name) public onlyCOO {
    _createPoo(_name, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific poo.
  /// @param _tokenId The tokenId of the poo of interest.
  function getPoo(uint256 _tokenId) public view returns (
    string pooName,
    uint256 sellingPrice,
    address owner
  ) {
    Poo storage poo = poos[_tokenId];
    pooName = poo.name;
    sellingPrice = pooIndexToPrice[_tokenId];
    owner = pooIndexToOwner[_tokenId];
  }

  function getRoundDetails() public view returns (
    uint256 currentRound,
	uint256 currentBalance,
	uint256 currentGoldenPoo,
	uint256 lastRoundReward,
    uint256 lastFlushedTokenId,
    address lastRoundFlusher,
	bool bonusWinChance,
	uint256 lowestFlushPrice
  ) {
	currentRound = roundCounter;
	currentBalance = this.balance;
	currentGoldenPoo = goldenPooId;
	lastRoundReward = lastPotSize;
	lastFlushedTokenId = flushedTokenId;
	lastRoundFlusher = lastFlusher;
	bonusWinChance = _increaseWinPotChance();
	lowestFlushPrice = minFlushPrice;
  }

  function implementsERC721() public pure returns (bool) {
    return true;
  }

  /// @dev Required for ERC-721 compliance.
  function name() public pure returns (string) {
    return NAME;
  }

  /// For querying owner of token
  /// @param _tokenId The tokenID for owner inquiry
  /// @dev Required for ERC-721 compliance.
  function ownerOf(uint256 _tokenId)
    public
    view
    returns (address owner)
  {
    owner = pooIndexToOwner[_tokenId];
    require(owner != address(0));
  }

   function donate() public payable {
	require(msg.value >= 0.001 ether);
   }


  // Allows someone to send ether and obtain the token
  function purchase(uint256 _tokenId) public payable {
    address oldOwner = pooIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = pooIndexToPrice[_tokenId];

    // Making sure token owner is not sending to self
    require(oldOwner != newOwner);

    // Safety check to prevent against an unexpected 0x0 default.
    require(_addressNotNull(newOwner));

    // Making sure sent amount is greater than or equal to the sellingPrice
    require(msg.value >= sellingPrice);

    // 62% to previous owner
    uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 62), 100));
  
    // 8% to the jew
    ceoAddress.transfer(uint256(SafeMath.div(SafeMath.mul(sellingPrice, 8), 100)));

	// 30% goes to the pot

    // Next token price is double
     pooIndexToPrice[_tokenId] = uint256(SafeMath.mul(sellingPrice, 2));

    _transfer(oldOwner, newOwner, _tokenId);
	
    // Pay previous tokenOwner if owner is not contract
    if (oldOwner != address(this)) {
      oldOwner.transfer(payment); 
    }

    _checkToiletFlush(false, _tokenId); 
	lastPurchaseTime = now;
	ToiletPotChange();
  }
  
  // User is trying to flush the toilet. See if they succeed
  function tryFlush() public payable {

        // Make sure they are sending min flush price
        require(msg.value >= minFlushPrice);

		// Jew takes 10% of manual flush attempt. Stops dat spam....
		ceoAddress.transfer(uint256(SafeMath.div(SafeMath.mul(msg.value, 10), 100)));

        _checkToiletFlush(true, 0);
		lastPurchaseTime = now;
		ToiletPotChange();
  }
  
  // If manual flush attempt, the user has a chance to flush their own poo
 function _checkToiletFlush(bool _manualFlush, uint256 _purchasedTokenId) private {
     
    uint256 winningChance = 25;

	// We are calling manual flush option, so the chance of winning is less
	if(_manualFlush){
		winningChance = 50;
	}else if(_purchasedTokenId == goldenPooId){
		// If buying golden poo, and is not a manual flush, increase chance of winning!
		winningChance = uint256(SafeMath.div(SafeMath.mul(winningChance, 90), 100));
	}

	// Check if we are trippling chance to win on next flush attempt/poop purchase
	if(_increaseWinPotChance()){
		winningChance = uint256(SafeMath.div(winningChance,3));
	}
     
    // Check if owner owns a poo. If not, their chance of winning is lower
    if(ownershipTokenCount[msg.sender] == 0){
        winningChance = uint256(SafeMath.mul(winningChance,2));
    }
     
    uint256 flushPooIndex = rand(winningChance);
    
    if( (flushPooIndex < 6) && (flushPooIndex != goldenPooId) &&  (msg.sender != pooIndexToOwner[flushPooIndex])  ){
      lastFlusher = msg.sender;
	  flushedTokenId = flushPooIndex;
      
      _transfer(pooIndexToOwner[flushPooIndex],address(this),flushPooIndex);
      pooIndexToPrice[flushPooIndex] = startingPrice;
      
      // Leave 5% behind for next pot
	  uint256 reward = uint256(SafeMath.div(SafeMath.mul(this.balance, 95), 100));
	  lastPotSize = reward;

      msg.sender.transfer(reward); // Send reward to purchaser
	  goldenPooId = rand(6);// There is a new golden poo in town.

	  roundCounter += 1; // Keeps track of how many flushes
    }
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return pooIndexToPrice[_tokenId];
  }

  /// @dev Assigns a new address to act as the CEO. Only available to the current CEO.
  /// @param _newCEO The address of the new CEO
  function setCEO(address _newCEO) public onlyCEO {
    require(_newCEO != address(0));

    ceoAddress = _newCEO;
  }

  /// @dev Assigns a new address to act as the COO. Only available to the current COO.
  /// @param _newCOO The address of the new COO
  function setCOO(address _newCOO) public onlyCEO {
    require(_newCOO != address(0));

    cooAddress = _newCOO;
  }

  // If 2 hours elapsed since last purchase, increase chance of winning pot.
  function _increaseWinPotChance() constant private returns (bool) {
    if (now >= lastPurchaseTime + 120 minutes) {
        // 120 minutes has elapsed from last purchased time
        return true;
    }
    return false;
}

  /// @dev Required for ERC-721 compliance.
  function symbol() public pure returns (string) {
    return SYMBOL;
  }

  /// @notice Allow pre-approved user to take ownership of a token
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function takeOwnership(uint256 _tokenId) public {
    address newOwner = msg.sender;
    address oldOwner = pooIndexToOwner[_tokenId];

    // Safety check to prevent against an unexpected 0x0 default.
    require(_addressNotNull(newOwner));

    // Making sure transfer is approved
    require(_approved(newOwner, _tokenId));

    _transfer(oldOwner, newOwner, _tokenId);
  }

  /// @param _owner The owner whose social media tokens we are interested in.
  /// @dev This method MUST NEVER be called by smart contract code. First, it's fairly
  ///  expensive (it walks the entire poos array looking for poos belonging to owner),
  ///  but it also returns a dynamic array, which is only supported for web3 calls, and
  ///  not contract-to-contract calls.
  function tokensOfOwner(address _owner) public view returns(uint256[] ownerTokens) {
    uint256 tokenCount = balanceOf(_owner);
    if (tokenCount == 0) {
        // Return an empty array
      return new uint256[](0);
    } else {
      uint256[] memory result = new uint256[](tokenCount);
      uint256 totalPoos = totalSupply();
      uint256 resultIndex = 0;

      uint256 pooId;
      for (pooId = 0; pooId <= totalPoos; pooId++) {
        if (pooIndexToOwner[pooId] == _owner) {
          result[resultIndex] = pooId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return poos.length;
  }

  /// Owner initates the transfer of the token to another account
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transfer(
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(msg.sender, _tokenId));
    require(_addressNotNull(_to));

    _transfer(msg.sender, _to, _tokenId);
  }

  /// Third-party initiates transfer of token from address _from to address _to
  /// @param _from The address for the token to be transferred from.
  /// @param _to The address for the token to be transferred to.
  /// @param _tokenId The ID of the Token that can be transferred if this call succeeds.
  /// @dev Required for ERC-721 compliance.
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  ) public {
    require(_owns(_from, _tokenId));
    require(_approved(_to, _tokenId));
    require(_addressNotNull(_to));

    _transfer(_from, _to, _tokenId);
  }

  /*** PRIVATE FUNCTIONS ***/
  /// Safety check on _to address to prevent against an unexpected 0x0 default.
  function _addressNotNull(address _to) private pure returns (bool) {
    return _to != address(0);
  }

  /// For checking approval of transfer for address _to
  function _approved(address _to, uint256 _tokenId) private view returns (bool) {
    return pooIndexToApproved[_tokenId] == _to;
  }

  /// For creating Poo
  function _createPoo(string _name, address _owner, uint256 _price) private {
    Poo memory _poo = Poo({
      name: _name
    });
    uint256 newPooId = poos.push(_poo) - 1;

    // It's probably never going to happen, 4 billion tokens are A LOT, but
    // let's just be 100% sure we never let this happen.
    require(newPooId == uint256(uint32(newPooId)));

    Birth(newPooId, _name, _owner);

    pooIndexToPrice[newPooId] = _price;

    // This will assign ownership, and also emit the Transfer event as
    // per ERC721 draft
    _transfer(address(0), _owner, newPooId);
  }

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == pooIndexToOwner[_tokenId];
  }

  /// @dev Assigns ownership of a specific Poo to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of poos is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    pooIndexToOwner[_tokenId] = _to;

    // When creating new poos _from is 0x0, but we can't account that address.
    if (_from != address(0)) {
      ownershipTokenCount[_from]--;
      // clear any previously approved ownership exchange
      delete pooIndexToApproved[_tokenId];
    }

    // Emit the transfer event.
    Transfer(_from, _to, _tokenId);
  }
  
    //Generate random number between 0 & max
    uint256 constant private FACTOR =  1157920892373161954235709850086879078532699846656405640394575840079131296399;
    function rand(uint max) constant private returns (uint256 result){
        uint256 factor = FACTOR * 100 / max;
        uint256 lastBlockNumber = block.number - 1;
        uint256 hashVal = uint256(block.blockhash(lastBlockNumber));
    
        return uint256((uint256(hashVal) / factor)) % max;
    }
  
}
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 Substracts 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;
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pooIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"createContractPoo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"tryFlush","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getRoundDetails","outputs":[{"name":"currentRound","type":"uint256"},{"name":"currentBalance","type":"uint256"},{"name":"currentGoldenPoo","type":"uint256"},{"name":"lastRoundReward","type":"uint256"},{"name":"lastFlushedTokenId","type":"uint256"},{"name":"lastRoundFlusher","type":"address"},{"name":"bonusWinChance","type":"bool"},{"name":"lowestFlushPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastPurchaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pooIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPoo","outputs":[{"name":"pooName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"owner","type":"address"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"ToiletPotChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526611c37937e0800060005566071afd498d000060015534156200002657600080fd5b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000fc6040805190810160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b620001506040805190810160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b620001a46040805190810160405280600181526020017f3300000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b620001f86040805190810160405280600181526020017f3400000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b6200024c6040805190810160405280600181526020017f3500000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b620002a06040805190810160405280600181526020017f3600000000000000000000000000000000000000000000000000000000000000815250620002ae6401000000000262000be5176401000000009004565b600160088190555062000860565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200030b57600080fd5b6200032e8130600054620003316401000000000262001736176401000000009004565b50565b6200033b620006d2565b60006020604051908101604052808681525091506001600e8054806001018281620003679190620006ee565b916000526020600020900160008590919091506000820151816000019080519060200190620003989291906200071d565b5050500390508063ffffffff1681141515620003b357600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156200045157808201518184015260208101905062000434565b50505050905090810190601f1680156200047f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1826005600083815260200190815260200160002081905550620004c860008583620004cf6401000000000262001959176401000000009004565b5050505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156200062e57600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b602060405190810160405280620006e8620007a4565b81525090565b8154818355818115116200071857818360005260206000209182019101620007179190620007b8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200076057805160ff191683800117855562000791565b8280016001018555821562000791579182015b828111156200079057825182559160200191906001019062000773565b5b509050620007a09190620007ec565b5090565b602060405190810160405280600081525090565b620007e991905b80821115620007e55760008082016000620007db919062000814565b50600101620007bf565b5090565b90565b6200081191905b808211156200080d576000816000905550600101620007f3565b5090565b90565b50805460018160011615610100020316600290046000825580601f106200083c57506200085d565b601f0160209004906000526020600020908101906200085c9190620007ec565b5b50565b61207a80620008706000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f25780630a0f8168146102345780631051db341461028957806318160ddd146102b65780631cbb04b3146102df57806322c61e731461034257806323b872dd1461039f57806327d7874c146104005780632ba73c15146104395780636352211e1461047257806370a08231146104d55780638462151c14610522578063957f9a0b146105b057806395d89b41146105ba5780639a68323c14610648578063a3f4df7e146106d2578063a9059cbb14610760578063b047fb50146107a2578063b2e6ceeb146107f7578063b9186d7d1461081a578063c14bafb114610851578063c8a0d5461461087a578063c8f288ad146108dd578063ed88c68e146109b3578063efef39a1146109bd578063f76f8d78146109d5575b600080fd5b341561016f57600080fd5b610177610a63565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b757808201518184015260208101905061019c565b50505050905090810190601f1680156101e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fd57600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610aa6565b005b341561023f57600080fd5b610247610b76565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029457600080fd5b61029c610b9c565b604051808215151515815260200191505060405180910390f35b34156102c157600080fd5b6102c9610ba5565b6040518082815260200191505060405180910390f35b34156102ea57600080fd5b6103006004808035906020019091905050610bb2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034d57600080fd5b61039d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610be5565b005b34156103aa57600080fd5b6103fe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c51565b005b341561040b57600080fd5b610437600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c9f565b005b341561044457600080fd5b610470600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d7b565b005b341561047d57600080fd5b6104936004808035906020019091905050610e57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104e057600080fd5b61050c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ed0565b6040518082815260200191505060405180910390f35b341561052d57600080fd5b610559600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f19565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059c578082015181840152602081019050610581565b505050509050019250505060405180910390f35b6105b8611050565b005b34156105c557600080fd5b6105cd611118565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561060d5780820151818401526020810190506105f2565b50505050905090810190601f16801561063a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561065357600080fd5b61065b61115b565b604051808981526020018881526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019850505050505050505060405180910390f35b34156106dd57600080fd5b6106e56111d3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072557808201518184015260208101905061070a565b50505050905090810190601f1680156107525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076b57600080fd5b6107a0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061120c565b005b34156107ad57600080fd5b6107b5611244565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561080257600080fd5b610818600480803590602001909190505061126a565b005b341561082557600080fd5b61083b60048080359060200190919050506112df565b6040518082815260200191505060405180910390f35b341561085c57600080fd5b6108646112fc565b6040518082815260200191505060405180910390f35b341561088557600080fd5b61089b6004808035906020019091905050611302565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108e857600080fd5b6108fe6004808035906020019091905050611335565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b8381101561097657808201518184015260208101905061095b565b50505050905090810190601f1680156109a35780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6109bb611451565b005b6109d36004808035906020019091905050611469565b005b34156109e057600080fd5b6109e8611691565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a28578082015181840152602081019050610a0d565b50505050905090810190601f168015610a555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6b611eb0565b6040805190810160405280600a81526020017f43727970746f506f6f7300000000000000000000000000000000000000000000815250905090565b610ab033826116ca565b1515610abb57600080fd5b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b6000600e80549050905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c4157600080fd5b610c4e8130600054611736565b50565b610c5b83826116ca565b1515610c6657600080fd5b610c7082826118b4565b1515610c7b57600080fd5b610c8482611920565b1515610c8f57600080fd5b610c9a838383611959565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cfb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d3757600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e1357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ecb57600080fd5b919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f21611ec4565b6000610f2b611ec4565b6000806000610f3987610ed0565b94506000851415610f6b576000604051805910610f535750595b90808252806020026020018201604052509550611046565b84604051805910610f795750595b90808252806020026020018201604052509350610f94610ba5565b925060009150600090505b8281111515611042578673ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110355780848381518110151561101e57fe5b906020019060200201818152505081806001019250505b8080600101915050610f9f565b8395505b5050505050919050565b600154341015151561106157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6110b26110ab34600a611b5b565b6064611b96565b9081150290604051600060405180830381858888f1935050505015156110d757600080fd5b6110e360016000611bb1565b42600d819055507fc4e72dc9988ec1ed3d1b1d23b63b088328343b079d6eaab7d314b511bbeb3bed60405160405180910390a1565b611120611eb0565b6040805190810160405280600f81526020017f43727970746f506f6f73546f6b656e0000000000000000000000000000000000815250905090565b60008060008060008060008060085497503073ffffffffffffffffffffffffffffffffffffffff16319650600c549550600b549450600a549350600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506111c2611e28565b915060015490509091929394959697565b6040805190810160405280600a81526020017f43727970746f506f6f730000000000000000000000000000000000000000000081525081565b61121633826116ca565b151561122157600080fd5b61122a82611920565b151561123557600080fd5b611240338383611959565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112af82611920565b15156112ba57600080fd5b6112c482846118b4565b15156112cf57600080fd5b6112da818385611959565b505050565b600060056000838152602001908152602001600020549050919050565b600d5481565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61133d611eb0565b6000806000600e8581548110151561135157fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113f65780601f106113cb576101008083540402835291602001916113f6565b820191906000526020600020905b8154815290600101906020018083116113d957829003601f168201915b50505050509350600560008681526020019081526020016000205492506002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193909250565b66038d7ea4c68000341015151561146757600080fd5b565b6000806000806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350339250600560008681526020019081526020016000205491508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156114f957600080fd5b61150283611920565b151561150d57600080fd5b81341015151561151c57600080fd5b61153161152a83603e611b5b565b6064611b96565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61158461157d856008611b5b565b6064611b96565b9081150290604051600060405180830381858888f1935050505015156115a957600080fd5b6115b4826002611b5b565b60056000878152602001908152602001600020819055506115d6848487611959565b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561164c578373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561164b57600080fd5b5b611657600086611bb1565b42600d819055507fc4e72dc9988ec1ed3d1b1d23b63b088328343b079d6eaab7d314b511bbeb3bed60405160405180910390a15050505050565b6040805190810160405280600f81526020017f43727970746f506f6f73546f6b656e000000000000000000000000000000000081525081565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b61173e611ed8565b60006020604051908101604052808681525091506001600e80548060010182816117689190611ef2565b916000526020600020900160008590919091506000820151816000019080519060200190611797929190611f1e565b5050500390508063ffffffff16811415156117b157600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561184d578082015181840152602081019050611832565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a18260056000838152602001908152602001600020819055506118ad60008583611959565b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515611ab757600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415611b705760009150611b8f565b8284029050828482811515611b8157fe5b04141515611b8b57fe5b8091505b5092915050565b6000808284811515611ba457fe5b0490508091505092915050565b6000806000601992508415611bc95760329250611bec565b600c54841415611beb57611be8611be184605a611b5b565b6064611b96565b92505b5b611bf4611e28565b15611c0757611c04836003611b96565b92505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611c5d57611c5a836002611b5b565b92505b611c6683611e4a565b9150600682108015611c7a5750600c548214155b8015611ce557506002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611e215733600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a81905550611d706002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163084611959565b6000546005600084815260200190815260200160002081905550611db6611daf3073ffffffffffffffffffffffffffffffffffffffff1631605f611b5b565b6064611b96565b905080600b819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611dff57600080fd5b611e096006611e4a565b600c8190555060016008600082825401925050819055505b5050505050565b6000611c20600d540142101515611e425760019050611e47565b600090505b90565b6000806000808460647f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f02811515611e7e57fe5b0492506001430391508140600190049050848382811515611e9b57fe5b04811515611ea557fe5b069350505050919050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280611eec611f9e565b81525090565b815481835581811511611f1957818360005260206000209182019101611f189190611fb2565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f5f57805160ff1916838001178555611f8d565b82800160010185558215611f8d579182015b82811115611f8c578251825591602001919060010190611f71565b5b509050611f9a9190611fe1565b5090565b602060405190810160405280600081525090565b611fde91905b80821115611fda5760008082016000611fd19190612006565b50600101611fb8565b5090565b90565b61200391905b80821115611fff576000816000905550600101611fe7565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061202c575061204b565b601f01602090049060005260206000209081019061204a9190611fe1565b5b505600a165627a7a7230582051272718ded635a701355d5440446dbd94db63479bb7ba75f50a0b87ee3ba02d0029

Deployed Bytecode

0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610164578063095ea7b3146101f25780630a0f8168146102345780631051db341461028957806318160ddd146102b65780631cbb04b3146102df57806322c61e731461034257806323b872dd1461039f57806327d7874c146104005780632ba73c15146104395780636352211e1461047257806370a08231146104d55780638462151c14610522578063957f9a0b146105b057806395d89b41146105ba5780639a68323c14610648578063a3f4df7e146106d2578063a9059cbb14610760578063b047fb50146107a2578063b2e6ceeb146107f7578063b9186d7d1461081a578063c14bafb114610851578063c8a0d5461461087a578063c8f288ad146108dd578063ed88c68e146109b3578063efef39a1146109bd578063f76f8d78146109d5575b600080fd5b341561016f57600080fd5b610177610a63565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b757808201518184015260208101905061019c565b50505050905090810190601f1680156101e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fd57600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610aa6565b005b341561023f57600080fd5b610247610b76565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029457600080fd5b61029c610b9c565b604051808215151515815260200191505060405180910390f35b34156102c157600080fd5b6102c9610ba5565b6040518082815260200191505060405180910390f35b34156102ea57600080fd5b6103006004808035906020019091905050610bb2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034d57600080fd5b61039d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610be5565b005b34156103aa57600080fd5b6103fe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c51565b005b341561040b57600080fd5b610437600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c9f565b005b341561044457600080fd5b610470600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d7b565b005b341561047d57600080fd5b6104936004808035906020019091905050610e57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104e057600080fd5b61050c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ed0565b6040518082815260200191505060405180910390f35b341561052d57600080fd5b610559600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f19565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059c578082015181840152602081019050610581565b505050509050019250505060405180910390f35b6105b8611050565b005b34156105c557600080fd5b6105cd611118565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561060d5780820151818401526020810190506105f2565b50505050905090810190601f16801561063a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561065357600080fd5b61065b61115b565b604051808981526020018881526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019850505050505050505060405180910390f35b34156106dd57600080fd5b6106e56111d3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072557808201518184015260208101905061070a565b50505050905090810190601f1680156107525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076b57600080fd5b6107a0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061120c565b005b34156107ad57600080fd5b6107b5611244565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561080257600080fd5b610818600480803590602001909190505061126a565b005b341561082557600080fd5b61083b60048080359060200190919050506112df565b6040518082815260200191505060405180910390f35b341561085c57600080fd5b6108646112fc565b6040518082815260200191505060405180910390f35b341561088557600080fd5b61089b6004808035906020019091905050611302565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108e857600080fd5b6108fe6004808035906020019091905050611335565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b8381101561097657808201518184015260208101905061095b565b50505050905090810190601f1680156109a35780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6109bb611451565b005b6109d36004808035906020019091905050611469565b005b34156109e057600080fd5b6109e8611691565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a28578082015181840152602081019050610a0d565b50505050905090810190601f168015610a555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6b611eb0565b6040805190810160405280600a81526020017f43727970746f506f6f7300000000000000000000000000000000000000000000815250905090565b610ab033826116ca565b1515610abb57600080fd5b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b6000600e80549050905090565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c4157600080fd5b610c4e8130600054611736565b50565b610c5b83826116ca565b1515610c6657600080fd5b610c7082826118b4565b1515610c7b57600080fd5b610c8482611920565b1515610c8f57600080fd5b610c9a838383611959565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cfb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d3757600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e1357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ecb57600080fd5b919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f21611ec4565b6000610f2b611ec4565b6000806000610f3987610ed0565b94506000851415610f6b576000604051805910610f535750595b90808252806020026020018201604052509550611046565b84604051805910610f795750595b90808252806020026020018201604052509350610f94610ba5565b925060009150600090505b8281111515611042578673ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110355780848381518110151561101e57fe5b906020019060200201818152505081806001019250505b8080600101915050610f9f565b8395505b5050505050919050565b600154341015151561106157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6110b26110ab34600a611b5b565b6064611b96565b9081150290604051600060405180830381858888f1935050505015156110d757600080fd5b6110e360016000611bb1565b42600d819055507fc4e72dc9988ec1ed3d1b1d23b63b088328343b079d6eaab7d314b511bbeb3bed60405160405180910390a1565b611120611eb0565b6040805190810160405280600f81526020017f43727970746f506f6f73546f6b656e0000000000000000000000000000000000815250905090565b60008060008060008060008060085497503073ffffffffffffffffffffffffffffffffffffffff16319650600c549550600b549450600a549350600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506111c2611e28565b915060015490509091929394959697565b6040805190810160405280600a81526020017f43727970746f506f6f730000000000000000000000000000000000000000000081525081565b61121633826116ca565b151561122157600080fd5b61122a82611920565b151561123557600080fd5b611240338383611959565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112af82611920565b15156112ba57600080fd5b6112c482846118b4565b15156112cf57600080fd5b6112da818385611959565b505050565b600060056000838152602001908152602001600020549050919050565b600d5481565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61133d611eb0565b6000806000600e8581548110151561135157fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113f65780601f106113cb576101008083540402835291602001916113f6565b820191906000526020600020905b8154815290600101906020018083116113d957829003601f168201915b50505050509350600560008681526020019081526020016000205492506002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193909250565b66038d7ea4c68000341015151561146757600080fd5b565b6000806000806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350339250600560008681526020019081526020016000205491508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156114f957600080fd5b61150283611920565b151561150d57600080fd5b81341015151561151c57600080fd5b61153161152a83603e611b5b565b6064611b96565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61158461157d856008611b5b565b6064611b96565b9081150290604051600060405180830381858888f1935050505015156115a957600080fd5b6115b4826002611b5b565b60056000878152602001908152602001600020819055506115d6848487611959565b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151561164c578373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561164b57600080fd5b5b611657600086611bb1565b42600d819055507fc4e72dc9988ec1ed3d1b1d23b63b088328343b079d6eaab7d314b511bbeb3bed60405160405180910390a15050505050565b6040805190810160405280600f81526020017f43727970746f506f6f73546f6b656e000000000000000000000000000000000081525081565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b61173e611ed8565b60006020604051908101604052808681525091506001600e80548060010182816117689190611ef2565b916000526020600020900160008590919091506000820151816000019080519060200190611797929190611f1e565b5050500390508063ffffffff16811415156117b157600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101561184d578082015181840152602081019050611832565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a18260056000838152602001908152602001600020819055506118ad60008583611959565b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515611ab757600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415611b705760009150611b8f565b8284029050828482811515611b8157fe5b04141515611b8b57fe5b8091505b5092915050565b6000808284811515611ba457fe5b0490508091505092915050565b6000806000601992508415611bc95760329250611bec565b600c54841415611beb57611be8611be184605a611b5b565b6064611b96565b92505b5b611bf4611e28565b15611c0757611c04836003611b96565b92505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611c5d57611c5a836002611b5b565b92505b611c6683611e4a565b9150600682108015611c7a5750600c548214155b8015611ce557506002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611e215733600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a81905550611d706002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163084611959565b6000546005600084815260200190815260200160002081905550611db6611daf3073ffffffffffffffffffffffffffffffffffffffff1631605f611b5b565b6064611b96565b905080600b819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611dff57600080fd5b611e096006611e4a565b600c8190555060016008600082825401925050819055505b5050505050565b6000611c20600d540142101515611e425760019050611e47565b600090505b90565b6000806000808460647f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f02811515611e7e57fe5b0492506001430391508140600190049050848382811515611e9b57fe5b04811515611ea557fe5b069350505050919050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280611eec611f9e565b81525090565b815481835581811511611f1957818360005260206000209182019101611f189190611fb2565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f5f57805160ff1916838001178555611f8d565b82800160010185558215611f8d579182015b82811115611f8c578251825591602001919060010190611f71565b5b509050611f9a9190611fe1565b5090565b602060405190810160405280600081525090565b611fde91905b80821115611fda5760008082016000611fd19190612006565b50600101611fb8565b5090565b90565b61200391905b80821115611fff576000816000905550600101611fe7565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061202c575061204b565b601f01602090049060005260206000209081019061204a9190611fe1565b5b505600a165627a7a7230582051272718ded635a701355d5440446dbd94db63479bb7ba75f50a0b87ee3ba02d0029

Swarm Source

bzzr://51272718ded635a701355d5440446dbd94db63479bb7ba75f50a0b87ee3ba02d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.