Contract 0x1d2dfE8D85ddD235cb48a1282d45444543313A5B

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd5df69371e0a674d9efaf9c9208c44f7390355db0db90529513137e3b15f28b4Whitelist Contra...77948082021-05-28 6:19:35141 days 8 hrs agoOpenBiSea: Deployer IN  0x1d2dfe8d85ddd235cb48a1282d45444543313a5b0 BNB0.00064442
0xe31a771fd285c7d5000c793abc4efd64fea5ce5231a010636a8e627ca087fd740x6080604077947942021-05-28 6:18:53141 days 8 hrs agoOpenBiSea: Deployer IN  Contract Creation0 BNB0.06146308
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OpenBiSeaAuction

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 14 : OpenBiSeaAuction.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./access/TeamRole.sol";
import "./utils/EnumerableUintSet.sol";
import "./utils/EnumerableSet.sol";
import "./math/SafeMath.sol";
import "./interface/IERC721.sol";
import "./interface/IERC1155.sol";
import "./interface/IERC721Receiver.sol";
import "./interface/IERC1155Receiver.sol";
import "./interface/IERC20.sol";
import "./interface/IPoolRegistry.sol";

contract OpenBiSeaAuction is TeamRole,IERC721Receiver,IERC1155Receiver {

    uint256 private _totalIncomeNFT;
    uint256 private _initialPriceInt;
    uint256 private _auctionCreationFeeMultiplier;
    uint256 private _auctionContractFeeMultiplier;
    address private _tokenForTokensale;
    address private _openBiSeaMainContract;
    address private _busdContract;
    IPoolRegistry private _poolRegistry;

    constructor (
        uint256 initialPriceInt,
        uint256 auctionCreationFeeMultiplier,
        uint256 auctionContractFeeMultiplier,
        address tokenForTokensale,
        address openBiSeaMainContract,
        address busdContract,
        address poolRegistry
    ) public {
        _initialPriceInt = initialPriceInt;
        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
        _auctionContractFeeMultiplier = auctionContractFeeMultiplier;
        _tokenForTokensale = tokenForTokensale;
        _openBiSeaMainContract = openBiSeaMainContract;
        _busdContract = busdContract;
        _poolRegistry = IPoolRegistry(poolRegistry);
    }

    mapping(address => uint256) private _consumersRevenueAmount;

    using SafeMath for uint256;

    using EnumerableUintSet for EnumerableUintSet.UintSet;
    using EnumerableSet for EnumerableSet.AddressSet;

    EnumerableSet.AddressSet private _contractsWhitelisted;
    event ContractNFTWhitelisted(address indexed contractNFT);
    event ContractNFTDeWhitelisted(address indexed contractNFT);

    function isContractNFTWhitelisted( address _contractNFT ) public view returns (bool) {
        return _contractsWhitelisted.contains(_contractNFT);
    }
    function contractsNFTWhitelisted() public view returns (address[] memory) {
        return _contractsWhitelisted.collection();
    }

    function whitelistContractAdmin( address _contractNFT ) public onlyTeam {
        _contractsWhitelisted.add(_contractNFT);
        emit ContractNFTWhitelisted(_contractNFT);
    }
    function deWhitelistContractAdmin( address _contractNFT ) public onlyTeam {
        _contractsWhitelisted.remove(_contractNFT);
        emit ContractNFTDeWhitelisted(_contractNFT);
    }

    function setAuctionCreationFeeMultiplierAdmin( uint256 auctionCreationFeeMultiplier ) public onlyTeam {
        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
    }

    function whitelistContractCreator( address _contractNFT, uint256 fee ) public  {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        _totalIncomeNFT = _totalIncomeNFT.add(fee);
        _contractsWhitelisted.add(_contractNFT);
        emit ContractNFTWhitelisted(_contractNFT);
    }

    function whitelistContractCreatorTokens( address _contractNFT, uint256 fee ) public {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        _totalIncomeNFT = _totalIncomeNFT.add(fee);
        _contractsWhitelisted.add(_contractNFT);
        emit ContractNFTWhitelisted(_contractNFT);
    }

    struct Auction {
        address seller;
        address latestBidder;
        uint256 latestBidTime;
        uint256 deadline;
        uint256 price;
        bool isUSD;
    }

    mapping(uint256 => Auction) private _contractsPlusTokenIdsAuction;
    mapping(address => EnumerableUintSet.UintSet) private _contractsTokenIdsList;
    mapping(address => uint256) private _consumersDealFirstDate;
    mapping(uint256 => address) private _auctionIDtoSellerAddress;

    function getNFTsAuctionList( address _contractNFT) public view returns (uint256[] memory) {
        return _contractsTokenIdsList[_contractNFT].collection();
    }
    function sellerAddressFor( uint256 _auctionID) public view returns (address) {
        return _auctionIDtoSellerAddress[_auctionID];
    }

    function revenueFor( address _consumer) public view returns (uint256) {
        return _consumersRevenueAmount[_consumer];
    }
    function getAuction(
        address _contractNFT,
        uint256 _tokenId
    ) public view returns
    (
        address seller,
        address latestBidder,
        uint256 latestBidTime,
        uint256 deadline,
        uint price,
        bool isUSD
    ) {
        uint256 index = uint256(_contractNFT).add(_tokenId);
        return (
        _contractsPlusTokenIdsAuction[index].seller,
        _contractsPlusTokenIdsAuction[index].latestBidder,
        _contractsPlusTokenIdsAuction[index].latestBidTime,
        _contractsPlusTokenIdsAuction[index].deadline,
        _contractsPlusTokenIdsAuction[index].price,
        _contractsPlusTokenIdsAuction[index].isUSD);
    }

    event AuctionNFTCreated(address indexed contractNFT, uint256 tokenId,uint256 price,uint256 deadline, bool isERC1155,address seller, bool isUSD);

    function createAuction( address _contractNFT, uint256 _tokenId, uint256 _price, uint256 _deadline, bool _isERC1155, address _sender, bool _isUSD ) public {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        require(_contractsWhitelisted.contains(_contractNFT), "OpenBiSea: contract must be whitelisted");
        require(!_contractsTokenIdsList[_contractNFT].contains(uint256(_sender).add(_tokenId)), "OpenBiSea: auction is already created");
        require(IERC20(_tokenForTokensale).balanceOf(_sender) >= (10 ** uint256(18)).mul(_auctionCreationFeeMultiplier).div(10000), "OpenBiSea: you must have 1 OBS on account to start");
        if (_isERC1155) {
            IERC1155(_contractNFT).safeTransferFrom( _sender, address(this), _tokenId,1, "0x0");
        } else {
            IERC721(_contractNFT).safeTransferFrom( _sender, address(this), _tokenId);
        }
        Auction memory _auction = Auction({
            seller: _sender,
            latestBidder: address(0),
            latestBidTime: 0,
            deadline: _deadline,
            price:_price,
            isUSD:_isUSD
        });
        _contractsPlusTokenIdsAuction[uint256(_contractNFT).add(_tokenId)] = _auction;
        _auctionIDtoSellerAddress[uint256(_sender).add(_tokenId)] = _sender;
        _contractsTokenIdsList[_contractNFT].add(uint256(_sender).add(_tokenId));
        emit AuctionNFTCreated( _contractNFT, _tokenId, _price, _deadline, _isERC1155, _sender, _isUSD);
    }
    function updateFirstDateAndValue(address buyer, address seller, uint256 value, bool isUSD) private {
        uint256 valueFinal = value;
        if (isUSD) {
            uint256 priceMainToUSD;
            uint8 decimals;
            (priceMainToUSD,decimals) = _poolRegistry.getOracleContract().getLatestPrice();
            uint256 tokensToPay;
            valueFinal = value.div((priceMainToUSD).div(10 ** uint256(decimals)));
        }
        _totalIncomeNFT = _totalIncomeNFT.add(valueFinal);
        _consumersRevenueAmount[buyer] = _consumersRevenueAmount[buyer].add(value);
        _consumersRevenueAmount[seller] = _consumersRevenueAmount[seller].add(value);
        if (_consumersDealFirstDate[buyer] == 0) {
            _consumersDealFirstDate[buyer] = now;
        }
        if (_consumersDealFirstDate[seller] == 0) {
            _consumersDealFirstDate[seller] = now;
        }
    }
    event AuctionNFTBid(address indexed contractNFT, uint256 tokenId,uint256 price,uint256 deadline, bool isERC1155,address buyer,address seller, bool isDeal, bool isUSD);

    function _bidWin (
        bool _isERC1155,
        address _contractNFT,
        address _sender,
        uint256 _tokenId,
        address _auctionSeller,
        uint256 _price,
        bool _auctionIsUSD,
        uint256 _deadline

    ) private  {
        if (_isERC1155) {
            IERC1155(_contractNFT).safeTransferFrom( address(this), _sender, _tokenId, 1, "0x0");
        } else {
            IERC721(_contractNFT).safeTransferFrom( address(this), _sender, _tokenId);
        }
        updateFirstDateAndValue(_sender, _auctionSeller, _price, _auctionIsUSD);
        emit AuctionNFTBid(_contractNFT,_tokenId,_price,_deadline,_isERC1155,_sender,_auctionSeller, true, _auctionIsUSD);
        delete _contractsPlusTokenIdsAuction[ uint256(_contractNFT).add(_tokenId)];
        delete _auctionIDtoSellerAddress[uint256(_auctionSeller).add(_tokenId)];
        _contractsTokenIdsList[_contractNFT].remove(uint256(_auctionSeller).add(_tokenId));
    }
    function bid( address _contractNFT,uint256 _tokenId, uint256 _price, bool _isERC1155, address _sender ) public returns (bool, uint256, address, bool) {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        require(_contractsWhitelisted.contains(_contractNFT), "OpenBiSea: contract must be whitelisted");
        Auction storage auction = _contractsPlusTokenIdsAuction[uint256(_contractNFT).add(_tokenId)];
        require(auction.seller != address(0), "OpenBiSea: wrong seller address");
        require(_contractsTokenIdsList[_contractNFT].contains(uint256(auction.seller).add(_tokenId)), "OpenBiSea: auction is not created"); // ERC1155 can have more than 1 auction with same ID and , need mix tokenId with seller address
        require(_price >= auction.price, "OpenBiSea: price must be more than previous bid");

        if (block.timestamp > auction.deadline) {
            address auctionSeller = address(auction.seller);
            bool auctionIsUSD = bool(auction.isUSD);
            _bidWin(
                _isERC1155,
                _contractNFT,
                _sender,
                _tokenId,
                auctionSeller,
                _price,
                auctionIsUSD,
                auction.deadline
            );
            return (true,0,auctionSeller,auctionIsUSD);
        } else {
            auction.price = _price;
            auction.latestBidder = _sender;
            auction.latestBidTime = block.timestamp;
            emit AuctionNFTBid(_contractNFT,_tokenId,_price,auction.deadline,_isERC1155,_sender,auction.seller, false, auction.isUSD);
            if (auction.latestBidder != address(0)) {
                return (false,auction.price,auction.latestBidder,auction.isUSD);
            }
        }
        return (false,0, address(0),false);
    }
    event AuctionNFTCanceled(address indexed contractNFT, uint256 tokenId,uint256 price,uint256 deadline, bool isERC1155,address seller);

    function _cancelAuction( address _contractNFT, uint256 _tokenId, address _sender, bool _isERC1155, bool _isAdmin ) private {
        uint256 index = uint256(_contractNFT).add(_tokenId);

        Auction storage auction = _contractsPlusTokenIdsAuction[index];
        if (!_isAdmin) require(auction.seller == _sender, "OpenBiSea: only seller can cancel");
        if (_isERC1155) {
            IERC1155(_contractNFT).safeTransferFrom(address(this),auction.seller, _tokenId,1,"0x0");
        } else {
            IERC721(_contractNFT).safeTransferFrom(address(this),auction.seller, _tokenId);
        }
        address auctionSeller = address(auction.seller);
        emit AuctionNFTCanceled(_contractNFT,_tokenId,auction.price,auction.deadline,_isERC1155,auction.seller);
        delete _contractsPlusTokenIdsAuction[index];
        delete _auctionIDtoSellerAddress[uint256(auctionSeller).add(_tokenId)];
        _contractsTokenIdsList[_contractNFT].remove(uint256(auctionSeller).add(_tokenId));
    }

    function cancelAuction( address _contractNFT, uint256 _tokenId, address _sender , bool _isERC1155 ) public {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        require(_contractsWhitelisted.contains(_contractNFT), "OpenBiSea: contract must be whitelisted");
        require(_contractsTokenIdsList[_contractNFT].contains(uint256(_sender).add(_tokenId)), "OpenBiSea: auction is not created");
        _cancelAuction( _contractNFT, _tokenId, _sender, _isERC1155, false );
    }
    function cancelAuctionAdmin( address _contractNFT, uint256 _tokenId, bool _isERC1155 ) public onlyTeam {
        _cancelAuction( _contractNFT, _tokenId, address(0) , _isERC1155, true );
    }
    mapping(address => uint256) private _consumersReceivedMainTokenLatestDate;
    uint256 minimalTotalIncome1 = 10000;
    uint256 minimalTotalIncome2 = 500000;
    uint256 minimalTotalIncome3 = 5000000;
    function _tokensToDistribute(uint256 amountTotalUSDwei, uint256 priceMainToUSD, bool newInvestor) private view returns (uint256,uint256) {
        uint256 balanceLeavedOnThisContractProjectTokens = IERC20(_tokenForTokensale).balanceOf(_openBiSeaMainContract);/* if total sales > $10k and < $500k, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 0.1%   if total sales >  $500k and total sales < $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 1% if total sales >  $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 10% */
        uint256 totalIncomeUSDwei = _totalIncomeNFT.mul(priceMainToUSD);
        if (totalIncomeUSDwei < minimalTotalIncome1.mul(10 ** uint256(18))) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(10000); // balanceLeavedOnThisContractProjectTokens = 0;
        } else if (totalIncomeUSDwei < minimalTotalIncome2.mul(10 ** uint256(18))) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(1000);
        } else if (totalIncomeUSDwei < minimalTotalIncome3.mul(10 ** uint256(18))) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(30);
        } else {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(10);
        } /*  amountTotalUSD / TAV - his percent of TAV balanceLeavedOnThisContractProjectTokens * his percent of pool = amount of tokens to pay if (newInvestor) amount of tokens to pay = amount of tokens to pay * 1.1 _investorsReceivedMainToken[msg.sender][time] = amount of tokens to pay*/
        uint256 percentOfSales = amountTotalUSDwei.mul(10000).div(totalIncomeUSDwei);
        if (newInvestor) {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfSales).div(10000).mul(11).div(10),percentOfSales);
        } else {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfSales).div(10000),percentOfSales);
        }
    }

    function checkTokensForClaim( address customer, uint256 priceMainToUSD) public view returns (uint256,uint256,uint256,bool) {
        uint256 amountTotalUSDwei = _consumersRevenueAmount[customer].mul(priceMainToUSD);
        if (amountTotalUSDwei == 0) {
            return (0,0,0,false);
        }
        uint256 tokensForClaim;
        uint256 percentOfSales;
        bool newCustomer = ((now.sub(_consumersDealFirstDate[customer])) < 4 weeks);
        if (_consumersReceivedMainTokenLatestDate[customer] > now.sub(4 weeks)) {
            return (tokensForClaim,amountTotalUSDwei,percentOfSales,newCustomer);// already receive reward 4 weeks ago
        }
        (tokensForClaim, percentOfSales) = _tokensToDistribute(amountTotalUSDwei,priceMainToUSD,newCustomer);
        return (tokensForClaim,amountTotalUSDwei,percentOfSales,newCustomer);
    }
    function setConsumersReceivedMainTokenLatestDate(address _sender) public {
        require(msg.sender == _openBiSeaMainContract, "OpenBiSea: only main contract can send it");
        _consumersReceivedMainTokenLatestDate[_sender] = now;
    }

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

    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
    external
    override
    returns(bytes4)
    {
        return this.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
    external
    override
    returns(bytes4)
    {
        return this.onERC1155BatchReceived.selector;
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return this.supportsInterface(interfaceId);
    }
}

