Contract 0xD2cbca4449aDb54ECDDb3A65FaF204b5E1790C3e

 
 
Txn Hash
Method
Block
From
To
Value
0x69f1e726e6e4a7b0b597ef34d773c7700fc084dfc2b9fc36e95a9ce211e66516Payout55251862018-04-29 7:34:471573 days 9 hrs ago0x5c035bb4cb7dacbfee076a5e61aa39a10da2e956 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0 Ether0.000187086
0x76a04cc2b6743e5ebfe568788888c6746967c8fe2eec8ec0486937c368451c3fPurchase52869252018-03-20 3:14:421613 days 14 hrs ago0x5c035bb4cb7dacbfee076a5e61aa39a10da2e956 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.02438652 Ether0.001725720
0xce9cf9f1c388c85561f49169958e64a45fcd43b9716189e248a027618119fe44Purchase52868622018-03-20 2:59:521613 days 14 hrs ago0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000690288
0xa665bb88d92a2cac7e4826514c540962f0c88f2b95324441cfd3d4063c3891a8Purchase52868542018-03-20 2:57:291613 days 14 hrs ago0x457dea5f9c185419ea47ff80f896d98aadf1c727 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.0007841311
0xcbbb42d825ae8df433140074ae6a158ae00c3debffa301c09342d41b71fc5e44Purchase52868402018-03-20 2:53:031613 days 14 hrs ago0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000356425
0x577f755b86cf5044182d06201375909d3d9b51c9b6341d07777b709d33a64f0bPurchase52868382018-03-20 2:52:551613 days 14 hrs ago0xe632a7bd3018246b2c2667e33000652d4bba43a2 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000168853
0x0478e83b6f84a84a8e5f382ec0e733ec1b0919884c4f69db405686789527824dPurchase52868312018-03-20 2:51:231613 days 14 hrs ago0x6132e824e08b78eef93a58108b13497104637122 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000172572
0x0f3ddf7f48e7c6ef26d05d0d7b9b60ab6a6ce9e76216197c06ec5a29a8c41027Purchase52868302018-03-20 2:51:091613 days 14 hrs ago0x1de5125581ec31e9f710cb08b6a2506ab3fd69eb IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.001 Ether0.000022871
0x32a70008ece70f208123ec6d070c48a173d0eccbd8aab79041b1c69de56f8d07Purchase52868212018-03-20 2:49:311613 days 14 hrs ago0xe632a7bd3018246b2c2667e33000652d4bba43a2 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000285144
0x89e83c44415560ffa30faac9bfb292c82042e7cbd0e0ba9cbc4450cea16aa789Purchase52868142018-03-20 2:48:351613 days 14 hrs ago0x031ce360526d6be64a3ed1e50b32889e1c7c21c5 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00493827 Ether0.000285144
0xd46bb46ec89c531a4d061285f2c92fd626520cfba6d1817f6bfccedbd3c67de6Purchase52868142018-03-20 2:48:351613 days 14 hrs ago0x031ce360526d6be64a3ed1e50b32889e1c7c21c5 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00493827 Ether0.000225144
0x23f0083a7180c7309162ab913405c7849aadd8baaa836c63047bcc8cac7440faPurchase52868132018-03-20 2:48:301613 days 14 hrs agoENS Name vitaliq.eth IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000160157
0x620e61647fbbe46c7ec2aa4a58f56794fd635cb7f252dd84429bb342111ed197Purchase52868112018-03-20 2:48:101613 days 14 hrs ago0xa2381223639181689cd6c46d38a1a4884bb6d83c IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000160157
0x1a4c6b5a658563b7161ddafd56d2395b7a5e2f1b3b442f9e6ee38b58ce95e98cPurchase52868102018-03-20 2:47:441613 days 14 hrs ago0xa2381223639181689cd6c46d38a1a4884bb6d83c IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000160157
0x29d0d2c75ca526a245dd3d15cd23c5801f6013b8b9917e9ab484684d66c1cfc7Purchase52868102018-03-20 2:47:441613 days 14 hrs agoENS Name vitaliq.eth IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000183038
0x3ac62c6d553e3a29f6fc204115490a40e4e22fea5954a67d5b40bf0c1ea11dfePurchase52868092018-03-20 2:47:321613 days 14 hrs ago0xe632a7bd3018246b2c2667e33000652d4bba43a2 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00493827 Ether0.000068633
0x39b37e5217d6eabbcbcdb5bf1ab1e120126d4fd01afd98e810d0c3afc3b0bee2Purchase52868092018-03-20 2:47:321613 days 14 hrs ago0xe632a7bd3018246b2c2667e33000652d4bba43a2 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000225144
0x09ddf0064a7c25837cf8ef812a3df93eec5e6e1538ac98426c75a5edf0bf0764Purchase52868092018-03-20 2:47:321613 days 14 hrs ago0xe632a7bd3018246b2c2667e33000652d4bba43a2 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000091514
0xa5953a242f9dff2b61df607dce8875c58fab3aa1472b230e4e94516c083aa1dePurchase52868092018-03-20 2:47:321613 days 14 hrs ago0x7c377b7bce53a5cef88458b2cbbe11c3babe16da IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00493827 Ether0.000137276
0xca2f8630739095dcafda750426a00152668f7c8cd89300c17053b65add3b770fPurchase52868092018-03-20 2:47:321613 days 14 hrs ago0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00222222 Ether0.000570288
0x220448562aea12ef3820a5ec4565346a987714c6610d5b45b460be19d62143fdPurchase52868082018-03-20 2:47:181613 days 14 hrs ago0x8da4f82dc4d03c5421bb2087f858750c650d8571 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.00493827 Ether0.0018119821
0x977a966cdb13e3222a9e29c1e049baba88f327359bd0462561d1baa0b25ff3b8Purchase52868072018-03-20 2:46:541613 days 14 hrs ago0x8c73f1f43c01dff15011b57a3882ab5c4ccd6930 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.001 Ether0.000045752
0x80ad850af55d2961e788038743877ed8a9ad5fda664bfe76b50bb9f358738dacPurchase52868062018-03-20 2:46:401613 days 14 hrs ago0x031ce360526d6be64a3ed1e50b32889e1c7c21c5 IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.01097393 Ether0.000068283
0xac8834c42add330cd215f3fa16d7b5a3a9b771a14b99cd44d3eea7123dc9bbecPurchase52868042018-03-20 2:46:011613 days 14 hrs ago0xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.001 Ether0.000127572
0xdd308a3cdd3cbf62a34b50b55b51b2ffb3be5fea3ce8afb0ad563acf1354c2d3Purchase52868042018-03-20 2:46:011613 days 14 hrs ago0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b IN  0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0.001 Ether0.000068633
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x69f1e726e6e4a7b0b597ef34d773c7700fc084dfc2b9fc36e95a9ce211e6651655251862018-04-29 7:34:471573 days 9 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x4b1d91272f422657bea4e6ee343cd6475c3333fb0.02494619 Ether
0x76a04cc2b6743e5ebfe568788888c6746967c8fe2eec8ec0486937c368451c3f52869252018-03-20 3:14:421613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x5c035bb4cb7dacbfee076a5e61aa39a10da2e9560 Ether
0x76a04cc2b6743e5ebfe568788888c6746967c8fe2eec8ec0486937c368451c3f52869252018-03-20 3:14:421613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x031ce360526d6be64a3ed1e50b32889e1c7c21c50.02194787 Ether
0xce9cf9f1c388c85561f49169958e64a45fcd43b9716189e248a027618119fe4452868622018-03-20 2:59:521613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b0 Ether
0xce9cf9f1c388c85561f49169958e64a45fcd43b9716189e248a027618119fe4452868622018-03-20 2:59:521613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xe632a7bd3018246b2c2667e33000652d4bba43a20.00987654 Ether
0xa665bb88d92a2cac7e4826514c540962f0c88f2b95324441cfd3d4063c3891a852868542018-03-20 2:57:291613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x457dea5f9c185419ea47ff80f896d98aadf1c7270 Ether
0xa665bb88d92a2cac7e4826514c540962f0c88f2b95324441cfd3d4063c3891a852868542018-03-20 2:57:291613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x54d6fca0ca37382b01304e6716420538604b447b0.00987654 Ether
0xcbbb42d825ae8df433140074ae6a158ae00c3debffa301c09342d41b71fc5e4452868402018-03-20 2:53:031613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db0 Ether
0xcbbb42d825ae8df433140074ae6a158ae00c3debffa301c09342d41b71fc5e4452868402018-03-20 2:53:031613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x7c377b7bce53a5cef88458b2cbbe11c3babe16da0.00987654 Ether
0x577f755b86cf5044182d06201375909d3d9b51c9b6341d07777b709d33a64f0b52868382018-03-20 2:52:551613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xe632a7bd3018246b2c2667e33000652d4bba43a20 Ether
0x577f755b86cf5044182d06201375909d3d9b51c9b6341d07777b709d33a64f0b52868382018-03-20 2:52:551613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x8da4f82dc4d03c5421bb2087f858750c650d85710.00987654 Ether
0x0478e83b6f84a84a8e5f382ec0e733ec1b0919884c4f69db405686789527824d52868312018-03-20 2:51:231613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x6132e824e08b78eef93a58108b134971046371220 Ether
0x0478e83b6f84a84a8e5f382ec0e733ec1b0919884c4f69db405686789527824d52868312018-03-20 2:51:231613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x031ce360526d6be64a3ed1e50b32889e1c7c21c50.00987654 Ether
0x32a70008ece70f208123ec6d070c48a173d0eccbd8aab79041b1c69de56f8d0752868212018-03-20 2:49:311613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xe632a7bd3018246b2c2667e33000652d4bba43a20 Ether
0x32a70008ece70f208123ec6d070c48a173d0eccbd8aab79041b1c69de56f8d0752868212018-03-20 2:49:311613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x031ce360526d6be64a3ed1e50b32889e1c7c21c50.00987654 Ether
0x89e83c44415560ffa30faac9bfb292c82042e7cbd0e0ba9cbc4450cea16aa78952868142018-03-20 2:48:351613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x031ce360526d6be64a3ed1e50b32889e1c7c21c50 Ether
0x89e83c44415560ffa30faac9bfb292c82042e7cbd0e0ba9cbc4450cea16aa78952868142018-03-20 2:48:351613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xe632a7bd3018246b2c2667e33000652d4bba43a20.00444444 Ether
0xd46bb46ec89c531a4d061285f2c92fd626520cfba6d1817f6bfccedbd3c67de652868142018-03-20 2:48:351613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x031ce360526d6be64a3ed1e50b32889e1c7c21c50 Ether
0xd46bb46ec89c531a4d061285f2c92fd626520cfba6d1817f6bfccedbd3c67de652868142018-03-20 2:48:351613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b0.00444444 Ether
0x39b37e5217d6eabbcbcdb5bf1ab1e120126d4fd01afd98e810d0c3afc3b0bee252868092018-03-20 2:47:321613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xe632a7bd3018246b2c2667e33000652d4bba43a20 Ether
0x39b37e5217d6eabbcbcdb5bf1ab1e120126d4fd01afd98e810d0c3afc3b0bee252868092018-03-20 2:47:321613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xaebbd80fd7dae979d965a3a5b09bbcd23eb40e5f0.00199999 Ether
0xca2f8630739095dcafda750426a00152668f7c8cd89300c17053b65add3b770f52868092018-03-20 2:47:321613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x6f63d5a49ce816e0c8fad2223fa38fd439ec920b0 Ether
0xca2f8630739095dcafda750426a00152668f7c8cd89300c17053b65add3b770f52868092018-03-20 2:47:321613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3eENS Name vitaliq.eth0.00199999 Ether
0x220448562aea12ef3820a5ec4565346a987714c6610d5b45b460be19d62143fd52868082018-03-20 2:47:181613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0x8da4f82dc4d03c5421bb2087f858750c650d85710 Ether
0x220448562aea12ef3820a5ec4565346a987714c6610d5b45b460be19d62143fd52868082018-03-20 2:47:181613 days 14 hrs ago 0xd2cbca4449adb54ecddb3a65faf204b5e1790c3e0xa2381223639181689cd6c46d38a1a4884bb6d83c0.00444444 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherGames

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-02-20
*/

