Contract 0xf4985070ce32b6b1994329df787d1acc9a2dd9e2

 

TxHash Block Age From To Value [TxFee]
0x29f50d227915a912291dacd07664c067a51330908e3a2fde43546b6dcb1c53d874054395 mins ago0x8b3ad493c077e894a034db7eb53e8285560298fd IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20.06 Ether0.00029159776
0x7e6d2cbf29f0cda31f705fc5150802ab2457f2d7bb3ff7476de744bfd9ab7d82740540713 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003872043
0x29b1174f7654ff8328ab2c385e86541455d9a684be8c6df4afd76356cf9715ce740540713 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0xbef1bbe2d3b144603e8d8a46c37ae0e60675e5f18b3573c9a5812f1e25a3c2bd740540713 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0x33200a04b8bf6675feb5297f93240f407daef08452b5646eee0ab6cec0bb22f8740540713 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0xe78971b6a197c37535cb4a8874968221320188962e4a7a1aca309d96ea24b356740538619 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0xd8343c1bdcbc6af725428d5f490f165f43467514c9123789f05bcf5f4be26ef7740537720 mins ago0xce3b7127602c35b9f1273500fd3447011d6c27f1 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0xb64cb7ce6e7ffee4b5161a1856a25a0704d3f403ede85ce2196fe350b5022ea4740525946 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x3f9a8d0074f7fbbf1bbe9d6a6f87fa0d48f6d782e387d3e11b8db957c177c782740525746 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0x1779a99daa264f1d018fb0aede6393df6280155eb65f27eb79bc95dbc18059e3740525646 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003869355
0xc8487f5e51088f3feb46a7c19be6211450941d072545a767b0bb9f046835fdec740525546 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x7b93c4742f54237f91c63cec8ffb84fa642bf5a5113c252a6c1746dc81ba18d0740525347 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0xb8e1cd3707f17272b4fade1fbf6d22714e0299f9d63e52490df3d8058444c884740525347 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x490d3102afd7f5fbed0076117af33fdee5d0b13577bfee8deccd4785e27de47d740525147 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x44d1dd27c21cf5498b40c9426e01ad6c3fede2157d2507cf8fdc0dc0caf75320740524947 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x25ac71ec4ee210b3cf7e6f5cd48fc12582768a128b3d5be8d7a24edd6d686000740524847 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x90440a01b2f853a973a23d09ece3608896bea5db1c76188897ed521e0b588537740524747 mins ago0x7fd81a88f3915197f0d5a4d84e9448fe3327a131 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0003870699
0x2a7ceb62b38f342fd506c7fc29d07f1177e110fcdfd4e536e44f75967117f3e874050471 hr 29 mins ago0x83bb781a2a2ca1fec0350f178c911848811cc440 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0001474552
0x825125eadc3a4946746366c0ef3f58036acc60629d4e6aeb097f9146e6a337fc74049991 hr 40 mins ago0x9792431b26026cc67117ff610ae4eb34cacd0755 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0001748796
0x024186d1974e6eb08841601a6d2309baeecbc2a0c9e4a8ce110cd0de829ecd5274049661 hr 47 mins ago0x83bb781a2a2ca1fec0350f178c911848811cc440 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0001474552
0x7fd6ac53a00585bf3eeed9f4e106b1e5476b61ebbc359d12862bea4d061b784774049521 hr 50 mins ago0x83bb781a2a2ca1fec0350f178c911848811cc440 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20 Ether0.0001475064
0xc47d36fbffb2d3d2f6c114c7f175228eaeb5b8b0c6615367c8914078a3af861674049221 hr 57 mins ago0x97a2aed6f277b2f8d1eecd63216ee362b9511a38 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20.4 Ether0.0001849323
0xd66540c2512c8dca9ff722f5afcd32cbf60af648d8256e1877e8192a970375ae74049201 hr 57 mins ago0x97a2aed6f277b2f8d1eecd63216ee362b9511a38 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20.300462962962962 Ether0.0001967637
0xb18b490525554960399611f7fb63119adadaae56828c013f566c3c6c5364226774049201 hr 57 mins ago0x97a2aed6f277b2f8d1eecd63216ee362b9511a38 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20.25 Ether0.0001849323
0x4c9f5b77d22839951228b02d76629a9d3103d8fe6ab261077aba3a63914a5d9574049171 hr 57 mins ago0x97a2aed6f277b2f8d1eecd63216ee362b9511a38 IN  0xf4985070ce32b6b1994329df787d1acc9a2dd9e20.218210212962962 Ether0.0001969002
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x29f50d227915a912291dacd07664c067a51330908e3a2fde43546b6dcb1c53d874054395 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x110f5169eaa698d2e309b60134468e2ec4e4f84b0.05745 Ether
0xc47d36fbffb2d3d2f6c114c7f175228eaeb5b8b0c6615367c8914078a3af861674049221 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x7405fe24003a50e4f4117d35e9b5a9f5e512fede0.383 Ether
0xd66540c2512c8dca9ff722f5afcd32cbf60af648d8256e1877e8192a970375ae74049201 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x97a2aed6f277b2f8d1eecd63216ee362b9511a380.000462962962962962 Ether
0xd66540c2512c8dca9ff722f5afcd32cbf60af648d8256e1877e8192a970375ae74049201 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x08797952462b82db639ddbfdef2ab1718ffa76760.28725 Ether
0xb18b490525554960399611f7fb63119adadaae56828c013f566c3c6c5364226774049201 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xe293390d7651234c6dfb1f41a47358b9377c004f0.239375 Ether
0x4c9f5b77d22839951228b02d76629a9d3103d8fe6ab261077aba3a63914a5d9574049171 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x97a2aed6f277b2f8d1eecd63216ee362b9511a380.000006907407407406 Ether
0x4c9f5b77d22839951228b02d76629a9d3103d8fe6ab261077aba3a63914a5d9574049171 hr 57 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xe293390d7651234c6dfb1f41a47358b9377c004f0.208929665069444445 Ether
0x469e0b6d27f5be10713f5381b41f0de0a0edc058a218283e9bbfeb55d91bcdce74049161 hr 58 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x97a2aed6f277b2f8d1eecd63216ee362b9511a380.000069444444444444 Ether
0x469e0b6d27f5be10713f5381b41f0de0a0edc058a218283e9bbfeb55d91bcdce74049161 hr 58 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xdcf711cb8a1e0856ff1cb1cfd52c5084f5b280300.1915 Ether
0x171a62c075986afbde042a1e4d6371a1285534d2633573852e214b795033dfa474049151 hr 58 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x97a2aed6f277b2f8d1eecd63216ee362b9511a380.023939525462962962 Ether
0x171a62c075986afbde042a1e4d6371a1285534d2633573852e214b795033dfa474049151 hr 58 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x8fc339425b2c5be02035c00ef311fda7d1fa9ab70.205259906684027779 Ether
0xc7481a413e2c21875de693057875fcdb4377d74b68bd938718c52642436ca37674046642 hrs 55 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x13899a3922ba84e5359ace4a6d8dc14d6aa7d5530.000763888888888888 Ether
0xc7481a413e2c21875de693057875fcdb4377d74b68bd938718c52642436ca37674046642 hrs 55 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x665498c14f80647d2a57a1f54eee4aaa9920fae80.086175 Ether
0x36f553df6f22b912d06e408338c5f010654a8fefab30e0b24856ba6dedd1ad8574045553 hrs 21 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x667b179503116974d691c67a67d6dc43f59e36ed0.0003984375 Ether
0x36f553df6f22b912d06e408338c5f010654a8fefab30e0b24856ba6dedd1ad8574045553 hrs 21 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x0a37249ee44b4fd883a52a62b4785e693535cf820.0292007578125 Ether
0x98da704090c17d66a0aceeba3fc765cc93e01767a8015e86d28790768208490774045433 hrs 24 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x79afa8de7401cc413b84cd250dc849b49cc4ea120.028725 Ether
0xbef7e220e9e596c61581ffb0d9b0c3eb1c954bad23aea1a555fdf0fb594de52474045353 hrs 26 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x667b179503116974d691c67a67d6dc43f59e36ed0.000046296296296296 Ether
0xbef7e220e9e596c61581ffb0d9b0c3eb1c954bad23aea1a555fdf0fb594de52474045353 hrs 26 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x51c18217fd5cd24bff32f272eff9f2cac6a0dd320.028725 Ether
0x1266e15baac38d667099583a1969966cd5730dc70831c9d42e08f7cfc0e43c2d74044613 hrs 43 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x0f948396c1b72aa884788db1821729d2eb69348c0.000104166666666666 Ether
0x1266e15baac38d667099583a1969966cd5730dc70831c9d42e08f7cfc0e43c2d74044613 hrs 43 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x1c9cdf7e998266228a6e4929f5f721cf0f40a0740.0335125 Ether
0x900999f1096306df1193b478671c0ada464581abf52f1f9075e842d7ff9cddab74043464 hrs 5 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x685a8de16b2dcbc4ae0329cd80ccd8648b37d9fc0.000039682539682539 Ether
0x900999f1096306df1193b478671c0ada464581abf52f1f9075e842d7ff9cddab74043464 hrs 5 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xb68fcd74aa0e14e5bf30efc60ca0fb48a430be900.028725 Ether
0xf925acb0d98a0496f3eb4efe882fe0f08792f7ab561c5b6250fd573b51e03eb574043194 hrs 13 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xedd831ece7c9eaffa7a6c5e1c31e6a644661f3a30.105325 Ether
0xaa42e1137f3f584231905009deb40c222ab9e21985c97bd5fa5ea89bd0f1dd4274042794 hrs 21 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20xcb5c0d33d92e4910daa24825db8af9b64e17c33c0.000013564814814815 Ether
0xaa42e1137f3f584231905009deb40c222ab9e21985c97bd5fa5ea89bd0f1dd4274042794 hrs 21 mins ago0xf4985070ce32b6b1994329df787d1acc9a2dd9e20x110f5169eaa698d2e309b60134468e2ec4e4f84b0.017346619675925926 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
AxieClockAuction

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.19;

