Skip to content
Lattice

IMarketplaceZone

Git Source

Title: IMarketplaceZone

Authors: David Dada <daveproxy80@gmail.com> (https://github.com/dadadave80), Modified from Seaport (https://github.com/ProjectOpenSea/seaport)

Admin/read surface of the Seaport MarketplaceZone facet. The Seaport hooks themselves (authorizeOrder / validateOrder / getSeaportMetadata) are on the vendored ZoneInterface.

The zone authorizes RESTRICTED Seaport orders that name the Diamond as their zone. v1 policy: a global pause (kill-switch), a sanctions-style blocklist on the order's offerer/fulfiller (MARKETPLACE_BLOCKED_ROLE), and per-collection ERC-2981 royalty enforcement. Pause + blocklist are checked in authorizeOrder (pre-fulfillment, so failing orders are skippable in fulfillAvailable*); royalties are enforced in validateOrder (post-fulfillment, against final amounts).

v1 royalty scope — to never SILENTLY bypass enforcement, the zone only enforces the cleanly-decidable case and REVERTS the rest: exactly one opted-in NFT on the OFFER side (an ask/listing), paid in a single fungible currency. Bid/offer-side orders (opted-in NFT in consideration), multi-NFT bundles, zero-price orders, and opted-in collections whose royaltyInfo reverts are all rejected (not allowed royalty-free). Full bid/bundle/multi-currency support is a v2 follow-on.

Functions

zonePaused

Whether the zone is paused. (Named zonePaused to avoid the Pausable facet's paused() selector.)

function zonePaused() external view returns (bool);

Returns

NameTypeDescription
<none>bool

isRoyaltyRequired

Whether collection requires its ERC-2981 royalty to be present in the order's consideration.

function isRoyaltyRequired(address collection) external view returns (bool);

Parameters

NameTypeDescription
collectionaddress

Returns

NameTypeDescription
<none>bool

blockedRole

The role that blocks an address from being an order's offerer or fulfiller.

function blockedRole() external pure returns (bytes32);

Returns

NameTypeDescription
<none>bytes32

setPaused

Sets the global pause flag. Admin only.

function setPaused(bool paused) external;

Parameters

NameTypeDescription
pausedbool

setRoyaltyRequired

Toggles ERC-2981 royalty enforcement for collection. Admin only.

function setRoyaltyRequired(address collection, bool required) external;

Parameters

NameTypeDescription
collectionaddress
requiredbool

Events

SetPaused

Emitted when the global pause flag is set.

event SetPaused(bool paused);

Parameters

NameTypeDescription
pausedbool

SetRoyaltyRequired

Emitted when a collection's ERC-2981 royalty enforcement is toggled.

event SetRoyaltyRequired(address indexed collection, bool required);

Parameters

NameTypeDescription
collectionaddress
requiredbool

Errors

ZonePaused

The zone is paused; no order is authorized.

error ZonePaused();

BlockedParticipant

The order's offerer or fulfiller holds MARKETPLACE_BLOCKED_ROLE.

error BlockedParticipant(address account);

Parameters

NameTypeDescription
accountaddress

MissingRoyalty

The order's consideration does not pay the required ERC-2981 royalty.

error MissingRoyalty(address collection, uint256 tokenId, address receiver, uint256 required, uint256 provided);

Parameters

NameTypeDescription
collectionaddress
tokenIduint256
receiveraddress
requireduint256
provideduint256

MixedPaymentCurrency

The order mixes payment currencies; v1 royalty enforcement requires a single fungible currency.

error MixedPaymentCurrency();

BidOrdersUnsupported

An opted-in NFT is on the consideration (bid) side; v1 only enforces royalties on ask listings.

error BidOrdersUnsupported();

BundleOrdersUnsupported

More than one opted-in NFT is offered; v1 does not enforce royalties on bundles.

error BundleOrdersUnsupported();

ZeroPriceRoyaltyOrder

An opted-in NFT is sold for zero fungible price (barter); v1 cannot enforce a royalty on it.

error ZeroPriceRoyaltyOrder();

RoyaltyInfoUnavailable

An opted-in collection's royaltyInfo reverted, so the royalty cannot be enforced.

error RoyaltyInfoUnavailable(address collection);

Parameters

NameTypeDescription
collectionaddress