Contract Overview |  BC_BreedingMarket
Balance: 0.438801847715832676 Ether
Ether Value: $51.59 (@ $117.56/ETH)
Transactions: 1737 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x2f26d1ddabcdd88aeca3d4f527d4366c37e15c78at txn 0x6466049575ac0bc36618006b0cbd98843cc77c773a3a157e1abcd175710bed20
Token Balance:
 Latest 25 transactions from a total of 1737 transactions

TxHash Age From To Value [TxFee]
0xd43519f5ead9a3a227342874a679939a471a32da63bf15c7ebb74f93767922734 hrs 58 mins ago0xf5ac68a1c974a910c10c5c01b5d7a6d6835df975  IN   BC_BreedingMarket0 Ether0.000084812
0x5a274a2be33302c2806290eba4834035b0135174575e0e90a421f1b1307c2fc84 hrs 58 mins ago0xf5ac68a1c974a910c10c5c01b5d7a6d6835df975  IN   BC_BreedingMarket0 Ether0.000084812
0x96ee079b43d91e0b8e132ca5c79f8fbe867b8bed54a000bf47962c693a9394095 hrs 31 mins ago0xb64e65062e5b96e13eaab0c2baecffd1b8510b16  IN   BC_BreedingMarket0 Ether0.000084812
0x9f4e2aada935bbd241de863e5ec6d87723c38f822e9232988002ee8a7b4f2ed96 hrs 59 mins ago0xca4378612074dc26e6daec2c5835971dd8394c17  IN   BC_BreedingMarket0 Ether0.000127218
0x766275c99a0465be2c4648a50b7c7a521092052939e65ef0a1a8a4862489d15f1 day 5 hrs ago0x4f835aa9c21c13a31a93a8b3a94027c2f3a21d99  IN   BC_BreedingMarket0 Ether0.00011185
0x98c85cf64e2e3b4ac815e542f34e3b07e5c3cf87281a94685aca6de083533f771 day 5 hrs ago0x4f835aa9c21c13a31a93a8b3a94027c2f3a21d99  IN   BC_BreedingMarket0 Ether0.0000593684
0x3c5f89345915f85624db765ea65d10db09fe7c11eb66bec324fce892add5d7f81 day 6 hrs ago0xf5ac68a1c974a910c10c5c01b5d7a6d6835df975  IN   BC_BreedingMarket0 Ether0.0001399398
0x80902a46e64781be46f703cec385847b883f46929bcb7279d95ea802282a96191 day 7 hrs ago0xdb62d8ac8ad36171de04fb69b99c4a00db1b30a1  IN   BC_BreedingMarket0 Ether0.0002035488
0x7875e48d8734abe1a2b8c9fda07a5fc25032cfc75c78fc90d35b4023f3f52c811 day 11 hrs ago0xedace1e651ba0d2eb674cb6540d1c0efbbe4c59c  IN   BC_BreedingMarket0 Ether0.0002162706
0xba1f4669ff9044cd7ac09e959ed836154e87e2546fb4e2bbc83d6ae822f99c061 day 23 hrs ago0x25967b65c16add1c20ecb019a6a96b7f10496e3b  IN   BC_BreedingMarket0 Ether0.000063609
0x410849deb3b68a796c1e62ca41a927573d200a66d1887643d939dc7d549043712 days 1 hr ago0xee61c9f12ee5d8e5b1275dfcabc9310a8a701f6e  IN   BC_BreedingMarket0 Ether0.000084812
0x76b84beb61b76793d23b556e8522bdcbc87b28929d0568cbe75618b8c5ba1fca2 days 9 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BC_BreedingMarket0 Ether0.0000932932
0xc48181d4e66b39e00ce0f4cafc6e1dec27a4d2b5147c2ec791e8d2086574991e2 days 23 hrs ago0x6452abb82c78b59e89c41882e3815ec02a093bb3  IN   BC_BreedingMarket0 Ether0.0001102556
0xe955553f54802c2ef4a9dba414b7281efa4807332da018a960c58e1b48f2f2953 days 7 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BC_BreedingMarket0 Ether0.0001229774
0xa423b06b084e83e677344e3887fab94cfea1affbbbcc78275e7c9b2b12a2b2ac3 days 16 hrs ago0xe3b9490a0ce9c740c7d3155130383a1c6ead4431  IN   BC_BreedingMarket0 Ether0.000084812
0x7cb3fa30ea68539156b22e4d9e52b601476aa26421cc777519fbfbfcc9ca487c3 days 17 hrs ago0x57ac6da3211b50a385e85734dbd13faf169cb539  IN   BC_BreedingMarket0 Ether0.000084812
0x0ab3c8bcf383760ae5ad2e246309b05787282eefc0998acadba1decad63842f53 days 20 hrs ago0x671298c0b62d4cfc3b9753442f2be39945ecdc97  IN   BC_BreedingMarket0 Ether0.0000805714
0x22716ade6fc497089b25c64ebf0d86d250d68fdee8b9a10314c67284c241bead3 days 21 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BC_BreedingMarket0 Ether0.0000593684
0x650f06d11dbca55737d66cd64a34a2f9bebd5391ee92bf251e09cc0e7d80e1833 days 23 hrs ago0x684e7eb92c1c72ef1f59140c1668eebbc1a76d61  IN   BC_BreedingMarket0 Ether0.0000678496
0xdf78a0383aa77e7167cd3264436339f6425adc090f525a3f3b36c199e5d1db6a3 days 23 hrs ago0x684e7eb92c1c72ef1f59140c1668eebbc1a76d61  IN   BC_BreedingMarket0 Ether0.0000678496
0xbb3cd4537312f47f32dbb416df1123abf4ecc325906ec9d34665ac8028adf8233 days 23 hrs ago0x684e7eb92c1c72ef1f59140c1668eebbc1a76d61  IN   BC_BreedingMarket0 Ether0.0000678496
0x04f27e28a77d1c114bee008f9eafaa24e847e47a31e4399bfdc84a5f210d5bf53 days 23 hrs ago0x684e7eb92c1c72ef1f59140c1668eebbc1a76d61  IN   BC_BreedingMarket0 Ether0.0000720902
0x9fc9732fc2a6da64015e5a813349dd8082a457c8495a16b19e5ae2e7a5b9450b4 days 14 hrs ago0x99531aa682dca2570555e052b33531d77081e5b1  IN   BC_BreedingMarket0 Ether0.000089519066
0xc4ae3004d3ee501fc74054879910f8e265589dde4a953414525ac64b4cf7a1a94 days 23 hrs ago0x6452abb82c78b59e89c41882e3815ec02a093bb3  IN   BC_BreedingMarket0 Ether0.000063609
0x1e4b2d7f67b4023d1a6ce41265ffbdc900efde14c98eb923d856d217acbec50a5 days 1 hr ago0xf2d09194c15d6f32978a744a4ef962eb061c89bf  IN   BC_BreedingMarket0 Ether0.000063609
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xb0af8b750d399a66e62961108d4ad957672ed3264d72e94bddae5612af9e7274711605952 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001029490740740741 Ether
0x3a17acb4b213f5a2bc0ba48cacc59cf18aa5aa576b9ada8ed5e7915bfde6b470711603857 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.00100775462962963 Ether
0x3ae08ca28b4523ce8057e9272e41577d8d303da7ef04c57afddfca498ab05b2d71148036 hrs 53 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xf2d09194c15d6f32978a744a4ef962eb061c89bf0.00192 Ether
0x3ae08ca28b4523ce8057e9272e41577d8d303da7ef04c57afddfca498ab05b2d71148036 hrs 53 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.002 Ether
0x81c50f7923089e8bf2ef378a7c6ec70a0b66deed24841320db6b4baa19a3a66471147217 hrs 13 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x921d71dacda6e7bec838f2af4dbd8fc1361dd40b0.01152 Ether
0x81c50f7923089e8bf2ef378a7c6ec70a0b66deed24841320db6b4baa19a3a66471147217 hrs 13 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.012 Ether
0xb3f323768df8869354d7313d03fd12728541e83777f23b7febc0e554bc0d271f71146547 hrs 31 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xa263cf7f8dd3882e2d1776c526f6e501ff0037440.00096 Ether
0xb3f323768df8869354d7313d03fd12728541e83777f23b7febc0e554bc0d271f71146547 hrs 31 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001 Ether
0x364fc1c6e6f1ab70fe2e5a6ab90029e2b33826ebfa0cd15e5ae92ba48429809671144328 hrs 28 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x6452abb82c78b59e89c41882e3815ec02a093bb30.0048 Ether
0x364fc1c6e6f1ab70fe2e5a6ab90029e2b33826ebfa0cd15e5ae92ba48429809671144328 hrs 28 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0xd6eb3478b48a8f1e14adcb15b4d58fc40138f325fe4856eb3b182d619c55816171142169 hrs 27 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xf2d09194c15d6f32978a744a4ef962eb061c89bf0.0024 Ether
0xd6eb3478b48a8f1e14adcb15b4d58fc40138f325fe4856eb3b182d619c55816171142169 hrs 27 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.0025 Ether
0xe97bf2019bab3a8ebb9370e3988d70cbe0a9688b78a673c34a1951b9f99ac59f71104991 day 3 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xaf898fc38e04824985bdd9b461b71cc4e03636460.00096 Ether
0xe97bf2019bab3a8ebb9370e3988d70cbe0a9688b78a673c34a1951b9f99ac59f71104991 day 3 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001 Ether
0x7564b055de67deb3331f9798ca3c5121c64b48618ba9a6d2f5c2f536fb8f000871090361 day 10 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x8b3ad493c077e894a034db7eb53e8285560298fd0.00096 Ether
0x7564b055de67deb3331f9798ca3c5121c64b48618ba9a6d2f5c2f536fb8f000871090361 day 10 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.001 Ether
0x70df572c807d40a83d4c9f6a7e98cfac8a0185a5e7daa84fd0ff91335b14c4d671059932 days 48 mins ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x6452abb82c78b59e89c41882e3815ec02a093bb30.0048 Ether
0x70df572c807d40a83d4c9f6a7e98cfac8a0185a5e7daa84fd0ff91335b14c4d671059932 days 48 mins ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0xc282e92bb34ffbac14f5888b507de15ca6275a594ef3e3d4fc62061c53f2251571044872 days 7 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x921d71dacda6e7bec838f2af4dbd8fc1361dd40b0.0096 Ether
0xc282e92bb34ffbac14f5888b507de15ca6275a594ef3e3d4fc62061c53f2251571044872 days 7 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.01 Ether
0x13f1b9e14a5f76c87365c6a387b6bd99f814f060a9aae37c153dbea76961279071015342 days 21 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x921d71dacda6e7bec838f2af4dbd8fc1361dd40b0.00576 Ether
0x13f1b9e14a5f76c87365c6a387b6bd99f814f060a9aae37c153dbea76961279071015342 days 21 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.006 Ether
0x3a3262263062289ddfed56f7d68c663c6b0590a6995148c90760484eb3fb8ddc70990293 days 8 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0x6452abb82c78b59e89c41882e3815ec02a093bb30.0048 Ether
0x3a3262263062289ddfed56f7d68c663c6b0590a6995148c90760484eb3fb8ddc70990293 days 8 hrs ago0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0.005 Ether
0x3812341885f6e7de7fe942fbb0d6c0a245ae03054a47ed62f95b625be79d529e70985573 days 10 hrs ago0x20c81ae5a7cf1c5a3f8293313692474f8d6b808b0xbe2c307c9a1df56b0638640661bfcebe0a866e5d0.00096 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: BreedingMarket
Compiler Text: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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 Switch To Opcodes View
6060604052600080546003805460ff19166001179055600160a060020a033316600160a860020a03199091161790556110f28061003d6000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416632177885d81146100fa578063310e5ce71461012b5780633f4ba83a1461013e5780635c975abb14610151578063776247c4146101645780637ea310d41461017757806381baab24146101b05780638456cb59146102205780638da5cb5b146102335780638e0055531461026257806398c9faac1461027c5780639ccaec9814610299578063b2fb3b901461030b578063c170fd5414610328578063c1d1faf31461033a578063d5b2a01a14610373578063e410a0c61461039d578063e80db5db146103c3578063f2fde38b146103d6575b34156100f857600080fd5b005b341561010557600080fd5b61011764ffffffffff600435166103f5565b604051901515815260200160405180910390f35b341561013657600080fd5b61011761041e565b341561014957600080fd5b6100f8610427565b341561015c57600080fd5b6101176104a6565b341561016f57600080fd5b6100f86104b6565b341561018257600080fd5b61019464ffffffffff60043516610535565b6040516001608060020a03909116815260200160405180910390f35b34156101bb57600080fd5b6101cd64ffffffffff6004351661056f565b6040516001608060020a0396871681529486166020860152600160a060020a0390931660408086019190915264ffffffffff928316606086015291166080840152921660a082015260c001905180910390f35b341561022b57600080fd5b6100f86105d8565b341561023e57600080fd5b61024661065c565b604051600160a060020a03909116815260200160405180910390f35b341561026d57600080fd5b6100f861ffff6004351661066b565b341561028757600080fd5b6100f864ffffffffff600435166106cc565b34156102a457600080fd5b6102b664ffffffffff60043516610725565b604051600160a060020a0390961686526001608060020a03948516602087015292841660408087019190915264ffffffffff928316606087015291166080850152911660a083015260c0909101905180910390f35b341561031657600080fd5b6100f864ffffffffff600435166107c0565b6100f864ffffffffff6004351661083c565b6100f864ffffffffff6004358116906001608060020a036024358116916044359091169060643516600160a060020a03608435166108a8565b341561037e57600080fd5b610386610949565b60405161ffff909116815260200160405180910390f35b34156103a857600080fd5b6100f8600160a060020a036004351661ffff6024351661095a565b34156103ce57600080fd5b610246610a46565b34156103e157600080fd5b6100f8600160a060020a0360043516610a55565b64ffffffffff90811660009081526002602052604081206001015460c860020a90049091161190565b60035460ff1681565b60005433600160a060020a0390811691161461044257600080fd5b60005460a060020a900460ff16151561045a57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60005460a060020a900460ff1681565b600154600054600160a060020a0391821691338116911614806104ea575080600160a060020a031633600160a060020a0316145b15156104f557600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561053257600080fd5b50565b64ffffffffff8116600090815260026020526040812061055481610af0565b151561055f57600080fd5b61056881610b09565b9392505050565b60026020819052600091825260409091208054600182015491909201546001608060020a03808416937001000000000000000000000000000000009004811692600160a060020a0381169264ffffffffff60a060020a830481169360c860020a90930416911686565b60005433600160a060020a039081169116146105f357600080fd5b60005460a060020a900460ff161561060a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b60005433600160a060020a0390811691161461068657600080fd5b61271061ffff8216111561069957600080fd5b6001805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b64ffffffffff81166000908152600260205260408120906106ec82610af0565b15156106f757600080fd5b506001810154600160a060020a03908116903316811461071657600080fd5b6107208382610b90565b505050565b64ffffffffff811660009081526002602052604081208190819081908190819061074e81610af0565b151561075957600080fd5b60018101548154600290920154600160a060020a0382169a6001608060020a038085169b507001000000000000000000000000000000009094048416995064ffffffffff60a060020a84048116995060c860020a9093049092169650919091169350915050565b6000805460a060020a900460ff1615156107d957600080fd5b60005433600160a060020a039081169116146107f457600080fd5b5064ffffffffff8116600090815260026020526040902061081481610af0565b151561081f57600080fd5b6001810154610838908390600160a060020a0316610b90565b5050565b6000346001608060020a0381111561085357600080fd5b60015433600160a060020a0390811691161461086e57600080fd5b64ffffffffff8316600090815260026020526040902060010154600160a060020a0316915061089d8334610be2565b506107208284610d15565b6108b0611091565b60015433600160a060020a039081169116146108cb57600080fd5b6108d58287610d86565b60c060405190810160405280866001608060020a03168152602001856001608060020a0316815260200183600160a060020a031681526020018464ffffffffff1681526020014264ffffffffff168152602001346001608060020a031681525090506109418682610def565b505050505050565b60015460a060020a900461ffff1681565b6000805433600160a060020a0390811691161461097657600080fd5b61271061ffff8316111561098957600080fd5b506001805475ffff0000000000000000000000000000000000000000191660a060020a61ffff84160217905581600160a060020a038116634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109f357600080fd5b5af11515610a0057600080fd5b505050604051805190501515610a1557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600154600160a060020a031681565b60005433600160a060020a03908116911614610a7057600080fd5b600160a060020a0381161515610a8557600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60010154600060c860020a90910464ffffffffff161190565b60018101546000908190429064ffffffffff60c860020a90910481169082161115610b4657600184015460c860020a900464ffffffffff16810391505b83546001850154610b88916001608060020a0380821692700100000000000000000000000000000000909204169060a060020a900464ffffffffff1685610fa5565b949350505050565b610b998261100c565b610ba38183610d15565b7ff6680ade663631ec4dd74f7eaa1f75125361380cd50a22f969e9acfa5f5367048260405164ffffffffff909116815260200160405180910390a15050565b64ffffffffff8216600090815260026020526040812081808080610c0585610af0565b1515610c1057600080fd5b610c1985610b09565b93506001608060020a038085169088161015610c3457600080fd5b6001850154600160a060020a03169250610c4d8861100c565b6000846001608060020a03161115610ca957610c688461106a565b915050808303600160a060020a0383166001608060020a03821680156108fc0290604051600060405180830381858888f193505050501515610ca957600080fd5b7f8500e47909916e51e97e4880e742d8b9af1afaeb9ea54166947cf42e6616b11788853360405164ffffffffff90931683526001608060020a039091166020830152600160a060020a03166040808301919091526060909101905180910390a150919695505050505050565b600154600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a03909216600483015264ffffffffff166024820152604401600060405180830381600087803b1515610d7257600080fd5b5af11515610d7f57600080fd5b5050505050565b600154600160a060020a03166323b872dd83308460405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015264ffffffffff9091166044820152606401600060405180830381600087803b1515610d7257600080fd5b603c816060015164ffffffffff161015610e0857600080fd5b64ffffffffff821660009081526002602052604090208190815181546fffffffffffffffffffffffffffffffff19166001608060020a0391909116178155602082015181546001608060020a03918216700100000000000000000000000000000000029116178155604082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548164ffffffffff021916908364ffffffffff16021790555060a082015160029190910180546fffffffffffffffffffffffffffffffff19166001608060020a03909216919091179055507f10812469e6e641cdef133a0556aa1bfd46bcd460e603da6af3233f8a6e242f6a828251836020015184606001518560a0015160405164ffffffffff95861681526001608060020a03948516602082015292841660408085019190915291909416606083015292909116608082015260a001905180910390a15050565b600080808064ffffffffff80871690861610610fc357869350611001565b876001608060020a0316876001608060020a03160392508564ffffffffff168564ffffffffff168402811515610ff557fe5b05915081880190508093505b505050949350505050565b64ffffffffff16600090815260026020819052604082209182556001820180547fffff0000000000000000000000000000000000000000000000000000000000001690550180546fffffffffffffffffffffffffffffffff19169055565b6001546000906127109060a060020a900461ffff1683026001608060020a03160492915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820152905600a165627a7a723058209b892b5b0ce22c3eb2b8066754fa4dd8a2553148f26aca630f8bafdcaa189c550029

   Swarm Source:
bzzr://9b892b5b0ce22c3eb2b8066754fa4dd8a2553148f26aca630f8bafdcaa189c55

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.