// File: contracts/erc/erc721/IERC721Base.sol

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
///  Note: the ERC-165 identifier for this interface is 0x6466353c
interface IERC721Base /* is IERC165  */ {
  /// @dev This emits when ownership of any NFT changes by any mechanism.
  ///  This event emits when NFTs are created (`from` == 0) and destroyed
  ///  (`to` == 0). Exception: during contract creation, any number of NFTs
  ///  may be created and assigned without emitting Transfer. At the time of
  ///  any transfer, the approved address for that NFT (if any) is reset to none.
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);

  /// @dev This emits when the approved address for an NFT is changed or
  ///  reaffirmed. The zero address indicates there is no approved address.
  ///  When a Transfer event emits, this also indicates that the approved
  ///  address for that NFT (if any) is reset to none.
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  /// @dev This emits when an operator is enabled or disabled for an owner.
  ///  The operator can manage all NFTs of the owner.
  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

  /// @notice Count all NFTs assigned to an owner
  /// @dev NFTs assigned to the zero address are considered invalid, and this
  ///  function throws for queries about the zero address.
  /// @param _owner An address for whom to query the balance
  /// @return The number of NFTs owned by `_owner`, possibly zero
  function balanceOf(address _owner) external view returns (uint256);

  /// @notice Find the owner of an NFT
  /// @param _tokenId The identifier for an NFT
  /// @dev NFTs assigned to zero address are considered invalid, and queries
  ///  about them do throw.
  /// @return The address of the owner of the NFT
  function ownerOf(uint256 _tokenId) external view returns (address);

  /// @notice Transfers the ownership of an NFT from one address to another address
  /// @dev Throws unless `msg.sender` is the current owner, an authorized
  ///  operator, or the approved address for this NFT. Throws if `_from` is
  ///  not the current owner. Throws if `_to` is the zero address. Throws if
  ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
  ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
  ///  `onERC721Received` on `_to` and throws if the return value is not
  ///  `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`.
  /// @param _from The current owner of the NFT
  /// @param _to The new owner
  /// @param _tokenId The NFT to transfer
  /// @param _data Additional data with no specified format, sent in call to `_to`
  // solium-disable-next-line arg-overflow
  function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable;

  /// @notice Transfers the ownership of an NFT from one address to another address
  /// @dev This works identically to the other function with an extra data parameter,
  ///  except this function just sets data to []
  /// @param _from The current owner of the NFT
  /// @param _to The new owner
  /// @param _tokenId The NFT to transfer
  function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

  /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
  ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
  ///  THEY MAY BE PERMANENTLY LOST
  /// @dev Throws unless `msg.sender` is the current owner, an authorized
  ///  operator, or the approved address for this NFT. Throws if `_from` is
  ///  not the current owner. Throws if `_to` is the zero address. Throws if
  ///  `_tokenId` is not a valid NFT.
  /// @param _from The current owner of the NFT
  /// @param _to The new owner
  /// @param _tokenId The NFT to transfer
  function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

  /// @notice Set or reaffirm the approved address for an NFT
  /// @dev The zero address indicates there is no approved address.
  /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
  ///  operator of the current owner.
  /// @param _approved The new approved NFT controller
  /// @param _tokenId The NFT to approve
  function approve(address _approved, uint256 _tokenId) external payable;

  /// @notice Enable or disable approval for a third party ("operator") to manage
  ///  all your asset.
  /// @dev Emits the ApprovalForAll event
  /// @param _operator Address to add to the set of authorized operators.
  /// @param _approved True if the operators is approved, false to revoke approval
  function setApprovalForAll(address _operator, bool _approved) external;

  /// @notice Get the approved address for a single NFT
  /// @dev Throws if `_tokenId` is not a valid NFT
  /// @param _tokenId The NFT to find the approved address for
  /// @return The approved address for this NFT, or the zero address if there is none
  function getApproved(uint256 _tokenId) external view returns (address);

  /// @notice Query if an address is an authorized operator for another address
  /// @param _owner The address that owns the NFTs
  /// @param _operator The address that acts on behalf of the owner
  /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
  function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