pragma solidity ^0.4.18;

/// @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 EtherGames is ERC721 {

  /*** EVENTS ***/

  /// @dev The Birth event is fired whenever a new Game 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);

  /*** CONSTANTS ***/

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

  uint256 private startingPrice = 0.001 ether;
  uint256 private firstStepLimit =  0.053613 ether;
  uint256 private secondStepLimit = 0.564957 ether;

  /*** STORAGE ***/

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

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

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

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

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

  Game[] private games;

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

    gameIndexToApproved[_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 Game with the given name.
  function createContractGame(string _name) public onlyCLevel {
    _createGame(_name, address(this), startingPrice);
  }

  /// @notice Returns all the relevant information about a specific game.
  /// @param _tokenId The tokenId of the game of interest.
  function getGame(uint256 _tokenId) public view returns (
    string gameName,
    uint256 sellingPrice,
    address owner
  ) {
    Game storage game = games[_tokenId];
    gameName = game.name;
    sellingPrice = gameIndexToPrice[_tokenId];
    owner = gameIndexToOwner[_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 = gameIndexToOwner[_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 = gameIndexToOwner[_tokenId];
    address newOwner = msg.sender;

    uint256 sellingPrice = gameIndexToPrice[_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, 90), 100));
    uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice);

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

    _transfer(oldOwner, newOwner, _tokenId);

    // Pay previous tokenOwner if owner is not contract
    if (oldOwner != address(this)) {
      oldOwner.transfer(payment); //(1-0.08)
    }

    TokenSold(_tokenId, sellingPrice, gameIndexToPrice[_tokenId], oldOwner, newOwner, games[_tokenId].name);

    msg.sender.transfer(purchaseExcess);
  }

  function priceOf(uint256 _tokenId) public view returns (uint256 price) {
    return gameIndexToPrice[_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;
  }

  /// @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 = gameIndexToOwner[_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 Games array looking for games 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 totalGames = totalSupply();
      uint256 resultIndex = 0;

      uint256 gameId;
      for (gameId = 0; gameId <= totalGames; gameId++) {
        if (gameIndexToOwner[gameId] == _owner) {
          result[resultIndex] = gameId;
          resultIndex++;
        }
      }
      return result;
    }
  }

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

  /// For creating Games
  function _createGame(string _name, address _owner, uint256 _price) private {
    Game memory _game = Game({
      name: _name
    });
    uint256 newGameId = games.push(_game) - 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(newGameId == uint256(uint32(newGameId)));

    Birth(newGameId, _name, _owner);

    gameIndexToPrice[newGameId] = _price;

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

  /// Check for token ownership
  function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
    return claimant == gameIndexToOwner[_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 Game to an address.
  function _transfer(address _from, address _to, uint256 _tokenId) private {
    // Since the number of games is capped to 2^32 we can't overflow this
    ownershipTokenCount[_to]++;
    //transfer ownership
    gameIndexToOwner[_tokenId] = _to;

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

    // Emit the transfer event.
    Transfer(_from, _to, _tokenId);
  }
}
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":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","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":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":"","type":"uint256"}],"name":"gameIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getGame","outputs":[{"name":"gameName","type":"string"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","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":"_name","type":"string"}],"name":"createContractGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"gameIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

