ETH Price: $3,345.41 (-0.89%)

Contract

0xF4985070Ce32b6B1994329DF787D1aCc9a2dd9e2
 

Multichain Info

Transaction Hash
Method
Block
From
To
Create Auction204528502024-08-04 4:38:59111 days ago1722746339IN
Axie Infinity: Axie Clock Auction
0 ETH0.000025031
Create Auction204528472024-08-04 4:38:23111 days ago1722746303IN
Axie Infinity: Axie Clock Auction
0 ETH0.000025021
Bid169129162023-03-26 16:53:59607 days ago1679849639IN
Axie Infinity: Axie Clock Auction
0.055 ETH0.00434052180
Cancel Auction151905412022-07-22 5:25:58855 days ago1658467558IN
Axie Infinity: Axie Clock Auction
0 ETH0.000581145
Create Auction151579682022-07-17 4:08:10860 days ago1658030890IN
Axie Infinity: Axie Clock Auction
0 ETH0.00370473148.00000145
Bid140306182022-01-18 16:33:421039 days ago1642523622IN
Axie Infinity: Axie Clock Auction
0.095 ETH0.0021220388
Bid140306182022-01-18 16:33:421039 days ago1642523622IN
Axie Infinity: Axie Clock Auction
0.095 ETH0.0021220388
Bid140306182022-01-18 16:33:421039 days ago1642523622IN
Axie Infinity: Axie Clock Auction
0.0856526 ETH0.0021220388
Bid140306182022-01-18 16:33:421039 days ago1642523622IN
Axie Infinity: Axie Clock Auction
0.0856526 ETH0.002073886.00000145
Cancel Auction137015882021-11-28 9:26:401090 days ago1638091600IN
Axie Infinity: Axie Clock Auction
0 ETH0.0012478751.0044
Cancel Auction136129102021-11-14 8:33:441104 days ago1636878824IN
Axie Infinity: Axie Clock Auction
0 ETH0.0073788871
Create Auction136034162021-11-12 20:20:421106 days ago1636748442IN
Axie Infinity: Axie Clock Auction
0 ETH0.00387996155
Create Auction134052202021-10-12 18:18:471137 days ago1634062727IN
Axie Infinity: Axie Clock Auction
0 ETH0.00235394
Create Auction130627262021-08-20 14:43:231190 days ago1629470603IN
Axie Infinity: Axie Clock Auction
0 ETH0.0013266953
Create Auction130204122021-08-14 1:38:241197 days ago1628905104IN
Axie Infinity: Axie Clock Auction
0 ETH0.0017530870
Cancel Auction129509612021-08-03 7:21:571208 days ago1627975317IN
Axie Infinity: Axie Clock Auction
0 ETH0.0015166724.03
Create Auction129429362021-08-02 1:00:161209 days ago1627866016IN
Axie Infinity: Axie Clock Auction
0 ETH0.0010513442
Cancel Auction129357832021-07-31 21:54:061210 days ago1627768446IN
Axie Infinity: Axie Clock Auction
0 ETH0.0033457853.00000145
Create Auction129357792021-07-31 21:52:551210 days ago1627768375IN
Axie Infinity: Axie Clock Auction
0 ETH0.0011269845.00000156
Transfer129092512021-07-27 16:51:141214 days ago1627404674IN
Axie Infinity: Axie Clock Auction
0.0836043 ETH0.00073535
Bid128918562021-07-24 23:03:221217 days ago1627167802IN
Axie Infinity: Axie Clock Auction
0.07304357 ETH0.0019532381
Create Auction128898082021-07-24 15:21:571217 days ago1627140117IN
Axie Infinity: Axie Clock Auction
0 ETH0.0004758319
Create Auction128877782021-07-24 7:48:441218 days ago1627112924IN
Axie Infinity: Axie Clock Auction
0 ETH0.0003756615
Create Auction128200392021-07-13 17:07:251228 days ago1626196045IN
Axie Infinity: Axie Clock Auction
0 ETH0.0016020464
Create Auction128200392021-07-13 17:07:251228 days ago1626196045IN
Axie Infinity: Axie Clock Auction
0 ETH0.0017021768
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
133686232021-10-07 0:21:161143 days ago1633566076
Axie Infinity: Axie Clock Auction
0.02290252 ETH
132694942021-09-21 13:48:231158 days ago1632232103
Axie Infinity: Axie Clock Auction
0.01991713 ETH
129502792021-08-03 4:42:031208 days ago1627965723
Axie Infinity: Axie Clock Auction
0.008767 ETH
123794502021-05-06 7:38:401297 days ago1620286720
Axie Infinity: Axie Clock Auction
25.20930509 ETH
123289492021-04-28 12:31:201304 days ago1619613080
Axie Infinity: Axie Clock Auction
0.00006944 ETH
123289492021-04-28 12:31:201304 days ago1619613080
Axie Infinity: Axie Clock Auction
0.124475 ETH
123289322021-04-28 12:24:591304 days ago1619612699
Axie Infinity: Axie Clock Auction
0.00013888 ETH
123289322021-04-28 12:24:591304 days ago1619612699
Axie Infinity: Axie Clock Auction
0.0622375 ETH
123289102021-04-28 12:20:561304 days ago1619612456
Axie Infinity: Axie Clock Auction
0.00008472 ETH
123289102021-04-28 12:20:561304 days ago1619612456
Axie Infinity: Axie Clock Auction
0.09499295 ETH
123289082021-04-28 12:20:431304 days ago1619612443
Axie Infinity: Axie Clock Auction
0.00041666 ETH
123289082021-04-28 12:20:431304 days ago1619612443
Axie Infinity: Axie Clock Auction
0.0766 ETH
123289052021-04-28 12:20:291304 days ago1619612429
Axie Infinity: Axie Clock Auction
0.00027777 ETH
123289052021-04-28 12:20:291304 days ago1619612429
Axie Infinity: Axie Clock Auction
0.09575 ETH
123289032021-04-28 12:20:241304 days ago1619612424
Axie Infinity: Axie Clock Auction
0.00004039 ETH
123289032021-04-28 12:20:241304 days ago1619612424
Axie Infinity: Axie Clock Auction
0.07563097 ETH
123289032021-04-28 12:20:241304 days ago1619612424
Axie Infinity: Axie Clock Auction
0.00001506 ETH
123289032021-04-28 12:20:241304 days ago1619612424
Axie Infinity: Axie Clock Auction
0.10620527 ETH
123288782021-04-28 12:13:471304 days ago1619612027
Axie Infinity: Axie Clock Auction
0.086175 ETH
123287822021-04-28 11:49:061304 days ago1619610546
Axie Infinity: Axie Clock Auction
0.00024215 ETH
123287822021-04-28 11:49:061304 days ago1619610546
Axie Infinity: Axie Clock Auction
0.06667025 ETH
123287812021-04-28 11:49:031304 days ago1619610543
Axie Infinity: Axie Clock Auction
0.00017708 ETH
123287812021-04-28 11:49:031304 days ago1619610543
Axie Infinity: Axie Clock Auction
0.0660675 ETH
123287812021-04-28 11:49:031304 days ago1619610543
Axie Infinity: Axie Clock Auction
0.00009548 ETH
123287812021-04-28 11:49:031304 days ago1619610543
Axie Infinity: Axie Clock Auction
0.0622375 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AxieClockAuction

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-04-02
*/

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 <remco@2π.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 Security Audit

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"}]

