Marketplace is a contract where you can buy and sell NFTs, like on OpenSea or Rarible.
The Marketplace contract allows users to list NFTs for direct sale or auction. Other users can place offers/bids or buy the NFTs for the specified amount in the listing. The marketplace can be configured to only allow certain users to list NFTs for sale, or allow any user to list NFTs for sale.
MarketplaceV3 contract is written in the EIP-7504 dynamic contracts pattern.
This contract is upgradeable via the ExtensionManger API, and upgrades can only be performed by
EXTENSION_ROLE role is the role admin of itself. This means only an
EXTENSION_ROLE role holder can grant this role or revoke this role from others. Once this role is revoked from all holders, the contract is non-upgradeable.
Use Cases & Examples
You could use the Marketplace contract to:
Sell your NFTs on your marketplace
Create auctions where the highest bidder, after a certain period, wins the NFT
Create an open marketplace where any user can list NFTs for sale, like OpenSea.