ETH Price: $3,575.50 (-1.01%)

Contract

0x3A630495C7611B4dA41BF133554374Caa3963b75
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Payout52847292018-03-19 18:28:342451 days ago1521484114IN
0x3A630495...aa3963b75
0 ETH0.000217977
Purchase52686702018-03-17 1:18:252453 days ago1521249505IN
0x3A630495...aa3963b75
0.2 ETH0.0010803310
Purchase52686702018-03-17 1:18:252453 days ago1521249505IN
0x3A630495...aa3963b75
0.1 ETH0.0006989730
Purchase52686672018-03-17 1:17:452453 days ago1521249465IN
0x3A630495...aa3963b75
0.05 ETH0.0008678310
Create Promo Sce...52686642018-03-17 1:16:102453 days ago1521249370IN
0x3A630495...aa3963b75
0 ETH0.001169655
Purchase52686642018-03-17 1:16:102453 days ago1521249370IN
0x3A630495...aa3963b75
0.05 ETH0.0005125722
Purchase52686642018-03-17 1:16:102453 days ago1521249370IN
0x3A630495...aa3963b75
0.05 ETH0.000046592
Purchase52686642018-03-17 1:16:102453 days ago1521249370IN
0x3A630495...aa3963b75
0.05 ETH0.000209699
Purchase52686642018-03-17 1:16:102453 days ago1521249370IN
0x3A630495...aa3963b75
0.05 ETH0.0013979460
Purchase52686632018-03-17 1:15:472453 days ago1521249347IN
0x3A630495...aa3963b75
0.05 ETH0.0004193818
Purchase52686632018-03-17 1:15:472453 days ago1521249347IN
0x3A630495...aa3963b75
0.1 ETH0.0004659820
Purchase52686632018-03-17 1:15:472453 days ago1521249347IN
0x3A630495...aa3963b75
0.1 ETH0.0005125722
Purchase52686632018-03-17 1:15:472453 days ago1521249347IN
0x3A630495...aa3963b75
0.05 ETH0.0032353932
Create Promo Sce...52686612018-03-17 1:15:212453 days ago1521249321IN
0x3A630495...aa3963b75
0 ETH0.000962615
Purchase52686452018-03-17 1:11:222453 days ago1521249082IN
0x3A630495...aa3963b75
0.1 ETH0.0006989730
Purchase52686432018-03-17 1:10:562453 days ago1521249056IN
0x3A630495...aa3963b75
0.1 ETH0.0003494815
Purchase52686422018-03-17 1:10:432453 days ago1521249043IN
0x3A630495...aa3963b75
0.06 ETH0.000069893
Purchase52686422018-03-17 1:10:432453 days ago1521249043IN
0x3A630495...aa3963b75
0.06 ETH0.000431224
Create Promo Sce...52686402018-03-17 1:10:342453 days ago1521249034IN
0x3A630495...aa3963b75
0 ETH0.000960375
Purchase52569102018-03-15 1:20:042455 days ago1521076804IN
0x3A630495...aa3963b75
0.1 ETH0.0002329910
Purchase52569102018-03-15 1:20:042455 days ago1521076804IN
0x3A630495...aa3963b75
0.1 ETH0.002306699
Purchase52569092018-03-15 1:19:512455 days ago1521076791IN
0x3A630495...aa3963b75
0.05 ETH0.0002329910
Purchase52569082018-03-15 1:19:482455 days ago1521076788IN
0x3A630495...aa3963b75
0.12 ETH0.0005824725
Purchase52569062018-03-15 1:19:332455 days ago1521076773IN
0x3A630495...aa3963b75
0.11 ETH0.000209699
Purchase52569062018-03-15 1:19:332455 days ago1521076773IN
0x3A630495...aa3963b75
0.125 ETH0.0005824725
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
52847292018-03-19 18:28:342451 days ago1521484114
0x3A630495...aa3963b75
0.25866078 ETH
52686702018-03-17 1:18:252453 days ago1521249505
0x3A630495...aa3963b75
0.075 ETH
52686702018-03-17 1:18:252453 days ago1521249505
0x3A630495...aa3963b75
0.005 ETH
52686702018-03-17 1:18:252453 days ago1521249505
0x3A630495...aa3963b75
0.00625 ETH
52686702018-03-17 1:18:252453 days ago1521249505
0x3A630495...aa3963b75
0.00625 ETH
52686702018-03-17 1:18:252453 days ago1521249505
0x3A630495...aa3963b75
0.1 ETH
52686672018-03-17 1:17:452453 days ago1521249465
0x3A630495...aa3963b75
0.002 ETH
52686672018-03-17 1:17:452453 days ago1521249465
0x3A630495...aa3963b75
0.0025 ETH
52686672018-03-17 1:17:452453 days ago1521249465
0x3A630495...aa3963b75
0.0025 ETH
52686672018-03-17 1:17:452453 days ago1521249465
0x3A630495...aa3963b75
0.04 ETH
52686632018-03-17 1:15:472453 days ago1521249347
0x3A630495...aa3963b75
0.002 ETH
52686632018-03-17 1:15:472453 days ago1521249347
0x3A630495...aa3963b75
0.0025 ETH
52686632018-03-17 1:15:472453 days ago1521249347
0x3A630495...aa3963b75
0.0025 ETH
52686632018-03-17 1:15:472453 days ago1521249347
0x3A630495...aa3963b75
0.04 ETH
52686422018-03-17 1:10:432453 days ago1521249043
0x3A630495...aa3963b75
0.01 ETH
52686422018-03-17 1:10:432453 days ago1521249043
0x3A630495...aa3963b75
0.002 ETH
52686422018-03-17 1:10:432453 days ago1521249043
0x3A630495...aa3963b75
0.0025 ETH
52686422018-03-17 1:10:432453 days ago1521249043
0x3A630495...aa3963b75
0.0025 ETH
52686422018-03-17 1:10:432453 days ago1521249043
0x3A630495...aa3963b75
0.04 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.015 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.005 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.00625 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.00625 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.1 ETH
52569052018-03-15 1:19:032455 days ago1521076743
0x3A630495...aa3963b75
0.06 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x972f04Fe...9821271B7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
CryptoPornstarAward

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-12
*/

