文件 1 的 17:AddressUpgradeable.sol
pragma solidity ^0.7.0;
library AddressUpgradeable {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
文件 2 的 17:ContextUpgradeable.sol
pragma solidity >=0.6.0 <0.8.0;
import "../proxy/Initializable.sol";
abstract contract ContextUpgradeable is Initializable {
function __Context_init() internal initializer {
__Context_init_unchained();
}
function __Context_init_unchained() internal initializer {
}
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
uint256[50] private __gap;
}
文件 3 的 17:IApprovedTokenRegistry.sol
pragma solidity 0.7.3;
interface IApprovedTokenRegistry {
function isApprovedToken(address _tokenContract)
external
view
returns (bool);
function addApprovedToken(address _tokenContract) external;
function removeApprovedToken(address _tokenContract) external;
function setAllTokensApproved(bool _allTokensApproved) external;
}
文件 4 的 17:IERC165.sol
pragma solidity >=0.6.0 <0.8.0;
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
文件 5 的 17:IERC721.sol
pragma solidity >=0.6.2 <0.8.0;
import "../../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;
}
文件 6 的 17:IERC721CreatorRoyalty.sol
pragma solidity 0.7.3;
import "../../token/ERC721/IERC721TokenCreator.sol";
interface IERC721CreatorRoyalty is IERC721TokenCreator {
function getERC721TokenRoyaltyPercentage(
address _contractAddress,
uint256 _tokenId
) external view returns (uint8);
function calculateRoyaltyFee(
address _contractAddress,
uint256 _tokenId,
uint256 _amount
) external view returns (uint256);
function setPercentageForSetERC721ContractRoyalty(
address _contractAddress,
uint8 _percentage
) external;
}
文件 7 的 17:IERC721TokenCreator.sol
pragma solidity 0.7.3;
interface IERC721TokenCreator {
function tokenCreator(address _contractAddress, uint256 _tokenId)
external
view
returns (address payable);
}
文件 8 的 17:IMarketplaceSettings.sol
pragma solidity 0.7.3;
interface IMarketplaceSettings {
function getMarketplaceMaxValue() external view returns (uint256);
function getMarketplaceMinValue() external view returns (uint256);
function getMarketplaceFeePercentage() external view returns (uint8);
function calculateMarketplaceFee(uint256 _amount)
external
view
returns (uint256);
function getERC721ContractPrimarySaleFeePercentage(address _contractAddress)
external
view
returns (uint8);
function calculatePrimarySaleFee(address _contractAddress, uint256 _amount)
external
view
returns (uint256);
function hasERC721TokenSold(address _contractAddress, uint256 _tokenId)
external
view
returns (bool);
function markERC721Token(
address _contractAddress,
uint256 _tokenId,
bool _hasSold
) external;
function setERC721ContractPrimarySaleFeePercentage(
address _contractAddress,
uint8 _percentage
) external;
}
文件 9 的 17:IPayments.sol
pragma solidity 0.7.3;
interface IPayments {
function refund(address _payee, uint256 _amount) external payable;
function payout(address[] calldata _splits, uint256[] calldata _amounts)
external
payable;
}
文件 10 的 17:IRoyaltyEngine.sol
pragma solidity 0.7.3;
interface IRoyaltyEngineV1 {
function getRoyalty(
address tokenAddress,
uint256 tokenId,
uint256 value
)
external
returns (address payable[] memory recipients, uint256[] memory amounts);
function getRoyaltyView(
address tokenAddress,
uint256 tokenId,
uint256 value
)
external
view
returns (address payable[] memory recipients, uint256[] memory amounts);
}
文件 11 的 17:ISpaceOperatorRegistry.sol
pragma solidity 0.7.3;
interface ISpaceOperatorRegistry {
function getPlatformCommission(address _operator)
external
view
returns (uint8);
function setPlatformCommission(address _operator, uint8 _commission)
external;
function isApprovedSpaceOperator(address _operator)
external
view
returns (bool);
function setSpaceOperatorApproved(address _operator, bool _approved)
external;
}
文件 12 的 17:ISuperRareBazaar.sol
pragma solidity 0.7.3;
interface ISuperRareBazaar {
function offer(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
bool _convertible
) external payable;
function buy(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount
) external payable;
function cancelOffer(
address _originContract,
uint256 _tokenId,
address _currencyAddress
) external;
function setSalePrice(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _listPrice,
address _target,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external;
function removeSalePrice(
address _originContract,
uint256 _tokenId,
address _target
) external;
function acceptOffer(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external;
function settleAuction(address _originContract, uint256 _tokenId) external;
function bid(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount
) external payable;
function configureAuction(
bytes32 _auctionType,
address _originContract,
uint256 _tokenId,
uint256 _startingAmount,
address _currencyAddress,
uint256 _lengthOfAuction,
uint256 _startTime,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external;
function cancelAuction(address _originContract, uint256 _tokenId) external;
function convertOfferToAuction(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
uint256 _lengthOfAuction,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external;
function getAuctionDetails(address _originContract, uint256 _tokenId)
external
view
returns (
address,
uint256,
uint256,
uint256,
address,
uint256,
bytes32,
address payable[] calldata,
uint8[] calldata
);
function getSalePrice(
address _originContract,
uint256 _tokenId,
address _target
)
external
view
returns (
address,
address,
uint256,
address payable[] memory,
uint8[] memory
);
}
文件 13 的 17:Initializable.sol
pragma solidity >=0.4.24 <0.8.0;
import "../utils/AddressUpgradeable.sol";
abstract contract Initializable {
bool private _initialized;
bool private _initializing;
modifier initializer() {
require(_initializing || _isConstructor() || !_initialized, "Initializable: contract is already initialized");
bool isTopLevelCall = !_initializing;
if (isTopLevelCall) {
_initializing = true;
_initialized = true;
}
_;
if (isTopLevelCall) {
_initializing = false;
}
}
function _isConstructor() private view returns (bool) {
return !AddressUpgradeable.isContract(address(this));
}
}
文件 14 的 17:OwnableUpgradeable.sol
pragma solidity ^0.7.0;
import "../utils/ContextUpgradeable.sol";
import "../proxy/Initializable.sol";
abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
function __Ownable_init() internal initializer {
__Context_init_unchained();
__Ownable_init_unchained();
}
function __Ownable_init_unchained() internal initializer {
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;
}
uint256[49] private __gap;
}
文件 15 的 17:ReentrancyGuardUpgradeable.sol
pragma solidity ^0.7.0;
import "../proxy/Initializable.sol";
abstract contract ReentrancyGuardUpgradeable is Initializable {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
function __ReentrancyGuard_init() internal initializer {
__ReentrancyGuard_init_unchained();
}
function __ReentrancyGuard_init_unchained() internal initializer {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
_;
_status = _NOT_ENTERED;
}
uint256[49] private __gap;
}
文件 16 的 17:SuperRareBazaar.sol
pragma solidity 0.7.3;
import "@openzeppelin/contracts-upgradeable-0.7.2/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable-0.7.2/utils/ReentrancyGuardUpgradeable.sol";
import "@openzeppelin/contracts-0.7.2/token/ERC721/IERC721.sol";
import "./storage/SuperRareBazaarStorage.sol";
import "./ISuperRareBazaar.sol";
contract SuperRareBazaar is
ISuperRareBazaar,
OwnableUpgradeable,
ReentrancyGuardUpgradeable,
SuperRareBazaarStorage
{
function initialize(
address _marketplaceSettings,
address _royaltyRegistry,
address _royaltyEngine,
address _superRareMarketplace,
address _superRareAuctionHouse,
address _spaceOperatorRegistry,
address _approvedTokenRegistry,
address _payments,
address _stakingRegistry,
address _networkBeneficiary
) public initializer {
require(_marketplaceSettings != address(0));
require(_royaltyRegistry != address(0));
require(_royaltyEngine != address(0));
require(_superRareMarketplace != address(0));
require(_superRareAuctionHouse != address(0));
require(_spaceOperatorRegistry != address(0));
require(_approvedTokenRegistry != address(0));
require(_payments != address(0));
require(_networkBeneficiary != address(0));
marketplaceSettings = IMarketplaceSettings(_marketplaceSettings);
royaltyRegistry = IERC721CreatorRoyalty(_royaltyRegistry);
royaltyEngine = IRoyaltyEngineV1(_royaltyEngine);
superRareMarketplace = _superRareMarketplace;
superRareAuctionHouse = _superRareAuctionHouse;
spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry);
approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry);
payments = IPayments(_payments);
stakingRegistry = _stakingRegistry;
networkBeneficiary = _networkBeneficiary;
minimumBidIncreasePercentage = 10;
maxAuctionLength = 7 days;
auctionLengthExtension = 15 minutes;
offerCancelationDelay = 5 minutes;
__Ownable_init();
__ReentrancyGuard_init();
}
function setMarketplaceSettings(address _marketplaceSettings)
external
onlyOwner
{
require(_marketplaceSettings != address(0));
marketplaceSettings = IMarketplaceSettings(_marketplaceSettings);
}
function setRoyaltyRegistry(address _royaltyRegistry) external onlyOwner {
require(_royaltyRegistry != address(0));
royaltyRegistry = IERC721CreatorRoyalty(_royaltyRegistry);
}
function setRoyaltyEngine(address _royaltyEngine) external onlyOwner {
require(_royaltyEngine != address(0));
royaltyEngine = IRoyaltyEngineV1(_royaltyEngine);
}
function setSuperRareMarketplace(address _superRareMarketplace)
external
onlyOwner
{
require(_superRareMarketplace != address(0));
superRareMarketplace = _superRareMarketplace;
}
function setSuperRareAuctionHouse(address _superRareAuctionHouse)
external
onlyOwner
{
require(_superRareAuctionHouse != address(0));
superRareAuctionHouse = _superRareAuctionHouse;
}
function setSpaceOperatorRegistry(address _spaceOperatorRegistry)
external
onlyOwner
{
require(_spaceOperatorRegistry != address(0));
spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry);
}
function setApprovedTokenRegistry(address _approvedTokenRegistry)
external
onlyOwner
{
require(_approvedTokenRegistry != address(0));
approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry);
}
function setPayments(address _payments) external onlyOwner {
require(_payments != address(0));
payments = IPayments(_payments);
}
function setStakingRegistry(address _stakingRegistry) external onlyOwner {
require(_stakingRegistry != address(0));
stakingRegistry = _stakingRegistry;
}
function setNetworkBeneficiary(address _networkBeneficiary)
external
onlyOwner
{
require(_networkBeneficiary != address(0));
networkBeneficiary = _networkBeneficiary;
}
function setMinimumBidIncreasePercentage(
uint8 _minimumBidIncreasePercentage
) external onlyOwner {
minimumBidIncreasePercentage = _minimumBidIncreasePercentage;
}
function setMaxAuctionLength(uint8 _maxAuctionLength) external onlyOwner {
maxAuctionLength = _maxAuctionLength;
}
function setAuctionLengthExtension(uint256 _auctionLengthExtension)
external
onlyOwner
{
auctionLengthExtension = _auctionLengthExtension;
}
function setOfferCancelationDelay(uint256 _offerCancelationDelay)
external
onlyOwner
{
offerCancelationDelay = _offerCancelationDelay;
}
function offer(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
bool _convertible
) external payable override {
(bool success, bytes memory data) = superRareMarketplace.delegatecall(
abi.encodeWithSelector(
this.offer.selector,
_originContract,
_tokenId,
_currencyAddress,
_amount,
_convertible
)
);
require(success, string(data));
}
function buy(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount
) external payable override {
(bool success, bytes memory data) = superRareMarketplace.delegatecall(
abi.encodeWithSelector(
this.buy.selector,
_originContract,
_tokenId,
_currencyAddress,
_amount
)
);
require(success, string(data));
}
function cancelOffer(
address _originContract,
uint256 _tokenId,
address _currencyAddress
) external override {
(bool success, bytes memory data) = superRareMarketplace.delegatecall(
abi.encodeWithSelector(
this.cancelOffer.selector,
_originContract,
_tokenId,
_currencyAddress
)
);
require(success, string(data));
}
function setSalePrice(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _listPrice,
address _target,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external override {
(bool success, bytes memory data) = superRareMarketplace.delegatecall(
abi.encodeWithSelector(
this.setSalePrice.selector,
_originContract,
_tokenId,
_currencyAddress,
_listPrice,
_target,
_splitAddresses,
_splitRatios
)
);
require(success, string(data));
}
function removeSalePrice(
address _originContract,
uint256 _tokenId,
address _target
) external override {
IERC721 erc721 = IERC721(_originContract);
address tokenOwner = erc721.ownerOf(_tokenId);
require(
msg.sender == tokenOwner,
"removeSalePrice::Must be tokenOwner."
);
delete tokenSalePrices[_originContract][_tokenId][_target];
emit SetSalePrice(
_originContract,
address(0),
address(0),
0,
_tokenId,
new address payable[](0),
new uint8[](0)
);
}
function acceptOffer(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external override {
(bool success, bytes memory data) = superRareMarketplace.delegatecall(
abi.encodeWithSelector(
this.acceptOffer.selector,
_originContract,
_tokenId,
_currencyAddress,
_amount,
_splitAddresses,
_splitRatios
)
);
require(success, string(data));
}
function configureAuction(
bytes32 _auctionType,
address _originContract,
uint256 _tokenId,
uint256 _startingAmount,
address _currencyAddress,
uint256 _lengthOfAuction,
uint256 _startTime,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external override {
(bool success, bytes memory data) = superRareAuctionHouse.delegatecall(
abi.encodeWithSelector(
this.configureAuction.selector,
_auctionType,
_originContract,
_tokenId,
_startingAmount,
_currencyAddress,
_lengthOfAuction,
_startTime,
_splitAddresses,
_splitRatios
)
);
require(success, string(data));
}
function convertOfferToAuction(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount,
uint256 _lengthOfAuction,
address payable[] calldata _splitAddresses,
uint8[] calldata _splitRatios
) external override {
(bool success, bytes memory data) = superRareAuctionHouse.delegatecall(
abi.encodeWithSelector(
this.convertOfferToAuction.selector,
_originContract,
_tokenId,
_currencyAddress,
_amount,
_lengthOfAuction,
_splitAddresses,
_splitRatios
)
);
require(success, string(data));
}
function cancelAuction(address _originContract, uint256 _tokenId)
external
override
{
(bool success, bytes memory data) = superRareAuctionHouse.delegatecall(
abi.encodeWithSelector(
this.cancelAuction.selector,
_originContract,
_tokenId
)
);
require(success, string(data));
}
function bid(
address _originContract,
uint256 _tokenId,
address _currencyAddress,
uint256 _amount
) external payable override {
(bool success, bytes memory data) = superRareAuctionHouse.delegatecall(
abi.encodeWithSelector(
this.bid.selector,
_originContract,
_tokenId,
_currencyAddress,
_amount
)
);
require(success, string(data));
}
function settleAuction(address _originContract, uint256 _tokenId)
external
override
{
(bool success, bytes memory data) = superRareAuctionHouse.delegatecall(
abi.encodeWithSelector(
this.settleAuction.selector,
_originContract,
_tokenId
)
);
require(success, string(data));
}
function getAuctionDetails(address _originContract, uint256 _tokenId)
external
view
override
returns (
address,
uint256,
uint256,
uint256,
address,
uint256,
bytes32,
address payable[] memory,
uint8[] memory
)
{
Auction memory auction = tokenAuctions[_originContract][_tokenId];
return (
auction.auctionCreator,
auction.creationBlock,
auction.startingTime,
auction.lengthOfAuction,
auction.currencyAddress,
auction.minimumBid,
auction.auctionType,
auction.splitRecipients,
auction.splitRatios
);
}
function getSalePrice(
address _originContract,
uint256 _tokenId,
address _target
)
external
view
override
returns (
address,
address,
uint256,
address payable[] memory,
uint8[] memory
)
{
SalePrice memory sp = tokenSalePrices[_originContract][_tokenId][
_target
];
return (
sp.seller,
sp.currencyAddress,
sp.amount,
sp.splitRecipients,
sp.splitRatios
);
}
}
文件 17 的 17:SuperRareBazaarStorage.sol
pragma solidity 0.7.3;
import "../../marketplace/IMarketplaceSettings.sol";
import "../../royalty/creator/IERC721CreatorRoyalty.sol";
import "../../payments/IPayments.sol";
import "../../registry/spaces/ISpaceOperatorRegistry.sol";
import "../../registry/token/IApprovedTokenRegistry.sol";
import "../../royalty/creator/IRoyaltyEngine.sol";
contract SuperRareBazaarStorage {
bytes32 public constant COLDIE_AUCTION = "COLDIE_AUCTION";
bytes32 public constant SCHEDULED_AUCTION = "SCHEDULED_AUCTION";
bytes32 public constant NO_AUCTION = bytes32(0);
struct Offer {
address payable buyer;
uint256 amount;
uint256 timestamp;
uint8 marketplaceFee;
bool convertible;
}
struct SalePrice {
address payable seller;
address currencyAddress;
uint256 amount;
address payable[] splitRecipients;
uint8[] splitRatios;
}
struct Auction {
address payable auctionCreator;
uint256 creationBlock;
uint256 startingTime;
uint256 lengthOfAuction;
address currencyAddress;
uint256 minimumBid;
bytes32 auctionType;
address payable[] splitRecipients;
uint8[] splitRatios;
}
struct Bid {
address payable bidder;
address currencyAddress;
uint256 amount;
uint8 marketplaceFee;
}
event Sold(
address indexed _originContract,
address indexed _buyer,
address indexed _seller,
address _currencyAddress,
uint256 _amount,
uint256 _tokenId
);
event SetSalePrice(
address indexed _originContract,
address indexed _currencyAddress,
address _target,
uint256 _amount,
uint256 _tokenId,
address payable[] _splitRecipients,
uint8[] _splitRatios
);
event OfferPlaced(
address indexed _originContract,
address indexed _bidder,
address indexed _currencyAddress,
uint256 _amount,
uint256 _tokenId,
bool _convertible
);
event AcceptOffer(
address indexed _originContract,
address indexed _bidder,
address indexed _seller,
address _currencyAddress,
uint256 _amount,
uint256 _tokenId,
address payable[] _splitAddresses,
uint8[] _splitRatios
);
event CancelOffer(
address indexed _originContract,
address indexed _bidder,
address indexed _currencyAddress,
uint256 _amount,
uint256 _tokenId
);
event NewAuction(
address indexed _contractAddress,
uint256 indexed _tokenId,
address indexed _auctionCreator,
address _currencyAddress,
uint256 _startingTime,
uint256 _minimumBid,
uint256 _lengthOfAuction
);
event CancelAuction(
address indexed _contractAddress,
uint256 indexed _tokenId,
address indexed _auctionCreator
);
event AuctionBid(
address indexed _contractAddress,
address indexed _bidder,
uint256 indexed _tokenId,
address _currencyAddress,
uint256 _amount,
bool _startedAuction,
uint256 _newAuctionLength,
address _previousBidder
);
event AuctionSettled(
address indexed _contractAddress,
address indexed _bidder,
address _seller,
uint256 indexed _tokenId,
address _currencyAddress,
uint256 _amount
);
IMarketplaceSettings public marketplaceSettings;
IERC721CreatorRoyalty public royaltyRegistry;
IRoyaltyEngineV1 public royaltyEngine;
address public superRareMarketplace;
address public superRareAuctionHouse;
ISpaceOperatorRegistry public spaceOperatorRegistry;
IApprovedTokenRegistry public approvedTokenRegistry;
IPayments public payments;
address public stakingRegistry;
address public networkBeneficiary;
uint8 public minimumBidIncreasePercentage;
uint256 public maxAuctionLength;
uint256 public auctionLengthExtension;
uint256 public offerCancelationDelay;
mapping(address => mapping(uint256 => mapping(address => SalePrice)))
public tokenSalePrices;
mapping(address => mapping(uint256 => mapping(address => Offer)))
public tokenCurrentOffers;
mapping(address => mapping(uint256 => Auction)) public tokenAuctions;
mapping(address => mapping(uint256 => Bid)) public auctionBids;
uint256[50] private __gap;
}
{
"compilationTarget": {
"contracts/bazaar/SuperRareBazaar.sol": "SuperRareBazaar"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 999
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_originContract","type":"address"},{"indexed":true,"internalType":"address","name":"_bidder","type":"address"},{"indexed":true,"internalType":"address","name":"_seller","type":"address"},{"indexed":false,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address payable[]","name":"_splitAddresses","type":"address[]"},{"indexed":false,"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"AcceptOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_bidder","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_startedAuction","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newAuctionLength","type":"uint256"},{"indexed":false,"internalType":"address","name":"_previousBidder","type":"address"}],"name":"AuctionBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_bidder","type":"address"},{"indexed":false,"internalType":"address","name":"_seller","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"AuctionSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_auctionCreator","type":"address"}],"name":"CancelAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_originContract","type":"address"},{"indexed":true,"internalType":"address","name":"_bidder","type":"address"},{"indexed":true,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"CancelOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contractAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_auctionCreator","type":"address"},{"indexed":false,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_startingTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_minimumBid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_lengthOfAuction","type":"uint256"}],"name":"NewAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_originContract","type":"address"},{"indexed":true,"internalType":"address","name":"_bidder","type":"address"},{"indexed":true,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_convertible","type":"bool"}],"name":"OfferPlaced","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":true,"internalType":"address","name":"_originContract","type":"address"},{"indexed":true,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"address","name":"_target","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"indexed":false,"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"SetSalePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_originContract","type":"address"},{"indexed":true,"internalType":"address","name":"_buyer","type":"address"},{"indexed":true,"internalType":"address","name":"_seller","type":"address"},{"indexed":false,"internalType":"address","name":"_currencyAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Sold","type":"event"},{"inputs":[],"name":"COLDIE_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NO_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCHEDULED_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"acceptOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approvedTokenRegistry","outputs":[{"internalType":"contract IApprovedTokenRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctionBids","outputs":[{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionLengthExtension","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"name":"cancelOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_auctionType","type":"bytes32"},{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_startingAmount","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"configureAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256"},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"convertOfferToAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAuctionDetails","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address payable[]","name":"","type":"address[]"},{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_target","type":"address"}],"name":"getSalePrice","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address payable[]","name":"","type":"address[]"},{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_royaltyRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_superRareMarketplace","type":"address"},{"internalType":"address","name":"_superRareAuctionHouse","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketplaceSettings","outputs":[{"internalType":"contract IMarketplaceSettings","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAuctionLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumBidIncreasePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_convertible","type":"bool"}],"name":"offer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"offerCancelationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payments","outputs":[{"internalType":"contract IPayments","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_target","type":"address"}],"name":"removeSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyEngine","outputs":[{"internalType":"contract IRoyaltyEngineV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyRegistry","outputs":[{"internalType":"contract IERC721CreatorRoyalty","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"name":"setApprovedTokenRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_auctionLengthExtension","type":"uint256"}],"name":"setAuctionLengthExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"name":"setMarketplaceSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_maxAuctionLength","type":"uint8"}],"name":"setMaxAuctionLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_minimumBidIncreasePercentage","type":"uint8"}],"name":"setMinimumBidIncreasePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"name":"setNetworkBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_offerCancelationDelay","type":"uint256"}],"name":"setOfferCancelationDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"name":"setPayments","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"name":"setRoyaltyEngine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyRegistry","type":"address"}],"name":"setRoyaltyRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_listPrice","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"name":"setSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"name":"setSpaceOperatorRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"name":"setStakingRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superRareAuctionHouse","type":"address"}],"name":"setSuperRareAuctionHouse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superRareMarketplace","type":"address"}],"name":"setSuperRareMarketplace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_originContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"settleAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spaceOperatorRegistry","outputs":[{"internalType":"contract ISpaceOperatorRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"superRareAuctionHouse","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"superRareMarketplace","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenAuctions","outputs":[{"internalType":"address payable","name":"auctionCreator","type":"address"},{"internalType":"uint256","name":"creationBlock","type":"uint256"},{"internalType":"uint256","name":"startingTime","type":"uint256"},{"internalType":"uint256","name":"lengthOfAuction","type":"uint256"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"minimumBid","type":"uint256"},{"internalType":"bytes32","name":"auctionType","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"tokenCurrentOffers","outputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"},{"internalType":"bool","name":"convertible","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"tokenSalePrices","outputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]