File 2 of 14 : TeamRole.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./lib/Roles.sol";
contract TeamRole {
    using Roles for Roles.Role;
    event TeamAdded(address indexed account);
    event TeamRemoved(address indexed account);
    event OracleAdded(address indexed account);
    event OracleRemoved(address indexed account);
    Roles.Role private _team;
    Roles.Role private _oracle;
    constructor () internal {
        _addTeam(msg.sender);
    }
    modifier onlyTeam() {
        require(isTeam(msg.sender), "TeamRole: caller does not have the Team role");
        _;
    }
    modifier onlyRegistryOracle() {
        require(isOracle(msg.sender), "TeamRole: caller does not have the Oracle role");
        _;
    }

    function isOracle(address account) public view returns (bool) {
        return _oracle.has(account);
    }
    function getOracleAddresses() public view returns (address[] memory) {
        return _oracle.accounts;
    }

    function addOracle(address account) public onlyTeam {
        _addOracle(account);
    }
    function _addOracle(address account) internal {
        _oracle.add(account);
        emit OracleAdded(account);
    }
    function renounceOracle() public {
        _removeOracle(msg.sender);
    }
    function _removeOracle(address account) internal {
        _oracle.remove(account);
        emit OracleRemoved(account);
    }

    function isTeam(address account) public view returns (bool) {
        return _team.has(account);
    }
    function getTeamAddresses() public view returns (address[] memory) {
        return _team.accounts;
    }
    function addTeam(address account) public onlyTeam {
        _addTeam(account);
    }
    function renounceTeam() public onlyTeam {
        _removeTeam(msg.sender);
    }
    function _addTeam(address account) internal {
        _team.add(account);
        emit TeamAdded(account);
    }
    function _removeTeam(address account) internal {
        _team.remove(account);
        emit TeamRemoved(account);
    }
}

