Contract Overview |  BlockchainCuties_SaleMarket4
Balance: 0.226984546636995349 Ether
Ether Value: $26.67 (@ $117.51/ETH)
Transactions: 2375 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x2f26d1ddabcdd88aeca3d4f527d4366c37e15c78at txn 0x71658ae98b3e29c4940168f3b2f84deb0cf4297b56c1f8729b1e0e04c3c847ef
Token Balance:
 Latest 25 transactions from a total of 2375 transactions
(+1 PendingTxn)

TxHash Age From To Value [TxFee]
0x489941021cf2ca7ea3da77e8a3ce2b4acbdb4744a7ad92c9fe4245caa401d88c(pending)0xac2dbfd7f972c0baa8779f305407d68dbf1d3d3d  IN  0x55e851ecb4a8ee090f7b097ba1804db94d90175e0.012000001 Ether(Pending)
0xacbd6f1c921ccbfbf56d21d8dd0f74046788f0941ab13d1af6a6ddfe06a512362 days 8 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   BlockchainCuties_SaleMarket40 Ether0.0001102556
0x9a91ecbb25a8d63271c6d5574def3a4e9c1e450d998c262f9486bce6752c3b864 days 21 hrs ago0xc6fbe95af846af44b312ddb9da244d5227fb565b  IN   BlockchainCuties_SaleMarket40.035 Ether0.0000741272
0x92ac438e749e061288486a82b793c21f742579a10cae4f6ec9450cadcc60a1755 days 4 hrs ago0xeb5e2b1b21ffaed1ae4a288e55cca20711211972  IN   BlockchainCuties_SaleMarket40 Ether0.0000763308
0x0e5f822efa8463d418344d6897eaee19aabf19417297b7b5fe4e96aadef865fa12 days 2 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   BlockchainCuties_SaleMarket40 Ether0.0000508872
0x240c39319f835a3b9a7e302698abf5489948f280f44c59938f8c9574f1dc9aa425 days 17 hrs ago0xa86e9e5747e6abf3eab1b29832636e88a1550336  IN   BlockchainCuties_SaleMarket40.004000001 Ether0.000079422
0xbb5bfd3e5ebf07d6ed209395f08bdd9e2887ca8e2bc42e6f57bc935b7b21833428 days 20 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BlockchainCuties_SaleMarket40.036000000999999 Ether0.000158844
0xa6e3d6d1e52a30e25da548c25164530b7c8994a98a4e061b771b9fd371a2ef2428 days 20 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BlockchainCuties_SaleMarket40.035000001 Ether0.000158844
0x7e160fc2031c8297be164c88e94094c6e9df53ac0cc2e3eddd9837140aa29d5429 days 3 hrs ago0xd311e934d9a1d9f71004976cd0268fd25f9cb77f  IN   BlockchainCuties_SaleMarket40 Ether0.000106015
0x7a5986c5900c27b66b544f9239719083573d4d4d70014c0feb3c883942c5096b30 days 19 hrs ago0x39c4e59bea399f09818c817a7ad96ed4891396ef  IN   BlockchainCuties_SaleMarket40.248000002 Ether0.0001641388
0x8b63b55f1ab1e8de594f82d5cdd548c795efa66bc664d85f6b51ab007672b60e30 days 23 hrs ago0x18d1b53c127e9432f1a5d54512dea973ca02ba82  IN   BlockchainCuties_SaleMarket40.040000001 Ether0.000158844
0x510527e3a96c9d3f9d2cc4ff826fa14726e211f695531d5f5d423f4a8f14e3f831 days 22 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BlockchainCuties_SaleMarket40 Ether0.0000890526
0x492b1a66842e22cbd427b153dad0aac7f49a13e771a5aa0f1c925620c8e94caa32 days 23 hrs ago0x39c4e59bea399f09818c817a7ad96ed4891396ef  IN   BlockchainCuties_SaleMarket40.284000000999999 Ether0.0001111908
0xe0fce74bf62bc4346dd265123eb3dd115700ebeb1ad48c1e40a322abaf6a033533 days 21 hrs ago0x8214f1c750ad8e08d1cfb19077ad471222cb59f9  IN   BlockchainCuties_SaleMarket40 Ether0.00006711
0x40331b0e68696ef1a61b0bdea5fef229b2a868f03ecadecbbf23eca89dbd04fe33 days 21 hrs ago0x8214f1c750ad8e08d1cfb19077ad471222cb59f9  IN   BlockchainCuties_SaleMarket40 Ether0.000172218
0x5ded29a666e5c532486fbb4c3ffe5593939faef824667545d96ca9ba8a28a84636 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket40.046100002 Ether0.0001429596
0x7ad4ec5c27fbb5bebb1f36eb6a38bdb4e8b5965bbad14093df61d742bcd8385e36 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket40.01049764114694 Ether0.000159525
0x85a4cb5a7d69d9a140d67e87f6b3cc226d68b173c5ae3dac4c2df5c2e7e6f43436 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket40.018300002 Ether0.000211792
0x710e558b4dbc483edf577ea31914c3d556515028b2382caf99ee7e7816eb904d40 days 2 hrs ago0x17c23316a101ca5f43f83be04ae66b5d279586ad  IN   BlockchainCuties_SaleMarket40.0090059141006 Ether0.0001648425
0xddcd36dbe70741412fd0c94bc22d671d4252156d75eeac52e32e60f0026a041e45 days 4 hrs ago0xb510bd327bf12a7c95c231beb4d977f4af69c2ad  IN   BlockchainCuties_SaleMarket40 Ether0.000069347
0xb0404722d55f183c802c04206489da3065abd506eebcfab392adecce2527b94646 days 14 hrs ago0x2e0ce5513f4b3a48a8a4e30ff69e24714f5cd5fa  IN   BlockchainCuties_SaleMarket40.010000001 Ether0.0002276764
0x9287e5b291d3432d3ac2ac14b50fc44eb40928a3a53055e4ac4ffa7bfa38b8d446 days 14 hrs ago0x2e0ce5513f4b3a48a8a4e30ff69e24714f5cd5fa  IN   BlockchainCuties_SaleMarket40.010000001 Ether0.0002276764
0x3ba42662317da5fed5c582e7c8bb6888505b20b2b839fa652ab834ea4bc5640348 days 15 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   BlockchainCuties_SaleMarket40 Ether0.00021203
0x6ce24bf5a69c5e092949a6d0607d0a9806a8769aad0d51964ef8b4bd13f7b1c551 days 19 hrs ago0x4f9dc75b46781bca3ca4882da193cd557fdfefe3  IN   BlockchainCuties_SaleMarket40.036000000999999 Ether0.000271792
0x7accc6f9e943bf3bd3674df233d1fc52e06459132b2c7d673e8a74c9c46ae9f658 days 9 hrs ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   BlockchainCuties_SaleMarket40.025500001 Ether0.000317688
[ 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
0x9a91ecbb25a8d63271c6d5574def3a4e9c1e450d998c262f9486bce6752c3b8670904644 days 21 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xd736144c39dac0122d70a2ca6b1725a67b0fc00b0.033600000000000004 Ether
0x240c39319f835a3b9a7e302698abf5489948f280f44c59938f8c9574f1dc9aa4697262825 days 17 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x6f436add6c41f048ab796c34b04e0756798c54d00.00384 Ether
0xbb5bfd3e5ebf07d6ed209395f08bdd9e2887ca8e2bc42e6f57bc935b7b218334695405128 days 20 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.034559999999999997 Ether
0xa6e3d6d1e52a30e25da548c25164530b7c8994a98a4e061b771b9fd371a2ef24695400628 days 20 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.033600000000000004 Ether
0x7a5986c5900c27b66b544f9239719083573d4d4d70014c0feb3c883942c5096b694236530 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf679de224c6f685f25af2c91f4c8775bbce27a460.238080000959999998 Ether
0x8b63b55f1ab1e8de594f82d5cdd548c795efa66bc664d85f6b51ab007672b60e694139130 days 23 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x9852f8956973e8830e08cad3f2a7f6d04e8d837e0.0384 Ether
0x492b1a66842e22cbd427b153dad0aac7f49a13e771a5aa0f1c925620c8e94caa692963232 days 23 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x7feae9b2947dce8b4d38d805382aee4e9a41f86f0.272639999999999976 Ether
0x5ded29a666e5c532486fbb4c3ffe5593939faef824667545d96ca9ba8a28a846691065036 days 5 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xb793b04a2240a3171afedfe95de37e945d8931450.044256000960000001 Ether
0x7ad4ec5c27fbb5bebb1f36eb6a38bdb4e8b5965bbad14093df61d742bcd8385e691064636 days 5 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xa691ca9f1958c09489185231ac509fbf0e03a94d0.010077624154589373 Ether
0x85a4cb5a7d69d9a140d67e87f6b3cc226d68b173c5ae3dac4c2df5c2e7e6f434691052936 days 5 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf7320033e7ab1d4ed5be95c7b62c6ca670cca3250.01756800096 Ether
0x710e558b4dbc483edf577ea31914c3d556515028b2382caf99ee7e7816eb904d688736940 days 2 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xdd6c056d816278dc8b8a365be5a5c32ee1fb62f40.008645575075075076 Ether
0xb0404722d55f183c802c04206489da3065abd506eebcfab392adecce2527b946684786246 days 14 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x6f2433858e558ba80cdaf8bf50f2ce09a211aee20.0096 Ether
0x9287e5b291d3432d3ac2ac14b50fc44eb40928a3a53055e4ac4ffa7bfa38b8d4684785846 days 14 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xeb5e2b1b21ffaed1ae4a288e55cca207112119720.0096 Ether
0x6ce24bf5a69c5e092949a6d0607d0a9806a8769aad0d51964ef8b4bd13f7b1c5681653651 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.034559999999999997 Ether
0x7accc6f9e943bf3bd3674df233d1fc52e06459132b2c7d673e8a74c9c46ae9f6677669958 days 9 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.02448 Ether
0x3147f9271ecdfa75c8624e7ce7b3feca05380adc5ac6ba5a252bc0147c46c382677440758 days 18 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.15264 Ether
0x4ce5c912d7334cbfe3ad7f06c6d7e71b01e66e464251df3e3c8a340233955f51677430158 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.004704 Ether
0x1657f0c29860104f8e5881cb69478585ae36916313ab246f741d09625d2ff589677429658 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0xe0c9384cc1a3fada4d2090a54646c1429ad6c418f663be2f4d310f0e53a86098677429358 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0x8282f653d5ddf8c1761c4c75e105f2abe272d8899c07effc94b87c800248772f677429358 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0xf9cdfe9068f5d9e136517de5a2448c513983803f0.005664 Ether
0xb0fb97fe25980fe16d3942607b1df7075f16d99d2097a7bd238e962d3f9706e4677426958 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.019104 Ether
0x616ac874325227b449e49a48001ca02465a1b9c7663d860355ec48bb1c44e2a1677426758 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.02304 Ether
0xa6141cba365015a6aa2a20c4eac4e0a87d599d38df2cf917934ffe178d33522f677426258 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x71f35825a3b1528859dfa1a64b24242bc0d129900.017279999999999999 Ether
0x384aa6354f0ffaf4ee04eeae87e715d03baebd542d5c4893126f349c167d0c43677426258 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x9852f8956973e8830e08cad3f2a7f6d04e8d837e0.024 Ether
0x402abbfb94fe6c14f8a80127c8e75a71862b78d5232ab323cda3863a760d4249677426158 days 19 hrs ago0x55e851ecb4a8ee090f7b097ba1804db94d90175e0x46f9a1dc80df2e5d1cc0efd24f4ec341523753d30.01152 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: SaleMarket
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 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 Switch To Opcodes View
6060604052600080546003805460ff19166001179055600160a060020a033316600160a860020a03199091161790556110b08061003d6000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416632177885d81146100fa5780633f4ba83a1461012b5780635c975abb1461013e5780636066b06614610151578063776247c4146101645780637ea310d41461017757806381baab24146101b05780638456cb59146102205780638da5cb5b146102335780638e0055531461026257806398c9faac1461027c5780639ccaec9814610299578063b2fb3b901461030b578063c170fd5414610328578063c1d1faf31461033a578063d5b2a01a14610373578063e410a0c61461039d578063e80db5db146103c3578063f2fde38b146103d6575b34156100f857600080fd5b005b341561010557600080fd5b61011764ffffffffff600435166103f5565b604051901515815260200160405180910390f35b341561013657600080fd5b6100f861041e565b341561014957600080fd5b61011761049d565b341561015c57600080fd5b6101176104ad565b341561016f57600080fd5b6100f86104b6565b341561018257600080fd5b61019464ffffffffff60043516610535565b6040516001608060020a03909116815260200160405180910390f35b34156101bb57600080fd5b6101cd64ffffffffff6004351661056f565b6040516001608060020a0396871681529486166020860152600160a060020a0390931660408086019190915264ffffffffff928316606086015291166080840152921660a082015260c001905180910390f35b341561022b57600080fd5b6100f86105d8565b341561023e57600080fd5b61024661065c565b604051600160a060020a03909116815260200160405180910390f35b341561026d57600080fd5b6100f861ffff6004351661066b565b341561028757600080fd5b6100f864ffffffffff600435166106cc565b34156102a457600080fd5b6102b664ffffffffff60043516610725565b604051600160a060020a0390961686526001608060020a03948516602087015292841660408087019190915264ffffffffff928316606087015291166080850152911660a083015260c0909101905180910390f35b341561031657600080fd5b6100f864ffffffffff600435166107c0565b6100f864ffffffffff6004351661083c565b6100f864ffffffffff6004358116906001608060020a036024358116916044359091169060643516600160a060020a0360843516610866565b341561037e57600080fd5b610386610907565b60405161ffff909116815260200160405180910390f35b34156103a857600080fd5b6100f8600160a060020a036004351661ffff60243516610918565b34156103ce57600080fd5b610246610a04565b34156103e157600080fd5b6100f8600160a060020a0360043516610a13565b64ffffffffff90811660009081526002602052604081206001015460c860020a90049091161190565b60005433600160a060020a0390811691161461043957600080fd5b60005460a060020a900460ff16151561045157600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60005460a060020a900460ff1681565b60035460ff1681565b600154600054600160a060020a0391821691338116911614806104ea575080600160a060020a031633600160a060020a0316145b15156104f557600080fd5b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561053257600080fd5b50565b64ffffffffff8116600090815260026020526040812061055481610aae565b151561055f57600080fd5b61056881610ac7565b9392505050565b60026020819052600091825260409091208054600182015491909201546001608060020a03808416937001000000000000000000000000000000009004811692600160a060020a0381169264ffffffffff60a060020a830481169360c860020a90930416911686565b60005433600160a060020a039081169116146105f357600080fd5b60005460a060020a900460ff161561060a57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b60005433600160a060020a0390811691161461068657600080fd5b61271061ffff8216111561069957600080fd5b6001805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b64ffffffffff81166000908152600260205260408120906106ec82610aae565b15156106f757600080fd5b506001810154600160a060020a03908116903316811461071657600080fd5b6107208382610b4e565b505050565b64ffffffffff811660009081526002602052604081208190819081908190819061074e81610aae565b151561075957600080fd5b60018101548154600290920154600160a060020a0382169a6001608060020a038085169b507001000000000000000000000000000000009094048416995064ffffffffff60a060020a84048116995060c860020a9093049092169650919091169350915050565b6000805460a060020a900460ff1615156107d957600080fd5b60005433600160a060020a039081169116146107f457600080fd5b5064ffffffffff8116600090815260026020526040902061081481610aae565b151561081f57600080fd5b6001810154610838908390600160a060020a0316610b4e565b5050565b346001608060020a0381111561085157600080fd5b61085b8234610ba0565b506108383383610cd3565b61086e61104f565b60015433600160a060020a0390811691161461088957600080fd5b6108938287610d44565b60c060405190810160405280866001608060020a03168152602001856001608060020a0316815260200183600160a060020a031681526020018464ffffffffff1681526020014264ffffffffff168152602001346001608060020a031681525090506108ff8682610dad565b505050505050565b60015460a060020a900461ffff1681565b6000805433600160a060020a0390811691161461093457600080fd5b61271061ffff8316111561094757600080fd5b506001805475ffff0000000000000000000000000000000000000000191660a060020a61ffff84160217905581600160a060020a038116634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109b157600080fd5b5af115156109be57600080fd5b5050506040518051905015156109d357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600154600160a060020a031681565b60005433600160a060020a03908116911614610a2e57600080fd5b600160a060020a0381161515610a4357600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60010154600060c860020a90910464ffffffffff161190565b60018101546000908190429064ffffffffff60c860020a90910481169082161115610b0457600184015460c860020a900464ffffffffff16810391505b83546001850154610b46916001608060020a0380821692700100000000000000000000000000000000909204169060a060020a900464ffffffffff1685610f63565b949350505050565b610b5782610fca565b610b618183610cd3565b7ff6680ade663631ec4dd74f7eaa1f75125361380cd50a22f969e9acfa5f5367048260405164ffffffffff909116815260200160405180910390a15050565b64ffffffffff8216600090815260026020526040812081808080610bc385610aae565b1515610bce57600080fd5b610bd785610ac7565b93506001608060020a038085169088161015610bf257600080fd5b6001850154600160a060020a03169250610c0b88610fca565b6000846001608060020a03161115610c6757610c2684611028565b915050808303600160a060020a0383166001608060020a03821680156108fc0290604051600060405180830381858888f193505050501515610c6757600080fd5b7f8500e47909916e51e97e4880e742d8b9af1afaeb9ea54166947cf42e6616b11788853360405164ffffffffff90931683526001608060020a039091166020830152600160a060020a03166040808301919091526060909101905180910390a150919695505050505050565b600154600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a03909216600483015264ffffffffff166024820152604401600060405180830381600087803b1515610d3057600080fd5b5af11515610d3d57600080fd5b5050505050565b600154600160a060020a03166323b872dd83308460405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015264ffffffffff9091166044820152606401600060405180830381600087803b1515610d3057600080fd5b603c816060015164ffffffffff161015610dc657600080fd5b64ffffffffff821660009081526002602052604090208190815181546fffffffffffffffffffffffffffffffff19166001608060020a0391909116178155602082015181546001608060020a03918216700100000000000000000000000000000000029116178155604082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548164ffffffffff021916908364ffffffffff16021790555060a082015160029190910180546fffffffffffffffffffffffffffffffff19166001608060020a03909216919091179055507f10812469e6e641cdef133a0556aa1bfd46bcd460e603da6af3233f8a6e242f6a828251836020015184606001518560a0015160405164ffffffffff95861681526001608060020a03948516602082015292841660408085019190915291909416606083015292909116608082015260a001905180910390a15050565b600080808064ffffffffff80871690861610610f8157869350610fbf565b876001608060020a0316876001608060020a03160392508564ffffffffff168564ffffffffff168402811515610fb357fe5b05915081880190508093505b505050949350505050565b64ffffffffff16600090815260026020819052604082209182556001820180547fffff0000000000000000000000000000000000000000000000000000000000001690550180546fffffffffffffffffffffffffffffffff19169055565b6001546000906127109060a060020a900461ffff1683026001608060020a03160492915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820152905600a165627a7a723058205f212fe896014f2d0d159ed6c7949ef40e5cc1541135a3776a565dc716f1d4190029

   Swarm Source:
bzzr://5f212fe896014f2d0d159ed6c7949ef40e5cc1541135a3776a565dc716f1d419

 

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.