Contract 0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b

 

Contract Overview

BC: Breeding Market
Balance:
0.517153794996371975 Ether

EtherValue:
$70.61 (@ $136.53/ETH)

Token:
TxHash Block Age From To Value [TxFee]
0x7623d32d94f80c1b5770406818602bab45f1731d8d66457e9db9496e8def502e741846412 mins ago0x621c2515db874a55b1327d5b8925b26729ca0a42 IN  BC: Breeding Market0 Ether0.0001441804
0x84c6fe24aa6c65275b9a62dabbe1bff61d1c514420d4e972e74cab664f0b8f78741554611 hrs 11 mins ago0x8b3ad493c077e894a034db7eb53e8285560298fd IN  BC: Breeding Market0 Ether0.000042406
0x4e7bc9951747b5679348fbf6515c8e85c3117c124597ad60e37347e03c7952b7741325819 hrs 43 mins ago0x6d099941090264341346225f126ecbe414be847a IN  BC: Breeding Market0 Ether0.00006711
0x5a832d5c345c9a659446e85598bbcb9137234ca5ae89f6c698bc09d15587125e741325119 hrs 44 mins ago0x6d099941090264341346225f126ecbe414be847a IN  BC: Breeding Market0 Ether0.000172218
0xbecd896a4696e26e9ff747505bf9e3bc6cad69dc5c3538287e739b742df7225874037672 days 7 hrs ago0xaa3d6d6f25dc557372898415ab71f2433c12a9ea IN  BC: Breeding Market0 Ether0.000084812
0xee014b5c96a7d50e59a410169aadf2f167af99118cef7f3f02a9f662d5ca597574023992 days 12 hrs ago0xbf7257d7b61368b397d72c50a95d057ff3235322 IN  BC: Breeding Market0 Ether0.000084812
0x218d31d4a94fd2f9798a1a6b19c8460f9cbf28f33e8105685b3318f20b82083f74011952 days 16 hrs ago0xdb4d2978378572c720931cf2096b128e9876338a IN  BC: Breeding Market0 Ether0.000114812
0xb3d3ae2d6bd81dfb805308855fe5281b8af013122788d32ad36cca0ee61f948573937203 days 20 hrs ago0x99531aa682dca2570555e052b33531d77081e5b1 IN  BC: Breeding Market0 Ether0.000094183726
0xf479e61b40f9d6c98ea0567c39d3a961a26e57f5d341309d64d4e920d1bc7ddb73880584 days 18 hrs ago0x7a3028265d4d7a4acf136b93951cc8cd2bd5219a IN  BC: Breeding Market0 Ether0.00004474
0x015d54c3b365aead9347ac1cb6202f51c29287584731202bfe394687be5a5c0273880554 days 18 hrs ago0x7a3028265d4d7a4acf136b93951cc8cd2bd5219a IN  BC: Breeding Market0 Ether0.000114812
0xdb579203e1576c20d1c96ef1a82f8393ebd04bbdaa72d020c454027696338eee73838205 days 9 hrs ago0x4a0010c14ae9c0e7cd07a10a8860ccc9929afa10 IN  BC: Breeding Market0 Ether0.000084812
0x7b6ecf97c3f3d1adfc4fdcca6a1e576d7433fa0f250f82e38de13701ca21ccf073838185 days 9 hrs ago0x4a0010c14ae9c0e7cd07a10a8860ccc9929afa10 IN  BC: Breeding Market0 Ether0.000084812
0x82e687f304d89a1803554997a5e9403f126b964a8efbfdb54a172819c8d71d4573838185 days 9 hrs ago0x4a0010c14ae9c0e7cd07a10a8860ccc9929afa10 IN  BC: Breeding Market0 Ether0.000084812
0xdd00adb096cc5309dba296edce3de87a0de20fd5b5ff1b73c6243d0703ca276e73837725 days 10 hrs ago0x82db6ce94442d69b89a5a984785aa3ae606dd1dd IN  BC: Breeding Market0 Ether0.000114812
0xe98a119f1f9ede0c89a9ee68887dd46202c937d93a1f31d2e4dbfa4d800185b473801525 days 23 hrs ago0xdb62d8ac8ad36171de04fb69b99c4a00db1b30a1 IN  BC: Breeding Market0 Ether0.000042406
0x51da3d68ef056164a4ae47ec5ee72ff485c94e2e33c63bbda1616a81f0e9c54b73798166 days 53 mins ago0xaa3d6d6f25dc557372898415ab71f2433c12a9ea IN  BC: Breeding Market0 Ether0.000084812
0x7b3d8e24c9ecf47e5067c30a337c16b412ee8a58c786d77f3825cfb386a0fc2073757406 days 15 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea IN  BC: Breeding Market0 Ether0.000084812
0xcba6910411c2af874b6f9a3fc8c3097136da7032b28d2e87743664acea81d84d73701377 days 12 hrs ago0xf7e2a8d636c2d278e7a023dfc2471a9a13bf0e16 IN  BC: Breeding Market0 Ether0.000057406
0x6b361fa952514e0b563109d01f9eae9a2a533119a8b4659b3b416a307580a05373689027 days 17 hrs ago0x40edbc668d23bde58ef8cdfeae0636e187727fb4 IN  BC: Breeding Market0 Ether0.00004474
0x32418f1683ae05c6a450dbc51d9bfd5147f1bc6875f05839d45203bad8c1618973689007 days 17 hrs ago0x40edbc668d23bde58ef8cdfeae0636e187727fb4 IN  BC: Breeding Market0 Ether0.000084812
0x1b82635a063eb0b92db4fe8497fc7e64c089bd5a52b8a1924c17b4faceb076b873624928 days 17 hrs ago0x56e91eda18c51b8642f17e63fe6b25c438a189a2 IN  BC: Breeding Market0 Ether0.000084812
0x2b448197dbc3a589c584acb45e086220e1cedc7d4906f68092c6c0ceb77f017a73624658 days 17 hrs ago0x33bf13999f39ec252c6afea84c246c45594c08d9 IN  BC: Breeding Market0 Ether0.000084812
0x1c173cdf3cb348f1b68747fcebcd0732d4c8f3ddfcb0bf7f62f8ff87673eff60735291910 days 5 hrs ago0x6452abb82c78b59e89c41882e3815ec02a093bb3 IN  BC: Breeding Market0 Ether0.000084812
0xd1228f8ad0d554959bca19d6b37535354ff2b319103b4eb5d1cb3c2c99aa69b6735259410 days 6 hrs ago0xd4202e38acb3609fd5d467059d42a69c2dbcd778 IN  BC: Breeding Market0 Ether0.000169624
0x6e5a775412ee3c9083bb0c024a385d141a8ce118a7001950844c96eac543839b735252010 days 6 hrs ago0xd4202e38acb3609fd5d467059d42a69c2dbcd778 IN  BC: Breeding Market0 Ether0.000169624
[ 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
0x7acc8a7cdf7fc324225cf830b8cee115cde0f886965bbb71ca499bdb2849866074180641 hr 46 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x5c8a0baff64f78a63c4a1dbd91bd8d4d798c16790.00096 Ether
0x7acc8a7cdf7fc324225cf830b8cee115cde0f886965bbb71ca499bdb2849866074180641 hr 46 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001 Ether
0xc59cec7fc51cfcd1c89a900d04e51e4d72d77de5491e2c982a9918f13b74b00074180641 hr 46 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x977fb93ecd99fca93e2a60709edee9e97c70e2990.00048 Ether
0xc59cec7fc51cfcd1c89a900d04e51e4d72d77de5491e2c982a9918f13b74b00074180641 hr 46 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.0005 Ether
0x9453f5704c733a9bc310c65cf6c49b795b6f5395e6ec964f952a985dbe5aa60374177303 hrs 5 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x2e0ce5513f4b3a48a8a4e30ff69e24714f5cd5fa0.0048 Ether
0x9453f5704c733a9bc310c65cf6c49b795b6f5395e6ec964f952a985dbe5aa60374177303 hrs 5 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0x7037cef86452d9b32e6ce1a10145d16670de67b5e6e9f21afce10c31ecec087d74177173 hrs 9 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x2e0ce5513f4b3a48a8a4e30ff69e24714f5cd5fa0.0048 Ether
0x7037cef86452d9b32e6ce1a10145d16670de67b5e6e9f21afce10c31ecec087d74177173 hrs 9 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0x040c8d2db8d8e9d157def394b7e4a125a266489ad9e049989241f4e1d7e2cb2d74170695 hrs 28 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x977fb93ecd99fca93e2a60709edee9e97c70e2990.000384 Ether
0x040c8d2db8d8e9d157def394b7e4a125a266489ad9e049989241f4e1d7e2cb2d74170695 hrs 28 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.0004 Ether
0x6f13c9c54604336a4337dbac4e94becbd046362170f5998b37adec33f5411afb74170625 hrs 30 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x977fb93ecd99fca93e2a60709edee9e97c70e2990.000384 Ether
0x6f13c9c54604336a4337dbac4e94becbd046362170f5998b37adec33f5411afb74170625 hrs 30 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.0004 Ether
0x80ae0917800c47f072696ba85e05e43a449415577deeb07e87f420470620220874076581 day 16 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xdee210bad6b19b91892a2853627c1dc06726d1570.00096 Ether
0x80ae0917800c47f072696ba85e05e43a449415577deeb07e87f420470620220874076581 day 16 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001 Ether
0xf84f55df892fb99d0145a9ccf2ba485a9be809f85fa7abbd83b20d1731cdf22b74070231 day 19 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xf7e2a8d636c2d278e7a023dfc2471a9a13bf0e160.000864 Ether
0xf84f55df892fb99d0145a9ccf2ba485a9be809f85fa7abbd83b20d1731cdf22b74070231 day 19 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.0009 Ether
0xe250385c4207f12eab2053448fde7ea8b5495f2d6f619678527990e4fc20e03b74067141 day 20 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xd653b3ed1382e00cc3eff59996328c1b046dfcef0.0048 Ether
0xe250385c4207f12eab2053448fde7ea8b5495f2d6f619678527990e4fc20e03b74067141 day 20 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0xab99af9a9592efc55c5dcc92916532b5e038fda1aab3fee1d235d2cdb8494eb074021432 days 13 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x6452abb82c78b59e89c41882e3815ec02a093bb30.0048 Ether
0xab99af9a9592efc55c5dcc92916532b5e038fda1aab3fee1d235d2cdb8494eb074021432 days 13 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0x13334c05912ec7638db91d05818a49525123ab3cb6db54a362862989bb5fbc0773976523 days 5 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x977fb93ecd99fca93e2a60709edee9e97c70e2990.00192 Ether
0x13334c05912ec7638db91d05818a49525123ab3cb6db54a362862989bb5fbc0773976523 days 5 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.002 Ether
0xfeb1ab656f23498f1f9cc07d1f68091eda06f4f8c39fd4061eb339b482676f0273953793 days 14 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x6452abb82c78b59e89c41882e3815ec02a093bb30.0048 Ether
0xfeb1ab656f23498f1f9cc07d1f68091eda06f4f8c39fd4061eb339b482676f0273953793 days 14 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0xe4e287e44bed2fa8b3025bc2e839ccc37556f8e44329070b51653d00da7fc0bc73949883 days 16 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xf281e85a0b992efa5fda4f52b35685dc5ee67bea0.0048 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
BreedingMarket

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 breeding
/// @author https://BlockChainArchitect.io
contract BreedingMarket is Market
{
    bool public isBreedingMarket = true;

    // @dev Launches and starts a new auction.
    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 Places a bid for breeding. Requires the sender
    /// is the BlockchainCutiesCore contract because all bid methods
    /// should be wrapped. Also returns the cutie to the
    /// seller rather than the winner.
    function bid(uint40 _cutieId) public payable canBeStoredIn128Bits(msg.value) {
        require(msg.sender == address(coreContract));
        address seller = cutieIdToAuction[_cutieId].seller;
        // _bid. is token ID valid?
        _bid(_cutieId, uint128(msg.value));
        // We transfer the cutie back to the seller, the winner will get
        // the offspring
        _transfer(seller, _cutieId);
    }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"isOnAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isBreedingMarket","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":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

6060604052600080546003805460ff19166001179055600160a060020a033316600160a860020a03199091161790556110f28061003d6000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416632177885d81146100fa578063310e5ce71461012b5780633f4ba83a1461013e5780635c975abb14610151578063776247c4146101645780637ea310d41461017757806381baab24146101b05780638456cb59146102205780638da5cb5b146102335780638e0055531461026257806398c9faac1461027c5780639ccaec9814610299578063b2fb3b901461030b578063c170fd5414610328578063c1d1faf31461033a578063d5b2a01a14610373578063e410a0c61461039d578063e80db5db146103c3578063f2fde38b146103d6575b34156100f857600080fd5b005b341561010557600080fd5b61011764ffffffffff600435166103f5565b604051901515815260200160405180910390f35b341561013657600080fd5b61011761041e565b341561014957600080fd5b6100f8610427565b341561015c57600080fd5b6101176104a6565b341561016f57600080fd5b6100f86104b6565b341561018257600080fd5b61019464ffffffffff60043516610535565b6040516001608060020a03909116815260200160405180910390f35b34156101bb57600080fd5b6101cd64ffffffffff6004351661056f565b6040516001608060020a0396871681529486166020860152600160a060020a0390931660408086019190915264ffffffffff928316606086015291166080840152921660a082015260c001905180910390f35b341561022b57600080fd5b6100f86105d8565b341561023e57600080fd5b61024661065c565b604051600160a060020a03909116815260200160405180910390f35b341561026d57600080fd5b6100f861ffff6004351661066b565b341561028757600080fd5b6100f864ffffffffff600435166106cc565b34156102a457600080fd5b6102b664ffffffffff60043516610725565b604051600160a060020a0390961686526001608060020a03948516602087015292841660408087019190915264ffffffffff928316606087015291166080850152911660a083015260c0909101905180910390f35b341561031657600080fd5b6100f864ffffffffff600435166107c0565b6100f864ffffffffff6004351661083c565b6100f864ffffffffff6004358116906001608060020a036024358116916044359091169060643516600160a060020a03608435166108a8565b341561037e57600080fd5b610386610949565b60405161ffff909116815260200160405180910390f35b34156103a857600080fd5b6100f8600160a060020a036004351661ffff6024351661095a565b34156103ce57600080fd5b610246610a46565b34156103e157600080fd5b6100f8600160a060020a0360043516610a55565b64ffffffffff90811660009081526002602052604081206001015460c860020a90049091161190565b60035460ff1681565b60005433600160a060020a0390811691161461044257600080fd5b60005460a060020a900460ff16151561045a57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60005460a060020a900460ff1681565b600154600054600160a060020a0391821691338116911614806104ea575080600160a060020a031633600160a060020a0316145b15156104f557600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561053257600080fd5b50565b64ffffffffff8116600090815260026020526040812061055481610af0565b151561055f57600080fd5b61056881610b09565b9392505050565b60026020819052600091825260409091208054600182015491909201546001608060020a03808416937001000000000000000000000000000000009004811692600160a060020a0381169264ffffffffff60a060020a830481169360c860020a90930416911686565b60005433600160a060020a039081169116146105f357600080fd5b60005460a060020a900460ff161561060a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b60005433600160a060020a0390811691161461068657600080fd5b61271061ffff8216111561069957600080fd5b6001805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b64ffffffffff81166000908152600260205260408120906106ec82610af0565b15156106f757600080fd5b506001810154600160a060020a03908116903316811461071657600080fd5b6107208382610b90565b505050565b64ffffffffff811660009081526002602052604081208190819081908190819061074e81610af0565b151561075957600080fd5b60018101548154600290920154600160a060020a0382169a6001608060020a038085169b507001000000000000000000000000000000009094048416995064ffffffffff60a060020a84048116995060c860020a9093049092169650919091169350915050565b6000805460a060020a900460ff1615156107d957600080fd5b60005433600160a060020a039081169116146107f457600080fd5b5064ffffffffff8116600090815260026020526040902061081481610af0565b151561081f57600080fd5b6001810154610838908390600160a060020a0316610b90565b5050565b6000346001608060020a0381111561085357600080fd5b60015433600160a060020a0390811691161461086e57600080fd5b64ffffffffff8316600090815260026020526040902060010154600160a060020a0316915061089d8334610be2565b506107208284610d15565b6108b0611091565b60015433600160a060020a039081169116146108cb57600080fd5b6108d58287610d86565b60c060405190810160405280866001608060020a03168152602001856001608060020a0316815260200183600160a060020a031681526020018464ffffffffff1681526020014264ffffffffff168152602001346001608060020a031681525090506109418682610def565b505050505050565b60015460a060020a900461ffff1681565b6000805433600160a060020a0390811691161461097657600080fd5b61271061ffff8316111561098957600080fd5b506001805475ffff0000000000000000000000000000000000000000191660a060020a61ffff84160217905581600160a060020a038116634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109f357600080fd5b5af11515610a0057600080fd5b505050604051805190501515610a1557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600154600160a060020a031681565b60005433600160a060020a03908116911614610a7057600080fd5b600160a060020a0381161515610a8557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60010154600060c860020a90910464ffffffffff161190565b60018101546000908190429064ffffffffff60c860020a90910481169082161115610b4657600184015460c860020a900464ffffffffff16810391505b83546001850154610b88916001608060020a0380821692700100000000000000000000000000000000909204169060a060020a900464ffffffffff1685610fa5565b949350505050565b610b998261100c565b610ba38183610d15565b7ff6680ade663631ec4dd74f7eaa1f75125361380cd50a22f969e9acfa5f5367048260405164ffffffffff909116815260200160405180910390a15050565b64ffffffffff8216600090815260026020526040812081808080610c0585610af0565b1515610c1057600080fd5b610c1985610b09565b93506001608060020a038085169088161015610c3457600080fd5b6001850154600160a060020a03169250610c4d8861100c565b6000846001608060020a03161115610ca957610c688461106a565b915050808303600160a060020a0383166001608060020a03821680156108fc0290604051600060405180830381858888f193505050501515610ca957600080fd5b7f8500e47909916e51e97e4880e742d8b9af1afaeb9ea54166947cf42e6616b11788853360405164ffffffffff90931683526001608060020a039091166020830152600160a060020a03166040808301919091526060909101905180910390a150919695505050505050565b600154600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a03909216600483015264ffffffffff166024820152604401600060405180830381600087803b1515610d7257600080fd5b5af11515610d7f57600080fd5b5050505050565b600154600160a060020a03166323b872dd83308460405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015264ffffffffff9091166044820152606401600060405180830381600087803b1515610d7257600080fd5b603c816060015164ffffffffff161015610e0857600080fd5b64ffffffffff821660009081526002602052604090208190815181546fffffffffffffffffffffffffffffffff19166001608060020a0391909116178155602082015181546001608060020a03918216700100000000000000000000000000000000029116178155604082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548164ffffffffff021916908364ffffffffff16021790555060a082015160029190910180546fffffffffffffffffffffffffffffffff19166001608060020a03909216919091179055507f10812469e6e641cdef133a0556aa1bfd46bcd460e603da6af3233f8a6e242f6a828251836020015184606001518560a0015160405164ffffffffff95861681526001608060020a03948516602082015292841660408085019190915291909416606083015292909116608082015260a001905180910390a15050565b600080808064ffffffffff80871690861610610fc357869350611001565b876001608060020a0316876001608060020a03160392508564ffffffffff168564ffffffffff168402811515610ff557fe5b05915081880190508093505b505050949350505050565b64ffffffffff16600090815260026020819052604082209182556001820180547fffff0000000000000000000000000000000000000000000000000000000000001690550180546fffffffffffffffffffffffffffffffff19169055565b6001546000906127109060a060020a900461ffff1683026001608060020a03160492915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820152905600a165627a7a723058209b892b5b0ce22c3eb2b8066754fa4dd8a2553148f26aca630f8bafdcaa189c550029

Swarm Source

bzzr://9b892b5b0ce22c3eb2b8066754fa4dd8a2553148f26aca630f8bafdcaa189c55
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.