// File: zeppelin/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: zeppelin/contracts/lifecycle/Pausable.sol

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

  bool public paused = false;


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

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

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

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

// File: zeppelin/contracts/ownership/HasNoEther.sol

/**
 * @title Contracts that should not own Ether
 * @author Remco Bloemen <[email protected]π.com>
 * @dev This tries to block incoming ether to prevent accidental loss of Ether. Should Ether end up
 * in the contract, it will allow the owner to reclaim this ether.
 * @notice Ether can still be send to this contract by:
 * calling functions labeled `payable`
 * `selfdestruct(contract_address)`
 * mining directly to the contract address
*/
contract HasNoEther is Ownable {

  /**
  * @dev Constructor that rejects incoming Ether
  * @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we
  * leave out payable, then Solidity will allow inheriting contracts to implement a payable
  * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
  * we could use assembly to access msg.value.
  */
  function HasNoEther() payable {
    require(msg.value == 0);
  }

  /**
   * @dev Disallows direct send by settings a default function without the `payable` flag.
   */
  function() external {
  }

  /**
   * @dev Transfer all Ether held by the contract to the owner.
   */
  function reclaimEther() external onlyOwner {
    assert(owner.send(this.balance));
  }
}

// File: contracts/marketplace/AxieClockAuction.sol

