Contract 0x55e851ecb4a8ee090f7b097ba1804db94d90175e

 

TxHash Block Age From To Value [TxFee]
0xbbb483bf53f445847942010c06140ab25b26f8f120ea034db6e8e52cbc2acf9e741404017 hrs ago0x1a4c79ae922b0f0856c0cb4e17a00e7440878688 IN  BC: Sale Market 40 Ether0.000072406
0x8baa1d14c0ba724e333d8f364910372c8cc51dd7d42bddd2d442e202b6adcf63728942520 days 3 hrs ago0x4a155d8212c019270b52b0a2904173d580c7004e IN  BC: Sale Market 40 Ether0.000127218
0x0b7a67edd1ac082a5a3926845343d4caadda8320ca021ed75f2ca0ad012ce4fc727545422 days 18 hrs ago0xeb5e2b1b21ffaed1ae4a288e55cca20711211972 IN  BC: Sale Market 40 Ether0.0002247518
0x44f7900bc2cea2a9a43282e8e3921c998565e1af63608147c73ec04c92fed695727017523 days 23 hrs ago0x740ee99af4a36ab4fa49e52a3ec02f0d3cf7078f IN  BC: Sale Market 40.03 Ether0.00052948
0x489941021cf2ca7ea3da77e8a3ce2b4acbdb4744a7ad92c9fe4245caa401d88c724696929 days 10 hrs ago0xac2dbfd7f972c0baa8779f305407d68dbf1d3d3d IN  BC: Sale Market 40.012000001 Ether0.000067629
0x5033ae37d7d067c23a11feaf08109dc05f210a2c949c415574416dc6442ab547721363137 days 8 hrs ago0x3e17af068294b08ec3e0b9f0063186a8f467baf1 IN  BC: Sale Market 40 Ether0.0001339511
0xba0c2a62fc447945e2a8b4d3557e9f1e32bc64e77ea99a056412ea8462a3b979719102142 days 9 hrs ago0x6014a2c9a774b33f4ae698d793685cc0731b7d23 IN  BC: Sale Market 40.020213349765432 Ether0.000270516
0xec5b9f33d04a5de945572e4d8d3fa88135eb662e7809713a72b57a4fa70238e3719102142 days 9 hrs ago0x6014a2c9a774b33f4ae698d793685cc0731b7d23 IN  BC: Sale Market 40.023957200074074 Ether0.000202887
0xfa58993d02eac0b9c7631d2de248b9e38845565f88fd6c73431e1e886c153653717874244 days 21 hrs ago0x7b5263f47c96dfbb03a71443d29a2af18a130906 IN  BC: Sale Market 40.15 Ether0.000317688
0xdb4d84b9489f966a0ff82ed406dc47ff98317bbfd5148334012b4e1f49dfc783712047156 days 16 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.000063609
0xe5acd4eab9b3debd01ff738ae3fe6d45ef844a47c66224a4bce876ad69865166712046356 days 16 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.000063609
0xee14e4b450a00df5a8cf0906343f384fdf38e511ae1be5e80bf781bd0d9869f3712001656 days 18 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.000084812
0xe7b8c5ce84c265eeffa90b38403374a8790edeb833f333ec4be2ffd697d5e8ff711972556 days 20 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.0001102556
0xacbd6f1c921ccbfbf56d21d8dd0f74046788f0941ab13d1af6a6ddfe06a51236710444459 days 20 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.0001102556
0x9a91ecbb25a8d63271c6d5574def3a4e9c1e450d998c262f9486bce6752c3b86709046462 days 9 hrs ago0xc6fbe95af846af44b312ddb9da244d5227fb565b IN  BC: Sale Market 40.035 Ether0.0000741272
0x92ac438e749e061288486a82b793c21f742579a10cae4f6ec9450cadcc60a175708875862 days 17 hrs ago0xeb5e2b1b21ffaed1ae4a288e55cca20711211972 IN  BC: Sale Market 40 Ether0.0000763308
0x0e5f822efa8463d418344d6897eaee19aabf19417297b7b5fe4e96aadef865fa705017469 days 14 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  BC: Sale Market 40 Ether0.0000508872
0x240c39319f835a3b9a7e302698abf5489948f280f44c59938f8c9574f1dc9aa4697262883 days 5 hrs ago0xa86e9e5747e6abf3eab1b29832636e88a1550336 IN  BC: Sale Market 40.004000001 Ether0.000079422
0xbb5bfd3e5ebf07d6ed209395f08bdd9e2887ca8e2bc42e6f57bc935b7b218334695405186 days 8 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea IN  BC: Sale Market 40.036000000999999 Ether0.000158844
0xa6e3d6d1e52a30e25da548c25164530b7c8994a98a4e061b771b9fd371a2ef24695400686 days 8 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea IN  BC: Sale Market 40.035000001 Ether0.000158844
0x7e160fc2031c8297be164c88e94094c6e9df53ac0cc2e3eddd9837140aa29d54695231686 days 15 hrs ago0xd311e934d9a1d9f71004976cd0268fd25f9cb77f IN  BC: Sale Market 40 Ether0.000106015
0x7a5986c5900c27b66b544f9239719083573d4d4d70014c0feb3c883942c5096b694236588 days 7 hrs ago0x39c4e59bea399f09818c817a7ad96ed4891396ef IN  BC: Sale Market 40.248000002 Ether0.0001641388
0x8b63b55f1ab1e8de594f82d5cdd548c795efa66bc664d85f6b51ab007672b60e694139188 days 11 hrs ago0x18d1b53c127e9432f1a5d54512dea973ca02ba82 IN  BC: Sale Market 40.040000001 Ether0.000158844
0x510527e3a96c9d3f9d2cc4ff826fa14726e211f695531d5f5d423f4a8f14e3f8693576489 days 10 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea IN  BC: Sale Market 40 Ether0.0000890526
0x492b1a66842e22cbd427b153dad0aac7f49a13e771a5aa0f1c925620c8e94caa692963290 days 11 hrs ago0x39c4e59bea399f09818c817a7ad96ed4891396ef IN  BC: Sale Market 40.284000000999999 Ether0.0001111908
[ 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
0x44f7900bc2cea2a9a43282e8e3921c998565e1af63608147c73ec04c92fed695727017523 days 23 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xd736144c39dac0122d70a2ca6b1725a67b0fc00b0.0288 Ether
0xfa58993d02eac0b9c7631d2de248b9e38845565f88fd6c73431e1e886c153653717874244 days 21 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf7320033e7ab1d4ed5be95c7b62c6ca670cca3250.143999999999999995 Ether
0x9a91ecbb25a8d63271c6d5574def3a4e9c1e450d998c262f9486bce6752c3b86709046462 days 9 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xd736144c39dac0122d70a2ca6b1725a67b0fc00b0.033600000000000004 Ether
0x240c39319f835a3b9a7e302698abf5489948f280f44c59938f8c9574f1dc9aa4697262883 days 5 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x6f436add6c41f048ab796c34b04e0756798c54d00.00384 Ether
0xbb5bfd3e5ebf07d6ed209395f08bdd9e2887ca8e2bc42e6f57bc935b7b218334695405186 days 8 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.034559999999999997 Ether
0xa6e3d6d1e52a30e25da548c25164530b7c8994a98a4e061b771b9fd371a2ef24695400686 days 8 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.033600000000000004 Ether
0x7a5986c5900c27b66b544f9239719083573d4d4d70014c0feb3c883942c5096b694236588 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf679de224c6f685f25af2c91f4c8775bbce27a460.238080000959999998 Ether
0x8b63b55f1ab1e8de594f82d5cdd548c795efa66bc664d85f6b51ab007672b60e694139188 days 11 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x9852f8956973e8830e08cad3f2a7f6d04e8d837e0.0384 Ether
0x492b1a66842e22cbd427b153dad0aac7f49a13e771a5aa0f1c925620c8e94caa692963290 days 11 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x7feae9b2947dce8b4d38d805382aee4e9a41f86f0.272639999999999976 Ether
0x5ded29a666e5c532486fbb4c3ffe5593939faef824667545d96ca9ba8a28a846691065093 days 17 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xb793b04a2240a3171afedfe95de37e945d8931450.044256000960000001 Ether
0x7ad4ec5c27fbb5bebb1f36eb6a38bdb4e8b5965bbad14093df61d742bcd8385e691064693 days 17 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xa691ca9f1958c09489185231ac509fbf0e03a94d0.010077624154589373 Ether
0x85a4cb5a7d69d9a140d67e87f6b3cc226d68b173c5ae3dac4c2df5c2e7e6f434691052993 days 17 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf7320033e7ab1d4ed5be95c7b62c6ca670cca3250.01756800096 Ether
0x710e558b4dbc483edf577ea31914c3d556515028b2382caf99ee7e7816eb904d688736997 days 15 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xdd6c056d816278dc8b8a365be5a5c32ee1fb62f40.008645575075075076 Ether
0xb0404722d55f183c802c04206489da3065abd506eebcfab392adecce2527b9466847862104 days 3 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x6f2433858e558ba80cdaf8bf50f2ce09a211aee20.0096 Ether
0x9287e5b291d3432d3ac2ac14b50fc44eb40928a3a53055e4ac4ffa7bfa38b8d46847858104 days 3 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xeb5e2b1b21ffaed1ae4a288e55cca207112119720.0096 Ether
0x6ce24bf5a69c5e092949a6d0607d0a9806a8769aad0d51964ef8b4bd13f7b1c56816536109 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.034559999999999997 Ether
0x7accc6f9e943bf3bd3674df233d1fc52e06459132b2c7d673e8a74c9c46ae9f66776699115 days 21 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.02448 Ether
0x3147f9271ecdfa75c8624e7ce7b3feca05380adc5ac6ba5a252bc0147c46c3826774407116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.15264 Ether
0x4ce5c912d7334cbfe3ad7f06c6d7e71b01e66e464251df3e3c8a340233955f516774301116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.004704 Ether
0x1657f0c29860104f8e5881cb69478585ae36916313ab246f741d09625d2ff5896774296116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0xe0c9384cc1a3fada4d2090a54646c1429ad6c418f663be2f4d310f0e53a860986774293116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0x8282f653d5ddf8c1761c4c75e105f2abe272d8899c07effc94b87c800248772f6774293116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0xb0fb97fe25980fe16d3942607b1df7075f16d99d2097a7bd238e962d3f9706e46774269116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.019104 Ether
0x616ac874325227b449e49a48001ca02465a1b9c7663d860355ec48bb1c44e2a16774267116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.02304 Ether
0xa6141cba365015a6aa2a20c4eac4e0a87d599d38df2cf917934ffe178d33522f6774262116 days 7 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.017279999999999999 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
SaleMarket

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.20;



contract CutieCoreInterface
{
    function isCutieCore() pure public returns (bool);

    function transferFrom(address _from, address _to, uint256 _cutieId) external;
    function transfer(address _to, uint256 _cutieId) external;

    function ownerOf(uint256 _cutieId)
        external
        view
        returns (address owner);

    function getCutie(uint40 _id)
        external
        view
        returns (
        uint256 genes,
        uint40 birthTime,
        uint40 cooldownEndTime,
        uint40 momId,
        uint40 dadId,
        uint16 cooldownIndex,
        uint16 generation
    );

    function getGenes(uint40 _id)
        public
        view
        returns (
        uint256 genes
    );


    function getCooldownEndTime(uint40 _id)
        public
        view
        returns (
        uint40 cooldownEndTime
    );

    function getCooldownIndex(uint40 _id)
        public
        view
        returns (
        uint16 cooldownIndex
    );


    function getGeneration(uint40 _id)
        public
        view
        returns (
        uint16 generation
    );

    function getOptional(uint40 _id)
        public
        view
        returns (
        uint64 optional
    );


    function changeGenes(
        uint40 _cutieId,
        uint256 _genes)
        public;

    function changeCooldownEndTime(
        uint40 _cutieId,
        uint40 _cooldownEndTime)
        public;

    function changeCooldownIndex(
        uint40 _cutieId,
        uint16 _cooldownIndex)
        public;

    function changeOptional(
        uint40 _cutieId,
        uint64 _optional)
        public;

    function changeGeneration(
        uint40 _cutieId,
        uint16 _generation)
        public;
}







/**
 * @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() public {
    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) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}



/**
 * @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;
    emit Pause();
  }

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



/// @title Auction Market for Blockchain Cuties.
/// @author https://BlockChainArchitect.io
contract MarketInterface 
{
    function withdrawEthFromBalance() external;    

    function createAuction(uint40 _cutieId, uint128 _startPrice, uint128 _endPrice, uint40 _duration, address _seller) public payable;

    function bid(uint40 _cutieId) public payable;

    function cancelActiveAuctionWhenPaused(uint40 _cutieId) public;

	function getAuctionInfo(uint40 _cutieId)
        public
        view
        returns
    (
        address seller,
        uint128 startPrice,
        uint128 endPrice,
        uint40 duration,
        uint40 startedAt,
        uint128 featuringFee
    );
}


/// @title Auction Market for Blockchain Cuties.
/// @author https://BlockChainArchitect.io
contract Market is MarketInterface, Pausable
{
    // Shows the auction on an Cutie Token
    struct Auction {
        // Price (in wei) at the beginning of auction
        uint128 startPrice;
        // Price (in wei) at the end of auction
        uint128 endPrice;
        // Current owner of Token
        address seller;
        // Auction duration in seconds
        uint40 duration;
        // Time when auction started
        // NOTE: 0 if this auction has been concluded
        uint40 startedAt;
        // Featuring fee (in wei, optional)
        uint128 featuringFee;
    }

    // Reference to contract that tracks ownership
    CutieCoreInterface public coreContract;

    // Cut owner takes on each auction, in basis points - 1/100 of a per cent.
    // Values 0-10,000 map to 0%-100%
    uint16 public ownerFee;

    // Map from token ID to their corresponding auction.
    mapping (uint40 => Auction) public cutieIdToAuction;

    event AuctionCreated(uint40 cutieId, uint128 startPrice, uint128 endPrice, uint40 duration, uint128 fee);
    event AuctionSuccessful(uint40 cutieId, uint128 totalPrice, address winner);
    event AuctionCancelled(uint40 cutieId);

    /// @dev disables sending fund to this contract
    function() external {}

    modifier canBeStoredIn128Bits(uint256 _value) 
    {
        require(_value <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
        _;
    }

    // @dev Adds to the list of open auctions and fires the
    //  AuctionCreated event.
    // @param _cutieId The token ID is to be put on auction.
    // @param _auction To add an auction.
    // @param _fee Amount of money to feature auction
    function _addAuction(uint40 _cutieId, Auction _auction) internal
    {
        // Require that all auctions have a duration of
        // at least one minute. (Keeps our math from getting hairy!)
        require(_auction.duration >= 1 minutes);

        cutieIdToAuction[_cutieId] = _auction;
        
        emit AuctionCreated(
            _cutieId,
            _auction.startPrice,
            _auction.endPrice,
            _auction.duration,
            _auction.featuringFee
        );
    }

    // @dev Returns true if the token is claimed by the claimant.
    // @param _claimant - Address claiming to own the token.
    function _isOwner(address _claimant, uint256 _cutieId) internal view returns (bool)
    {
        return (coreContract.ownerOf(_cutieId) == _claimant);
    }

    // @dev Transfers the token owned by this contract to another address.
    // Returns true when the transfer succeeds.
    // @param _receiver - Address to transfer token to.
    // @param _cutieId - Token ID to transfer.
    function _transfer(address _receiver, uint40 _cutieId) internal
    {
        // it will throw if transfer fails
        coreContract.transfer(_receiver, _cutieId);
    }

    // @dev Escrows the token and assigns ownership to this contract.
    // Throws if the escrow fails.
    // @param _owner - Current owner address of token to escrow.
    // @param _cutieId - Token ID the approval of which is to be verified.
    function _escrow(address _owner, uint40 _cutieId) internal
    {
        // it will throw if transfer fails
        coreContract.transferFrom(_owner, this, _cutieId);
    }

    // @dev just cancel auction.
    function _cancelActiveAuction(uint40 _cutieId, address _seller) internal
    {
        _removeAuction(_cutieId);
        _transfer(_seller, _cutieId);
        emit AuctionCancelled(_cutieId);
    }

    // @dev Calculates the price and transfers winnings.
    // Does not transfer token ownership.
    function _bid(uint40 _cutieId, uint128 _bidAmount)
        internal
        returns (uint128)
    {
        // Get a reference to the auction struct
        Auction storage auction = cutieIdToAuction[_cutieId];

        require(_isOnAuction(auction));

        // Check that bid > current price
        uint128 price = _currentPrice(auction);
        require(_bidAmount >= price);

        // Provide a reference to the seller before the auction struct is deleted.
        address seller = auction.seller;

        _removeAuction(_cutieId);

        // Transfer proceeds to seller (if there are any!)
        if (price > 0) {
            uint128 fee = _computeFee(price);
            uint128 sellerValue = price - fee;

            seller.transfer(sellerValue);
        }

        emit AuctionSuccessful(_cutieId, price, msg.sender);

        return price;
    }

    // @dev Removes from the list of open auctions.
    // @param _cutieId - ID of token on auction.
    function _removeAuction(uint40 _cutieId) internal
    {
        delete cutieIdToAuction[_cutieId];
    }

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

    // @dev calculate current price of auction. 
    //  When testing, make this function public and turn on
    //  `Current price calculation` test suite.
    function _computeCurrentPrice(
        uint128 _startPrice,
        uint128 _endPrice,
        uint40 _duration,
        uint40 _secondsPassed
    )
        internal
        pure
        returns (uint128)
    {
        if (_secondsPassed >= _duration) {
            return _endPrice;
        } else {
            int256 totalPriceChange = int256(_endPrice) - int256(_startPrice);
            int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration);
            uint128 currentPrice = _startPrice + uint128(currentPriceChange);
            
            return currentPrice;
        }
    }
    // @dev return current price of token.
    function _currentPrice(Auction storage _auction)
        internal
        view
        returns (uint128)
    {
        uint40 secondsPassed = 0;

        uint40 timeNow = uint40(now);
        if (timeNow > _auction.startedAt) {
            secondsPassed = timeNow - _auction.startedAt;
        }

        return _computeCurrentPrice(
            _auction.startPrice,
            _auction.endPrice,
            _auction.duration,
            secondsPassed
        );
    }

    // @dev Calculates owner's cut of a sale.
    // @param _price - Sale price of cutie.
    function _computeFee(uint128 _price) internal view returns (uint128)
    {
        return _price * ownerFee / 10000;
    }

    // @dev Remove all Ether from the contract with the owner's cuts. Also, remove any Ether sent directly to the contract address.
    //  Transfers to the token contract, but can be called by
    //  the owner or the token contract.
    function withdrawEthFromBalance() external
    {
        address coreAddress = address(coreContract);

        require(
            msg.sender == owner ||
            msg.sender == coreAddress
        );
        coreAddress.transfer(address(this).balance);
    }

    // @dev create and begin new auction.
    function createAuction(uint40 _cutieId, uint128 _startPrice, uint128 _endPrice, uint40 _duration, address _seller)
        public whenNotPaused payable
    {
        require(_isOwner(msg.sender, _cutieId));
        _escrow(msg.sender, _cutieId);
        Auction memory auction = Auction(
            _startPrice,
            _endPrice,
            _seller,
            _duration,
            uint40(now),
            uint128(msg.value)
        );
        _addAuction(_cutieId, auction);
    }

    // @dev Set the reference to cutie ownership contract. Verify the owner's fee.
    //  @param fee should be between 0-10,000.
    function setup(address _coreContractAddress, uint16 _fee) public onlyOwner
    {
        require(_fee <= 10000);

        ownerFee = _fee;
        
        CutieCoreInterface candidateContract = CutieCoreInterface(_coreContractAddress);
        require(candidateContract.isCutieCore());
        coreContract = candidateContract;
    }

    // @dev Set the owner's fee.
    //  @param fee should be between 0-10,000.
    function setFee(uint16 _fee) public onlyOwner
    {
        require(_fee <= 10000);

        ownerFee = _fee;
    }

    // @dev bid on auction. Complete it and transfer ownership of cutie if enough ether was given.
    function bid(uint40 _cutieId) public payable whenNotPaused canBeStoredIn128Bits(msg.value)
    {
        // _bid throws if something failed.
        _bid(_cutieId, uint128(msg.value));
        _transfer(msg.sender, _cutieId);
    }

    // @dev Returns auction info for a token on auction.
    // @param _cutieId - ID of token on auction.
    function getAuctionInfo(uint40 _cutieId)
        public
        view
        returns
    (
        address seller,
        uint128 startPrice,
        uint128 endPrice,
        uint40 duration,
        uint40 startedAt,
        uint128 featuringFee
    ) {
        Auction storage auction = cutieIdToAuction[_cutieId];
        require(_isOnAuction(auction));
        return (
            auction.seller,
            auction.startPrice,
            auction.endPrice,
            auction.duration,
            auction.startedAt,
            auction.featuringFee
        );
    }

    // @dev Returns auction info for a token on auction.
    // @param _cutieId - ID of token on auction.
    function isOnAuction(uint40 _cutieId)
        public
        view
        returns (bool) 
    {
        return cutieIdToAuction[_cutieId].startedAt > 0;
    }

/*
    /// @dev Import cuties from previous version of Core contract.
    /// @param _oldAddress Old core contract address
    /// @param _fromIndex (inclusive)
    /// @param _toIndex (inclusive)
    function migrate(address _oldAddress, uint40 _fromIndex, uint40 _toIndex) public onlyOwner whenPaused
    {
        Market old = Market(_oldAddress);

        for (uint40 i = _fromIndex; i <= _toIndex; i++)
        {
            if (coreContract.ownerOf(i) == _oldAddress)
            {
                address seller;
                uint128 startPrice;
                uint128 endPrice;
                uint40 duration;
                uint40 startedAt;
                uint128 featuringFee;   
                (seller, startPrice, endPrice, duration, startedAt, featuringFee) = old.getAuctionInfo(i);

                Auction memory auction = Auction({
                    seller: seller, 
                    startPrice: startPrice, 
                    endPrice: endPrice, 
                    duration: duration, 
                    startedAt: startedAt, 
                    featuringFee: featuringFee
                });
                _addAuction(i, auction);
            }
        }
    }*/

    // @dev Returns the current price of an auction.
    function getCurrentPrice(uint40 _cutieId)
        public
        view
        returns (uint128)
    {
        Auction storage auction = cutieIdToAuction[_cutieId];
        require(_isOnAuction(auction));
        return _currentPrice(auction);
    }

    // @dev Cancels unfinished auction and returns token to owner. 
    // Can be called when contract is paused.
    function cancelActiveAuction(uint40 _cutieId) public
    {
        Auction storage auction = cutieIdToAuction[_cutieId];
        require(_isOnAuction(auction));
        address seller = auction.seller;
        require(msg.sender == seller);
        _cancelActiveAuction(_cutieId, seller);
    }

    // @dev Cancels auction when contract is on pause. Option is available only to owners in urgent situations. Tokens returned to seller.
    //  Used on Core contract upgrade.
    function cancelActiveAuctionWhenPaused(uint40 _cutieId) whenPaused onlyOwner public
    {
        Auction storage auction = cutieIdToAuction[_cutieId];
        require(_isOnAuction(auction));
        _cancelActiveAuction(_cutieId, auction.seller);
    }
}