60606040526000805460a060020a60ff0219169055341561001f57600080fd5b604051602080610fa48339810160405280805160008054600160a060020a03191633600160a060020a0316179055915050341561005b57600080fd5b61271081111561006a57600080fd5b600155610f288061007c6000396000f3006060604052600436106100b65763ffffffff60e060020a6000350416631ae6b6ee81146100c35780633f4ba83a146100e557806344f91c1e146100f857806359d667a51461016c5780635c975abb146101835780636c54df52146101aa578063762a66a2146101de57806383b5ff8b1461023b5780638456cb591461024e578063859b97fe146102615780638da5cb5b14610283578063961c9ae4146102b25780639f727c27146102dd578063f2fde38b146102f0575b34156100c157600080fd5b005b34156100ce57600080fd5b6100c1600160a060020a036004351660243561030f565b34156100f057600080fd5b6100c1610398565b341561010357600080fd5b61011a600160a060020a0360043516602435610417565b604051600160a060020a0390951685526001608060020a0393841660208601529190921660408085019190915267ffffffffffffffff92831660608501529116608083015260a0909101905180910390f35b6100c1600160a060020a0360043516602435610487565b341561018e57600080fd5b6101966104b9565b604051901515815260200160405180910390f35b34156101b557600080fd5b6101cc600160a060020a03600435166024356104c9565b60405190815260200160405180910390f35b34156101e957600080fd5b610200600160a060020a0360043516602435610511565b604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b341561024657600080fd5b6101cc6105b4565b341561025957600080fd5b6100c16105ba565b341561026c57600080fd5b6100c1600160a060020a036004351660243561063e565b341561028e57600080fd5b61029661068f565b604051600160a060020a03909116815260200160405180910390f35b34156102bd57600080fd5b6100c1600160a060020a036004351660243560443560643560843561069e565b34156102e857600080fd5b6100c1610792565b34156102fb57600080fd5b6100c1600160a060020a03600435166107e5565b6000805460a060020a900460ff16151561032857600080fd5b60005433600160a060020a0390811691161461034357600080fd5b50600160a060020a0382166000908152600260209081526040808320848452909152902061037081610880565b151561037b57600080fd5b80546103939084908490600160a060020a03166108a1565b505050565b60005433600160a060020a039081169116146103b357600080fd5b60005460a060020a900460ff1615156103cb57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60026020818152600093845260408085209091529183529120805460018201549190920154600160a060020a03909216916001608060020a03808316927001000000000000000000000000000000009004169067ffffffffffffffff808216916801000000000000000090041685565b60005460a060020a900460ff161561049e57600080fd5b6104a98282346108f2565b506104b5823383610a40565b5050565b60005460a060020a900460ff1681565b600160a060020a038216600090815260026020908152604080832084845290915281206104f581610880565b151561050057600080fd5b61050981610ac8565b949350505050565b600160a060020a03821660009081526002602090815260408083208484529091528120819081908190819061054581610880565b151561055057600080fd5b80546001820154600290920154600160a060020a03909116996001608060020a038084169a50700100000000000000000000000000000000909304909216975067ffffffffffffffff80821697506801000000000000000090910416945092505050565b60015481565b60005433600160a060020a039081169116146105d557600080fd5b60005460a060020a900460ff16156105ec57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160a060020a0382166000908152600260209081526040808320848452909152902061066a81610880565b151561067557600080fd5b805433600160a060020a0390811691161461037b57600080fd5b600054600160a060020a031681565b60006106a8610ece565b60005460a060020a900460ff16156106bf57600080fd5b846001608060020a0381106106d357600080fd5b846001608060020a0381106106e757600080fd5b8467ffffffffffffffff8111156106fd57600080fd5b33945061070b8a868b610b56565b151561071657600080fd5b6107218a868b610bec565b60a06040519081016040528086600160a060020a03168152602001896001608060020a03168152602001886001608060020a031681526020018767ffffffffffffffff1681526020014267ffffffffffffffff1681525093506107868a8a8688610c5a565b50505050505050505050565b60005433600160a060020a039081169116146107ad57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156107e357fe5b565b60005433600160a060020a0390811691161461080057600080fd5b600160a060020a038116151561081557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6002015460006801000000000000000090910467ffffffffffffffff161190565b6108ab8383610e20565b6108b6838284610a40565b8183600160a060020a03167f018b64b6242d32aa550e95d78985b938d71af5b3f10827b0683f55da1639304860405160405180910390a3505050565b600160a060020a03831660009081526002602090815260408083208584529091528120818080808061092386610880565b151561092e57600080fd5b61093786610ac8565b94508488101561094657600080fd5b8554600160a060020a0316935061095d8a8a610e20565b60008511156109a75761096f85610e82565b92508285039150600160a060020a03841682156108fc0283604051600060405180830381858888f1935050505015156109a757600080fd5b848811156109e45750838703600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156109e457600080fd5b888a600160a060020a03167f6c00bb44a64da29b6a73920d50ff280237d277bda3e1f3cdf4e24392e6839efe8733604051918252600160a060020a031660208201526040908101905180910390a3509298975050505050505050565b6000610a4b84610e8e565b905080600160a060020a03166323b872dd30858560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b6102c65a03f11515610abf57600080fd5b50505050505050565b6002810154600090819068010000000000000000900467ffffffffffffffff16421115610b0e5750600282015468010000000000000000900467ffffffffffffffff1642035b60018301546002840154610b4f916001608060020a0380821692700100000000000000000000000000000000909204169067ffffffffffffffff1684610e91565b9392505050565b600080610b6285610e8e565b905083600160a060020a031681600160a060020a0316636352211e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bbd57600080fd5b6102c65a03f11515610bce57600080fd5b50505060405180519050600160a060020a0316149150509392505050565b6000610bf784610e8e565b905080600160a060020a03166323b872dd84308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b603c826060015167ffffffffffffffff161015610c7657600080fd5b600160a060020a0384166000908152600260209081526040808320868452909152902082908151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316700100000000000000000000000000000000029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560808201516002909101805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555082600160a060020a0385167febc6e332a2c695c53d77b2922a18bcf3ab024549f5f2bfa67e0875ec29d59d4660208501516001608060020a031685604001516001608060020a0316866060015167ffffffffffffffff16866040519384526020840192909252604080840191909152600160a060020a0390911660608301526080909101905180910390a350505050565b600160a060020a039091166000908152600260208181526040808420948452939052918120805473ffffffffffffffffffffffffffffffffffffffff1916815560018101919091550180546fffffffffffffffffffffffffffffffff19169055565b60015461271091020490565b90565b6000808080858510610ea557869350610ec3565b878703925085858402811515610eb757fe5b05915081880190508093505b505050949350505050565b60a06040519081016040908152600080835260208301819052908201819052606082018190526080820152905600a165627a7a723058202006b21bd123c97e5aa47d69d98a066c6ac130a7125f23df9c9e6a98a3d99de1002900000000000000000000000000000000000000000000000000000000000001a9

