Contract 0x30d0307515314d23f5417724000f67c49256fcdc

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0xd5e1b1261012709d0646a323d21e9abea6549d7c24e6f53076a0564c796ac67375251242021-05-18 20:09:575 hrs 24 mins ago0xd320f96410baddcd0fe158dc25b4c364a161f23a IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00098519
0x8acb48a67eac81e2649defaf6de98df5d69509e337e0c21ccc5d270b5409667d75250992021-05-18 20:08:425 hrs 25 mins ago0xd320f96410baddcd0fe158dc25b4c364a161f23a IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00098519
0x04ba99bca3340b86b42923ada8fc02b4838a6d0b5f86dd40a3eb789be7c53d0375248212021-05-18 19:54:465 hrs 39 mins ago0x7dc5c61dee3b7db59336b26b7a797e90ae5dd42d IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00091019
0xc18a7101dc4a38589806a2ea2cb391c619a4a0ce13a4cfd189d9d7cfe03d1ab675247972021-05-18 19:53:345 hrs 40 mins ago0x7dc5c61dee3b7db59336b26b7a797e90ae5dd42d IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00098519
0x924c9d5366add490c196b7326accaebc0cc9f211df72fa1850a781ca4b20251e75246762021-05-18 19:47:315 hrs 46 mins ago0x1a1ab007ab5f9c00a220626631427f35ec991c03 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00014015
0xf51e0350347f054d26a128bc4336ecc9bed1044346114b1dbf629a1a4428047575246602021-05-18 19:46:435 hrs 47 mins ago0x1a1ab007ab5f9c00a220626631427f35ec991c03 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00014015
0x8c0f17587baa0877cfb8c83bc8c8b8ac8b4b7e8359280818c713ae7478d4841975231082021-05-18 18:29:067 hrs 5 mins ago0x14edc2ce4e34d610539543e19dbeac3ea8ac7d11 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00014021
0x91d12a4a400cdffd4a15ae9ea6e17b52bdbea893dee59aa6b077f3df10beb29775229312021-05-18 18:20:157 hrs 14 mins ago0x73922a452693c249c65b2d12b3081caa11560cbb IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001542075
0xd978f3d33d6231b0f167eba1d3ee4819a29a8f45eac2fc0923ef9ad7396de5fb75229102021-05-18 18:19:127 hrs 15 mins ago0x73922a452693c249c65b2d12b3081caa11560cbb IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001542075
0x9f4cee3e028126b7b1ad3b62c1eac615116c767ab266dae2d7d1b97a48590a2975228882021-05-18 18:18:067 hrs 16 mins ago0x73922a452693c249c65b2d12b3081caa11560cbb IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001486605
0x667607dd42e5929c10cfb15700ecf4072b7f897f3e0a8e40bb3881ce59cb7bb675210072021-05-18 16:43:278 hrs 50 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001486545
0x77d967dee0dea9041543d201ec24448083ed78bce3ccf8558f10e4b3e1df37da75209992021-05-18 16:43:038 hrs 51 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001542015
0x8b68a5ea86a8f0ef67c12588945bae781b5d7db49bf6e3573881d1f9993570be75209942021-05-18 16:42:478 hrs 51 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001542015
0xda80fb635342e9f60b26f8f95fecff22d7584e4b36fbf8d2f0f5195083fbef5475209852021-05-18 16:42:188 hrs 52 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.001542015
0x89f925c268b0df7388d84d7171e3cbb1577083ba0b194d6e728f000e59e792df75209782021-05-18 16:41:568 hrs 52 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0xd46e460fa51a1cb5ede28b4250394a4390c81a40637ea539e8c621ee6c5dee7275209702021-05-18 16:41:238 hrs 53 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0x0f9ec2941d68a653b60ef040812a6001335817529af58b2c7f171bfc56d1b68575209592021-05-18 16:40:468 hrs 53 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0xb14b5c6b9842c102c08e7fd6670f627bce8b5ca0ddf1860cfc4f5449908f63e575209512021-05-18 16:40:178 hrs 54 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0xd0818797c2f2fea93b302bafca3b2bfc2e56e9ceccc8c16608b54062e6c8147175209442021-05-18 16:39:558 hrs 54 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0xa9170b6d52896050f6bbe130485d9b44db6236a0d7b12e150d16b96c23cb1f9f75209372021-05-18 16:39:308 hrs 54 mins ago0x67924d2d42f24646444c78428654b2620a0cf733 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0xd306b827a2a0c086285bc98431ee4e0f4af1d2c60d4f5b6a39afb1b17a49f32175203892021-05-18 16:11:419 hrs 22 mins ago0x23f160bff539bd236520a3fdf0e6f69fb60df4f1 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00150028
0x37692bf7f444a731f2f7e10f4c4f97d3f54517dcae19e3a64f9be77d765e5b5175202852021-05-18 16:06:299 hrs 27 mins ago0x1a1ab007ab5f9c00a220626631427f35ec991c03 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00146573
0xfe464eb516bda3f5c11be106ad8cac8b622fa09323637d12e5640cff40163ff475202632021-05-18 16:05:239 hrs 29 mins ago0x1a1ab007ab5f9c00a220626631427f35ec991c03 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00146573
0xe5158a65dfd1635f0007a323bf2fe2e8d5b221342ce79b1ae6556946ca57ef0b75202482021-05-18 16:04:389 hrs 29 mins ago0x1a1ab007ab5f9c00a220626631427f35ec991c03 IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.0015212
0x999cd887bb99f590022eb4ad7b30e31b4b5370c6cfc548cd8609303ff6a5a5f675201412021-05-18 15:59:049 hrs 35 mins ago0xd320f96410baddcd0fe158dc25b4c364a161f23a IN  0x30d0307515314d23f5417724000f67c49256fcdc0 BNB0.00150034
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MarketBeast

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : MarketBeast.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

