Contract Overview |  BlockchainCuties_SaleMarket3
Balance: 0.678961342455704219 Ether
Ether Value: $79.29 (@ $116.78/ETH)
Transactions: 254 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x45f254fd3fef54f3a5a8d601d291f2a5bf9d8d67at txn 0x8298ac9a448ffad461feca3790218074b1780ab1a46861eed6ea1d25ad83daa6
Token Balance:
 Latest 25 transactions from a total of 254 transactions

TxHash Age From To Value [TxFee]
0xe103b42ca79c30d5fdbde665ef21dbdf700817fcab4b83952dc4089ffd0c6b9528 days 21 hrs ago0x39c4e59bea399f09818c817a7ad96ed4891396ef  IN   BlockchainCuties_SaleMarket30.098700001 Ether0.0003865545
0xdfe08d2e396c6b870916ed51fa850ceb437a5921a79052ccb975b9216855079b64 days 18 hrs ago0xc24ec61aef3761963c8e186408a98e7c41d56408  IN   BlockchainCuties_SaleMarket30.245000002 Ether0.000290955
0xadb2c6ebe5f9817ada1a6a2055a0c1c226b32c0b47b946c109add3e9b6092a6575 days 13 hrs ago0xf5774ae344085390e2935183628207b9e15f27ee  IN   BlockchainCuties_SaleMarket30.068500000999999 Ether0.0001371645
0xed390d1ff96ca0a136364b181b14253d4b7608923d2b4cbe50be8252d81a8df987 days 8 hrs ago0x684e7eb92c1c72ef1f59140c1668eebbc1a76d61  IN   BlockchainCuties_SaleMarket30.005000001 Ether0.0001122255
0xa197ac3d31c285f3348e0e546a047e2ec2353d97ac8ef7d3ab88677f903c928b93 days 19 hrs ago0x039dedb2a02123ea054f65f38da7582e97c9d6ec  IN   BlockchainCuties_SaleMarket30 Ether0.000108756
0x4248c53f8eedc20ecd89959c0ee0e4b9e8533612b800bf7fdc256c75f33868c799 days 14 hrs ago0x1e6455b54fd8253138a28199710855bd3f2e79a7  IN   BlockchainCuties_SaleMarket30.056500001 Ether0.0001205385
0x3f248c08787d88b2188d0a7c26836986e3c3122d385e58f9bad34b289698cab2102 days 21 hrs ago0xa9c69064af891868003ef9ccffb6dda567c596e9  IN   BlockchainCuties_SaleMarket30.005000001 Ether0.0000903193
0xa7b9581cb8cd13dce1920ccc2f5160738d5e0005a9636652a2b1a93006d3e1a3104 days 4 hrs ago0x80057cb5b18decacf366ef43b5032440f5c97490  IN   BlockchainCuties_SaleMarket30.002000001 Ether0.000204387
0xf0d469d32c0ba8876d553c317dab086566e9fcab8906b9c153de52c401bc2299104 days 8 hrs ago0xb287ff473a31b8e107f3d060f0a109398c1c06cc  IN   BlockchainCuties_SaleMarket30.020000001 Ether0.0001974172
0x6ccaab66912ef03507c0bf47c244ab1bdedd7472c1f38bc751515db0427957f9131 days 19 hrs ago0x91d98d26f8abcfd9b82b3a8977bb9af0d8d48cb2  IN   BlockchainCuties_SaleMarket30 Ether0.000163134
0x9d0d7940f14fb1a3bfaaa2b8532f2d0cd22a343c3e19acaf072a7e9c055f56fb131 days 19 hrs ago0x91d98d26f8abcfd9b82b3a8977bb9af0d8d48cb2  IN   BlockchainCuties_SaleMarket30 Ether0.0003442824
0x05b15262c35ccb5e5b54b180393c96b96a521893d2370f80c5acde87a1f156ce135 days 4 hrs ago0xd15d722c0ba92be4bb177001508f35eb2a6cbf91  IN   BlockchainCuties_SaleMarket30.005224272296296 Ether0.00034178
0xc7785fd967f9a566780627f73d0bd60bf82da59e73bbf98444167d199657505a140 days 23 hrs ago0x182db0b6a5b4b5c92fcf006ea555030a28d0564b  IN   BlockchainCuties_SaleMarket30 Ether0.000127512
0xfb8b683f8570572f48a15448bcf60767c3bc7630115aa0e35d35b1276c477ca3142 days 1 hr ago0xa691ca9f1958c09489185231ac509fbf0e03a94d  IN   BlockchainCuties_SaleMarket30 Ether0.0000833796
0x5f655b2b3d18f3fd9011fb38412974ad4583ec15e5c16fd0e01ab839266bae68142 days 9 hrs ago0xe657ce4ac591af5f5e7bbe671c61dfe1c73252cc  IN   BlockchainCuties_SaleMarket30 Ether0.0000977592
0x02b7044dcbf517ae1f892ac2165649c2945e0c8b29cec6105945d94d86b55384142 days 10 hrs ago0x14d1e04677f9473ac4e2aaedc7fac2496982d080  IN   BlockchainCuties_SaleMarket30 Ether0.00010730592
0x4bbc041c024f7de3bf2ab771ed4479ae718e51e32da55d329b38915230bb4d95142 days 11 hrs ago0xfc5ab9b56cdea1656b11bf6186f798b5f43285fb  IN   BlockchainCuties_SaleMarket30 Ether0.00010626
0xf3b16d7d2bacf9e4a823132adfc81b2b029c5d06c0fd84fbe74c3156d0bbda79142 days 11 hrs ago0xfc5ab9b56cdea1656b11bf6186f798b5f43285fb  IN   BlockchainCuties_SaleMarket30 Ether0.00010626
0xcd4242fb0fcafe215b2003b94bf19716409cdb096f74bde2b6b10a60e56d98d7142 days 11 hrs ago0xfc5ab9b56cdea1656b11bf6186f798b5f43285fb  IN   BlockchainCuties_SaleMarket30 Ether0.00010626
0xc73ca8c1b90cc4c1a14d0001d664d291236a12114add6cfa7e74f468c25a12ac142 days 11 hrs ago0xe657ce4ac591af5f5e7bbe671c61dfe1c73252cc  IN   BlockchainCuties_SaleMarket30 Ether0.00010626
0x6d7a247aaedc44bae00be44689354cbc4e72ea0ca81864d5ddc1dc0283fd9cb9151 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket30 Ether0.000085008
0x9c9ecda822bf4125298c823b854d8f149eefe7d55ed245b39141164c66a9e6b1151 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket30 Ether0.000085008
0xfc955be51969258cdf2063bd9ea7bc0d7222197045d2853880b295f90a18951d151 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket30 Ether0.000085008
0xd5f3a982f02d646c4f8547c9b217e5f428db068289aa3ac4038295db536de702151 days 5 hrs ago0x88efdba2d8c02afca0e42756a17d051b7b40d9bd  IN   BlockchainCuties_SaleMarket30 Ether0.000085008
0xc60cc87d22c82ead015b19b3bbced84dc2fcf7b6ea7f207b120b0aafd897bdf8155 days 8 hrs ago0x27cbf188441a19e327ee7c2a930fe9b6b02f62b0  IN   BlockchainCuties_SaleMarket30 Ether0.0001020096
[ 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
0xe103b42ca79c30d5fdbde665ef21dbdf700817fcab4b83952dc4089ffd0c6b95695434728 days 21 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xc145336a17d7486cbe3cd8319b787867fb8661c90.094752000000000009 Ether
0xdfe08d2e396c6b870916ed51fa850ceb437a5921a79052ccb975b9216855079b673837764 days 18 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x1e76fa584f1f4cdbe14af34bd286a439ba7ae6860.235200000960000022 Ether
0xadb2c6ebe5f9817ada1a6a2055a0c1c226b32c0b47b946c109add3e9b6092a65667253875 days 13 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xfbbf21e354eaa31f737b50a62326675206c8d09a0.065759999999999992 Ether
0xed390d1ff96ca0a136364b181b14253d4b7608923d2b4cbe50be8252d81a8df9660067387 days 8 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x04a1290cfbd5a125cc13ce5cbbac0b7170438bbd0.0048 Ether
0x4248c53f8eedc20ecd89959c0ee0e4b9e8533612b800bf7fdc256c75f33868c7652552199 days 14 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x1e76fa584f1f4cdbe14af34bd286a439ba7ae6860.054240000000000008 Ether
0x3f248c08787d88b2188d0a7c26836986e3c3122d385e58f9bad34b289698cab26505488102 days 21 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xa1c299326473983c303eebb76e0cb062857cd9cb0.0048 Ether
0xa7b9581cb8cd13dce1920ccc2f5160738d5e0005a9636652a2b1a93006d3e1a36497552104 days 4 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x391ec82629fc1bf3c4de41bc7ea75e50e0251e220.00192 Ether
0xf0d469d32c0ba8876d553c317dab086566e9fcab8906b9c153de52c401bc22996496312104 days 8 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xf281e85a0b992efa5fda4f52b35685dc5ee67bea0.0192 Ether
0x05b15262c35ccb5e5b54b180393c96b96a521893d2370f80c5acde87a1f156ce6308454135 days 4 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x02f5666d3add12b4a0e986c1a08f39f3282a05490.005015275185185186 Ether
0x33fb754266efaf9c6f51730457d654176c5702057287811b5268b585b5c56a3a6182510156 days 9 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x88efdba2d8c02afca0e42756a17d051b7b40d9bd0.011266814222222223 Ether
0xc3a7a52844b789475c8f1fd11e75ac8e6f322a97decdb1f98d9704d14e6f4fe56172053158 days 3 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x694afea34f82db4f2295b1e4d0f2a6eb09b7c88e0.223680000000000012 Ether
0xaa5da0b640aeb9c68d7abe96a068ea13b16ced17da836a738b414717b75a54dd6166118159 days 4 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x88efdba2d8c02afca0e42756a17d051b7b40d9bd0.009525616296296297 Ether
0xd12f78b28295b13af8df1f0d53661742a7c412ef8bb5a11963a1f3cc2287bee16166118159 days 4 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x88efdba2d8c02afca0e42756a17d051b7b40d9bd0.009468148148148149 Ether
0x92e7648e1df1621f705add977fa61eb718d626c08eab78eea60b2c43a74a9bb66160564160 days 2 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x88efdba2d8c02afca0e42756a17d051b7b40d9bd0.009537594074074075 Ether
0xf6453c6827b5b5d15470f15d371bc189277ef208671f107c93c2719e3d950ed66153376161 days 8 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xa3f97733611bf44d3c88ed42073b83669b961ec50.002790769833333334 Ether
0xdc98c0b5b5263b91e4b8a4b4cd73a0328660dae29b58d5f70b36a3ece36341286153355161 days 8 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xa3f97733611bf44d3c88ed42073b83669b961ec50.002747521666666668 Ether
0x751980d2437e00fe67ad28c17a2379ad475bcc563a031888f14c7843e50e68586141572163 days 7 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xe657ce4ac591af5f5e7bbe671c61dfe1c73252cc0.0096 Ether
0x3106279aefdf02b61523f8f07618881f5a4596520b4654aa435732bffc534e606140349163 days 12 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xe657ce4ac591af5f5e7bbe671c61dfe1c73252cc0.0096 Ether
0x4a6832e3294e1a2d418343af99dc4d43f71efe8bf04fc27b48b1584eaf54b7216139094163 days 17 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x921d71dacda6e7bec838f2af4dbd8fc1361dd40b0.0096 Ether
0xb3306c5297a3307e7c86ea279917b6919ed22a1715afeb1ff3dfa9621a20521e6136145164 days 5 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xa3f97733611bf44d3c88ed42073b83669b961ec50.002787778888888889 Ether
0x4ded247879ed0db4a172f7b93c8a6efec241050216ba77cf3dcb9e264cd599d96126443165 days 21 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x28be29aba5a322a21342b6b4ced7aa3e4d655ed10.002344644047863248 Ether
0x9b8aa0e04cc3421eb85bc19bd0d41a17e2fb602e318cb4f666626c8cecbe8b936122101166 days 14 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xe657ce4ac591af5f5e7bbe671c61dfe1c73252cc0.0096 Ether
0x2fbc880c9e9429176c3b07a88b53dba69b733dc5d449ff5b086a38cdc398728d6121885166 days 15 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0x921d71dacda6e7bec838f2af4dbd8fc1361dd40b0.0096 Ether
0xbc9e8da83929a7f830b228d17a120be7ff9fa4b8c95d4bb3057543d23dcb5f756096085171 days 18 mins ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0.098945833333333334 Ether
0x2a2ab775e3aec05ad7432a344f53208ee3940bcf77ec21a288594256081fa10c6095676171 days 2 hrs ago0xafa1ae00ab5aabe9d3f028c0ead4f8e10114408d0xd73be539d6b2076bab83ca6ba62dfe189abc6bbe0.103388194444444445 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: SaleMarket
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

pragma solidity ^0.4.24;

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;
}