Deployed Bytecode

0x6060604052600436106100b65763ffffffff60e060020a6000350416631ae6b6ee81146100c35780633f4ba83a146100e557806344f91c1e146100f857806359d667a51461016c5780635c975abb146101835780636c54df52146101aa578063762a66a2146101de57806383b5ff8b1461023b5780638456cb591461024e578063859b97fe146102615780638da5cb5b14610283578063961c9ae4146102b25780639f727c27146102dd578063f2fde38b146102f0575b34156100c157600080fd5b005b34156100ce57600080fd5b6100c1600160a060020a036004351660243561030f565b34156100f057600080fd5b6100c1610398565b341561010357600080fd5b61011a600160a060020a0360043516602435610417565b604051600160a060020a0390951685526001608060020a0393841660208601529190921660408085019190915267ffffffffffffffff92831660608501529116608083015260a0909101905180910390f35b6100c1600160a060020a0360043516602435610487565b341561018e57600080fd5b6101966104b9565b604051901515815260200160405180910390f35b34156101b557600080fd5b6101cc600160a060020a03600435166024356104c9565b60405190815260200160405180910390f35b34156101e957600080fd5b610200600160a060020a0360043516602435610511565b604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b341561024657600080fd5b6101cc6105b4565b341561025957600080fd5b6100c16105ba565b341561026c57600080fd5b6100c1600160a060020a036004351660243561063e565b341561028e57600080fd5b61029661068f565b604051600160a060020a03909116815260200160405180910390f35b34156102bd57600080fd5b6100c1600160a060020a036004351660243560443560643560843561069e565b34156102e857600080fd5b6100c1610792565b34156102fb57600080fd5b6100c1600160a060020a03600435166107e5565b6000805460a060020a900460ff16151561032857600080fd5b60005433600160a060020a0390811691161461034357600080fd5b50600160a060020a0382166000908152600260209081526040808320848452909152902061037081610880565b151561037b57600080fd5b80546103939084908490600160a060020a03166108a1565b505050565b60005433600160a060020a039081169116146103b357600080fd5b60005460a060020a900460ff1615156103cb57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60026020818152600093845260408085209091529183529120805460018201549190920154600160a060020a03909216916001608060020a03808316927001000000000000000000000000000000009004169067ffffffffffffffff808216916801000000000000000090041685565b60005460a060020a900460ff161561049e57600080fd5b6104a98282346108f2565b506104b5823383610a40565b5050565b60005460a060020a900460ff1681565b600160a060020a038216600090815260026020908152604080832084845290915281206104f581610880565b151561050057600080fd5b61050981610ac8565b949350505050565b600160a060020a03821660009081526002602090815260408083208484529091528120819081908190819061054581610880565b151561055057600080fd5b80546001820154600290920154600160a060020a03909116996001608060020a038084169a50700100000000000000000000000000000000909304909216975067ffffffffffffffff80821697506801000000000000000090910416945092505050565b60015481565b60005433600160a060020a039081169116146105d557600080fd5b60005460a060020a900460ff16156105ec57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160a060020a0382166000908152600260209081526040808320848452909152902061066a81610880565b151561067557600080fd5b805433600160a060020a0390811691161461037b57600080fd5b600054600160a060020a031681565b60006106a8610ece565b60005460a060020a900460ff16156106bf57600080fd5b846001608060020a0381106106d357600080fd5b846001608060020a0381106106e757600080fd5b8467ffffffffffffffff8111156106fd57600080fd5b33945061070b8a868b610b56565b151561071657600080fd5b6107218a868b610bec565b60a06040519081016040528086600160a060020a03168152602001896001608060020a03168152602001886001608060020a031681526020018767ffffffffffffffff1681526020014267ffffffffffffffff1681525093506107868a8a8688610c5a565b50505050505050505050565b60005433600160a060020a039081169116146107ad57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156107e357fe5b565b60005433600160a060020a0390811691161461080057600080fd5b600160a060020a038116151561081557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6002015460006801000000000000000090910467ffffffffffffffff161190565b6108ab8383610e20565b6108b6838284610a40565b8183600160a060020a03167f018b64b6242d32aa550e95d78985b938d71af5b3f10827b0683f55da1639304860405160405180910390a3505050565b600160a060020a03831660009081526002602090815260408083208584529091528120818080808061092386610880565b151561092e57600080fd5b61093786610ac8565b94508488101561094657600080fd5b8554600160a060020a0316935061095d8a8a610e20565b60008511156109a75761096f85610e82565b92508285039150600160a060020a03841682156108fc0283604051600060405180830381858888f1935050505015156109a757600080fd5b848811156109e45750838703600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156109e457600080fd5b888a600160a060020a03167f6c00bb44a64da29b6a73920d50ff280237d277bda3e1f3cdf4e24392e6839efe8733604051918252600160a060020a031660208201526040908101905180910390a3509298975050505050505050565b6000610a4b84610e8e565b905080600160a060020a03166323b872dd30858560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b6102c65a03f11515610abf57600080fd5b50505050505050565b6002810154600090819068010000000000000000900467ffffffffffffffff16421115610b0e5750600282015468010000000000000000900467ffffffffffffffff1642035b60018301546002840154610b4f916001608060020a0380821692700100000000000000000000000000000000909204169067ffffffffffffffff1684610e91565b9392505050565b600080610b6285610e8e565b905083600160a060020a031681600160a060020a0316636352211e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bbd57600080fd5b6102c65a03f11515610bce57600080fd5b50505060405180519050600160a060020a0316149150509392505050565b6000610bf784610e8e565b905080600160a060020a03166323b872dd84308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610aae57600080fd5b603c826060015167ffffffffffffffff161015610c7657600080fd5b600160a060020a0384166000908152600260209081526040808320868452909152902082908151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316700100000000000000000000000000000000029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560808201516002909101805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555082600160a060020a0385167febc6e332a2c695c53d77b2922a18bcf3ab024549f5f2bfa67e0875ec29d59d4660208501516001608060020a031685604001516001608060020a0316866060015167ffffffffffffffff16866040519384526020840192909252604080840191909152600160a060020a0390911660608301526080909101905180910390a350505050565b600160a060020a039091166000908152600260208181526040808420948452939052918120805473ffffffffffffffffffffffffffffffffffffffff1916815560018101919091550180546fffffffffffffffffffffffffffffffff19169055565b60015461271091020490565b90565b6000808080858510610ea557869350610ec3565b878703925085858402811515610eb757fe5b05915081880190508093505b505050949350505050565b60a06040519081016040908152600080835260208301819052908201819052606082018190526080820152905600a165627a7a723058202006b21bd123c97e5aa47d69d98a066c6ac130a7125f23df9c9e6a98a3d99de10029

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

00000000000000000000000000000000000000000000000000000000000001a9

-----Decoded View---------------
Arg [0] : _ownerCut (uint256): 425

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


Swarm Source

bzzr://2006b21bd123c97e5aa47d69d98a066c6ac130a7125f23df9c9e6a98a3d99de1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Contract of Axie Infinity's Axie Clock Auction

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.