import "../oz/access/Ownable.sol";
import "../oz/token/ERC20/IERC20.sol";
import "../oz/token/ERC721/utils/ERC721Holder.sol";
import '../oz/token/ERC721/IERC721.sol';
import '../oz/utils/Context.sol';

interface IBeastNFT is IERC721 {
    function valuesSeedFor(uint tokenId) view external returns (uint);
}

contract MarketBeast is ERC721Holder, Ownable{
    
    struct Ask {
      uint256 nftId;
      uint256 valuesSeed;
      uint256 price;
      uint256 soldTime;
      uint256 index;
      uint256 listTime;
      uint256 nonce;
      address owner;
    }
    

    struct PersonalIndexer {
        bytes32[] listings;
        uint256 indexLength;
    }
    
    mapping(bytes32 => Ask) public _bazaar;
    bytes32[] public _indexer;
    bytes32[] public _soldIndexer;
    uint256 public _indexerLength;
    mapping(address => PersonalIndexer) public _userBazaar;
    uint256 public _fees;
    address public brnr;
    
 
    IERC20 gen;
    IBeastNFT nft;

    // fees is in terms of parts per 1e4;

    constructor(IERC20 g, IBeastNFT n, uint256 fees) {
        gen = g;
        nft = n;
        _fees=fees;
        brnr = 0x000000000000000000000000000000000000dEaD;
    }
    
    
    
    modifier ownerOnly(uint256 nftId) {
        require(nft.ownerOf(nftId) == _msgSender(), "MarketPlace: You must own the NFT to perform this operation.");
        _;
    }
    
    
    // checking if sold
    function marketOperable(bytes32 askId) internal virtual {
        require(_bazaar[askId].soldTime == 0, "MarketPlace: NFT product already sold.");
    }
    
    
    // get list of all active listings
    function getIndexer() public view virtual returns(bytes32[] memory) {
        return _indexer;
    }
    
        // get list of all active listings
    function getFullMarket() public view returns(Ask[] memory) {
        Ask[] memory asks = new Ask[](_indexerLength);
        for (uint256 i = 0; i < _indexerLength; i++) {
            asks[i] = _bazaar[_indexer[i]];
        }
        return asks;
    }
    
    function getFullUserMarket(address _user) public view returns(Ask[] memory) {
        Ask[] memory asks = new Ask[](_userBazaar[_user].indexLength);
        for (uint256 i = 0; i < _userBazaar[_user].indexLength; i++) {
            asks[i] = _bazaar[_userBazaar[_user].listings[i]];
        }
        return asks;
    }
    
    // get info about any particular askId
    function getBazaar(bytes32 askId) public view virtual returns (Ask memory) {
        return _bazaar[askId];
    }
  
  
    //  get length of indexer (active listings only)
    function getIndexLength() public view virtual returns(uint256) {
        return _indexerLength;
    }
    
    // get list of sold listings
    function getSoldIndexer() public view virtual returns(bytes32[] memory) {
        return _soldIndexer;
    }
    
    //list of listings of a particulat user
    function getUserIndexer(address user) public view virtual returns (bytes32[] memory) {
        return _userBazaar[user].listings;
    }
    
    // owner call: update fees
    function updateFees(uint256 fees) public onlyOwner {
        require(fees <= 1e4, "Fees cannot be more than 100%.");
        _fees = fees;
    }
    
    // personal listings array length
    function getUserIndexLength(address user) public view virtual returns(uint256) {
        return _userBazaar[user].indexLength;
    }
    
    function _list(uint256 nftId, bytes32 askId) internal virtual {
        _bazaar[askId].owner = _msgSender();
        _bazaar[askId].nftId = nftId;
        _bazaar[askId].valuesSeed = nft.valuesSeedFor(nftId);
        _bazaar[askId].index=_indexerLength;
        if (_indexerLength == _indexer.length) {
            _indexer.push(askId);
        } else {
            _indexer[_indexerLength] = askId;
        }
        _bazaar[askId].listTime = block.timestamp;
        _indexerLength++;
        nft.safeTransferFrom(msg.sender, address(this), nftId);
    }
    
    // public indexing remove
    function popFromIndexer(bytes32 askId) internal virtual {
        uint256 index = _bazaar[askId].index;
        _indexer[index] = _indexer[_indexerLength - 1];
        _bazaar[_indexer[index]].index=index;
        delete _indexer[_indexerLength - 1];
        _indexerLength--;
    }
    
    
    //personal indexing push 
    function _pushToUserIndexer(address user, bytes32 askId) internal virtual {
        if (_userBazaar[user].indexLength == _userBazaar[user].listings.length) {
            _userBazaar[user].listings.push(askId);    
        } else {
            _userBazaar[user].listings[_userBazaar[user].indexLength] = askId;
        }
        
        _bazaar[askId].nonce=_userBazaar[user].indexLength;
        _userBazaar[user].indexLength++;
    }
    
    
    //personal indexing pop
    function _popFromUserIndexer(address user, bytes32 askId) internal virtual {
        uint256 index = _bazaar[askId].nonce;
        _userBazaar[user].listings[index] = _userBazaar[user].listings[_userBazaar[user].indexLength- 1];
        _bazaar[_userBazaar[user].listings[index]].nonce=index;
        delete _userBazaar[user].listings[_userBazaar[user].indexLength - 1];
        _userBazaar[user].indexLength--;
    }
  
    
    // well...
    function getaskId(uint256 nftId, address user) public pure returns(bytes32 askId) {
        askId = keccak256(abi.encodePacked(nftId, user));
    }
    
    
    // place new ask or update price 
    function placeAsk(uint256 nftId, uint256 price) external virtual ownerOnly(nftId) returns(bytes32) {
        bytes32 askId = getaskId(nftId, _msgSender());
        marketOperable(askId);
        if (_bazaar[askId].listTime == 0) {
            _list(nftId, askId);
            _pushToUserIndexer(_msgSender(), askId);
        }
        _bazaar[askId].price = price;
        return askId;
    }
    
        // place new ask or update price 
    function updatePrice(uint256 nftId, uint256 price) public {
        bytes32 askId = getaskId(nftId, _msgSender());
        marketOperable(askId);

        _bazaar[askId].price = price;
    }
    
   
    
    // revoke ask of nft that you own/ not own 
    function revokeAsk(uint256 nftId) external virtual {
        bytes32 askId = getaskId(nftId, _msgSender());
        marketOperable(askId);
        require(_bazaar[askId].listTime != 0, "MarketPlace: Cannot revoke ask for unlisted NFT product.");
        popFromIndexer(askId);
        _popFromUserIndexer(_msgSender(), askId);
        nft.safeTransferFrom(address(this), msg.sender, _bazaar[askId].nftId);
        delete _bazaar[askId];
    }
    
    
    //  duh
    function buyNFT(bytes32 askId) external virtual {
        uint nftId = _bazaar[askId].nftId;
        uint256 price = _bazaar[askId].price;
        gen.transferFrom(_msgSender(), _bazaar[askId].owner, price * (1e4 - _fees) /1e4);
        gen.transferFrom(_msgSender(), brnr, price * _fees /1e4);
        nft.safeTransferFrom(address(this), _msgSender(), nftId);
        popFromIndexer(askId);
        _soldIndexer.push(askId);
        _bazaar[askId].soldTime=block.timestamp;
        _bazaar[askId].index=0;
    }
}