File 3 of 14 : Roles.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library Roles {
    struct Role {
        address[] accounts;
        mapping (address => bool) bearer;
        mapping (bytes32 => uint256) _indexes;
    }
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
        role.accounts.push(account);
        role._indexes[bytes32(uint256(account))] = role.accounts.length;
    }
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        uint256 valueIndex = role._indexes[bytes32(uint256(account))];
        if (valueIndex != 0) { // Equivalent to contains()
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = role.accounts.length - 1;
            address lastValue = role.accounts[lastIndex];
            role.accounts[toDeleteIndex] = lastValue;
            role.accounts.pop();
            delete role._indexes[bytes32(uint256(account))];
        }
//        for (uint256 i; i < role.accounts.length; i++) {
//            if (role.accounts[i] == account) {
//                _removeIndexArray(i, role.accounts);
//                break;
//            }
//        }
        role.bearer[account] = false;
    }
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
}

File 4 of 14 : IERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2 <0.8.0;

import "./IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}

File 5 of 14 : IERC1155Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./IERC165.sol";

/**
 * _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {

    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
        external
        returns(bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
        external
        returns(bytes4);
}

File 6 of 14 : IERC165.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;

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

File 7 of 14 : IERC20.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 8 of 14 : IERC721.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;

import "./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 9 of 14 : IERC721Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 10 of 14 : IOracle.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IOracle {
    function getLatestPrice() external view returns ( uint256,uint8);
    function getCustomPrice(address aggregator) external view returns (uint256,uint8);
}

File 11 of 14 : IPoolRegistry.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./IOracle.sol";
interface IPoolRegistry {
    function isTeam(address account) external view returns (bool);
    function getTeamAddresses() external view returns (address[] memory);
    function getOracleContract() external view returns (IOracle);
    function feesMultipier(address sender) external view returns (uint256);
}

File 12 of 14 : SafeMath.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library SafeMath {
     function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
         if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

File 13 of 14 : EnumerableSet.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        address[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, address addressValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(addressValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastValue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastValue;
            set._values.pop();

            address lastvalueAddress = set._collection[lastIndex];
            set._collection[toDeleteIndex] = lastvalueAddress;
            set._collection.pop();

            set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based
            delete set._indexes[value];
//            for(uint256 i = 0; i < set._collection.length; i++) {
//                if (set._collection[i] == addressValue) {
//                    _removeIndexArray(i, set._collection);
//                    break;
//                }
//            }
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (address[] memory) {
        return set._collection;    
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }
    struct AddressSet {
        Set _inner;
    }
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(AddressSet storage set) internal view returns (address[] memory) {
        return _collection(set._inner);
    }
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }
}

File 14 of 14 : EnumerableUintSet.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library EnumerableUintSet {
    struct Set {
        bytes32[] _values;
        uint256[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, uint256 savedValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(savedValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastValue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastValue;
            set._values.pop();

            uint256 lastvalueAddress = set._collection[lastIndex];
            set._collection[toDeleteIndex] = lastvalueAddress;
            set._collection.pop();

            set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based
            delete set._indexes[value];
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (uint256[] memory) {
        return set._collection;    
    }

    function _at(Set storage set, uint256 index) private view returns (uint256) {
        require(set._collection.length > index, "EnumerableSet: index out of bounds");
        return set._collection[index];
    }
    struct UintSet {
        Set _inner;
    }
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(UintSet storage set) internal view returns (uint256[] memory) {
        return _collection(set._inner);
    }
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return _at(set._inner, index);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"initialPriceInt","type":"uint256"},{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"},{"internalType":"address","name":"tokenForTokensale","type":"address"},{"internalType":"address","name":"openBiSeaMainContract","type":"address"},{"internalType":"address","name":"busdContract","type":"address"},{"internalType":"address","name":"poolRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractNFT","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isERC1155","type":"bool"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"bool","name":"isDeal","type":"bool"},{"indexed":false,"internalType":"bool","name":"isUSD","type":"bool"}],"name":"AuctionNFTBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractNFT","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isERC1155","type":"bool"},{"indexed":false,"internalType":"address","name":"seller","type":"address"}],"name":"AuctionNFTCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractNFT","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isERC1155","type":"bool"},{"indexed":false,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"bool","name":"isUSD","type":"bool"}],"name":"AuctionNFTCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractNFT","type":"address"}],"name":"ContractNFTDeWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractNFT","type":"address"}],"name":"ContractNFTWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"},{"internalType":"address","name":"_sender","type":"address"}],"name":"bid","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"cancelAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"cancelAuctionAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"customer","type":"address"},{"internalType":"uint256","name":"priceMainToUSD","type":"uint256"}],"name":"checkTokensForClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsNFTWhitelisted","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"bool","name":"_isUSD","type":"bool"}],"name":"createAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"deWhitelistContractAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAuction","outputs":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"latestBidder","type":"address"},{"internalType":"uint256","name":"latestBidTime","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isUSD","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"getNFTsAuctionList","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"isContractNFTWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","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":"renounceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_consumer","type":"address"}],"name":"revenueFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_auctionID","type":"uint256"}],"name":"sellerAddressFor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"}],"name":"setAuctionCreationFeeMultiplierAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"setConsumersReceivedMainTokenLatestDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"whitelistContractAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"whitelistContractCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"whitelistContractCreatorTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526127106017556207a120601855624c4b406019553480156200002557600080fd5b506040516200347a3803806200347a833981810160405260e08110156200004b57600080fd5b508051602082015160408301516060840151608085015160a086015160c09096015194959394929391929091906200008c33640100000000620000f1810204565b600796909655600894909455600992909255600a8054600160a060020a0319908116600160a060020a0393841617909155600b8054821693831693909317909255600c8054831693821693909317909255600d805490911691909216179055620002a6565b6200010c60008264010000000062001b1f6200014382021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b62000158828264010000000062000220810204565b15620001c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b6000600160a060020a03821662000283576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620034586022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6131a280620002b66000396000f3fe608060405234801561001057600080fd5b50600436106101ec576000357c01000000000000000000000000000000000000000000000000000000009004806389e5277111610121578063bb759806116100bf578063df5dd1a51161008e578063df5dd1a514610877578063eb3b1ac21461089d578063f23a6e61146108c3578063f4c33b7014610958576101ec565b8063bb759806146106ff578063bc197c8114610725578063c8a151b414610852578063d9a431b31461086f576101ec565b8063a97e5c93116100fb578063a97e5c9314610654578063ade6a8141461067a578063b463a75c146106b3578063b68f9a6c146106d9576101ec565b806389e52771146105bc5780639b58a9a8146105c45780639f2ac7f814610600576101ec565b80634f63d3ce1161018e5780637653b556116101685780637653b556146104f65780637661892e1461052a5780637837efdc14610562578063854fe7ac1461056a576101ec565b80634f63d3ce146104535780637330aba214610481578063762a66a214610489576101ec565b806315b60639116101ca57806315b606391461039157806324851914146104075780634d3d626a1461042d5780634f580e4014610453576101ec565b806301ffc9a7146101f1578063052c09fd14610241578063150b7a0214610299575b600080fd5b61022d6004803603602081101561020757600080fd5b50357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661097e565b604080519115158252519081900360200190f35b610249610a29565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028557818101518382015260200161026d565b505050509050019250505060405180910390f35b61035f600480360360808110156102af57600080fd5b600160a060020a038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184600183028401116401000000008311171561031e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a3a945050505050565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b6103d5600480360360a08110156103a757600080fd5b50600160a060020a038135811691602081013591604082013591606081013515159160809091013516610a63565b6040805194151585526020850193909352600160a060020a039091168383015215156060830152519081900360800190f35b61022d6004803603602081101561041d57600080fd5b5035600160a060020a0316610dca565b6102496004803603602081101561044357600080fd5b5035600160a060020a0316610de2565b61047f6004803603604081101561046957600080fd5b50600160a060020a038135169060200135610e06565b005b610249610eb2565b6104b56004803603604081101561049f57600080fd5b50600160a060020a038135169060200135610f17565b60408051600160a060020a0397881681529590961660208601528486019390935260608401919091526080830152151560a082015290519081900360c00190f35b61047f6004803603606081101561050c57600080fd5b50600160a060020a0381351690602081013590604001351515610f8a565b6105506004803603602081101561054057600080fd5b5035600160a060020a0316610fe5565b60408051918252519081900360200190f35b61047f611000565b61047f600480360360e081101561058057600080fd5b50600160a060020a038135811691602081013591604082013591606081013591608082013515159160a08101359091169060c00135151561100b565b61024961154a565b61047f600480360360808110156105da57600080fd5b50600160a060020a038135811691602081013591604082013516906060013515156115ac565b61062c6004803603604081101561061657600080fd5b50600160a060020a0381351690602001356116d9565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b61022d6004803603602081101561066a57600080fd5b5035600160a060020a03166117bf565b6106976004803603602081101561069057600080fd5b50356117d2565b60408051600160a060020a039092168252519081900360200190f35b61047f600480360360208110156106c957600080fd5b5035600160a060020a03166117ed565b61022d600480360360208110156106ef57600080fd5b5035600160a060020a0316611840565b61047f6004803603602081101561071557600080fd5b5035600160a060020a0316611853565b61035f600480360360a081101561073b57600080fd5b600160a060020a03823581169260208101359091169181019060608101604082013564010000000081111561076f57600080fd5b82018360208201111561078157600080fd5b803590602001918460208302840111640100000000831117156107a357600080fd5b9193909290916020810190356401000000008111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111640100000000831117156107f557600080fd5b91939092909160208101903564010000000081111561081357600080fd5b82018360208201111561082557600080fd5b8035906020019184600183028401116401000000008311171561084757600080fd5b5090925090506118bb565b61047f6004803603602081101561086857600080fd5b50356118e8565b61047f611934565b61047f6004803603602081101561088d57600080fd5b5035600160a060020a0316611984565b61047f600480360360208110156108b357600080fd5b5035600160a060020a03166119d4565b61035f600480360360a08110156108d957600080fd5b600160a060020a03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561091957600080fd5b82018360208201111561092b57600080fd5b8035906020019184600183028401116401000000008311171561094d57600080fd5b509092509050611a64565b61047f6004803603602081101561096e57600080fd5b5035600160a060020a0316611a8f565b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1983166004820152905160009130916301ffc9a791602480820192602092909190829003018186803b1580156109f757600080fd5b505afa158015610a0b573d6000803e3d6000fd5b505050506040513d6020811015610a2157600080fd5b505192915050565b6060610a35600f611bd9565b905090565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b600b54600090819081908190600160a060020a03163314610ab85760405160e560020a62461bcd028152600401808060200182810382526029815260200180612fc56029913960400191505060405180910390fd5b610ac9600f8a63ffffffff611be416565b610b075760405160e560020a62461bcd0281526004018080602001828103825260278152602001806130b66027913960400191505060405180910390fd5b6000601281610b25600160a060020a038d168c63ffffffff611c0016565b815260208101919091526040016000208054909150600160a060020a0316610b97576040805160e560020a62461bcd02815260206004820152601f60248201527f4f70656e42695365613a2077726f6e672073656c6c6572206164647265737300604482015290519081900360640190fd5b8054610bda90610bb690600160a060020a03168b63ffffffff611c0016565b600160a060020a038c1660009081526013602052604090209063ffffffff611c5d16565b610c185760405160e560020a62461bcd0281526004018080602001828103825260218152602001806131206021913960400191505060405180910390fd5b8060040154881015610c5e5760405160e560020a62461bcd02815260040180806020018281038252602f815260200180613087602f913960400191505060405180910390fd5b8060030154421115610cc45760008160000160009054906101000a9004600160a060020a0316905060008260050160009054906101000a900460ff169050610cb0898d8a8e868f878a60030154611c69565b60019650600095509093509150610dbe9050565b60048101889055600181018054600160a060020a03808916600160a060020a03199092168217909255426002840155600383015483546005850154604080518f8152602081018f9052808201949094528c15156060850152608084019490945290841660a0830152600060c083015260ff16151560e08201529051918c16917fe3d4bf61d078da5e663f7903e9655ec8cf344746ccd5b94a9990738446c46656918190036101000190a26001810154600160a060020a031615610daf576004810154600182015460059092015460009650909450600160a060020a03909116925060ff169050610dbe565b50600093508392508291508190505b95509550955095915050565b6000610ddc818363ffffffff611f3116565b92915050565b600160a060020a0381166000908152601360205260409020606090610ddc90611f9e565b600b54600160a060020a03163314610e525760405160e560020a62461bcd028152600401808060200182810382526029815260200180612fc56029913960400191505060405180910390fd5b600654610e65908263ffffffff611c0016565b600655610e79600f8363ffffffff611fa916565b50604051600160a060020a038316907fdff3fafa91c4ae82a17b9359b81e51f5f24dc774a225d99f97cfa4d429c45ce290600090a25050565b60606003600001805480602002602001604051908101604052809291908181526020018280548015610f0d57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610eef575b5050505050905090565b6000808080808080610f38600160a060020a038a168963ffffffff611c0016565b600090815260126020526040902080546001820154600283015460038401546004850154600590950154600160a060020a039485169f949093169d50909b50995091975060ff90911695509350505050565b610f9333610dca565b610fd15760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b610fe083836000846001611fbf565b505050565b600160a060020a03166000908152600e602052604090205490565b611009336122cc565b565b600b54600160a060020a031633146110575760405160e560020a62461bcd028152600401808060200182810382526029815260200180612fc56029913960400191505060405180910390fd5b611068600f8863ffffffff611be416565b6110a65760405160e560020a62461bcd0281526004018080602001828103825260278152602001806130b66027913960400191505060405180910390fd5b6110e66110c2600160a060020a0384168863ffffffff611c0016565b600160a060020a03891660009081526013602052604090209063ffffffff611c5d16565b156111255760405160e560020a62461bcd028152600401808060200182810382526025815260200180612fee6025913960400191505060405180910390fd5b600854611155906127109061114990670de0b6b3a76400009063ffffffff61231416565b9063ffffffff61237016565b600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152915191909216916370a08231916024808301926020929190829003018186803b1580156111bb57600080fd5b505afa1580156111cf573d6000803e3d6000fd5b505050506040513d60208110156111e557600080fd5b505110156112275760405160e560020a62461bcd0281526004018080602001828103825260328152602001806130346032913960400191505060405180910390fd5b82156112f657604080517ff242432a000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152306024830152604482018990526001606483015260a06084830152600360a48301527f307830000000000000000000000000000000000000000000000000000000000060c483015291519189169163f242432a9160e48082019260009290919082900301818387803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b50505050611380565b604080517f42842e0e000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152306024830152604482018990529151918916916342842e0e9160648082019260009290919082900301818387803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b505050505b611388612f7a565b6040518060c0016040528084600160a060020a031681526020016000600160a060020a0316815260200160008152602001868152602001878152602001831515815250905080601260006113ee8a8c600160a060020a0316611c0090919063ffffffff16565b81526020808201929092526040908101600090812084518154600160a060020a0319908116600160a060020a039283161783559486015160018301805490961690821617909455918401516002830155606084015160038301556080840151600483015560a0909301516005909101805460ff1916911515919091179055849160159161147d9084168b611c00565b815260208101919091526040016000208054600160a060020a031916600160a060020a039283161790556114db906114b790851689611c00565b600160a060020a038a1660009081526013602052604090209063ffffffff6123b216565b5060408051888152602081018890528082018790528515156060820152600160a060020a03858116608083015284151560a08301529151918a16917f1a0c83d7cab3b048aa0717666809666a5ec6f4a945ebcb95b13cc9b1b9d2ff609181900360c00190a25050505050505050565b606060008001805480602002602001604051908101604052809291908181526020018280548015610f0d57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610eef575050505050905090565b600b54600160a060020a031633146115f85760405160e560020a62461bcd028152600401808060200182810382526029815260200180612fc56029913960400191505060405180910390fd5b611609600f8563ffffffff611be416565b6116475760405160e560020a62461bcd0281526004018080602001828103825260278152602001806130b66027913960400191505060405180910390fd5b611687611663600160a060020a0384168563ffffffff611c0016565b600160a060020a03861660009081526013602052604090209063ffffffff611c5d16565b6116c55760405160e560020a62461bcd0281526004018080602001828103825260218152602001806131206021913960400191505060405180910390fd5b6116d3848484846000611fbf565b50505050565b600160a060020a0382166000908152600e6020526040812054819081908190819061170a908763ffffffff61231416565b9050806117245750600093508392508291508190506117b6565b600160a060020a038716600090815260146020526040812054819081906224ea009061175790429063ffffffff6123bf16565b10905061176d426224ea0063ffffffff6123bf16565b600160a060020a038b16600090815260166020526040902054111561179c5791965091945090925090506117b6565b6117a7848a83612401565b90985093965092945091925050505b92959194509250565b6000610ddc60038363ffffffff611f3116565b600090815260156020526040902054600160a060020a031690565b6117f633610dca565b6118345760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b61183d816125e2565b50565b6000610ddc600f8363ffffffff611be416565b600b54600160a060020a0316331461189f5760405160e560020a62461bcd028152600401808060200182810382526029815260200180612fc56029913960400191505060405180910390fd5b600160a060020a03166000908152601660205260409020429055565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6118f133610dca565b61192f5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b600855565b61193d33610dca565b61197b5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b6110093361262a565b61198d33610dca565b6119cb5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b61183d81612672565b6119dd33610dca565b611a1b5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b611a2c600f8263ffffffff611fa916565b50604051600160a060020a038216907fdff3fafa91c4ae82a17b9359b81e51f5f24dc774a225d99f97cfa4d429c45ce290600090a250565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b611a9833610dca565b611ad65760405160e560020a62461bcd02815260040180806020018281038252602c815260200180613141602c913960400191505060405180910390fd5b611ae7600f8263ffffffff6126b916565b50604051600160a060020a038216907f6b4fd386a2a256d0a61a637ccbf0378dd594ac406e282dce5ba5104ccfdef84190600090a250565b611b298282611f31565b15611b7e576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b6060610ddc826126ce565b6000611bf983600160a060020a038416612734565b9392505050565b600082820183811015611bf9576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611bf98383612734565b8715611d3857604080517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a038881166024830152604482018890526001606483015260a06084830152600360a48301527f307830000000000000000000000000000000000000000000000000000000000060c483015291519189169163f242432a9160e48082019260009290919082900301818387803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b50505050611dc2565b604080517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a038881166024830152604482018890529151918916916342842e0e9160648082019260009290919082900301818387803b158015611da957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b505050505b611dce8685858561274c565b60408051868152602081018590528082018390528915156060820152600160a060020a03888116608083015286811660a0830152600160c083015284151560e08301529151918916917fe3d4bf61d078da5e663f7903e9655ec8cf344746ccd5b94a9990738446c46656918190036101000190a260126000611e5f600160a060020a038a168863ffffffff611c0016565b8152602081019190915260400160009081208054600160a060020a031990811682556001820180549091169055600281018290556003810182905560048101829055600501805460ff19169055601590611ec8600160a060020a0387168863ffffffff611c0016565b815260208101919091526040016000208054600160a060020a0319169055611f26611f02600160a060020a0386168763ffffffff611c0016565b600160a060020a03891660009081526013602052604090209063ffffffff6129aa16565b505050505050505050565b6000600160a060020a038216611f7b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806130fe6022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6060610ddc826129b6565b6000611bf983600160a060020a03841684612a11565b6000611fda600160a060020a0387168663ffffffff611c0016565b60008181526012602052604090209091508261203e578054600160a060020a0386811691161461203e5760405160e560020a62461bcd0281526004018080602001828103825260218152602001806130136021913960400191505060405180910390fd5b831561210f578054604080517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a039283166024820152604481018990526001606482015260a06084820152600360a48201527f307830000000000000000000000000000000000000000000000000000000000060c482015290519189169163f242432a9160e48082019260009290919082900301818387803b1580156120f257600080fd5b505af1158015612106573d6000803e3d6000fd5b5050505061219b565b8054604080517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a039283166024820152604481018990529051918916916342842e0e9160648082019260009290919082900301818387803b15801561218257600080fd5b505af1158015612196573d6000803e3d6000fd5b505050505b805460048201546003830154604080518a81526020810193909352828101919091528615156060830152600160a060020a0392831660808301819052905190928a16917f59c07ddb806e4f8958f0b5fbe93551e544398f76b776a98a29473f28c3bf8d93919081900360a00190a260008381526012602052604081208054600160a060020a031990811682556001820180549091169055600281018290556003810182905560048101829055600501805460ff1916905560159061226e600160a060020a0384168a63ffffffff611c0016565b815260208101919091526040016000208054600160a060020a0319169055611f266122a8600160a060020a0383168963ffffffff611c0016565b600160a060020a038a1660009081526013602052604090209063ffffffff6129aa16565b6122dd60038263ffffffff612a8816565b604051600160a060020a038216907f9c8e7d83025bef8a04c664b2f753f64b8814bdb7e27291d7e50935f18cc3c71290600090a250565b60008261232357506000610ddc565b8282028284828161233057fe5b0414611bf95760405160e560020a62461bcd0281526004018080602001828103825260218152602001806130dd6021913960400191505060405180910390fd5b6000611bf983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b6000611bf9838380612c75565b6000611bf983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ccc565b600a54600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051600093849384939116916370a0823191602480820192602092909190829003018186803b15801561247057600080fd5b505afa158015612484573d6000803e3d6000fd5b505050506040513d602081101561249a57600080fd5b50516006549091506000906124b5908763ffffffff61231416565b6017549091506124d390670de0b6b3a764000063ffffffff61231416565b8110156124f3576124ec8261271063ffffffff61237016565b915061256e565b60185461250e90670de0b6b3a764000063ffffffff61231416565b811015612527576124ec826103e863ffffffff61237016565b60195461254290670de0b6b3a764000063ffffffff61231416565b81101561255a576124ec82601e63ffffffff61237016565b61256b82600a63ffffffff61237016565b91505b6000612586826111498a61271063ffffffff61231416565b905085156125c4576125b8600a611149600b6125ac61271083898863ffffffff61231416565b9063ffffffff61231416565b945092506125da915050565b6125b8612710611149858463ffffffff61231416565b935093915050565b6125f360008263ffffffff611b1f16565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b61263b60008263ffffffff612a8816565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b61268360038263ffffffff611b1f16565b604051600160a060020a038216907e47706786c922d17b39285dc59d696bafea72c0b003d3841ae1202076f4c2e490600090a250565b6000611bf983600160a060020a038416612d29565b60608160010180548060200260200160405190810160405280929190818152602001828054801561272857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161270a575b50505050509050919050565b60009081526002919091016020526040902054151590565b8181156128aa57600080600d60009054906101000a9004600160a060020a0316600160a060020a031663e3bbb5656040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156127c057600080fd5b505afa1580156127d4573d6000803e3d6000fd5b505050506040513d60208110156127ea57600080fd5b5051604080517f8e15f4730000000000000000000000000000000000000000000000000000000081528151600160a060020a0390931692638e15f47392600480840193919291829003018186803b15801561284457600080fd5b505afa158015612858573d6000803e3d6000fd5b505050506040513d604081101561286e57600080fd5b508051602090910151909250905060006128a46128978460ff8516600a0a63ffffffff61237016565b879063ffffffff61237016565b93505050505b6006546128bd908263ffffffff611c0016565b600655600160a060020a0385166000908152600e60205260409020546128e9908463ffffffff611c0016565b600160a060020a038087166000908152600e6020526040808220939093559086168152205461291e908463ffffffff611c0016565b600160a060020a038086166000908152600e602090815260408083209490945591881681526014909152205461296a57600160a060020a03851660009081526014602052604090204290555b600160a060020a0384166000908152601460205260409020546129a357600160a060020a03841660009081526014602052604090204290555b5050505050565b6000611bf98383612e74565b60608160010180548060200260200160405190810160405280929190818152602001828054801561272857602002820191906000526020600020905b8154815260200190600101908083116129f25750505050509050919050565b6000612a1d8484612734565b612a7e57508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a0386161790558554858252600287019093526040902091909155611bf9565b5060009392505050565b612a928282611f31565b612ad05760405160e560020a62461bcd0281526004018080602001828103825260218152602001806130666021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015612bab5782546000198083019190810190600090869083908110612b0d57fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110612b3657fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080612b6a57fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b60008183612c5f5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c24578181015183820152602001612c0c565b50505050905090810190601f168015612c515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612c6b57fe5b0495945050505050565b6000612c818484612734565b612a7e57508254600181810185556000858152602080822090930185905581860180548084018255908252838220018490558554858252600287019093526040902091909155611bf9565b60008184841115612d215760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315612c24578181015183820152602001612c0c565b505050900390565b60008181526002830160205260408120548015612e6a5783546000198083019190810190600090879083908110612d5c57fe5b9060005260206000200154905080876000018481548110612d7957fe5b6000918252602090912001558654879080612d9057fe5b600190038181906000526020600020016000905590556000876001018381548110612db757fe5b600091825260209091200154600189018054600160a060020a039092169250829186908110612de257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555087600101805480612e1d57fe5b6000828152602080822083016000199081018054600160a060020a03191690559092019092559281526002890190925250604080822060019485019055868252812055509150610ddc9050565b6000915050610ddc565b60008181526002830160205260408120548015612e6a5783546000198083019190810190600090879083908110612ea757fe5b9060005260206000200154905080876000018481548110612ec457fe5b6000918252602090912001558654879080612edb57fe5b600190038181906000526020600020016000905590556000876001018381548110612f0257fe5b9060005260206000200154905080886001018581548110612f1f57fe5b60009182526020909120015560018801805480612f3857fe5b6000828152602080822083016000199081018390559092019092559281526002890190925250604080822060019485019055868252812055509150610ddc9050565b6040518060c001604052806000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600015158152509056fe4f70656e42695365613a206f6e6c79206d61696e20636f6e74726163742063616e2073656e642069744f70656e42695365613a2061756374696f6e20697320616c726561647920637265617465644f70656e42695365613a206f6e6c792073656c6c65722063616e2063616e63656c4f70656e42695365613a20796f75206d75737420686176652031204f4253206f6e206163636f756e7420746f207374617274526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654f70656e42695365613a207072696365206d757374206265206d6f7265207468616e2070726576696f7573206269644f70656e42695365613a20636f6e7472616374206d7573742062652077686974656c6973746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734f70656e42695365613a2061756374696f6e206973206e6f7420637265617465645465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65a26469706673582212201f5920b9206b9bdba26906dae6e81557b4330ef351f8c561869360837e1eae5b64736f6c63430006080033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000013b7b21280e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b870000000000000000000000007b1ac460c155abb6b1d02b543952426a6aaf6b72000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a

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

000000000000000000000000000000000000000000000000013b7b21280e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b870000000000000000000000007b1ac460c155abb6b1d02b543952426a6aaf6b72000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a

-----Decoded View---------------
Arg [0] : initialPriceInt (uint256): 88800000000000000
Arg [1] : auctionCreationFeeMultiplier (uint256): 0
Arg [2] : auctionContractFeeMultiplier (uint256): 1
Arg [3] : tokenForTokensale (address): 0x490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [4] : openBiSeaMainContract (address): 0x7b1ac460c155abb6b1d02b543952426a6aaf6b72
Arg [5] : busdContract (address): 0xe9e7cea3dedca5984780bafc599bd69add087d56
Arg [6] : poolRegistry (address): 0x4eac987ccbb935348570fd9fe963fb4d17c6571a

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000013b7b21280e0000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [4] : 0000000000000000000000007b1ac460c155abb6b1d02b543952426a6aaf6b72
Arg [5] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Arg [6] : 0000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a


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.