pragma solidity ^0.4.18; // solhint-disable-line

/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
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 PornstarsInterface {
    function ownerOf(uint256 _id) public view returns (
        address owner
    );
    
    function totalSupply() public view returns (
        uint256 total
    );
}

contract PornSceneToken is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new scene comes into existence.
  event Birth(uint256 tokenId, string name, uint[] stars, 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, uint[] stars);

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

  /*** CONSTANTS ***/

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

  uint256 private startingPrice = 0.001 ether;
  uint256 private constant PROMO_CREATION_LIMIT = 10000;
  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;

  /*** STORAGE ***/

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

  // @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 SceneIDs to an address that has been approved to call
  ///  transferFrom(). Each Scene can only have one approved address for transfer
  ///  at any time. A zero value means no approval is outstanding.
  mapping (uint256 => address) public sceneIndexToApproved;

  // @dev A mapping from SceneIDs to the price of the token.
  mapping (uint256 => uint256) private sceneIndexToPrice;

  // The addresses of the accounts (or contracts) that can execute actions within each roles.
  address public ceoAddress;
  address public cooAddress;

  PornstarsInterface pornstarsContract;
  uint currentAwardWinner = 85; //Initiat the award. Award Holder from Previous Contract

  uint256 public promoCreatedCount;

  /*** DATATYPES ***/
  struct Scene {
    string name;
    uint[] stars;
  }

  Scene[] private scenes;

  /*** 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 PornSceneToken() public {
    ceoAddress = msg.sender;
    cooAddress = msg.sender;
  }

  /*** 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));

    sceneIndexToApproved[_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];
  }
  
  function setPornstarsContractAddress(address _address) public onlyCOO {
      pornstarsContract = PornstarsInterface(_address);
  }
  
  /// @dev Creates a new promo Scene with the given name, with given _price and assignes it to an address.
  function createPromoScene(address _owner, string _name, uint[] _stars, uint256 _price) public onlyCOO {
    require(promoCreatedCount < PROMO_CREATION_LIMIT);

    address sceneOwner = _owner;
    if (sceneOwner == address(0)) {
      sceneOwner = cooAddress;
    }

    if (_price <= 0) {
      _price = startingPrice;
    }

    promoCreatedCount++;
    _createScene(_name, _stars, sceneOwner, _price);
  }

  /// @dev Creates a new Scene with the given name.
  function createContractScene(string _name, uint[] _stars) public onlyCOO {
    _createScene(_name, _stars, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific scene.
  /// @param _tokenId The tokenId of the scene of interest.
  function getScene(uint256 _tokenId) public view returns (
    string sceneName,
    uint[] stars,
    uint256 sellingPrice,
    address owner
  ) {
    Scene storage scene = scenes[_tokenId];
    sceneName = scene.name;
    stars = scene.stars;
    sellingPrice = sceneIndexToPrice[_tokenId];
    owner = sceneIndexToOwner[_tokenId];
  }

  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 = sceneIndexToOwner[_tokenId];
    require(owner != address(0));
  }

  function payout(address _to) public onlyCLevel {
    _payout(_to);
  }

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

    uint256 sellingPrice = sceneIndexToPrice[_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);

    uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 80), 100));
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);
    
    // Pornstar Holder Fees
    // Get Scene Star Length
    Scene memory _scene = scenes[_tokenId];
    
    require(_scene.stars.length > 0); //Make sure have stars in the scene

    uint256 holderFee = uint256(SafeMath.div(SafeMath.div(SafeMath.mul(sellingPrice, 10), 100), _scene.stars.length));
    uint256 awardOwnerFee = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 4), 100));

    // Update prices
    if (sellingPrice < firstStepLimit) {
      // first stage
      sceneIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 200), 80);
    } else if (sellingPrice < secondStepLimit) {
      // second stage
      sceneIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 120), 80);
    } else {
      // third stage
      sceneIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, 115), 80);
    }

    _transfer(oldOwner, newOwner, _tokenId);

    // Pay previous tokenOwner if owner is not contract
    if (oldOwner != address(this)) {
      oldOwner.transfer(payment); //(1-0.06)
    }
    
    _paySceneStarOwners(_scene, holderFee);
    _payAwardOwner(awardOwnerFee);
    
    TokenSold(_tokenId, sellingPrice, sceneIndexToPrice[_tokenId], oldOwner, newOwner, _scene.name, _scene.stars);

    msg.sender.transfer(purchaseExcess);
  }
  
  function _paySceneStarOwners(Scene _scene, uint256 fee) private {
    for (uint i = 0; i < _scene.stars.length; i++) {
        address _pornstarOwner;
        (_pornstarOwner) = pornstarsContract.ownerOf(_scene.stars[i]);
        
        if(_isGoodAddress(_pornstarOwner)) {
            _pornstarOwner.transfer(fee);
        }
    }
  }
  
  function _payAwardOwner(uint256 fee) private {
    address _awardOwner;
    (_awardOwner) = pornstarsContract.ownerOf(currentAwardWinner);
    
    if(_isGoodAddress(_awardOwner)) {
        _awardOwner.transfer(fee);
    }
  }
  
  function _isGoodAddress(address _addy) private view returns (bool) {
      if(_addy == address(pornstarsContract)) {
          return false;
      }
      
      if(_addy == address(0) || _addy == address(0x0)) {
          return false;
      }
      
      return true;
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return sceneIndexToPrice[_tokenId];
  }
  
  function starsOf(uint256 _tokenId) public view returns (uint[]) {
      return scenes[_tokenId].stars;
  }
  
  /// @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;
  }

  /// @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 = sceneIndexToOwner[_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 celebrity 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 scenes array looking for scenes 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 totalscenes = totalSupply();
      uint256 resultIndex = 0;

      uint256 sceneId;
      for (sceneId = 0; sceneId <= totalscenes; sceneId++) {
        if (sceneIndexToOwner[sceneId] == _owner) {
          result[resultIndex] = sceneId;
          resultIndex++;
        }
      }
      return result;
    }
  }

  /// For querying totalSupply of token
  /// @dev Required for ERC-721 compliance.
  function totalSupply() public view returns (uint256 total) {
    return scenes.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 sceneIndexToApproved[_tokenId] == _to;
  }

  /// For creating Scene
  function _createScene(string _name, uint[] _stars,address _owner, uint256 _price) private {
    // Require Stars Exists
    require(_stars.length > 0);
    
    for (uint i = 0; i < _stars.length; i++) {
        address _pornstarOwner;
        (_pornstarOwner) = pornstarsContract.ownerOf(_stars[i]);
        require(_pornstarOwner != address(0) || _pornstarOwner != address(0x0));
    }
      
    Scene memory _scene = Scene({
      name: _name,
      stars: _stars
    });
    uint256 newSceneId = scenes.push(_scene) - 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(newSceneId == uint256(uint32(newSceneId)));

    Birth(newSceneId, _name, _stars, _owner);

    sceneIndexToPrice[newSceneId] = _price;

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

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

  /// For paying out balance on contract
  function _payout(address _to) private {
    if (_to == address(0)) {
      ceoAddress.transfer(this.balance);
    } else {
      _to.transfer(this.balance);
    }
  }

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

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

    // Emit the transfer event.
    Transfer(_from, _to, _tokenId);
  }
}

contract CryptoPornstarAward is PornSceneToken{
    event Award(uint256 currentAwardWinner, uint32 awardTime);
    
    uint nonce = 0;
    uint cooldownTime = 60;
    uint32 awardTime = uint32(now);
    
    function _triggerCooldown() internal {
        awardTime = uint32(now + cooldownTime);
    }
    
    function _isTime() internal view returns (bool) {
        return (awardTime <= now);
    }
    
    function rand(uint min, uint max) internal returns (uint) {
        nonce++;
        return uint(keccak256(nonce))%(min+max)-min;
    }

    function setCooldown(uint _newCooldown) public onlyCOO {
        require (_newCooldown > 0);
        cooldownTime = _newCooldown;
        _triggerCooldown();
    } 
    
    function getAwardTime () public view returns (uint32) {
        return awardTime;
    }
    
    function getCooldown () public view returns (uint) {
        return cooldownTime;
    }
    
    function newAward() public onlyCOO {        
        uint256 _totalPornstars;
        (_totalPornstars) = pornstarsContract.totalSupply();
        
        require(_totalPornstars > 0);
        require(_isTime());
        
        currentAwardWinner = rand(0, _totalPornstars);
        _triggerCooldown();
        
        Award(currentAwardWinner, awardTime);
    }
    
    function getCurrentAward() public view returns (uint){
        return currentAwardWinner;
    }
  
}

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":"promoCreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"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":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sceneIndexToApproved","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":"getCurrentAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCooldown","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getScene","outputs":[{"name":"sceneName","type":"string"},{"name":"stars","type":"uint256[]"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","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":false,"inputs":[],"name":"newAward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setPornstarsContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCooldown","type":"uint256"}],"name":"setCooldown","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":"_tokenId","type":"uint256"}],"name":"starsOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAwardTime","outputs":[{"name":"","type":"uint32"}],"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":"_name","type":"string"},{"name":"_stars","type":"uint256[]"}],"name":"createContractScene","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sceneIndexToOwner","outputs":[{"name":"","type":"address"}],"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":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_name","type":"string"},{"name":"_stars","type":"uint256[]"},{"name":"_price","type":"uint256"}],"name":"createPromoScene","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currentAwardWinner","type":"uint256"},{"indexed":false,"name":"awardTime","type":"uint32"}],"name":"Award","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"stars","type":"uint256[]"},{"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"},{"indexed":false,"name":"stars","type":"uint256[]"}],"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":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

Deployed Bytecode

0x6060604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e45546146101a657806306fdde03146101cf578063095ea7b31461025d5780630a0f81681461029f5780630b7e9c44146102f45780630ee4d6a91461032d5780631051db341461039057806310972704146103bd57806318160ddd146103e6578063218e4a151461040f57806322d7642e1461043857806323b872dd1461055657806327d7874c146105b75780632ba73c15146105f05780633579c0df14610629578063435557201461063e5780634fc3f41a146106775780636352211e1461069a57806370a08231146106fd5780637519dd8e1461074a57806380dce0b4146107c25780638462151c146107f7578063931274c81461088557806395d89b4114610922578063a31547b9146109b0578063a3f4df7e14610a13578063a9059cbb14610aa1578063b047fb5014610ae3578063b2e6ceeb14610b38578063b9186d7d14610b5b578063bc81572c14610b92578063efef39a114610c57578063f76f8d7814610c6f575b600080fd5b34156101b157600080fd5b6101b9610cfd565b6040518082815260200191505060405180910390f35b34156101da57600080fd5b6101e2610d03565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610222578082015181840152602081019050610207565b50505050905090810190601f16801561024f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026857600080fd5b61029d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d46565b005b34156102aa57600080fd5b6102b2610e16565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ff57600080fd5b61032b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e3c565b005b341561033857600080fd5b61034e6004808035906020019091905050610efc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561039b57600080fd5b6103a3610f2f565b604051808215151515815260200191505060405180910390f35b34156103c857600080fd5b6103d0610f38565b6040518082815260200191505060405180910390f35b34156103f157600080fd5b6103f9610f42565b6040518082815260200191505060405180910390f35b341561041a57600080fd5b610422610f4f565b6040518082815260200191505060405180910390f35b341561044357600080fd5b6104596004808035906020019091905050610f59565b6040518080602001806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838103835287818151815260200191508051906020019080838360005b838110156104d55780820151818401526020810190506104ba565b50505050905090810190601f1680156105025780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019060200280838360005b8381101561053e578082015181840152602081019050610523565b50505050905001965050505050505060405180910390f35b341561056157600080fd5b6105b5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110d5565b005b34156105c257600080fd5b6105ee600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611123565b005b34156105fb57600080fd5b610627600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111ff565b005b341561063457600080fd5b61063c6112db565b005b341561064957600080fd5b610675600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611481565b005b341561068257600080fd5b6106986004808035906020019091905050611521565b005b34156106a557600080fd5b6106bb600480803590602001909190505061159e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561070857600080fd5b610734600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611617565b6040518082815260200191505060405180910390f35b341561075557600080fd5b61076b6004808035906020019091905050611660565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b505050509050019250505060405180910390f35b34156107cd57600080fd5b6107d56116de565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561080257600080fd5b61082e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116f8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610871578082015181840152602081019050610856565b505050509050019250505060405180910390f35b341561089057600080fd5b610920600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061182f565b005b341561092d57600080fd5b61093561189d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561097557808201518184015260208101905061095a565b50505050905090810190601f1680156109a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109bb57600080fd5b6109d160048080359060200190919050506118e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a1e57600080fd5b610a26611913565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a66578082015181840152602081019050610a4b565b50505050905090810190601f168015610a935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aac57600080fd5b610ae1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061194c565b005b3415610aee57600080fd5b610af6611984565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b4357600080fd5b610b5960048080359060200190919050506119aa565b005b3415610b6657600080fd5b610b7c6004808035906020019091905050611a1f565b6040518082815260200191505060405180910390f35b3415610b9d57600080fd5b610c55600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019091905050611a3c565b005b610c6d6004808035906020019091905050611b3f565b005b3415610c7a57600080fd5b610c82612099565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cc2578082015181840152602081019050610ca7565b50505050905090810190601f168015610cef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600b5481565b610d0b612c85565b6040805190810160405280601081526020017f43727970746f506f726e5363656e657300000000000000000000000000000000815250905090565b610d5033826120d2565b1515610d5b57600080fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ee55750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ef057600080fd5b610ef98161213e565b50565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b6000600a54905090565b6000600c80549050905090565b6000600e54905090565b610f61612c85565b610f69612c99565b6000806000600c86815481101515610f7d57fe5b90600052602060002090600202019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110255780601f10610ffa57610100808354040283529160200191611025565b820191906000526020600020905b81548152906001019060200180831161100857829003601f168201915b505050505094508060010180548060200260200160405190810160405280929190818152602001828054801561107a57602002820191906000526020600020905b815481526020019060010190808311611066575b50505050509350600660008781526020019081526020016000205492506003600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193509193565b6110df83826120d2565b15156110ea57600080fd5b6110f4828261224c565b15156110ff57600080fd5b611108826122b8565b151561111357600080fd5b61111e8383836122f1565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561117f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156111bb57600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561129757600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133957600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156113c757600080fd5b6102c65a03f115156113d857600080fd5b5050506040518051905090506000811115156113f357600080fd5b6113fb6124f3565b151561140657600080fd5b611411600082612516565b600a8190555061141f61255d565b7f55ee98743fbe5304cba3c8c3181f35bdcb7bf1745cbf7875db79b5812394c7ea600a54600f60009054906101000a900463ffffffff16604051808381526020018263ffffffff1663ffffffff1681526020019250505060405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114dd57600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561157d57600080fd5b60008111151561158c57600080fd5b80600e8190555061159b61255d565b50565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561161257600080fd5b919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611668612c99565b600c8281548110151561167757fe5b90600052602060002090600202016001018054806020026020016040519081016040528092919081815260200182805480156116d257602002820191906000526020600020905b8154815260200190600101908083116116be575b50505050509050919050565b6000600f60009054906101000a900463ffffffff16905090565b611700612c99565b600061170a612c99565b600080600061171887611617565b9450600085141561174a5760006040518059106117325750595b90808252806020026020018201604052509550611825565b846040518059106117585750595b90808252806020026020018201604052509350611773610f42565b925060009150600090505b8281111515611821578673ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611814578084838151811015156117fd57fe5b906020019060200201818152505081806001019250505b808060010191505061177e565b8395505b5050505050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188b57600080fd5b611899828230600054612584565b5050565b6118a5612c85565b6040805190810160405280600e81526020017f506f726e5363656e65546f6b656e000000000000000000000000000000000000815250905090565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280601081526020017f43727970746f506f726e5363656e65730000000000000000000000000000000081525081565b61195633826120d2565b151561196157600080fd5b61196a826122b8565b151561197557600080fd5b6119803383836122f1565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506119ef826122b8565b15156119fa57600080fd5b611a04828461224c565b1515611a0f57600080fd5b611a1a8183856122f1565b505050565b600060066000838152602001908152602001600020549050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a9a57600080fd5b612710600b54101515611aac57600080fd5b849050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b0a57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600082111515611b1a5760005491505b600b60008154809291906001019190505550611b3884848385612584565b5050505050565b6000806000806000611b4f612cad565b600080600360008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750339650600660008a81526020019081526020016000205495508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611bdc57600080fd5b611be5876122b8565b1515611bf057600080fd5b853410151515611bff57600080fd5b611c14611c0d8760506128e1565b606461291c565b9450611c203487612937565b9350600c89815481101515611c3157fe5b9060005260206000209060020201604080519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ce35780601f10611cb857610100808354040283529160200191611ce3565b820191906000526020600020905b815481529060010190602001808311611cc657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d3b57602002820191906000526020600020905b815481526020019060010190808311611d27575b50505050508152505092506000836020015151111515611d5a57600080fd5b611d7d611d72611d6b88600a6128e1565b606461291c565b84602001515161291c565b9150611d94611d8d8760046128e1565b606461291c565b9050600154861015611dd157611db5611dae8760c86128e1565b605061291c565b600660008b815260200190815260200160002081905550611e3a565b600254861015611e0c57611df0611de98760786128e1565b605061291c565b600660008b815260200190815260200160002081905550611e39565b611e21611e1a8760736128e1565b605061291c565b600660008b8152602001908152602001600020819055505b5b611e4588888b6122f1565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141515611ebb578773ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501515611eba57600080fd5b5b611ec58383612950565b611ece81612a98565b7f48a40a6450bc25bbf3cb4b23fed1a19e8c23d16f9cd6af2f2e89e954a2611fc38987600660008d8152602001908152602001600020548b8b88600001518960200151604051808881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611fcb578082015181840152602081019050611fb0565b50505050905090810190601f168015611ff85780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019060200280838360005b83811015612034578082015181840152602081019050612019565b50505050905001995050505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561208e57600080fd5b505050505050505050565b6040805190810160405280600e81526020017f506f726e5363656e65546f6b656e00000000000000000000000000000000000081525081565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121f157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156121ec57600080fd5b612249565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561224857600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561244f57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b600042600f60009054906101000a900463ffffffff1663ffffffff161115905090565b6000600d6000815480929190600101919050555082828401600d546040518082815260200191505060405180910390206001900481151561255357fe5b0603905092915050565b600e544201600f60006101000a81548163ffffffff021916908363ffffffff160217905550565b60008061258f612cad565b60008087511115156125a057600080fd5b600093505b86518410156126fc57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e88868151811015156125fa57fe5b906020019060200201516000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561265e57600080fd5b6102c65a03f1151561266f57600080fd5b505050604051805190509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806126e45750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15156126ef57600080fd5b83806001019450506125a5565b60408051908101604052808981526020018881525091506001600c80548060010182816127299190612cd3565b91600052602060002090600202016000859091909150600082015181600001908051906020019061275b929190612d05565b506020820151816001019080519060200190612778929190612d85565b5050500390508063ffffffff168114151561279257600080fd5b7ff778b935903fd8ff66254baaef59aba24ee49b447b48f3188a756d155186ae85818989896040518085815260200180602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838103835286818151815260200191508051906020019080838360005b83811015612833578082015181840152602081019050612818565b50505050905090810190601f1680156128605780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019060200280838360005b8381101561289c578082015181840152602081019050612881565b50505050905001965050505050505060405180910390a18460066000838152602001908152602001600020819055506128d7600087836122f1565b5050505050505050565b60008060008414156128f65760009150612915565b828402905082848281151561290757fe5b0414151561291157fe5b8091505b5092915050565b600080828481151561292a57fe5b0490508091505092915050565b600082821115151561294557fe5b818303905092915050565b600080600091505b836020015151821015612a9257600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8560200151848151811015156129b557fe5b906020019060200201516000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612a1957600080fd5b6102c65a03f11515612a2a57600080fd5b505050604051805190509050612a3f81612ba5565b15612a85578073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515612a8457600080fd5b5b8180600101925050612958565b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e600a546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612b3557600080fd5b6102c65a03f11515612b4657600080fd5b505050604051805190509050612b5b81612ba5565b15612ba1578073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515612ba057600080fd5b5b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c065760009050612c80565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612c6d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612c7b5760009050612c80565b600190505b919050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b6040805190810160405280612cc0612dd2565b8152602001612ccd612de6565b81525090565b815481835581811511612d0057600202816002028360005260206000209182019101612cff9190612dfa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d4657805160ff1916838001178555612d74565b82800160010185558215612d74579182015b82811115612d73578251825591602001919060010190612d58565b5b509050612d819190612e39565b5090565b828054828255906000526020600020908101928215612dc1579160200282015b82811115612dc0578251825591602001919060010190612da5565b5b509050612dce9190612e39565b5090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b612e3691905b80821115612e325760008082016000612e199190612e5e565b600182016000612e299190612ea6565b50600201612e00565b5090565b90565b612e5b91905b80821115612e57576000816000905550600101612e3f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612e845750612ea3565b601f016020900490600052602060002090810190612ea29190612e39565b5b50565b5080546000825590600052602060002090810190612ec49190612e39565b505600a165627a7a72305820f6247b6c3739a4e273b3da8bd04e674ae89c1520d895ee2b795ac4f6d1d8af790029

Swarm Source

bzzr://f6247b6c3739a4e273b3da8bd04e674ae89c1520d895ee2b795ac4f6d1d8af79

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.