ETH Price: $2,604.00 (-0.37%)

Contract

0x8725EF91918e89F0C8E4337e9f20CbAc2B4B0416
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Batch Buy With E...174821132023-06-15 1:45:23490 days ago1686793523IN
0x8725EF91...c2B4B0416
0.025 ETH0.0036269214.43488203
Batch Buy With E...174680982023-06-13 2:25:23492 days ago1686623123IN
0x8725EF91...c2B4B0416
0.012 ETH0.0030913614.84244376
Batch Buy With E...174667982023-06-12 22:00:59492 days ago1686607259IN
0x8725EF91...c2B4B0416
0.0227 ETH0.0034470515.795954
Batch Buy With E...174363732023-06-08 15:08:23497 days ago1686236903IN
0x8725EF91...c2B4B0416
0.0065 ETH0.003557439.52673186
Batch Buy With E...174343582023-06-08 8:18:35497 days ago1686212315IN
0x8725EF91...c2B4B0416
0.0004 ETH0.0047126420.91051892
Batch Buy With E...174343582023-06-08 8:18:35497 days ago1686212315IN
0x8725EF91...c2B4B0416
0.0004 ETH0.0055361721.11051892
Batch Buy With E...174343492023-06-08 8:16:47497 days ago1686212207IN
0x8725EF91...c2B4B0416
0.0003 ETH0.0046052822.84538296
Batch Buy With E...174340762023-06-08 7:21:47497 days ago1686208907IN
0x8725EF91...c2B4B0416
0.00029 ETH0.0080134920.63627447
Batch Buy With E...174338662023-06-08 6:38:59497 days ago1686206339IN
0x8725EF91...c2B4B0416
0.00001 ETH0.0049888919.15844582
Batch Buy With E...174286342023-06-07 12:56:23498 days ago1686142583IN
0x8725EF91...c2B4B0416
0.0002 ETH0.0079638520.9796052
Batch Buy With E...174284742023-06-07 12:23:35498 days ago1686140615IN
0x8725EF91...c2B4B0416
0.001 ETH0.004002318.7444783
Batch Buy With E...174284642023-06-07 12:21:35498 days ago1686140495IN
0x8725EF91...c2B4B0416
0.0004 ETH0.0019723218.70125632
Batch Buy With E...174284422023-06-07 12:17:11498 days ago1686140231IN
0x8725EF91...c2B4B0416
0.0004 ETH0.0022466521.30238254
Batch Buy With E...174284322023-06-07 12:15:11498 days ago1686140111IN
0x8725EF91...c2B4B0416
0.0004 ETH0.003738718.24853074
Batch Buy With E...174284212023-06-07 12:12:59498 days ago1686139979IN
0x8725EF91...c2B4B0416
0.0008 ETH0.0066738320.19827562
Batch Buy With E...174283632023-06-07 12:01:23498 days ago1686139283IN
0x8725EF91...c2B4B0416
0.0004 ETH0.0046210820.81784984
Batch Buy With E...174276442023-06-07 9:35:47498 days ago1686130547IN
0x8725EF91...c2B4B0416
0.00008 ETH0.0044439919.72583495
Batch Buy With E...174275512023-06-07 9:16:47498 days ago1686129407IN
0x8725EF91...c2B4B0416
0.00008 ETH0.0045196320.06053479
Batch Buy With E...174275422023-06-07 9:14:59498 days ago1686129299IN
0x8725EF91...c2B4B0416
0.00008 ETH0.004645520.62138253
Batch Buy With E...174274732023-06-07 9:00:47498 days ago1686128447IN
0x8725EF91...c2B4B0416
0.00016 ETH0.0082306421.87022579
Batch Buy With E...174274492023-06-07 8:55:59498 days ago1686128159IN
0x8725EF91...c2B4B0416
0.0001 ETH0.004386522.89576182
Batch Buy With E...174125242023-06-05 6:23:47500 days ago1685946227IN
0x8725EF91...c2B4B0416
0.023 ETH0.0061303325.98181111
Batch Buy With E...173755232023-05-31 1:12:59505 days ago1685495579IN
0x8725EF91...c2B4B0416
0.02 ETH0.0079361231.68985896
Batch Buy With E...173755162023-05-31 1:11:35505 days ago1685495495IN
0x8725EF91...c2B4B0416
0.0018 ETH0.0081732132.03637734
Batch Buy With E...171799752023-05-03 11:44:11533 days ago1683114251IN
0x8725EF91...c2B4B0416
0.01 ETH0.0177199372.34191206
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
174821132023-06-15 1:45:23490 days ago1686793523
0x8725EF91...c2B4B0416
0.025 ETH
174680982023-06-13 2:25:23492 days ago1686623123
0x8725EF91...c2B4B0416
0.012 ETH
174667982023-06-12 22:00:59492 days ago1686607259
0x8725EF91...c2B4B0416
0.0227 ETH
174343582023-06-08 8:18:35497 days ago1686212315
0x8725EF91...c2B4B0416
0.0004 ETH
174343582023-06-08 8:18:35497 days ago1686212315
0x8725EF91...c2B4B0416
0.0004 ETH
174343492023-06-08 8:16:47497 days ago1686212207
0x8725EF91...c2B4B0416
0.0003 ETH
174340762023-06-08 7:21:47497 days ago1686208907
0x8725EF91...c2B4B0416
0.0002 ETH
174340762023-06-08 7:21:47497 days ago1686208907
0x8725EF91...c2B4B0416
0.00009 ETH
174338662023-06-08 6:38:59497 days ago1686206339
0x8725EF91...c2B4B0416
0.00001 ETH
174286342023-06-07 12:56:23498 days ago1686142583
0x8725EF91...c2B4B0416
0.0001 ETH
174286342023-06-07 12:56:23498 days ago1686142583
0x8725EF91...c2B4B0416
0.0001 ETH
174284742023-06-07 12:23:35498 days ago1686140615
0x8725EF91...c2B4B0416
0.001 ETH
174284642023-06-07 12:21:35498 days ago1686140495
0x8725EF91...c2B4B0416
0.0004 ETH
174284642023-06-07 12:21:35498 days ago1686140495
0x8725EF91...c2B4B0416
0.0004 ETH
174284422023-06-07 12:17:11498 days ago1686140231
0x8725EF91...c2B4B0416
0.0004 ETH
174284422023-06-07 12:17:11498 days ago1686140231
0x8725EF91...c2B4B0416
0.0004 ETH
174284322023-06-07 12:15:11498 days ago1686140111
0x8725EF91...c2B4B0416
0.0004 ETH
174284212023-06-07 12:12:59498 days ago1686139979
0x8725EF91...c2B4B0416
0.0004 ETH
174284212023-06-07 12:12:59498 days ago1686139979
0x8725EF91...c2B4B0416
0.0004 ETH
174283632023-06-07 12:01:23498 days ago1686139283
0x8725EF91...c2B4B0416
0.0004 ETH
174276442023-06-07 9:35:47498 days ago1686130547
0x8725EF91...c2B4B0416
0.00008 ETH
174275512023-06-07 9:16:47498 days ago1686129407
0x8725EF91...c2B4B0416
0.00008 ETH
174275422023-06-07 9:14:59498 days ago1686129299
0x8725EF91...c2B4B0416
0.00008 ETH
174274732023-06-07 9:00:47498 days ago1686128447
0x8725EF91...c2B4B0416
0.00008 ETH
174274732023-06-07 9:00:47498 days ago1686128447
0x8725EF91...c2B4B0416
0.00008 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Prism

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : Prism.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "./markets/MarketRegistry.sol";
import "./interfaces/tokens/IERC20.sol";
import "./interfaces/tokens/IERC721.sol";
import "./interfaces/tokens/IERC1155.sol";
import "./interfaces/IMarket.sol";