/// @title Clock auction for non-fungible tokens.
contract AxieClockAuction is HasNoEther, Pausable {

  // Represents an auction on an NFT
  struct Auction {
    // Current owner of NFT
    address seller;
    // Price (in wei) at beginning of auction
    uint128 startingPrice;
    // Price (in wei) at end of auction
    uint128 endingPrice;
    // Duration (in seconds) of auction
    uint64 duration;
    // Time when auction started
    // NOTE: 0 if this auction has been concluded
    uint64 startedAt;
  }

  // Cut owner takes on each auction, measured in basis points (1/100 of a percent).
  // Values 0-10,000 map to 0%-100%
  uint256 public ownerCut;

  // Map from token ID to their corresponding auction.
  mapping (address => mapping (uint256 => Auction)) public auctions;

  event AuctionCreated(
    address indexed _nftAddress,
    uint256 indexed _tokenId,
    uint256 _startingPrice,
    uint256 _endingPrice,
    uint256 _duration,
    address _seller
  );

  event AuctionSuccessful(
    address indexed _nftAddress,
    uint256 indexed _tokenId,
    uint256 _totalPrice,
    address _winner
  );

  event AuctionCancelled(
    address indexed _nftAddress,
    uint256 indexed _tokenId
  );

  /// @dev Constructor creates a reference to the NFT ownership contract
  ///  and verifies the owner cut is in the valid range.
  /// @param _ownerCut - percent cut the owner takes on each auction, must be
  ///  between 0-10,000.
  function AxieClockAuction(uint256 _ownerCut) public {
    require(_ownerCut <= 10000);
    ownerCut = _ownerCut;
  }

  /// @dev DON'T give me your money.
  function () external {}

  // Modifiers to check that inputs can be safely stored with a certain
  // number of bits. We use constants and multiple modifiers to save gas.
  modifier canBeStoredWith64Bits(uint256 _value) {
    require(_value <= 18446744073709551615);
    _;
  }

  modifier canBeStoredWith128Bits(uint256 _value) {
    require(_value < 340282366920938463463374607431768211455);
    _;
  }

  /// @dev Returns auction info for an NFT on auction.
  /// @param _nftAddress - Address of the NFT.
  /// @param _tokenId - ID of NFT on auction.
  function getAuction(
    address _nftAddress,
    uint256 _tokenId
  )
    external
    view
    returns (
      address seller,
      uint256 startingPrice,
      uint256 endingPrice,
      uint256 duration,
      uint256 startedAt
    )
  {
    Auction storage _auction = auctions[_nftAddress][_tokenId];
    require(_isOnAuction(_auction));
    return (
      _auction.seller,
      _auction.startingPrice,
      _auction.endingPrice,
      _auction.duration,
      _auction.startedAt
    );
  }

  /// @dev Returns the current price of an auction.
  /// @param _nftAddress - Address of the NFT.
  /// @param _tokenId - ID of the token price we are checking.
  function getCurrentPrice(
    address _nftAddress,
    uint256 _tokenId
  )
    external
    view
    returns (uint256)
  {
    Auction storage _auction = auctions[_nftAddress][_tokenId];
    require(_isOnAuction(_auction));
    return _getCurrentPrice(_auction);
  }

  /// @dev Creates and begins a new auction.
  /// @param _nftAddress - address of a deployed contract implementing
  ///  the Nonfungible Interface.
  /// @param _tokenId - ID of token to auction, sender must be owner.
  /// @param _startingPrice - Price of item (in wei) at beginning of auction.
  /// @param _endingPrice - Price of item (in wei) at end of auction.
  /// @param _duration - Length of time to move between starting
  ///  price and ending price (in seconds).
  function createAuction(
    address _nftAddress,
    uint256 _tokenId,
    uint256 _startingPrice,
    uint256 _endingPrice,
    uint256 _duration
  )
    external
    whenNotPaused
    canBeStoredWith128Bits(_startingPrice)
    canBeStoredWith128Bits(_endingPrice)
    canBeStoredWith64Bits(_duration)
  {
    address _seller = msg.sender;
    require(_owns(_nftAddress, _seller, _tokenId));
    _escrow(_nftAddress, _seller, _tokenId);
    Auction memory _auction = Auction(
      _seller,
      uint128(_startingPrice),
      uint128(_endingPrice),
      uint64(_duration),
      uint64(now)
    );
    _addAuction(_nftAddress, _tokenId, _auction, _seller);
  }

  /// @dev Bids on an open auction, completing the auction and transferring
  ///  ownership of the NFT if enough Ether is supplied.
  /// @param _nftAddress - address of a deployed contract implementing
  ///  the Nonfungible Interface.
  /// @param _tokenId - ID of token to bid on.
  function bid(
    address _nftAddress,
    uint256 _tokenId
  )
    external
    payable
    whenNotPaused
  {
    // _bid will throw if the bid or funds transfer fails
    _bid(_nftAddress, _tokenId, msg.value);
    _transfer(_nftAddress, msg.sender, _tokenId);
  }

  /// @dev Cancels an auction that hasn't been won yet.
  ///  Returns the NFT to original owner.
  /// @notice This is a state-modifying function that can
  ///  be called while the contract is paused.
  /// @param _nftAddress - Address of the NFT.
  /// @param _tokenId - ID of token on auction
  function cancelAuction(address _nftAddress, uint256 _tokenId) external {
    Auction storage _auction = auctions[_nftAddress][_tokenId];
    require(_isOnAuction(_auction));
    require(msg.sender == _auction.seller);
    _cancelAuction(_nftAddress, _tokenId, _auction.seller);
  }

  /// @dev Cancels an auction when the contract is paused.
  ///  Only the owner may do this, and NFTs are returned to
  ///  the seller. This should only be used in emergencies.
  /// @param _nftAddress - Address of the NFT.
  /// @param _tokenId - ID of the NFT on auction to cancel.
  function cancelAuctionWhenPaused(
    address _nftAddress,
    uint256 _tokenId
  )
    external
    whenPaused
    onlyOwner
  {
    Auction storage _auction = auctions[_nftAddress][_tokenId];
    require(_isOnAuction(_auction));
    _cancelAuction(_nftAddress, _tokenId, _auction.seller);
  }

  /// @dev Returns true if the NFT is on auction.
  /// @param _auction - Auction to check.
  function _isOnAuction(Auction storage _auction) internal view returns (bool) {
    return (_auction.startedAt > 0);
  }

  /// @dev Gets the NFT object from an address, validating that implementsERC721 is true.
  /// @param _nftAddress - Address of the NFT.
  function _getNftContract(address _nftAddress) internal pure returns (IERC721Base) {
    IERC721Base candidateContract = IERC721Base(_nftAddress);
    // require(candidateContract.implementsERC721());
    return candidateContract;
  }

  /// @dev Returns current price of an NFT on auction. Broken into two
  ///  functions (this one, that computes the duration from the auction
  ///  structure, and the other that does the price computation) so we
  ///  can easily test that the price computation works correctly.
  function _getCurrentPrice(
    Auction storage _auction
  )
    internal
    view
    returns (uint256)
  {
    uint256 _secondsPassed = 0;

    // A bit of insurance against negative values (or wraparound).
    // Probably not necessary (since Ethereum guarantees that the
    // now variable doesn't ever go backwards).
    if (now > _auction.startedAt) {
      _secondsPassed = now - _auction.startedAt;
    }

    return _computeCurrentPrice(
      _auction.startingPrice,
      _auction.endingPrice,
      _auction.duration,
      _secondsPassed
    );
  }

  /// @dev Computes the current price of an auction. Factored out
  ///  from _currentPrice so we can run extensive unit tests.
  ///  When testing, make this function external and turn on
  ///  `Current price computation` test suite.
  function _computeCurrentPrice(
    uint256 _startingPrice,
    uint256 _endingPrice,
    uint256 _duration,
    uint256 _secondsPassed
  )
    internal
    pure
    returns (uint256)
  {
    // NOTE: We don't use SafeMath (or similar) in this function because
    //  all of our external functions carefully cap the maximum values for
    //  time (at 64-bits) and currency (at 128-bits). _duration is
    //  also known to be non-zero (see the require() statement in
    //  _addAuction())
    if (_secondsPassed >= _duration) {
      // We've reached the end of the dynamic pricing portion
      // of the auction, just return the end price.
      return _endingPrice;
    } else {
      // Starting price can be higher than ending price (and often is!), so
      // this delta can be negative.
      int256 _totalPriceChange = int256(_endingPrice) - int256(_startingPrice);

      // This multiplication can't overflow, _secondsPassed will easily fit within
      // 64-bits, and _totalPriceChange will easily fit within 128-bits, their product
      // will always fit within 256-bits.
      int256 _currentPriceChange = _totalPriceChange * int256(_secondsPassed) / int256(_duration);

      // _currentPriceChange can be negative, but if so, will have a magnitude
      // less that _startingPrice. Thus, this result will always end up positive.
      int256 _currentPrice = int256(_startingPrice) + _currentPriceChange;

      return uint256(_currentPrice);
    }
  }

  /// @dev Returns true if the claimant owns the token.
  /// @param _nftAddress - The address of the NFT.
  /// @param _claimant - Address claiming to own the token.
  /// @param _tokenId - ID of token whose ownership to verify.
  function _owns(address _nftAddress, address _claimant, uint256 _tokenId) private view returns (bool) {
    IERC721Base _nftContract = _getNftContract(_nftAddress);
    return (_nftContract.ownerOf(_tokenId) == _claimant);
  }

  /// @dev Adds an auction to the list of open auctions. Also fires the
  ///  AuctionCreated event.
  /// @param _tokenId The ID of the token to be put on auction.
  /// @param _auction Auction to add.
  function _addAuction(
    address _nftAddress,
    uint256 _tokenId,
    Auction _auction,
    address _seller
  ) internal {
    // Require that all auctions have a duration of
    // at least one minute. (Keeps our math from getting hairy!)
    require(_auction.duration >= 1 minutes);

    auctions[_nftAddress][_tokenId] = _auction;

    AuctionCreated(
      _nftAddress,
      _tokenId,
      uint256(_auction.startingPrice),
      uint256(_auction.endingPrice),
      uint256(_auction.duration),
      _seller
    );
  }

  /// @dev Removes an auction from the list of open auctions.
  /// @param _tokenId - ID of NFT on auction.
  function _removeAuction(address _nftAddress, uint256 _tokenId) internal {
    delete auctions[_nftAddress][_tokenId];
  }

  /// @dev Cancels an auction unconditionally.
  function _cancelAuction(address _nftAddress, uint256 _tokenId, address _seller) internal {
    _removeAuction(_nftAddress, _tokenId);
    _transfer(_nftAddress, _seller, _tokenId);
    AuctionCancelled(_nftAddress, _tokenId);
  }

  /// @dev Escrows the NFT, assigning ownership to this contract.
  /// Throws if the escrow fails.
  /// @param _nftAddress - The address of the NFT.
  /// @param _owner - Current owner address of token to escrow.
  /// @param _tokenId - ID of token whose approval to verify.
  function _escrow(address _nftAddress, address _owner, uint256 _tokenId) private {
    IERC721Base _nftContract = _getNftContract(_nftAddress);

    // It will throw if transfer fails
    _nftContract.transferFrom(_owner, this, _tokenId);
  }

  /// @dev Transfers an NFT owned by this contract to another address.
  /// Returns true if the transfer succeeds.
  /// @param _nftAddress - The address of the NFT.
  /// @param _receiver - Address to transfer NFT to.
  /// @param _tokenId - ID of token to transfer.
  function _transfer(address _nftAddress, address _receiver, uint256 _tokenId) internal {
    IERC721Base _nftContract = _getNftContract(_nftAddress);

    // It will throw if transfer fails
    _nftContract.transferFrom(this, _receiver, _tokenId);
  }

  /// @dev Computes owner's cut of a sale.
  /// @param _price - Sale price of NFT.
  function _computeCut(uint256 _price) internal view returns (uint256) {
    // NOTE: We don't use SafeMath (or similar) in this function because
    //  all of our entry functions carefully cap the maximum values for
    //  currency (at 128-bits), and ownerCut <= 10000 (see the require()
    //  statement in the ClockAuction constructor). The result of this
    //  function is always guaranteed to be <= _price.
    return _price * ownerCut / 10000;
  }

  /// @dev Computes the price and transfers winnings.
  /// Does NOT transfer ownership of token.
  function _bid(
    address _nftAddress,
    uint256 _tokenId,
    uint256 _bidAmount
  )
    internal
    returns (uint256)
  {
    // Get a reference to the auction struct
    Auction storage _auction = auctions[_nftAddress][_tokenId];

    // Explicitly check that this auction is currently live.
    // (Because of how Ethereum mappings work, we can't just count
    // on the lookup above failing. An invalid _tokenId will just
    // return an auction object that is all zeros.)
    require(_isOnAuction(_auction));

    // Check that the incoming bid is higher than the current
    // price
    uint256 _price = _getCurrentPrice(_auction);
    require(_bidAmount >= _price);

    // Grab a reference to the seller before the auction struct
    // gets deleted.
    address _seller = _auction.seller;

    // The bid is good! Remove the auction before sending the fees
    // to the sender so we can't have a reentrancy attack.
    _removeAuction(_nftAddress, _tokenId);

    // Transfer proceeds to seller (if there are any!)
    if (_price > 0) {
      //  Calculate the auctioneer's cut.
      // (NOTE: _computeCut() is guaranteed to return a
      //  value <= price, so this subtraction can't go negative.)
      uint256 _auctioneerCut = _computeCut(_price);
      uint256 _sellerProceeds = _price - _auctioneerCut;

      // NOTE: Doing a transfer() in the middle of a complex
      // method like this is generally discouraged because of
      // reentrancy attacks and DoS attacks if the seller is
      // a contract with an invalid fallback function. We explicitly
      // guard against reentrancy attacks by removing the auction
      // before calling transfer(), and the only thing the seller
      // can DoS is the sale of their own asset! (And if it's an
      // accident, they can call cancelAuction(). )
      _seller.transfer(_sellerProceeds);
    }

    if (_bidAmount > _price) {
      // Calculate any excess funds included with the bid. If the excess
      // is anything worth worrying about, transfer it back to bidder.
      // NOTE: We checked above that the bid amount is greater than or
      // equal to the price so this cannot underflow.
      uint256 _bidExcess = _bidAmount - _price;

      // Return the funds. Similar to the previous transfer, this is
      // not susceptible to a re-entry attack because the auction is
      // removed before any transfers occur.
      msg.sender.transfer(_bidExcess);
    }

    // Tell the world!
    AuctionSuccessful(_nftAddress, _tokenId, _price, msg.sender);

    return _price;
  }
}