pragma solidity ^0.4.20;


pragma solidity ^0.4.24;


/**
 * @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.
   */
  constructor() 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();
  }
}

pragma solidity ^0.4.24;

/// @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,
        bool tokensAllowed
    );
}

pragma solidity ^0.4.24;

// https://etherscan.io/address/0x4118d7f757ad5893b8fa2f95e067994e1f531371#code
interface ERC20 {
	
	 /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` on behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
	function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);

	function approveAndCall(address _spender, uint256 _value, bytes _extraData) external
        returns (bool success);

	/**
	 * Transfer tokens
	 *
	 * Send `_value` tokens to `_to` from your account
	 *
	 * @param _to The address of the recipient
	 * @param _value the amount to send
	 */
	function transfer(address _to, uint256 _value) external;

    /// @notice Count all tokens assigned to an owner
    function balanceOf(address _owner) external view returns (uint256);
}

pragma solidity ^0.4.24;

// https://etherscan.io/address/0x3127be52acba38beab6b4b3a406dc04e557c037c#code
contract PriceOracleInterface {

    // How much TOKENs you get for 1 ETH, multiplied by 10^18
    uint256 public ETHPrice;
}

pragma solidity ^0.4.24;

interface TokenRecipientInterface
{
        function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external;
}


/// @title Auction Market for Blockchain Cuties.
/// @author https://BlockChainArchitect.io
contract Market is MarketInterface, Pausable, TokenRecipientInterface
{
    // Shows the auction on an Cutie Token
    struct Auction {
        // Price (in wei or tokens) at the beginning of auction
        uint128 startPrice;
        // Price (in wei or tokens) 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;
        // is it allowed to bid with erc20 tokens
        bool tokensAllowed;
    }

    // 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;
    mapping (address => PriceOracleInterface) public priceOracle;


    address operatorAddress;

    event AuctionCreated(uint40 indexed cutieId, uint128 startPrice, uint128 endPrice, uint40 duration, uint128 fee, bool tokensAllowed);
    event AuctionSuccessful(uint40 indexed cutieId, uint128 totalPriceWei, address indexed winner);
    event AuctionSuccessfulForToken(uint40 indexed cutieId, uint128 totalPriceWei, address indexed winner, uint128 priceInTokens, address indexed token);
    event AuctionCancelled(uint40 indexed cutieId);

    modifier onlyOperator() {
        require(msg.sender == operatorAddress || msg.sender == owner);
        _;
    }

    function setOperator(address _newOperator) public onlyOwner {
        require(_newOperator != address(0));

        operatorAddress = _newOperator;
    }

    /// @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,
            _auction.tokensAllowed
        );
    }

    // @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);

        bool allowTokens = _duration < 0x8000000000; // first bit of duration is boolean flag (1 to disable tokens)
        _duration = _duration % 0x8000000000; // clear flag from duration

        Auction memory auction = Auction(
            _startPrice,
            _endPrice,
            _seller,
            _duration,
            uint40(now),
            uint128(msg.value),
            allowTokens
        );
        _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);
    }

    function getPriceInToken(ERC20 _tokenContract, uint128 priceWei)
        public
        view
        returns (uint128)
    {
        PriceOracleInterface oracle = priceOracle[address(_tokenContract)];
        require(address(oracle) != address(0));

        uint256 ethPerToken = oracle.ETHPrice();
        return uint128(uint256(priceWei) * ethPerToken / 1 ether);
    }

    function getCutieId(bytes _extraData) internal returns (uint40)
    {
        return
            uint40(_extraData[0]) +
            uint40(_extraData[1]) * 0x100 +
            uint40(_extraData[2]) * 0x10000 +
            uint40(_extraData[3]) * 0x100000 +
            uint40(_extraData[4]) * 0x10000000;
    }

    // https://github.com/BitGuildPlatform/Documentation/blob/master/README.md#2-required-game-smart-contract-changes
    // Function that is called when trying to use PLAT for payments from approveAndCall
    function receiveApproval(address _sender, uint256 _value, address _tokenContract, bytes _extraData)
        external
        canBeStoredIn128Bits(_value)
        whenNotPaused
    {
        ERC20 tokenContract = ERC20(_tokenContract);

        require(_extraData.length == 5); // 40 bits
        uint40 cutieId = getCutieId(_extraData);

        // Get a reference to the auction struct
        Auction storage auction = cutieIdToAuction[cutieId];
        require(auction.tokensAllowed); // buy for token is allowed

        require(_isOnAuction(auction));

        uint128 priceWei = _currentPrice(auction);

        uint128 priceInTokens = getPriceInToken(tokenContract, priceWei);

        // Check that bid > current price
        //require(_value >= priceInTokens);

        // 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 (priceInTokens > 0) {
            uint128 fee = _computeFee(priceInTokens);
            uint128 sellerValue = priceInTokens - fee;

            require(tokenContract.transferFrom(_sender, address(this), priceInTokens));
            tokenContract.transfer(seller, sellerValue);
        }
        emit AuctionSuccessfulForToken(cutieId, priceWei, _sender, priceInTokens, _tokenContract);
        _transfer(_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,
        bool tokensAllowed
    ) {
        Auction storage auction = cutieIdToAuction[_cutieId];
        require(_isOnAuction(auction));
        return (
            auction.seller,
            auction.startPrice,
            auction.endPrice,
            auction.duration,
            auction.startedAt,
            auction.featuringFee,
            auction.tokensAllowed
        );
    }

    // @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);
    }

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

    // @dev Transfers to _withdrawToAddress all tokens controlled by
    // contract _tokenContract.
    function withdrawTokenFromBalance(ERC20 _tokenContract, address _withdrawToAddress) external
    {
        address coreAddress = address(coreContract);

        require(
            msg.sender == owner ||
            msg.sender == operatorAddress ||
            msg.sender == coreAddress
        );
        uint256 balance = _tokenContract.balanceOf(address(this));
        _tokenContract.transfer(_withdrawToAddress, balance);
    }

    /// @dev Allow buy cuties for token
    function addToken(ERC20 _tokenContract, PriceOracleInterface _priceOracle) external onlyOwner
    {
        priceOracle[address(_tokenContract)] = _priceOracle;
    }

    /// @dev Disallow buy cuties for token
    function removeToken(ERC20 _tokenContract) external onlyOwner
    {
        delete priceOracle[address(_tokenContract)];
    }
}


/// @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);

        bool allowTokens = _duration < 0x8000000000; // first bit of duration is boolean flag (1 to disable tokens)
        _duration = _duration % 0x8000000000; // clear flag from duration

        Auction memory auction = Auction(
            _startPrice,
            _endPrice,
            _seller,
            _duration,
            uint40(now),
            uint128(msg.value),
            allowTokens
        );
        _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":true,"inputs":[{"name":"","type":"address"}],"name":"priceOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"cancelCreatorAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_priceOracle","type":"address"}],"name":"addToken","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":"_tokenContract","type":"address"}],"name":"removeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"name":"tokensAllowed","type":"bool"}],"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":"_sender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_tokenContract","type":"address"},{"name":"_extraData","type":"bytes"}],"name":"receiveApproval","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"},{"name":"tokensAllowed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"priceWei","type":"uint128"}],"name":"getPriceInToken","outputs":[{"name":"","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":"_newOperator","type":"address"}],"name":"setOperator","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":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_withdrawToAddress","type":"address"}],"name":"withdrawTokenFromBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"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"},{"indexed":false,"name":"tokensAllowed","type":"bool"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"cutieId","type":"uint40"},{"indexed":false,"name":"totalPriceWei","type":"uint128"},{"indexed":true,"name":"winner","type":"address"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"cutieId","type":"uint40"},{"indexed":false,"name":"totalPriceWei","type":"uint128"},{"indexed":true,"name":"winner","type":"address"},{"indexed":false,"name":"priceInTokens","type":"uint128"},{"indexed":true,"name":"token","type":"address"}],"name":"AuctionSuccessfulForToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"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
6080604052600080546004805460a060020a60ff02191674010000000000000000000000000000000000000000179055600160a860020a03191633179055611aa28061004c6000396000f3006080604052600436106101455763ffffffff60e060020a6000350416632177885d81146101545780632951f1b21461018757806330d9161d146101c45780633f4ba83a146101e55780635476bd72146101fa5780635c975abb146102215780635fa7b584146102365780636066b06614610257578063776247c41461026c5780637ea310d41461028157806381baab24146102bc5780638456cb59146103355780638da5cb5b1461034a5780638e0055531461035f5780638f4ffcb11461037b57806398c9faac146103b35780639ccaec98146103d2578063a01da7b21461044a578063b2fb3b9014610477578063b3ab15fb14610496578063c170fd54146104b7578063c1d1faf3146104c9578063cda8c71514610502578063d5b2a01a14610529578063e410a0c614610555578063e80db5db1461057d578063f2fde38b14610592575b34801561015157600080fd5b50005b34801561016057600080fd5b5061017364ffffffffff600435166105b3565b604080519115158252519081900360200190f35b34801561019357600080fd5b506101a8600160a060020a03600435166105dc565b60408051600160a060020a039092168252519081900360200190f35b3480156101d057600080fd5b506101e364ffffffffff600435166105f7565b005b3480156101f157600080fd5b506101e3610686565b34801561020657600080fd5b506101e3600160a060020a03600435811690602435166106fc565b34801561022d57600080fd5b5061017361074e565b34801561024257600080fd5b506101e3600160a060020a036004351661075e565b34801561026357600080fd5b506101736107a9565b34801561027857600080fd5b506101e36107b9565b34801561028d57600080fd5b506102a064ffffffffff60043516610826565b604080516001608060020a039092168252519081900360200190f35b3480156102c857600080fd5b506102db64ffffffffff60043516610860565b604080516001608060020a0398891681529688166020880152600160a060020a039095168686015264ffffffffff9384166060870152919092166080850152931660a083015291151560c082015290519081900360e00190f35b34801561034157600080fd5b506101e36108d3565b34801561035657600080fd5b506101a861094e565b34801561036b57600080fd5b506101e361ffff6004351661095d565b34801561038757600080fd5b506101e360048035600160a060020a0390811691602480359260443516916064359182019101356109ba565b3480156103bf57600080fd5b506101e364ffffffffff60043516610cc5565b3480156103de57600080fd5b506103f164ffffffffff60043516610d15565b60408051600160a060020a0390981688526001608060020a0396871660208901529486168786015264ffffffffff9384166060880152919092166080860152921660a084015290151560c0830152519081900360e00190f35b34801561045657600080fd5b506102a0600160a060020a03600435166001608060020a0360243516610dbc565b34801561048357600080fd5b506101e364ffffffffff60043516610e71565b3480156104a257600080fd5b506101e3600160a060020a0360043516610ee5565b6101e364ffffffffff60043516610f40565b6101e364ffffffffff6004358116906001608060020a036024358116916044359091169060643516600160a060020a0360843516610f6a565b34801561050e57600080fd5b506101e3600160a060020a0360043581169060243516611028565b34801561053557600080fd5b5061053e61118a565b6040805161ffff9092168252519081900360200190f35b34801561056157600080fd5b506101e3600160a060020a036004351661ffff6024351661119b565b34801561058957600080fd5b506101a861128c565b34801561059e57600080fd5b506101e3600160a060020a036004351661129b565b64ffffffffff90811660009081526002602052604081206001015460c860020a90049091161190565b600360205260009081526040902054600160a060020a031681565b6004546000908190600160a060020a031633148061061f5750600054600160a060020a031633145b151561062a57600080fd5b64ffffffffff83166000908152600260205260409020915061064b8261132f565b151561065657600080fd5b506001808201549054600160a060020a039182169116811461067757600080fd5b6106818333611348565b505050565b600054600160a060020a0316331461069d57600080fd5b60005460a060020a900460ff1615156106b557600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600054600160a060020a0316331461071357600080fd5b600160a060020a039182166000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055565b60005460a060020a900460ff1681565b600054600160a060020a0316331461077557600080fd5b600160a060020a03166000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055565b60045460a060020a900460ff1681565b600154600054600160a060020a0391821691163314806107e1575033600160a060020a038216145b15156107ec57600080fd5b604051600160a060020a03821690303180156108fc02916000818181858888f19350505050158015610822573d6000803e3d6000fd5b5050565b64ffffffffff811660009081526002602052604081206108458161132f565b151561085057600080fd5b61085981611391565b9392505050565b60026020819052600091825260409091208054600182015491909201546001608060020a038084169370010000000000000000000000000000000090819004821693600160a060020a0381169364ffffffffff60a060020a830481169460c860020a90930416929181169160ff91041687565b600054600160a060020a031633146108ea57600080fd5b60005460a060020a900460ff161561090157600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b600054600160a060020a031681565b600054600160a060020a0316331461097457600080fd5b61271061ffff8216111561098757600080fd5b6001805461ffff90921660a060020a0275ffff000000000000000000000000000000000000000019909216919091179055565b6000808080808080808b6001608060020a038111156109d857600080fd5b60005460a060020a900460ff16156109ef57600080fd5b8b985060058a146109ff57600080fd5b610a388b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843750611418945050505050565b64ffffffffff81166000908152600260208190526040909120908101549199509750700100000000000000000000000000000000900460ff161515610a7c57600080fd5b610a858761132f565b1515610a9057600080fd5b610a9987611391565b9550610aa58987610dbc565b6001880154909550600160a060020a03169350610ac1886114fd565b6000856001608060020a03161115610c2c57610adc8561155c565b9250828503915088600160a060020a03166323b872dd8f30886040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a03168152602001826001608060020a031681526020019350505050602060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050506040513d6020811015610b9357600080fd5b50511515610ba057600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526001608060020a03851660248301529151918b169163a9059cbb9160448082019260009290919082900301818387803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505050505b8b600160a060020a03168e600160a060020a03168964ffffffffff167ff65c85ee1272f6f51bd40bae1565e2868b8e887082e6f94b4924d29d21f842d7898960405180836001608060020a03166001608060020a03168152602001826001608060020a03166001608060020a031681526020019250505060405180910390a4610cb58e89611583565b5050505050505050505050505050565b64ffffffffff8116600090815260026020526040812090610ce58261132f565b1515610cf057600080fd5b506001810154600160a060020a0316338114610d0b57600080fd5b6106818382611348565b64ffffffffff81166000908152600260205260408120819081908190819081908190610d408161132f565b1515610d4b57600080fd5b60018101548154600290920154600160a060020a0382169b6001608060020a038085169c507001000000000000000000000000000000009485900481169b5060a060020a840464ffffffffff9081169b5060c860020a909404909316985091811696509190910460ff169350915050565b600160a060020a0380831660009081526003602052604081205490911681811515610de657600080fd5b81600160a060020a0316633732e1536040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b505050506040513d6020811015610e4e57600080fd5b50519050670de0b6b3a76400006001608060020a03851682020495945050505050565b6000805460a060020a900460ff161515610e8a57600080fd5b600054600160a060020a03163314610ea157600080fd5b5064ffffffffff81166000908152600260205260409020610ec18161132f565b1515610ecc57600080fd5b6001810154610822908390600160a060020a0316611348565b600054600160a060020a03163314610efc57600080fd5b600160a060020a0381161515610f1157600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b346001608060020a03811115610f5557600080fd5b610f5f8234611613565b506108223383611583565b6000610f74611a3a565b600154600160a060020a03163314610f8b57600080fd5b610f958388611734565b64800000000064ffffffffff8516818110935006935060e060405190810160405280876001608060020a03168152602001866001608060020a0316815260200184600160a060020a031681526020018564ffffffffff1681526020014264ffffffffff168152602001346001608060020a03168152602001831515815250905061101f87826117ae565b50505050505050565b60015460008054600160a060020a0392831692163314806110535750600454600160a060020a031633145b80611066575033600160a060020a038316145b151561107157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b1580156110d257600080fd5b505af11580156110e6573d6000803e3d6000fd5b505050506040513d60208110156110fc57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509086169163a9059cbb9160448082019260009290919082900301818387803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b5050505050505050565b60015460a060020a900461ffff1681565b60008054600160a060020a031633146111b357600080fd5b61271061ffff831611156111c657600080fd5b81600160146101000a81548161ffff021916908361ffff16021790555082905080600160a060020a0316634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b505050506040513d602081101561124e57600080fd5b5051151561125b57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b600154600160a060020a031681565b600054600160a060020a031633146112b257600080fd5b600160a060020a03811615156112c757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60010154600060c860020a90910464ffffffffff161190565b611351826114fd565b61135b8183611583565b60405164ffffffffff8316907ff6680ade663631ec4dd74f7eaa1f75125361380cd50a22f969e9acfa5f53670490600090a25050565b60018101546000908190429064ffffffffff60c860020a909104811690821611156113ce57600184015460c860020a900464ffffffffff16810391505b83546001850154611410916001608060020a0380821692700100000000000000000000000000000000909204169060a060020a900464ffffffffff16856119d3565b949350505050565b600081600481518110151561142957fe5b90602001015160f860020a900460f860020a0260f860020a900463100000000282600381518110151561145857fe5b90602001015160f860020a900460f860020a0260f860020a9004621000000283600281518110151561148657fe5b90602001015160f860020a900460f860020a0260f860020a900462010000028460018151811015156114b457fe5b90602001015160f860020a900460f860020a0260f860020a9004610100028560008151811015156114e157fe5b016020015160f860020a90819004810204010101019050919050565b64ffffffffff16600090815260026020819052604082209182556001820180547fffff00000000000000000000000000000000000000000000000000000000000016905501805470ffffffffffffffffffffffffffffffffff19169055565b6001546000906127109060a060020a900461ffff1683026001608060020a03160492915050565b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015264ffffffffff851660248301529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156115f757600080fd5b505af115801561160b573d6000803e3d6000fd5b505050505050565b64ffffffffff82166000908152600260205260408120818080806116368561132f565b151561164157600080fd5b61164a85611391565b93506001608060020a03808516908816101561166557600080fd5b6001850154600160a060020a0316925061167e886114fd565b6000846001608060020a031611156116e1576116998461155c565b6040519092508285039150600160a060020a038416906001608060020a03831680156108fc02916000818181858888f193505050501580156116df573d6000803e3d6000fd5b505b604080516001608060020a03861681529051339164ffffffffff8b16917f8500e47909916e51e97e4880e742d8b9af1afaeb9ea54166947cf42e6616b1179181900360200190a350919695505050505050565b600154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015230602483015264ffffffffff85166044830152915191909216916323b872dd91606480830192600092919082900301818387803b1580156115f757600080fd5b603c816060015164ffffffffff16101515156117c957600080fd5b80600260008464ffffffffff1664ffffffffff16815260200190815260200160002060008201518160000160006101000a8154816001608060020a0302191690836001608060020a0316021790555060208201518160000160106101000a8154816001608060020a0302191690836001608060020a0316021790555060408201518160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555060608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548164ffffffffff021916908364ffffffffff16021790555060a08201518160020160006101000a8154816001608060020a0302191690836001608060020a0316021790555060c08201518160020160106101000a81548160ff0219169083151502179055509050508164ffffffffff167fb5cfc381f79e09b5e427756c6c36086288faf8a39c226abab7c517219fb6c8018260000151836020015184606001518560a001518660c0015160405180866001608060020a03166001608060020a03168152602001856001608060020a03166001608060020a031681526020018464ffffffffff1664ffffffffff168152602001836001608060020a03166001608060020a03168152602001821515151581526020019550505050505060405180910390a25050565b600080808064ffffffffff808716908616106119f157869350611a2f565b876001608060020a0316876001608060020a03160392508564ffffffffff168564ffffffffff168402811515611a2357fe5b05915081880190508093505b505050949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152905600a165627a7a723058204211a90dc4024a6b277e1d4f63211ba2db537c565eaf554d6d10e6489112a4300029

   Swarm Source:
bzzr://4211a90dc4024a6b277e1d4f63211ba2db537c565eaf554d6d10e6489112a430

 

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.