contract Prism is Ownable, ReentrancyGuard {

    struct ERC20Details {
        address[] tokenAddrs;
        uint256[] amounts;
    }

    struct ERC721Details {
        address tokenAddr;
        address[] to;
        uint256[] ids;
    }

    struct ERC1155Details {
        address tokenAddr;
        uint256[] ids;
        uint256[] amounts;
    }

    bool public openForTrades;
    bool public isAutoRefundEnabled;
    bool public isBalanceWallEnabled;
    MarketRegistry public marketRegistry;

    modifier isOpenForTrades() {
        require(openForTrades, "trades not allowed");
        _;
    }

    constructor(address _marketRegistry) {
        marketRegistry = MarketRegistry(_marketRegistry);
        openForTrades = true;
        isAutoRefundEnabled = true;
        isBalanceWallEnabled = true;
    }

    function setOpenForTrades(bool _openForTrades) external onlyOwner {
        openForTrades = _openForTrades;
    }

    function setAutoRefund(bool _isAutoRefundEnabled) external onlyOwner {
        isAutoRefundEnabled = _isAutoRefundEnabled;
    }

    function setBalanceWall(bool _isBalanceWallEnabled) external onlyOwner {
        isBalanceWallEnabled = _isBalanceWallEnabled;
    }

    // @audit we will setup a system that will monitor the contract for any leftover
    // assets. In case any asset is leftover, the system should be able to trigger this
    // function to close all the trades until the leftover assets are rescued.
    function closeAllTrades() external onlyOwner {
        openForTrades = false;
    }

    function _transferEth(address _to, uint256 _amount) internal {
        bool callStatus;
        assembly {
            // Transfer the ETH and store if it succeeded or not.
            callStatus := call(gas(), _to, _amount, 0, 0, 0, 0)
        }
        require(callStatus, "_transferEth: Eth transfer failed");
    }

    function _trade(
        MarketRegistry.TradeDetails[] memory _tradeDetails
    ) internal {
        for (uint256 i = 0; i < _tradeDetails.length; i++) {
            // get market details
            (address _proxy, bool _isLib, bool _isActive) = marketRegistry.markets(_tradeDetails[i].marketId);

            // market should be active
            require(_isActive, "_trade: InActive Market");

            // execute trade
            if (_isLib) {
                _proxy.delegatecall(abi.encodeWithSignature("execute(bytes)", _tradeDetails[i].tradeData));
            } else {
                IMarket(_proxy).execute{value:_tradeDetails[i].value}(_tradeDetails[i].tradeData);
            }
        }
    }

    function _returnDust(address[] memory _tokens) internal {
        // return remaining ETH (if any)
        assembly {
            if gt(selfbalance(), 0) {
                let callStatus := call(
                    gas(),
                    caller(),
                    selfbalance(),
                    0,
                    0,
                    0,
                    0
                )
            }
        }
        // return remaining tokens (if any)
        for (uint256 i = 0; i < _tokens.length; i++) {
            if (IERC20(_tokens[i]).balanceOf(address(this)) > 0) {
                _tokens[i].call(abi.encodeWithSelector(0xa9059cbb, msg.sender, IERC20(_tokens[i]).balanceOf(address(this))));
            }
        }
    }

    function batchBuyWithETH(
        MarketRegistry.TradeDetails[] memory tradeDetails
    ) payable external isOpenForTrades nonReentrant {

        // check if balance condition is met
        if (isBalanceWallEnabled) {
            if (address(this).balance > 0) {
                revert("Contract balance should be zero");
            }
        }

        // execute trades
        _trade(tradeDetails);

        // return remaining ETH (if any)
        assembly {
            if gt(selfbalance(), 0) {
                let callStatus := call(
                    gas(),
                    caller(),
                    selfbalance(),
                    0,
                    0,
                    0,
                    0
                )
            }
        }
    }

    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) public virtual returns (bytes4) {
        return this.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) public virtual returns (bytes4) {
        return this.onERC1155BatchReceived.selector;
    }

    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return 0x150b7a02;
    }

    // Used by ERC721BasicToken.sol
    function onERC721Received(
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return 0xf0b9e5ba;
    }

    function supportsInterface(bytes4 interfaceId)
        external
        virtual
        view
        returns (bool)
    {
        return interfaceId == this.supportsInterface.selector;
    }

    // We will refund received ETH automatically to maintain a contract balance zero
    fallback() external payable {
        if (isAutoRefundEnabled) {
            revert("The trasfer of ETH is not allowed");
        }
    }

    // Emergency function: In case any ETH get stuck in the contract unintentionally
    // Only owner can retrieve the asset balance to a recipient address
    function rescueETH(address recipient) onlyOwner external {
        _transferEth(recipient, address(this).balance);
    }

    // Emergency function: In case any ERC20 tokens get stuck in the contract unintentionally
    // Only owner can retrieve the asset balance to a recipient address
    function rescueERC20(address asset, address recipient) onlyOwner external {
        asset.call(abi.encodeWithSelector(0xa9059cbb, recipient, IERC20(asset).balanceOf(address(this))));
    }

    // Emergency function: In case any ERC721 tokens get stuck in the contract unintentionally
    // Only owner can retrieve the asset balance to a recipient address
    function rescueERC721(address asset, uint256[] calldata ids, address recipient) onlyOwner external {
        for (uint256 i = 0; i < ids.length; i++) {
            IERC721(asset).transferFrom(address(this), recipient, ids[i]);
        }
    }

    // Emergency function: In case any ERC1155 tokens get stuck in the contract unintentionally
    // Only owner can retrieve the asset balance to a recipient address
    function rescueERC1155(address asset, uint256[] calldata ids, uint256[] calldata amounts, address recipient) onlyOwner external {
        for (uint256 i = 0; i < ids.length; i++) {
            IERC1155(asset).safeTransferFrom(address(this), recipient, ids[i], amounts[i], "");
        }
    }
}