Contract ABI

[{"constant":false,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"cancelAuctionWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"auctions","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint128"},{"name":"endingPrice","type":"uint128"},{"name":"duration","type":"uint64"},{"name":"startedAt","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"getCurrentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"getAuction","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint256"},{"name":"endingPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"startedAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nftAddress","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_ownerCut","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_nftAddress","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"_startingPrice","type":"uint256"},{"indexed":false,"name":"_endingPrice","type":"uint256"},{"indexed":false,"name":"_duration","type":"uint256"},{"indexed":false,"name":"_seller","type":"address"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_nftAddress","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"_totalPrice","type":"uint256"},{"indexed":false,"name":"_winner","type":"address"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_nftAddress","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"AuctionCancelled","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Contract Creation Code

60606040526000805460a060020a60ff0219169055341561001f57600080fd5b604051602080610fa48339810160405280805160008054600160a060020a03191633600160a060020a0316179055915050341561005b57600080fd5b61271081111561006a57600080fd5b600155610f288061007c6000396000f3006060604052600436106100b65763ffffffff60e060020a6000350416631ae6b6ee81146100c35780633f4ba83a146100e557806344f91c1e146100f857806359d667a51461016c5780635c975abb146101835780636c54df52146101aa578063762a66a2146101de57806383b5ff8b1461023b5780638456cb591461024e578063859b97fe146102615780638da5cb5b14610283578063961c9ae4146102b25780639f727c27146102dd578063f2fde38b146102f0575b34156100c157600080fd5b005b34156100ce57600080fd5b6100c1600160a060020a036004351660243561030f565b34156100f057600080fd5b6100c1610398565b341561010357600080fd5b61011a600160a060020a0360043516602435610417565b604051600160a060020a0390951685526001608060020a0393841660208601529190921660408085019190915267ffffffffffffffff92831660608501529116608083015260a0909101905180910390f35b6100c1600160a060020a0360043516602435610487565b341561018e57600080fd5b6101966104b9565b604051901515815260200160405180910390f35b34156101b557600080fd5b6101cc600160a060020a03600435166024356104c9565b60405190815260200160405180910390f35b34156101e957600080fd5b610200600160a060020a0360043516602435610511565b604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b341561024657600080fd5b6101cc6105b4565b341561025957600080fd5b6100c16105ba565b341561026c57600080fd5b6100c1600160a060020a036004351660243561063e565b341561028e57600080fd5b61029661068f565b604051600160a060020a03909116815260200160405180910390f35b34156102bd57600080fd5b6100c1600160a060020a036004351660243560443560643560843561069e565b34156102e857600080fd5b6100c1610792565b34156102fb57600080fd5b6100c1600160a060020a03600435166107e5565b6000805460a060020a900460ff16151561032857600080fd5b60005433600160a060020a0390811691161461034357600080fd5b50600160a060020a0382166000908152600260209081526040808320848452909152902061037081610880565b151561037b57600080fd5b80546103939084908490600160a060020a03166108a1565b505050565b60005433600160a060020a039081169116146103b357600080fd5b60005460a060020a900460ff1615156103cb57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60026020818152600093845260408085209091529183529120805460018201549190920154600160a060020a03909216916001608060020a03808316927001000000000000000000000000000000009004169067ffffffffffffffff808216916801000000000000000090041685565b60005460a060020a900460ff161561049e57600080fd5b6104a98282346108f2565b506104b5823383610a40565b5050565b60005460a060020a900460ff1681565b600160a060020a038216600090815260026020908152604080832084845290915281206104f581610880565b151561050057600080fd5b61050981610ac8565b949350505050565b600160a060020a03821660009081526002602090815260408083208484529091528120819081908190819061054581610880565b151561055057600080fd5b80546001820154600290920154600160a060020a03909116996001608060020a038084169a50700100000000000000000000000000000000909304909216975067ffffffffffffffff80821697506801000000000000000090910416945092505050565b60015481565b60005433600160a060020a039081169116146105d557600080fd5b60005460a060020a900460ff16156105ec57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160a060020a0382166000908152600260209081526040808320848452909152902061066a81610880565b151561067557600080fd5b805433600160a060020a0390811691161461037b57600080fd5b600054600160a060020a031681565b60006106a8610ece565b60005460a060020a900460ff16156106bf57600080fd5b846001608060020a0381106106d357600080fd5b846001608060020a0381106106e757600080fd5b8467ffffffffffffffff8111156106fd57600080fd5b33945061070b8a868b610b56565b151561071657600080fd5b6107218a868b610bec565b60a06040519081016040528086600160a060020a03168152602001896001608060020a03168152602001886001608060020a031681526020018767ffffffffffffffff1681526020014267ffffffffffffffff1681525093506107868a8a8688610c5a565b50505050505050505050565b60005433600160a060020a039081169116146107ad57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156107e357fe5b565b60005433600160a060020a0390811691161461080057600080fd5b600160a060020a038116151561081557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6002015460006801000000000000000090910467ffffffffffffffff161190565b6108ab8383610e20565b6108b6838284610a40565b8183600160a060020a03167f018b64b6242d32aa550e95d78985b938d71af5b3f10827b0683f55da1639304860405160405180910390a3505050565b600160a060020a03831660009081526002602090815260408083208584529091528120818080808061092386610880565b151561092e57600080fd5b61093786610ac8565b94508488101561094657600080fd5b8554600160a060020a0316935061095d8a8a610e20565b60008511156109a75761096f85610e82565b92508285039150600160a060020a03841682156108fc0283604051600060405180830381858888f1935050505015156109a757600080fd5b848811156109e45750838703600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156109e457600080fd5b888a600160a060020a03167f6c00bb44a64da29b6a73920d50ff280237d277bda3e1f3cdf4e24392e6839efe8733604051918252600160a060020a031660208201526040908101905180910390a3509298975050505050505050565b6000610a4b84610e8e565b905080600160a060020a03166323b872dd30858560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b6102c65a03f11515610abf57600080fd5b50505050505050565b6002810154600090819068010000000000000000900467ffffffffffffffff16421115610b0e5750600282015468010000000000000000900467ffffffffffffffff1642035b60018301546002840154610b4f916001608060020a0380821692700100000000000000000000000000000000909204169067ffffffffffffffff1684610e91565b9392505050565b600080610b6285610e8e565b905083600160a060020a031681600160a060020a0316636352211e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bbd57600080fd5b6102c65a03f11515610bce57600080fd5b50505060405180519050600160a060020a0316149150509392505050565b6000610bf784610e8e565b905080600160a060020a03166323b872dd84308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b603c826060015167ffffffffffffffff161015610c7657600080fd5b600160a060020a0384166000908152600260209081526040808320868452909152902082908151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316700100000000000000000000000000000000029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560808201516002909101805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555082600160a060020a0385167febc6e332a2c695c53d77b2922a18bcf3ab024549f5f2bfa67e0875ec29d59d4660208501516001608060020a031685604001516001608060020a0316866060015167ffffffffffffffff16866040519384526020840192909252604080840191909152600160a060020a0390911660608301526080909101905180910390a350505050565b600160a060020a039091166000908152600260208181526040808420948452939052918120805473ffffffffffffffffffffffffffffffffffffffff1916815560018101919091550180546fffffffffffffffffffffffffffffffff19169055565b60015461271091020490565b90565b6000808080858510610ea557869350610ec3565b878703925085858402811515610eb757fe5b05915081880190508093505b505050949350505050565b60a06040519081016040908152600080835260208301819052908201819052606082018190526080820152905600a165627a7a723058202006b21bd123c97e5aa47d69d98a066c6ac130a7125f23df9c9e6a98a3d99de1002900000000000000000000000000000000000000000000000000000000000001a9

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000001a9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a9

Swarm Source

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