/// @title Auction market for cuties sale 
/// @author https://BlockChainArchitect.io
contract SaleMarket is Market
{
    // @dev Sanity check reveals that the
    //  auction in our setSaleAuctionAddress() call is right.
    bool public isSaleMarket = true;
    

    // @dev create and start a new auction
    // @param _cutieId - ID of cutie to auction, sender must be owner.
    // @param _startPrice - Price of item (in wei) at the beginning of auction.
    // @param _endPrice - Price of item (in wei) at the end of auction.
    // @param _duration - Length of auction (in seconds).
    // @param _seller - Seller
    function createAuction(
        uint40 _cutieId,
        uint128 _startPrice,
        uint128 _endPrice,
        uint40 _duration,
        address _seller
    )
        public
        payable
    {
        require(msg.sender == address(coreContract));
        _escrow(_seller, _cutieId);
        Auction memory auction = Auction(
            _startPrice,
            _endPrice,
            _seller,
            _duration,
            uint40(now),
            uint128(msg.value)
        );
        _addAuction(_cutieId, auction);
    }

    // @dev LastSalePrice is updated if seller is the token contract.
    // Otherwise, default bid method is used.
    function bid(uint40 _cutieId)
        public
        payable
        canBeStoredIn128Bits(msg.value)
    {
        // _bid verifies token ID size
        _bid(_cutieId, uint128(msg.value));
        _transfer(msg.sender, _cutieId);

    }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"isOnAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSaleMarket","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEthFromBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"getCurrentPrice","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint40"}],"name":"cutieIdToAuction","outputs":[{"name":"startPrice","type":"uint128"},{"name":"endPrice","type":"uint128"},{"name":"seller","type":"address"},{"name":"duration","type":"uint40"},{"name":"startedAt","type":"uint40"},{"name":"featuringFee","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","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":"_fee","type":"uint16"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"cancelActiveAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"getAuctionInfo","outputs":[{"name":"seller","type":"address"},{"name":"startPrice","type":"uint128"},{"name":"endPrice","type":"uint128"},{"name":"duration","type":"uint40"},{"name":"startedAt","type":"uint40"},{"name":"featuringFee","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"cancelActiveAuctionWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"},{"name":"_startPrice","type":"uint128"},{"name":"_endPrice","type":"uint128"},{"name":"_duration","type":"uint40"},{"name":"_seller","type":"address"}],"name":"createAuction","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"ownerFee","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coreContractAddress","type":"address"},{"name":"_fee","type":"uint16"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coreContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cutieId","type":"uint40"},{"indexed":false,"name":"startPrice","type":"uint128"},{"indexed":false,"name":"endPrice","type":"uint128"},{"indexed":false,"name":"duration","type":"uint40"},{"indexed":false,"name":"fee","type":"uint128"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cutieId","type":"uint40"},{"indexed":false,"name":"totalPrice","type":"uint128"},{"indexed":false,"name":"winner","type":"address"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cutieId","type":"uint40"}],"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

6060604052600080546003805460ff19166001179055600160a060020a033316600160a860020a03199091161790556110b08061003d6000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416632177885d81146100fa5780633f4ba83a1461012b5780635c975abb1461013e5780636066b06614610151578063776247c4146101645780637ea310d41461017757806381baab24146101b05780638456cb59146102205780638da5cb5b146102335780638e0055531461026257806398c9faac1461027c5780639ccaec9814610299578063b2fb3b901461030b578063c170fd5414610328578063c1d1faf31461033a578063d5b2a01a14610373578063e410a0c61461039d578063e80db5db146103c3578063f2fde38b146103d6575b34156100f857600080fd5b005b341561010557600080fd5b61011764ffffffffff600435166103f5565b604051901515815260200160405180910390f35b341561013657600080fd5b6100f861041e565b341561014957600080fd5b61011761049d565b341561015c57600080fd5b6101176104ad565b341561016f57600080fd5b6100f86104b6565b341561018257600080fd5b61019464ffffffffff60043516610535565b6040516001608060020a03909116815260200160405180910390f35b34156101bb57600080fd5b6101cd64ffffffffff6004351661056f565b6040516001608060020a0396871681529486166020860152600160a060020a0390931660408086019190915264ffffffffff928316606086015291166080840152921660a082015260c001905180910390f35b341561022b57600080fd5b6100f86105d8565b341561023e57600080fd5b61024661065c565b604051600160a060020a03909116815260200160405180910390f35b341561026d57600080fd5b6100f861ffff6004351661066b565b341561028757600080fd5b6100f864ffffffffff600435166106cc565b34156102a457600080fd5b6102b664ffffffffff60043516610725565b604051600160a060020a0390961686526001608060020a03948516602087015292841660408087019190915264ffffffffff928316606087015291166080850152911660a083015260c0909101905180910390f35b341561031657600080fd5b6100f864ffffffffff600435166107c0565b6100f864ffffffffff6004351661083c565b6100f864ffffffffff6004358116906001608060020a036024358116916044359091169060643516600160a060020a0360843516610866565b341561037e57600080fd5b610386610907565b60405161ffff909116815260200160405180910390f35b34156103a857600080fd5b6100f8600160a060020a036004351661ffff60243516610918565b34156103ce57600080fd5b610246610a04565b34156103e157600080fd5b6100f8600160a060020a0360043516610a13565b64ffffffffff90811660009081526002602052604081206001015460c860020a90049091161190565b60005433600160a060020a0390811691161461043957600080fd5b60005460a060020a900460ff16151561045157600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60005460a060020a900460ff1681565b60035460ff1681565b600154600054600160a060020a0391821691338116911614806104ea575080600160a060020a031633600160a060020a0316145b15156104f557600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561053257600080fd5b50565b64ffffffffff8116600090815260026020526040812061055481610aae565b151561055f57600080fd5b61056881610ac7565b9392505050565b60026020819052600091825260409091208054600182015491909201546001608060020a03808416937001000000000000000000000000000000009004811692600160a060020a0381169264ffffffffff60a060020a830481169360c860020a90930416911686565b60005433600160a060020a039081169116146105f357600080fd5b60005460a060020a900460ff161561060a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b60005433600160a060020a0390811691161461068657600080fd5b61271061ffff8216111561069957600080fd5b6001805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b64ffffffffff81166000908152600260205260408120906106ec82610aae565b15156106f757600080fd5b506001810154600160a060020a03908116903316811461071657600080fd5b6107208382610b4e565b505050565b64ffffffffff811660009081526002602052604081208190819081908190819061074e81610aae565b151561075957600080fd5b60018101548154600290920154600160a060020a0382169a6001608060020a038085169b507001000000000000000000000000000000009094048416995064ffffffffff60a060020a84048116995060c860020a9093049092169650919091169350915050565b6000805460a060020a900460ff1615156107d957600080fd5b60005433600160a060020a039081169116146107f457600080fd5b5064ffffffffff8116600090815260026020526040902061081481610aae565b151561081f57600080fd5b6001810154610838908390600160a060020a0316610b4e565b5050565b346001608060020a0381111561085157600080fd5b61085b8234610ba0565b506108383383610cd3565b61086e61104f565b60015433600160a060020a0390811691161461088957600080fd5b6108938287610d44565b60c060405190810160405280866001608060020a03168152602001856001608060020a0316815260200183600160a060020a031681526020018464ffffffffff1681526020014264ffffffffff168152602001346001608060020a031681525090506108ff8682610dad565b505050505050565b60015460a060020a900461ffff1681565b6000805433600160a060020a0390811691161461093457600080fd5b61271061ffff8316111561094757600080fd5b506001805475ffff0000000000000000000000000000000000000000191660a060020a61ffff84160217905581600160a060020a038116634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109b157600080fd5b5af115156109be57600080fd5b5050506040518051905015156109d357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600154600160a060020a031681565b60005433600160a060020a03908116911614610a2e57600080fd5b600160a060020a0381161515610a4357600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60010154600060c860020a90910464ffffffffff161190565b60018101546000908190429064ffffffffff60c860020a90910481169082161115610b0457600184015460c860020a900464ffffffffff16810391505b83546001850154610b46916001608060020a0380821692700100000000000000000000000000000000909204169060a060020a900464ffffffffff1685610f63565b949350505050565b610b5782610fca565b610b618183610cd3565b7ff6680ade663631ec4dd74f7eaa1f75125361380cd50a22f969e9acfa5f5367048260405164ffffffffff909116815260200160405180910390a15050565b64ffffffffff8216600090815260026020526040812081808080610bc385610aae565b1515610bce57600080fd5b610bd785610ac7565b93506001608060020a038085169088161015610bf257600080fd5b6001850154600160a060020a03169250610c0b88610fca565b6000846001608060020a03161115610c6757610c2684611028565b915050808303600160a060020a0383166001608060020a03821680156108fc0290604051600060405180830381858888f193505050501515610c6757600080fd5b7f8500e47909916e51e97e4880e742d8b9af1afaeb9ea54166947cf42e6616b11788853360405164ffffffffff90931683526001608060020a039091166020830152600160a060020a03166040808301919091526060909101905180910390a150919695505050505050565b600154600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a03909216600483015264ffffffffff166024820152604401600060405180830381600087803b1515610d3057600080fd5b5af11515610d3d57600080fd5b5050505050565b600154600160a060020a03166323b872dd83308460405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015264ffffffffff9091166044820152606401600060405180830381600087803b1515610d3057600080fd5b603c816060015164ffffffffff161015610dc657600080fd5b64ffffffffff821660009081526002602052604090208190815181546fffffffffffffffffffffffffffffffff19166001608060020a0391909116178155602082015181546001608060020a03918216700100000000000000000000000000000000029116178155604082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548164ffffffffff021916908364ffffffffff16021790555060a082015160029190910180546fffffffffffffffffffffffffffffffff19166001608060020a03909216919091179055507f10812469e6e641cdef133a0556aa1bfd46bcd460e603da6af3233f8a6e242f6a828251836020015184606001518560a0015160405164ffffffffff95861681526001608060020a03948516602082015292841660408085019190915291909416606083015292909116608082015260a001905180910390a15050565b600080808064ffffffffff80871690861610610f8157869350610fbf565b876001608060020a0316876001608060020a03160392508564ffffffffff168564ffffffffff168402811515610fb357fe5b05915081880190508093505b505050949350505050565b64ffffffffff16600090815260026020819052604082209182556001820180547fffff0000000000000000000000000000000000000000000000000000000000001690550180546fffffffffffffffffffffffffffffffff19169055565b6001546000906127109060a060020a900461ffff1683026001608060020a03160492915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820152905600a165627a7a723058205f212fe896014f2d0d159ed6c7949ef40e5cc1541135a3776a565dc716f1d4190029

Swarm Source

bzzr://5f212fe896014f2d0d159ed6c7949ef40e5cc1541135a3776a565dc716f1d419
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.