File 2 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 9 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 4 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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) {
        return msg.data;
    }
}

File 5 of 9 : IMarket.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;


interface IMarket {
    function execute(bytes memory tradeData)
        external
        payable;
}

File 6 of 9 : IERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

interface IERC1155 {
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) external;

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) external;

    function balanceOf(address _owner, uint256 _id) external view returns (uint256);
}

File 7 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

pragma solidity 0.8.17;

interface IERC721 {
    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) external;

    function setApprovalForAll(address operator, bool approved) external;

    function approve(address to, uint256 tokenId) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function balanceOf(address _owner) external view returns (uint256);
}

File 9 of 9 : MarketRegistry.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

import "@openzeppelin/contracts/access/Ownable.sol";


contract MarketRegistry is Ownable {

    struct TradeDetails {
        uint256 marketId;
        uint256 value;
        bytes tradeData;
    }

    struct Market {
        address proxy;
        bool isLib;
        bool isActive;
    }

    Market[] public markets;

    constructor(address[] memory proxies, bool[] memory isLibs) {
        for (uint256 i = 0; i < proxies.length; i++) {
            markets.push(Market(proxies[i], isLibs[i], true));
        }
    }

    function addMarket(address proxy, bool isLib) external onlyOwner {
        markets.push(Market(proxy, isLib, true));
    }

    function setMarketStatus(uint256 marketId, bool newStatus) external onlyOwner {
        Market storage market = markets[marketId];
        market.isActive = newStatus;
    }

    function setMarketProxy(uint256 marketId, address newProxy, bool isLib) external onlyOwner {
        Market storage market = markets[marketId];
        market.proxy = newProxy;
        market.isLib = isLib;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketRegistry","type":"address"}],"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"tradeData","type":"bytes"}],"internalType":"struct MarketRegistry.TradeDetails[]","name":"tradeDetails","type":"tuple[]"}],"name":"batchBuyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"closeAllTrades","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isAutoRefundEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBalanceWallEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketRegistry","outputs":[{"internalType":"contract MarketRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","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":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","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":[{"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":"openForTrades","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isAutoRefundEnabled","type":"bool"}],"name":"setAutoRefund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isBalanceWallEnabled","type":"bool"}],"name":"setBalanceWall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_openForTrades","type":"bool"}],"name":"setOpenForTrades","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620024373803806200243783398181016040528101906200003791906200022c565b620000576200004b620000f660201b60201c565b620000fe60201b60201c565b6001808190555080600260036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506001600260016101000a81548160ff02191690831515021790555060016002806101000a81548160ff021916908315150217905550506200025e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001f482620001c7565b9050919050565b6200020681620001e7565b81146200021257600080fd5b50565b6000815190506200022681620001fb565b92915050565b600060208284031215620002455762000244620001c2565b5b6000620002558482850162000215565b91505092915050565b6121c9806200026e6000396000f3fe60806040526004361061012e5760003560e01c8063aea16db9116100ab578063c5cadd7f1161006f578063c5cadd7f1461040d578063c9d872d114610424578063ecb96fe61461044d578063f0b9e5ba14610478578063f23a6e61146104b5578063f2fde38b146104f25761012f565b8063aea16db914610328578063b1cd541714610353578063b5536ef31461037e578063b7ce33a2146103a7578063bc197c81146103d05761012f565b8063715018a6116100f2578063715018a61461027657806383206e801461028d5780638da5cb5b146102b65780639a2b8115146102e1578063a1b62797146102fd5761012f565b806301ffc9a71461018157806304824e70146101be578063150b7a02146101e757806326e2dca2146102245780635d799f871461024d5761012f565b5b600260019054906101000a900460ff161561017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101769061109e565b60405180910390fd5b005b34801561018d57600080fd5b506101a860048036038101906101a3919061112a565b61051b565b6040516101b59190611172565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906111eb565b61056c565b005b3480156101f357600080fd5b5061020e600480360381019061020991906112b3565b610581565b60405161021b919061134a565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906113bb565b610596565b005b34801561025957600080fd5b50610274600480360381019061026f919061142f565b61064e565b005b34801561028257600080fd5b5061028b610795565b005b34801561029957600080fd5b506102b460048036038101906102af919061149b565b6107a9565b005b3480156102c257600080fd5b506102cb6107ce565b6040516102d891906114d7565b60405180910390f35b6102fb60048036038101906102f6919061179e565b6107f7565b005b34801561030957600080fd5b506103126108cf565b60405161031f9190611172565b60405180910390f35b34801561033457600080fd5b5061033d6108e2565b60405161034a9190611172565b60405180910390f35b34801561035f57600080fd5b506103686108f5565b6040516103759190611172565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a0919061149b565b610906565b005b3480156103b357600080fd5b506103ce60048036038101906103c991906117e7565b61092a565b005b3480156103dc57600080fd5b506103f760048036038101906103f2919061188e565b6109ff565b604051610404919061134a565b60405180910390f35b34801561041957600080fd5b50610422610a17565b005b34801561043057600080fd5b5061044b6004803603810190610446919061149b565b610a3c565b005b34801561045957600080fd5b50610462610a61565b60405161046f91906119c9565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906119e4565b610a87565b6040516104ac919061134a565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190611a58565b610a9b565b6040516104e9919061134a565b60405180910390f35b3480156104fe57600080fd5b50610519600480360381019061051491906111eb565b610ab1565b005b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610574610b34565b61057e8147610bb2565b50565b600063150b7a0260e01b905095945050505050565b61059e610b34565b60005b83839050811015610647578473ffffffffffffffffffffffffffffffffffffffff166323b872dd30848787868181106105dd576105dc611af2565b5b905060200201356040518463ffffffff1660e01b815260040161060293929190611b30565b600060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b50505050808061063f90611b96565b9150506105a1565b5050505050565b610656610b34565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106ac91906114d7565b602060405180830381865afa1580156106c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ed9190611bf3565b6040516024016106fe929190611c20565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161074c9190611cba565b6000604051808303816000865af19150503d8060008114610789576040519150601f19603f3d011682016040523d82523d6000602084013e61078e565b606091505b5050505050565b61079d610b34565b6107a76000610c05565b565b6107b1610b34565b80600260006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900460ff16610846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083d90611d1d565b60405180910390fd5b61084e610cc9565b60028054906101000a900460ff16156108a65760004711156108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c90611d89565b60405180910390fd5b5b6108af81610d18565b60004711156108c45760008060008047335af1505b6108cc61100a565b50565b600260009054906101000a900460ff1681565b600260019054906101000a900460ff1681565b60028054906101000a900460ff1681565b61090e610b34565b806002806101000a81548160ff02191690831515021790555050565b610932610b34565b60005b858590508110156109f6578673ffffffffffffffffffffffffffffffffffffffff1663f242432a308489898681811061097157610970611af2565b5b9050602002013588888781811061098b5761098a611af2565b5b905060200201356040518563ffffffff1660e01b81526004016109b19493929190611de0565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050505080806109ee90611b96565b915050610935565b50505050505050565b600063bc197c8160e01b905098975050505050505050565b610a1f610b34565b6000600260006101000a81548160ff021916908315150217905550565b610a44610b34565b80600260016101000a81548160ff02191690831515021790555050565b600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600063f0b9e5ba60e01b9050949350505050565b600063f23a6e6160e01b90509695505050505050565b610ab9610b34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90611eaa565b60405180910390fd5b610b3181610c05565b50565b610b3c611013565b73ffffffffffffffffffffffffffffffffffffffff16610b5a6107ce565b73ffffffffffffffffffffffffffffffffffffffff1614610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790611f16565b60405180910390fd5b565b600080600080600085875af1905080610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790611fa8565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590612014565b60405180910390fd5b6002600181905550565b60005b8151811015611006576000806000600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1283e77868681518110610d7a57610d79611af2565b5b6020026020010151600001516040518263ffffffff1660e01b8152600401610da29190612034565b606060405180830381865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de39190612079565b92509250925080610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090612118565b60405180910390fd5b8115610f47578273ffffffffffffffffffffffffffffffffffffffff16858581518110610e5957610e58611af2565b5b602002602001015160400151604051602401610e759190612171565b6040516020818303038152906040527f09c5eabe000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610eff9190611cba565b600060405180830381855af49150503d8060008114610f3a576040519150601f19603f3d011682016040523d82523d6000602084013e610f3f565b606091505b505050610ff0565b8273ffffffffffffffffffffffffffffffffffffffff166309c5eabe868681518110610f7657610f75611af2565b5b602002602001015160200151878781518110610f9557610f94611af2565b5b6020026020010151604001516040518363ffffffff1660e01b8152600401610fbd9190612171565b6000604051808303818588803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b50505050505b5050508080610ffe90611b96565b915050610d1b565b5050565b60018081905550565b600033905090565b600082825260208201905092915050565b7f5468652074726173666572206f6620455448206973206e6f7420616c6c6f776560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061108860218361101b565b91506110938261102c565b604082019050919050565b600060208201905081810360008301526110b78161107b565b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611107816110d2565b811461111257600080fd5b50565b600081359050611124816110fe565b92915050565b6000602082840312156111405761113f6110c8565b5b600061114e84828501611115565b91505092915050565b60008115159050919050565b61116c81611157565b82525050565b60006020820190506111876000830184611163565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111b88261118d565b9050919050565b6111c8816111ad565b81146111d357600080fd5b50565b6000813590506111e5816111bf565b92915050565b600060208284031215611201576112006110c8565b5b600061120f848285016111d6565b91505092915050565b6000819050919050565b61122b81611218565b811461123657600080fd5b50565b60008135905061124881611222565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112735761127261124e565b5b8235905067ffffffffffffffff8111156112905761128f611253565b5b6020830191508360018202830111156112ac576112ab611258565b5b9250929050565b6000806000806000608086880312156112cf576112ce6110c8565b5b60006112dd888289016111d6565b95505060206112ee888289016111d6565b94505060406112ff88828901611239565b935050606086013567ffffffffffffffff8111156113205761131f6110cd565b5b61132c8882890161125d565b92509250509295509295909350565b611344816110d2565b82525050565b600060208201905061135f600083018461133b565b92915050565b60008083601f84011261137b5761137a61124e565b5b8235905067ffffffffffffffff81111561139857611397611253565b5b6020830191508360208202830111156113b4576113b3611258565b5b9250929050565b600080600080606085870312156113d5576113d46110c8565b5b60006113e3878288016111d6565b945050602085013567ffffffffffffffff811115611404576114036110cd565b5b61141087828801611365565b93509350506040611423878288016111d6565b91505092959194509250565b60008060408385031215611446576114456110c8565b5b6000611454858286016111d6565b9250506020611465858286016111d6565b9150509250929050565b61147881611157565b811461148357600080fd5b50565b6000813590506114958161146f565b92915050565b6000602082840312156114b1576114b06110c8565b5b60006114bf84828501611486565b91505092915050565b6114d1816111ad565b82525050565b60006020820190506114ec60008301846114c8565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61153b826114f2565b810181811067ffffffffffffffff8211171561155a57611559611503565b5b80604052505050565b600061156d6110be565b90506115798282611532565b919050565b600067ffffffffffffffff82111561159957611598611503565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff8211156115d4576115d3611503565b5b6115dd826114f2565b9050602081019050919050565b82818337600083830152505050565b600061160c611607846115b9565b611563565b905082815260208101848484011115611628576116276115b4565b5b6116338482856115ea565b509392505050565b600082601f8301126116505761164f61124e565b5b81356116608482602086016115f9565b91505092915050565b60006060828403121561167f5761167e6115aa565b5b6116896060611563565b9050600061169984828501611239565b60008301525060206116ad84828501611239565b602083015250604082013567ffffffffffffffff8111156116d1576116d06115af565b5b6116dd8482850161163b565b60408301525092915050565b60006116fc6116f78461157e565b611563565b9050808382526020820190506020840283018581111561171f5761171e611258565b5b835b8181101561176657803567ffffffffffffffff8111156117445761174361124e565b5b8086016117518982611669565b85526020850194505050602081019050611721565b5050509392505050565b600082601f8301126117855761178461124e565b5b81356117958482602086016116e9565b91505092915050565b6000602082840312156117b4576117b36110c8565b5b600082013567ffffffffffffffff8111156117d2576117d16110cd565b5b6117de84828501611770565b91505092915050565b60008060008060008060808789031215611804576118036110c8565b5b600061181289828a016111d6565b965050602087013567ffffffffffffffff811115611833576118326110cd565b5b61183f89828a01611365565b9550955050604087013567ffffffffffffffff811115611862576118616110cd565b5b61186e89828a01611365565b9350935050606061188189828a016111d6565b9150509295509295509295565b60008060008060008060008060a0898b0312156118ae576118ad6110c8565b5b60006118bc8b828c016111d6565b98505060206118cd8b828c016111d6565b975050604089013567ffffffffffffffff8111156118ee576118ed6110cd565b5b6118fa8b828c01611365565b9650965050606089013567ffffffffffffffff81111561191d5761191c6110cd565b5b6119298b828c01611365565b9450945050608089013567ffffffffffffffff81111561194c5761194b6110cd565b5b6119588b828c0161125d565b92509250509295985092959890939650565b6000819050919050565b600061198f61198a6119858461118d565b61196a565b61118d565b9050919050565b60006119a182611974565b9050919050565b60006119b382611996565b9050919050565b6119c3816119a8565b82525050565b60006020820190506119de60008301846119ba565b92915050565b600080600080606085870312156119fe576119fd6110c8565b5b6000611a0c878288016111d6565b9450506020611a1d87828801611239565b935050604085013567ffffffffffffffff811115611a3e57611a3d6110cd565b5b611a4a8782880161125d565b925092505092959194509250565b60008060008060008060a08789031215611a7557611a746110c8565b5b6000611a8389828a016111d6565b9650506020611a9489828a016111d6565b9550506040611aa589828a01611239565b9450506060611ab689828a01611239565b935050608087013567ffffffffffffffff811115611ad757611ad66110cd565b5b611ae389828a0161125d565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b611b2a81611218565b82525050565b6000606082019050611b4560008301866114c8565b611b5260208301856114c8565b611b5f6040830184611b21565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ba182611218565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bd357611bd2611b67565b5b600182019050919050565b600081519050611bed81611222565b92915050565b600060208284031215611c0957611c086110c8565b5b6000611c1784828501611bde565b91505092915050565b6000604082019050611c3560008301856114c8565b611c426020830184611b21565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015611c7d578082015181840152602081019050611c62565b60008484015250505050565b6000611c9482611c49565b611c9e8185611c54565b9350611cae818560208601611c5f565b80840191505092915050565b6000611cc68284611c89565b915081905092915050565b7f747261646573206e6f7420616c6c6f7765640000000000000000000000000000600082015250565b6000611d0760128361101b565b9150611d1282611cd1565b602082019050919050565b60006020820190508181036000830152611d3681611cfa565b9050919050565b7f436f6e74726163742062616c616e63652073686f756c64206265207a65726f00600082015250565b6000611d73601f8361101b565b9150611d7e82611d3d565b602082019050919050565b60006020820190508181036000830152611da281611d66565b9050919050565b600082825260208201905092915050565b50565b6000611dca600083611da9565b9150611dd582611dba565b600082019050919050565b600060a082019050611df560008301876114c8565b611e0260208301866114c8565b611e0f6040830185611b21565b611e1c6060830184611b21565b8181036080830152611e2d81611dbd565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e9460268361101b565b9150611e9f82611e38565b604082019050919050565b60006020820190508181036000830152611ec381611e87565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f0060208361101b565b9150611f0b82611eca565b602082019050919050565b60006020820190508181036000830152611f2f81611ef3565b9050919050565b7f5f7472616e736665724574683a20457468207472616e73666572206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9260218361101b565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611ffe601f8361101b565b915061200982611fc8565b602082019050919050565b6000602082019050818103600083015261202d81611ff1565b9050919050565b60006020820190506120496000830184611b21565b92915050565b60008151905061205e816111bf565b92915050565b6000815190506120738161146f565b92915050565b600080600060608486031215612092576120916110c8565b5b60006120a08682870161204f565b93505060206120b186828701612064565b92505060406120c286828701612064565b9150509250925092565b7f5f74726164653a20496e416374697665204d61726b6574000000000000000000600082015250565b600061210260178361101b565b915061210d826120cc565b602082019050919050565b60006020820190508181036000830152612131816120f5565b9050919050565b600061214382611c49565b61214d8185611da9565b935061215d818560208601611c5f565b612166816114f2565b840191505092915050565b6000602082019050818103600083015261218b8184612138565b90509291505056fea2646970667358221220f04222115bc486555ce1f44844f59a8accaa5038fa390617a81e90e7651db6ca64736f6c6343000811003300000000000000000000000029576e9764d148774862668a949b1cf9b011b459

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063aea16db9116100ab578063c5cadd7f1161006f578063c5cadd7f1461040d578063c9d872d114610424578063ecb96fe61461044d578063f0b9e5ba14610478578063f23a6e61146104b5578063f2fde38b146104f25761012f565b8063aea16db914610328578063b1cd541714610353578063b5536ef31461037e578063b7ce33a2146103a7578063bc197c81146103d05761012f565b8063715018a6116100f2578063715018a61461027657806383206e801461028d5780638da5cb5b146102b65780639a2b8115146102e1578063a1b62797146102fd5761012f565b806301ffc9a71461018157806304824e70146101be578063150b7a02146101e757806326e2dca2146102245780635d799f871461024d5761012f565b5b600260019054906101000a900460ff161561017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101769061109e565b60405180910390fd5b005b34801561018d57600080fd5b506101a860048036038101906101a3919061112a565b61051b565b6040516101b59190611172565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906111eb565b61056c565b005b3480156101f357600080fd5b5061020e600480360381019061020991906112b3565b610581565b60405161021b919061134a565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906113bb565b610596565b005b34801561025957600080fd5b50610274600480360381019061026f919061142f565b61064e565b005b34801561028257600080fd5b5061028b610795565b005b34801561029957600080fd5b506102b460048036038101906102af919061149b565b6107a9565b005b3480156102c257600080fd5b506102cb6107ce565b6040516102d891906114d7565b60405180910390f35b6102fb60048036038101906102f6919061179e565b6107f7565b005b34801561030957600080fd5b506103126108cf565b60405161031f9190611172565b60405180910390f35b34801561033457600080fd5b5061033d6108e2565b60405161034a9190611172565b60405180910390f35b34801561035f57600080fd5b506103686108f5565b6040516103759190611172565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a0919061149b565b610906565b005b3480156103b357600080fd5b506103ce60048036038101906103c991906117e7565b61092a565b005b3480156103dc57600080fd5b506103f760048036038101906103f2919061188e565b6109ff565b604051610404919061134a565b60405180910390f35b34801561041957600080fd5b50610422610a17565b005b34801561043057600080fd5b5061044b6004803603810190610446919061149b565b610a3c565b005b34801561045957600080fd5b50610462610a61565b60405161046f91906119c9565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a91906119e4565b610a87565b6040516104ac919061134a565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190611a58565b610a9b565b6040516104e9919061134a565b60405180910390f35b3480156104fe57600080fd5b50610519600480360381019061051491906111eb565b610ab1565b005b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610574610b34565b61057e8147610bb2565b50565b600063150b7a0260e01b905095945050505050565b61059e610b34565b60005b83839050811015610647578473ffffffffffffffffffffffffffffffffffffffff166323b872dd30848787868181106105dd576105dc611af2565b5b905060200201356040518463ffffffff1660e01b815260040161060293929190611b30565b600060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b50505050808061063f90611b96565b9150506105a1565b5050505050565b610656610b34565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106ac91906114d7565b602060405180830381865afa1580156106c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ed9190611bf3565b6040516024016106fe929190611c20565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161074c9190611cba565b6000604051808303816000865af19150503d8060008114610789576040519150601f19603f3d011682016040523d82523d6000602084013e61078e565b606091505b5050505050565b61079d610b34565b6107a76000610c05565b565b6107b1610b34565b80600260006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900460ff16610846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083d90611d1d565b60405180910390fd5b61084e610cc9565b60028054906101000a900460ff16156108a65760004711156108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c90611d89565b60405180910390fd5b5b6108af81610d18565b60004711156108c45760008060008047335af1505b6108cc61100a565b50565b600260009054906101000a900460ff1681565b600260019054906101000a900460ff1681565b60028054906101000a900460ff1681565b61090e610b34565b806002806101000a81548160ff02191690831515021790555050565b610932610b34565b60005b858590508110156109f6578673ffffffffffffffffffffffffffffffffffffffff1663f242432a308489898681811061097157610970611af2565b5b9050602002013588888781811061098b5761098a611af2565b5b905060200201356040518563ffffffff1660e01b81526004016109b19493929190611de0565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050505080806109ee90611b96565b915050610935565b50505050505050565b600063bc197c8160e01b905098975050505050505050565b610a1f610b34565b6000600260006101000a81548160ff021916908315150217905550565b610a44610b34565b80600260016101000a81548160ff02191690831515021790555050565b600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600063f0b9e5ba60e01b9050949350505050565b600063f23a6e6160e01b90509695505050505050565b610ab9610b34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f90611eaa565b60405180910390fd5b610b3181610c05565b50565b610b3c611013565b73ffffffffffffffffffffffffffffffffffffffff16610b5a6107ce565b73ffffffffffffffffffffffffffffffffffffffff1614610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790611f16565b60405180910390fd5b565b600080600080600085875af1905080610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790611fa8565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590612014565b60405180910390fd5b6002600181905550565b60005b8151811015611006576000806000600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1283e77868681518110610d7a57610d79611af2565b5b6020026020010151600001516040518263ffffffff1660e01b8152600401610da29190612034565b606060405180830381865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de39190612079565b92509250925080610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090612118565b60405180910390fd5b8115610f47578273ffffffffffffffffffffffffffffffffffffffff16858581518110610e5957610e58611af2565b5b602002602001015160400151604051602401610e759190612171565b6040516020818303038152906040527f09c5eabe000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610eff9190611cba565b600060405180830381855af49150503d8060008114610f3a576040519150601f19603f3d011682016040523d82523d6000602084013e610f3f565b606091505b505050610ff0565b8273ffffffffffffffffffffffffffffffffffffffff166309c5eabe868681518110610f7657610f75611af2565b5b602002602001015160200151878781518110610f9557610f94611af2565b5b6020026020010151604001516040518363ffffffff1660e01b8152600401610fbd9190612171565b6000604051808303818588803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b50505050505b5050508080610ffe90611b96565b915050610d1b565b5050565b60018081905550565b600033905090565b600082825260208201905092915050565b7f5468652074726173666572206f6620455448206973206e6f7420616c6c6f776560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061108860218361101b565b91506110938261102c565b604082019050919050565b600060208201905081810360008301526110b78161107b565b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611107816110d2565b811461111257600080fd5b50565b600081359050611124816110fe565b92915050565b6000602082840312156111405761113f6110c8565b5b600061114e84828501611115565b91505092915050565b60008115159050919050565b61116c81611157565b82525050565b60006020820190506111876000830184611163565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111b88261118d565b9050919050565b6111c8816111ad565b81146111d357600080fd5b50565b6000813590506111e5816111bf565b92915050565b600060208284031215611201576112006110c8565b5b600061120f848285016111d6565b91505092915050565b6000819050919050565b61122b81611218565b811461123657600080fd5b50565b60008135905061124881611222565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112735761127261124e565b5b8235905067ffffffffffffffff8111156112905761128f611253565b5b6020830191508360018202830111156112ac576112ab611258565b5b9250929050565b6000806000806000608086880312156112cf576112ce6110c8565b5b60006112dd888289016111d6565b95505060206112ee888289016111d6565b94505060406112ff88828901611239565b935050606086013567ffffffffffffffff8111156113205761131f6110cd565b5b61132c8882890161125d565b92509250509295509295909350565b611344816110d2565b82525050565b600060208201905061135f600083018461133b565b92915050565b60008083601f84011261137b5761137a61124e565b5b8235905067ffffffffffffffff81111561139857611397611253565b5b6020830191508360208202830111156113b4576113b3611258565b5b9250929050565b600080600080606085870312156113d5576113d46110c8565b5b60006113e3878288016111d6565b945050602085013567ffffffffffffffff811115611404576114036110cd565b5b61141087828801611365565b93509350506040611423878288016111d6565b91505092959194509250565b60008060408385031215611446576114456110c8565b5b6000611454858286016111d6565b9250506020611465858286016111d6565b9150509250929050565b61147881611157565b811461148357600080fd5b50565b6000813590506114958161146f565b92915050565b6000602082840312156114b1576114b06110c8565b5b60006114bf84828501611486565b91505092915050565b6114d1816111ad565b82525050565b60006020820190506114ec60008301846114c8565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61153b826114f2565b810181811067ffffffffffffffff8211171561155a57611559611503565b5b80604052505050565b600061156d6110be565b90506115798282611532565b919050565b600067ffffffffffffffff82111561159957611598611503565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff8211156115d4576115d3611503565b5b6115dd826114f2565b9050602081019050919050565b82818337600083830152505050565b600061160c611607846115b9565b611563565b905082815260208101848484011115611628576116276115b4565b5b6116338482856115ea565b509392505050565b600082601f8301126116505761164f61124e565b5b81356116608482602086016115f9565b91505092915050565b60006060828403121561167f5761167e6115aa565b5b6116896060611563565b9050600061169984828501611239565b60008301525060206116ad84828501611239565b602083015250604082013567ffffffffffffffff8111156116d1576116d06115af565b5b6116dd8482850161163b565b60408301525092915050565b60006116fc6116f78461157e565b611563565b9050808382526020820190506020840283018581111561171f5761171e611258565b5b835b8181101561176657803567ffffffffffffffff8111156117445761174361124e565b5b8086016117518982611669565b85526020850194505050602081019050611721565b5050509392505050565b600082601f8301126117855761178461124e565b5b81356117958482602086016116e9565b91505092915050565b6000602082840312156117b4576117b36110c8565b5b600082013567ffffffffffffffff8111156117d2576117d16110cd565b5b6117de84828501611770565b91505092915050565b60008060008060008060808789031215611804576118036110c8565b5b600061181289828a016111d6565b965050602087013567ffffffffffffffff811115611833576118326110cd565b5b61183f89828a01611365565b9550955050604087013567ffffffffffffffff811115611862576118616110cd565b5b61186e89828a01611365565b9350935050606061188189828a016111d6565b9150509295509295509295565b60008060008060008060008060a0898b0312156118ae576118ad6110c8565b5b60006118bc8b828c016111d6565b98505060206118cd8b828c016111d6565b975050604089013567ffffffffffffffff8111156118ee576118ed6110cd565b5b6118fa8b828c01611365565b9650965050606089013567ffffffffffffffff81111561191d5761191c6110cd565b5b6119298b828c01611365565b9450945050608089013567ffffffffffffffff81111561194c5761194b6110cd565b5b6119588b828c0161125d565b92509250509295985092959890939650565b6000819050919050565b600061198f61198a6119858461118d565b61196a565b61118d565b9050919050565b60006119a182611974565b9050919050565b60006119b382611996565b9050919050565b6119c3816119a8565b82525050565b60006020820190506119de60008301846119ba565b92915050565b600080600080606085870312156119fe576119fd6110c8565b5b6000611a0c878288016111d6565b9450506020611a1d87828801611239565b935050604085013567ffffffffffffffff811115611a3e57611a3d6110cd565b5b611a4a8782880161125d565b925092505092959194509250565b60008060008060008060a08789031215611a7557611a746110c8565b5b6000611a8389828a016111d6565b9650506020611a9489828a016111d6565b9550506040611aa589828a01611239565b9450506060611ab689828a01611239565b935050608087013567ffffffffffffffff811115611ad757611ad66110cd565b5b611ae389828a0161125d565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b611b2a81611218565b82525050565b6000606082019050611b4560008301866114c8565b611b5260208301856114c8565b611b5f6040830184611b21565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ba182611218565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bd357611bd2611b67565b5b600182019050919050565b600081519050611bed81611222565b92915050565b600060208284031215611c0957611c086110c8565b5b6000611c1784828501611bde565b91505092915050565b6000604082019050611c3560008301856114c8565b611c426020830184611b21565b9392505050565b600081519050919050565b600081905092915050565b60005b83811015611c7d578082015181840152602081019050611c62565b60008484015250505050565b6000611c9482611c49565b611c9e8185611c54565b9350611cae818560208601611c5f565b80840191505092915050565b6000611cc68284611c89565b915081905092915050565b7f747261646573206e6f7420616c6c6f7765640000000000000000000000000000600082015250565b6000611d0760128361101b565b9150611d1282611cd1565b602082019050919050565b60006020820190508181036000830152611d3681611cfa565b9050919050565b7f436f6e74726163742062616c616e63652073686f756c64206265207a65726f00600082015250565b6000611d73601f8361101b565b9150611d7e82611d3d565b602082019050919050565b60006020820190508181036000830152611da281611d66565b9050919050565b600082825260208201905092915050565b50565b6000611dca600083611da9565b9150611dd582611dba565b600082019050919050565b600060a082019050611df560008301876114c8565b611e0260208301866114c8565b611e0f6040830185611b21565b611e1c6060830184611b21565b8181036080830152611e2d81611dbd565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e9460268361101b565b9150611e9f82611e38565b604082019050919050565b60006020820190508181036000830152611ec381611e87565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f0060208361101b565b9150611f0b82611eca565b602082019050919050565b60006020820190508181036000830152611f2f81611ef3565b9050919050565b7f5f7472616e736665724574683a20457468207472616e73666572206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9260218361101b565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611ffe601f8361101b565b915061200982611fc8565b602082019050919050565b6000602082019050818103600083015261202d81611ff1565b9050919050565b60006020820190506120496000830184611b21565b92915050565b60008151905061205e816111bf565b92915050565b6000815190506120738161146f565b92915050565b600080600060608486031215612092576120916110c8565b5b60006120a08682870161204f565b93505060206120b186828701612064565b92505060406120c286828701612064565b9150509250925092565b7f5f74726164653a20496e416374697665204d61726b6574000000000000000000600082015250565b600061210260178361101b565b915061210d826120cc565b602082019050919050565b60006020820190508181036000830152612131816120f5565b9050919050565b600061214382611c49565b61214d8185611da9565b935061215d818560208601611c5f565b612166816114f2565b840191505092915050565b6000602082019050818103600083015261218b8184612138565b90509291505056fea2646970667358221220f04222115bc486555ce1f44844f59a8accaa5038fa390617a81e90e7651db6ca64736f6c63430008110033

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

00000000000000000000000029576e9764d148774862668a949b1cf9b011b459

-----Decoded View---------------
Arg [0] : _marketRegistry (address): 0x29576e9764d148774862668a949b1CF9b011b459

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000029576e9764d148774862668a949b1cf9b011b459


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.