文件 1 的 8:Context.sol
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
文件 2 的 8:IERC165.sol
pragma solidity ^0.8.0;
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
文件 3 的 8:IERC20.sol
pragma solidity ^0.8.0;
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);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
文件 4 的 8:IERC721.sol
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
interface IERC721 is IERC165 {
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
function safeTransferFrom(address from, address to, uint256 tokenId) external;
function transferFrom(address from, address to, uint256 tokenId) external;
function approve(address to, uint256 tokenId) external;
function getApproved(uint256 tokenId) external view returns (address operator);
function setApprovalForAll(address operator, bool _approved) external;
function isApprovedForAll(address owner, address operator) external view returns (bool);
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}
文件 5 的 8:IERC721Receiver.sol
pragma solidity ^0.8.0;
interface IERC721Receiver {
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
文件 6 的 8:Ownable.sol
pragma solidity ^0.8.0;
import "../utils/Context.sol";
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
文件 7 的 8:ReentrancyGuard.sol
pragma solidity ^0.8.0;
abstract contract ReentrancyGuard {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor () {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
_;
_status = _NOT_ENTERED;
}
}
文件 8 的 8:RocketFactoryMarket.sol
{
"compilationTarget": {
"/contracts/RocketFactoryMarket.sol": "RocketFactoryMarket"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"uint32","name":"maxBidTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"maxBidderAddress","type":"address"},{"internalType":"uint256","name":"startPrice","type":"uint256"},{"internalType":"uint256","name":"maxBidAmount","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Auction","name":"auction","type":"tuple"}],"name":"ItemBidded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"uint32","name":"maxBidTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"maxBidderAddress","type":"address"},{"internalType":"uint256","name":"startPrice","type":"uint256"},{"internalType":"uint256","name":"maxBidAmount","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Auction","name":"auction","type":"tuple"}],"name":"ItemClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Sale","name":"sale","type":"tuple"}],"name":"ItemForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"uint32","name":"maxBidTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"maxBidderAddress","type":"address"},{"internalType":"uint256","name":"startPrice","type":"uint256"},{"internalType":"uint256","name":"maxBidAmount","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Auction","name":"auction","type":"tuple"}],"name":"ItemOnAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Sale","name":"sale","type":"tuple"}],"name":"ItemSaleCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Sale","name":"sale","type":"tuple"}],"name":"ItemSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"address","name":"offeree","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Offer","name":"offer","type":"tuple"}],"name":"OfferAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"address","name":"offeree","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Offer","name":"offer","type":"tuple"}],"name":"OfferCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"address","name":"offeree","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Offer","name":"offer","type":"tuple"}],"name":"OfferCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"itemId","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"itemType","type":"uint8"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"address","name":"offeree","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Offer","name":"offer","type":"tuple"}],"name":"OfferRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"offeree","type":"address"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"offering","type":"tuple[]"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"requesting","type":"tuple[]"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Trade","name":"trade","type":"tuple"}],"name":"TradeAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"offeree","type":"address"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"offering","type":"tuple[]"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"requesting","type":"tuple[]"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Trade","name":"trade","type":"tuple"}],"name":"TradeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"offeree","type":"address"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"offering","type":"tuple[]"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"requesting","type":"tuple[]"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Trade","name":"trade","type":"tuple"}],"name":"TradeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"components":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"offeree","type":"address"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"offering","type":"tuple[]"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"requesting","type":"tuple[]"}],"indexed":false,"internalType":"struct RocketFactoryMarket.Trade","name":"trade","type":"tuple"}],"name":"TradeRejected","type":"event"},{"inputs":[{"internalType":"address","name":"_offerer","type":"address"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint16","name":"_itemId","type":"uint16"}],"name":"acceptOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_offerer","type":"address"}],"name":"acceptTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint16","name":"_itemId","type":"uint16"}],"name":"cancelOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"}],"name":"cancelSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_offeree","type":"address"}],"name":"cancelTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc20","type":"address"}],"name":"checkBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint256","name":"_startPrice","type":"uint256"},{"internalType":"uint32","name":"_endTimestamp","type":"uint32"},{"internalType":"address","name":"_erc20","type":"address"}],"name":"createAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint32","name":"_endTimestamp","type":"uint32"},{"internalType":"address","name":"_erc20","type":"address"}],"name":"createSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"}],"name":"deleteAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"}],"name":"deleteSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"itemsToAuction","outputs":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"uint32","name":"maxBidTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"maxBidderAddress","type":"address"},{"internalType":"uint256","name":"startPrice","type":"uint256"},{"internalType":"uint256","name":"maxBidAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"itemsToSale","outputs":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint32","name":"endTimestamp","type":"uint32"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"address","name":"_erc20","type":"address"}],"name":"makeAnOffer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"offers","outputs":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"uint8","name":"itemType","type":"uint8"},{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"address","name":"offeree","type":"address"},{"internalType":"address","name":"erc20","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint256","name":"_bid","type":"uint256"}],"name":"placeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"_offers","type":"tuple[]"},{"components":[{"internalType":"uint16","name":"itemId","type":"uint16"},{"internalType":"uint8","name":"itemType","type":"uint8"}],"internalType":"struct RocketFactoryMarket.Item[]","name":"_requests","type":"tuple[]"},{"internalType":"address","name":"_offeree","type":"address"}],"name":"proposeTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_offerer","type":"address"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"uint16","name":"_itemId","type":"uint16"}],"name":"rejectOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_offerer","type":"address"}],"name":"rejectTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_itemId","type":"uint16"},{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"address","name":"_to","type":"address"}],"name":"returnItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc20","type":"address"},{"internalType":"bool","name":"_allowed","type":"bool"}],"name":"setAllowedERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_itemType","type":"uint8"},{"internalType":"address","name":"_itemTokenAddress","type":"address"}],"name":"setItemTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_ownerCutPercentage","type":"uint16"}],"name":"setOwnerCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"trades","outputs":[{"internalType":"address","name":"offerer","type":"address"},{"internalType":"address","name":"offeree","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc20","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]