File 2 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 8 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 4 of 8 : IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
      * @dev Safely transfers `tokenId` token from `from` to `to`.
      *
      * Requirements:
      *
      * - `from` cannot be the zero address.
      * - `to` cannot be the zero address.
      * - `tokenId` token must exist and be owned by `from`.
      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
      *
      * Emits a {Transfer} event.
      */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

File 5 of 8 : IERC721Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

File 6 of 8 : ERC721Holder.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC721Receiver.sol";

  /**
   * @dev Implementation of the {IERC721Receiver} interface.
   *
   * Accepts all token transfers.
   * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}.
   */
contract ERC721Holder is IERC721Receiver {

    /**
     * @dev See {IERC721Receiver-onERC721Received}.
     *
     * Always returns `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) {
        return this.onERC721Received.selector;
    }
}

File 7 of 8 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 8 of 8 : IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"g","type":"address"},{"internalType":"contract IBeastNFT","name":"n","type":"address"},{"internalType":"uint256","name":"fees","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"_bazaar","outputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"valuesSeed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"soldTime","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_indexer","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_indexerLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_soldIndexer","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_userBazaar","outputs":[{"internalType":"uint256","name":"indexLength","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"brnr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"askId","type":"bytes32"}],"name":"buyNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"askId","type":"bytes32"}],"name":"getBazaar","outputs":[{"components":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"valuesSeed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"soldTime","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct MarketBeast.Ask","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFullMarket","outputs":[{"components":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"valuesSeed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"soldTime","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct MarketBeast.Ask[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getFullUserMarket","outputs":[{"components":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"valuesSeed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"soldTime","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"listTime","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct MarketBeast.Ask[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIndexLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIndexer","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSoldIndexer","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserIndexLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserIndexer","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getaskId","outputs":[{"internalType":"bytes32","name":"askId","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"placeAsk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"revokeAsk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001ce138038062001ce18339810160408190526200003491620000d8565b600062000040620000d4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b039485166001600160a01b0319918216179091556009805493909416928116929092179092556006919091556007805490911661dead17905562000138565b3390565b600080600060608486031215620000ed578283fd5b8351620000fa816200011f565b60208501519093506200010d816200011f565b80925050604084015190509250925092565b6001600160a01b03811681146200013557600080fd5b50565b611b9980620001486000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806375a8b702116100de578063c228fed611610097578063e1ba7d0111610071578063e1ba7d0114610327578063e895474e1461032f578063edd644d314610337578063f2fde38b1461034a57610173565b8063c228fed614610304578063d212a69a1461030c578063d7fcb3b81461031457610173565b806375a8b7021461028e57806378dacee1146102a1578063814390ef146102b457806382367b2d146102d457806388f23238146102e75780638da5cb5b146102ef57610173565b80632e0d97ed116101305780632e0d97ed1461021857806331ce68501461022b57806340febe0b1461024b5780635f2331e31461026b5780636df4ea3414610273578063715018a61461028657610173565b806311801fe314610178578063150b7a02146101a157806317118469146101c15780631bdad27a146101d657806323154af2146101fd578063286c588d14610210575b600080fd5b61018b610186366004611592565b61035d565b6040516101989190611876565b60405180910390f35b6101b46101af3660046115d1565b61037b565b604051610198919061187f565b6101d46101cf3660046116c1565b61038b565b005b6101e96101e43660046116c1565b6105e4565b604051610198989796959493929190611a5b565b61018b61020b3660046116c1565b610631565b61018b610652565b61018b6102263660046116f1565b610658565b61023e610239366004611592565b61068b565b60405161019891906117ef565b61025e610259366004611592565b6106f7565b6040516101989190611833565b61023e6108a0565b61018b610281366004611592565b6108f8565b6101d461090d565b61018b61029c366004611720565b61099f565b6101d46102af3660046116c1565b610abb565b6102c76102c23660046116c1565b610b21565b6040516101989190611a46565b6101d46102e2366004611720565b610b9f565b61025e610bcd565b6102f7610d2b565b60405161019891906117b7565b61023e610d3a565b61018b610d90565b61018b6103223660046116c1565b610d96565b61018b610da6565b6102f7610dac565b6101d46103453660046116c1565b610dbb565b6101d4610358366004611592565b610ee1565b6001600160a01b031660009081526005602052604090206001015490565b630a85bd0160e11b949350505050565b600081815260016020526040902080546002909101546008546001600160a01b03166323b872dd6103ba610fa1565b6000868152600160205260409020600701546006546001600160a01b0390911690612710906103e99082611ad9565b6103f39087611aba565b6103fd9190611a9a565b6040518463ffffffff1660e01b815260040161041b939291906117cb565b602060405180830381600087803b15801561043557600080fd5b505af1158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d91906116a1565b506008546001600160a01b03166323b872dd610487610fa1565b6007546006546001600160a01b0390911690612710906104a79087611aba565b6104b19190611a9a565b6040518463ffffffff1660e01b81526004016104cf939291906117cb565b602060405180830381600087803b1580156104e957600080fd5b505af11580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052191906116a1565b506009546001600160a01b03166342842e0e3061053c610fa1565b856040518463ffffffff1660e01b815260040161055b939291906117cb565b600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b5050505061059683610fa5565b505060038054600181810183557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101839055600092835260205260408220429181019190915560040155565b60016020819052600091825260409091208054918101546002820154600383015460048401546005850154600686015460079096015494959394929391929091906001600160a01b031688565b6003818154811061064157600080fd5b600091825260209091200154905081565b60045481565b6000828260405160200161066d929190611797565b60405160208183030381529060405280519060200120905092915050565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156106eb57602002820191906000526020600020905b8154815260200190600101908083116106d7575b50505050509050919050565b6001600160a01b0381166000908152600560205260408120600101546060919067ffffffffffffffff81111561073d57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561077657816020015b610763611544565b81526020019060019003908161075b5790505b50905060005b6001600160a01b038416600090815260056020526040902060010154811015610899576001600160a01b038416600090815260056020526040812080546001929190849081106107dc57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091015483528281019390935260409182019020815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600701546001600160a01b031660e0820152825183908390811061087b57634e487b7160e01b600052603260045260246000fd5b6020026020010181905250808061089190611b07565b91505061077c565b5092915050565b606060038054806020026020016040519081016040528092919081815260200182805480156108ee57602002820191906000526020600020905b8154815260200190600101908083116108da575b5050505050905090565b60056020526000908152604090206001015481565b610915610fa1565b6001600160a01b0316610926610d2b565b6001600160a01b0316146109555760405162461bcd60e51b815260040161094c906119cb565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000826109aa610fa1565b6009546040516331a9108f60e11b81526001600160a01b039283169290911690636352211e906109de908590600401611876565b60206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e91906115b5565b6001600160a01b031614610a545760405162461bcd60e51b815260040161094c90611937565b6000610a6285610226610fa1565b9050610a6d816110c2565b600081815260016020526040902060050154610a9e57610a8d85826110f4565b610a9e610a98610fa1565b826112ca565b600081815260016020526040902060020184905591505092915050565b610ac3610fa1565b6001600160a01b0316610ad4610d2b565b6001600160a01b031614610afa5760405162461bcd60e51b815260040161094c906119cb565b612710811115610b1c5760405162461bcd60e51b815260040161094c90611994565b600655565b610b29611544565b506000908152600160208181526040928390208351610100810185528154815292810154918301919091526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007909101546001600160a01b031660e082015290565b6000610bad83610226610fa1565b9050610bb8816110c2565b60009081526001602052604090206002015550565b6060600060045467ffffffffffffffff811115610bfa57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c3357816020015b610c20611544565b815260200190600190039081610c185790505b50905060005b600454811015610d25576001600060028381548110610c6857634e487b7160e01b600052603260045260246000fd5b600091825260208083209091015483528281019390935260409182019020815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600701546001600160a01b031660e08201528251839083908110610d0757634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610d1d90611b07565b915050610c39565b50905090565b6000546001600160a01b031690565b606060028054806020026020016040519081016040528092919081815260200182805480156108ee57602002820191906000526020600020908154815260200190600101908083116108da575050505050905090565b60065481565b6002818154811061064157600080fd5b60045490565b6007546001600160a01b031681565b6000610dc982610226610fa1565b9050610dd4816110c2565b600081815260016020526040902060050154610e025760405162461bcd60e51b815260040161094c906118da565b610e0b81610fa5565b610e1c610e16610fa1565b826113ad565b60095460008281526001602052604090819020549051632142170760e11b81526001600160a01b03909216916342842e0e91610e5e91309133916004016117cb565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050600091825250600160208190526040822082815590810182905560028101829055600381018290556004810182905560058101829055600681019190915560070180546001600160a01b031916905550565b610ee9610fa1565b6001600160a01b0316610efa610d2b565b6001600160a01b031614610f205760405162461bcd60e51b815260040161094c906119cb565b6001600160a01b038116610f465760405162461bcd60e51b815260040161094c90611894565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60006001600083815260200190815260200160002060040154905060026001600454610fd19190611ad9565b81548110610fef57634e487b7160e01b600052603260045260246000fd5b90600052602060002001546002828154811061101b57634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555080600160006002848154811061104f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154815260200190815260200160002060040181905550600260016004546110809190611ad9565b8154811061109e57634e487b7160e01b600052603260045260246000fd5b6000918252602082200181905560048054916110b983611af0565b91905055505050565b600081815260016020526040902060030154156110f15760405162461bcd60e51b815260040161094c90611a00565b50565b6110fc610fa1565b600082815260016020526040908190206007810180546001600160a01b0319166001600160a01b039485161790558490556009549051630c4e4ae560e01b8152911690630c4e4ae590611153908590600401611876565b60206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a391906116d9565b600082815260016020819052604090912090810191909155600480549101819055600254141561120757600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01819055611238565b8060026004548154811061122b57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001555b600081815260016020526040812042600590910155600480549161125b83611b07565b9091555050600954604051632142170760e11b81526001600160a01b03909116906342842e0e90611294903390309087906004016117cb565b600060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600090815260056020526040902080546001909101541415611320576001600160a01b03821660009081526005602090815260408220805460018101825590835291200181905561136c565b6001600160a01b03821660009081526005602052604090206001810154815483929190811061135f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001555b6001600160a01b038216600081815260056020818152604080842060019081018054888752918452918520600601819055948452919052906110b983611b07565b6000818152600160208181526040808420600601546001600160a01b038716855260059092529092208082015490916113e591611ad9565b8154811061140357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03861683526005909152604090912080548390811061144757634e487b7160e01b600052603260045260246000fd5b9060005260206000200181905550806001600060056000876001600160a01b03166001600160a01b0316815260200190815260200160002060000184815481106114a157634e487b7160e01b600052603260045260246000fd5b600091825260208083209091015483528281019390935260409182018120600601939093556001600160a01b0386168352600590915290206001808201546114e99190611ad9565b8154811061150757634e487b7160e01b600052603260045260246000fd5b600091825260208083209091018290556001600160a01b0385168252600590526040812060010180549161153a83611af0565b9190505550505050565b6040518061010001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6000602082840312156115a3578081fd5b81356115ae81611b4e565b9392505050565b6000602082840312156115c6578081fd5b81516115ae81611b4e565b600080600080608085870312156115e6578283fd5b84356115f181611b4e565b935060208581013561160281611b4e565b935060408601359250606086013567ffffffffffffffff80821115611625578384fd5b818801915088601f830112611638578384fd5b81358181111561164a5761164a611b38565b604051601f8201601f191681018501838111828210171561166d5761166d611b38565b60405281815283820185018b1015611683578586fd5b81858501868301379081019093019390935250939692955090935050565b6000602082840312156116b2578081fd5b815180151581146115ae578182fd5b6000602082840312156116d2578081fd5b5035919050565b6000602082840312156116ea578081fd5b5051919050565b60008060408385031215611703578182fd5b82359150602083013561171581611b4e565b809150509250929050565b60008060408385031215611732578182fd5b50508035926020909101359150565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260018060a01b0360e08201511660e08301525050565b91825260601b6bffffffffffffffffffffffff1916602082015260340190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156118275783518352928401929184019160010161180b565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561182757611862838551611741565b92840192610100929092019160010161184f565b90815260200190565b6001600160e01b031991909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526038908201527f4d61726b6574506c6163653a2043616e6e6f74207265766f6b652061736b206660408201527f6f7220756e6c6973746564204e46542070726f647563742e0000000000000000606082015260800190565b6020808252603c908201527f4d61726b6574506c6163653a20596f75206d757374206f776e20746865204e4660408201527f5420746f20706572666f726d2074686973206f7065726174696f6e2e00000000606082015260800190565b6020808252601e908201527f466565732063616e6e6f74206265206d6f7265207468616e20313030252e0000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f4d61726b6574506c6163653a204e46542070726f6475637420616c72656164796040820152651039b7b6321760d11b606082015260800190565b6101008101611a558284611741565b92915050565b978852602088019690965260408701949094526060860192909252608085015260a084015260c08301526001600160a01b031660e08201526101000190565b600082611ab557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611ad457611ad4611b22565b500290565b600082821015611aeb57611aeb611b22565b500390565b600081611aff57611aff611b22565b506000190190565b6000600019821415611b1b57611b1b611b22565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110f157600080fdfea2646970667358221220990876b65e35b94e3e00f110835833999abd990183e62a7814d401d7f547527a64736f6c63430008000033000000000000000000000000b0f2939a1c0e43683e5954c9fe142f7df9f8d9670000000000000000000000007df6ffa9f379788b5283ea8917af4e90890e50b10000000000000000000000000000000000000000000000000000000000000320

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b0f2939a1c0e43683e5954c9fe142f7df9f8d9670000000000000000000000007df6ffa9f379788b5283ea8917af4e90890e50b10000000000000000000000000000000000000000000000000000000000000320

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b0f2939a1c0e43683e5954c9fe142f7df9f8d967
Arg [1] : 0000000000000000000000007df6ffa9f379788b5283ea8917af4e90890e50b1
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000320


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.