606060405266038d7ea4c6800060005566be78bd4c57d0006001556707d72165f25ed000600255341561003157600080fd5b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f31806100c26000396000f30060606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610143578063095ea7b3146101d15780630a0f8168146102135780630b7e9c44146102685780631051db34146102a157806318160ddd146102ce57806323b872dd146102f757806327d7874c146103585780632ba73c15146103915780635c3c7618146103ca5780636352211e1461042d57806370a08231146104905780638462151c146104dd57806395d89b411461056b578063a2f77bcc146105f9578063a3f4df7e146106cf578063a9059cbb1461075d578063b047fb501461079f578063b2e6ceeb146107f4578063b9186d7d14610817578063ce6f6e881461084e578063ed2f79f8146108ab578063efef39a11461090e578063f76f8d7814610926575b600080fd5b341561014e57600080fd5b6101566109b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019657808201518184015260208101905061017b565b50505050905090810190601f1680156101c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101dc57600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109f7565b005b341561021e57600080fd5b610226610ac7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027357600080fd5b61029f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610aed565b005b34156102ac57600080fd5b6102b4610bad565b604051808215151515815260200191505060405180910390f35b34156102d957600080fd5b6102e1610bb6565b6040518082815260200191505060405180910390f35b341561030257600080fd5b610356600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bc3565b005b341561036357600080fd5b61038f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c11565b005b341561039c57600080fd5b6103c8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ced565b005b34156103d557600080fd5b6103eb6004808035906020019091905050610dc9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043857600080fd5b61044e6004808035906020019091905050610dfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561049b57600080fd5b6104c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e75565b6040518082815260200191505060405180910390f35b34156104e857600080fd5b610514600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ebe565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561055757808201518184015260208101905061053c565b505050509050019250505060405180910390f35b341561057657600080fd5b61057e610ff5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105be5780820151818401526020810190506105a3565b50505050905090810190601f1680156105eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060457600080fd5b61061a6004808035906020019091905050611038565b60405180806020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825285818151815260200191508051906020019080838360005b83811015610692578082015181840152602081019050610677565b50505050905090810190601f1680156106bf5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156106da57600080fd5b6106e2611154565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076857600080fd5b61079d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061118d565b005b34156107aa57600080fd5b6107b26111c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107ff57600080fd5b61081560048080359060200190919050506111eb565b005b341561082257600080fd5b6108386004808035906020019091905050611260565b6040518082815260200191505060405180910390f35b341561085957600080fd5b6108a9600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061127d565b005b34156108b657600080fd5b6108cc6004808035906020019091905050611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109246004808035906020019091905050611374565b005b341561093157600080fd5b610939611720565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561097957808201518184015260208101905061095e565b50505050905090810190601f1680156109a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109bc611d67565b6040805190810160405280600a81526020017f457468657247616d657300000000000000000000000000000000000000000000815250905090565b610a013382611759565b1515610a0c57600080fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b965750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ba157600080fd5b610baa816117c5565b50565b60006001905090565b6000600980549050905090565b610bcd8382611759565b1515610bd857600080fd5b610be282826118d3565b1515610bed57600080fd5b610bf68261193f565b1515610c0157600080fd5b610c0c838383611978565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c6d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ca957600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d8557600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e7057600080fd5b919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec6611d7b565b6000610ed0611d7b565b6000806000610ede87610e75565b94506000851415610f10576000604051805910610ef85750595b90808252806020026020018201604052509550610feb565b84604051805910610f1e5750595b90808252806020026020018201604052509350610f39610bb6565b925060009150600090505b8281111515610fe7578673ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fda57808483815181101515610fc357fe5b906020019060200201818152505081806001019250505b8080600101915050610f44565b8395505b5050505050919050565b610ffd611d67565b6040805190810160405280600981526020017f4d657461546f6b656e0000000000000000000000000000000000000000000000815250905090565b611040611d67565b600080600060098581548110151561105457fe5b90600052602060002090019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110f95780601f106110ce576101008083540402835291602001916110f9565b820191906000526020600020905b8154815290600101906020018083116110dc57829003601f168201915b50505050509350600660008681526020019081526020016000205492506003600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150509193909250565b6040805190810160405280600a81526020017f457468657247616d65730000000000000000000000000000000000000000000081525081565b6111973382611759565b15156111a257600080fd5b6111ab8261193f565b15156111b657600080fd5b6111c1338383611978565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506112308261193f565b151561123b57600080fd5b61124582846118d3565b151561125057600080fd5b61125b818385611978565b505050565b600060066000838152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113265750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561133157600080fd5b61133e8130600054611b7a565b50565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006003600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450339350600660008781526020019081526020016000205492508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561140657600080fd5b61140f8461193f565b151561141a57600080fd5b82341015151561142957600080fd5b61143e61143784605a611cf8565b6064611d33565b915061144a3484611d4e565b90506001548310156114875761146b6114648460c8611cf8565b605a611d33565b60066000888152602001908152602001600020819055506114f0565b6002548310156114c2576114a661149f846078611cf8565b605a611d33565b60066000888152602001908152602001600020819055506114ef565b6114d76114d0846073611cf8565b605a611d33565b60066000888152602001908152602001600020819055505b5b6114fb858588611978565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515611571578473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561157057600080fd5b5b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8684600660008a815260200190815260200160002054888860098c8154811015156115b857fe5b9060005260206000209001600001604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116c55780601f1061169a576101008083540402835291602001916116c5565b820191906000526020600020905b8154815290600101906020018083116116a857829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561171857600080fd5b505050505050565b6040805190810160405280600981526020017f4d657461546f6b656e000000000000000000000000000000000000000000000081525081565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561187857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561187357600080fd5b6118d0565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156118cf57600080fd5b5b50565b60008273ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515611ad657600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b611b82611d8f565b6000602060405190810160405280868152509150600160098054806001018281611bac9190611da9565b916000526020600020900160008590919091506000820151816000019080519060200190611bdb929190611dd5565b5050500390508063ffffffff1681141515611bf557600080fd5b7fb3b0cf861f168bcdb275c69da97b2543631552ba562628aa3c7317d4a6089ef281868660405180848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015611c91578082015181840152602081019050611c76565b50505050905090810190601f168015611cbe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1826006600083815260200190815260200160002081905550611cf160008583611978565b5050505050565b6000806000841415611d0d5760009150611d2c565b8284029050828482811515611d1e57fe5b04141515611d2857fe5b8091505b5092915050565b6000808284811515611d4157fe5b0490508091505092915050565b6000828211151515611d5c57fe5b818303905092915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280611da3611e55565b81525090565b815481835581811511611dd057818360005260206000209182019101611dcf9190611e69565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e1657805160ff1916838001178555611e44565b82800160010185558215611e44579182015b82811115611e43578251825591602001919060010190611e28565b5b509050611e519190611e98565b5090565b602060405190810160405280600081525090565b611e9591905b80821115611e915760008082016000611e889190611ebd565b50600101611e6f565b5090565b90565b611eba91905b80821115611eb6576000816000905550600101611e9e565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611ee35750611f02565b601f016020900490600052602060002090810190611f019190611e98565b5b505600a165627a7a72305820f0040ec231db3eafae0519ef2ee04e1e63824b1fe8dee99666c0b98e2451a3c90029

Swarm Source

bzzr://f0040ec231db3eafae0519ef2ee04e1e63824b1fe8dee99666c0b98e2451a3c9
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.