Skip to main content

Marketplace

Calls

acceptOffer

Accepts an offer on a token Caller must be token owner

Namespace

api.tx.marketplace.acceptOffer

Type

function acceptOffer(
  offer_id: u64
)

auctionNft

Auction a bundle of tokens on the open market to the highest bidder

  • Tokens must be from the same collection

  • Tokens with individual royalties schedules cannot be sold in bundles

Caller must be the token owner

  • payment_asset fungible asset Id to receive payment with

  • reserve_price winning bid must be over this threshold

  • duration length of the auction (in blocks), uses default duration if unspecified

Namespace

api.tx.marketplace.auctionNft

Type

function auctionNft(
  collection_id: u32,
  serial_numbers: Vec<u32>,
  payment_asset: u32,
  reserve_price: u128,
  duration: Option<u32>,
  marketplace_id: Option<u32>
)

bid

Place a bid on an open auction

  • amount to bid (in the seller's requested payment asset)

Namespace

api.tx.marketplace.bid

Type

function bid(
  listing_id: u128,
  amount: u128
)

buy

Buy a token listing for its specified price

Namespace

api.tx.marketplace.buy

Type

function buy(
  listing_id: u128
)

cancelOffer

Cancels an offer on a token Caller must be the offer buyer

Namespace

api.tx.marketplace.cancelOffer

Type

function cancelOffer(
  offer_id: u64
)

cancelSale

Close a sale or auction returning tokens Requires no successful bids have been made for an auction. Caller must be the listed seller

Namespace

api.tx.marketplace.cancelSale

Type

function cancelSale(
  listing_id: u128
)

makeSimpleOffer

Create an offer on a token Locks funds until offer is accepted, rejected or cancelled An offer can't be made on a token currently in an auction (This follows the behaviour of Opensea and forces the buyer to bid rather than create an offer)

Namespace

api.tx.marketplace.makeSimpleOffer

Type

function makeSimpleOffer(
  token_id: (u32,u32),
  amount: u128,
  asset_id: u32,
  marketplace_id: Option<u32>
)

registerMarketplace

Flag an account as a marketplace

marketplace_account - if specified, this account will be registered entitlement - Permill, percentage of sales to go to the marketplace If no marketplace is specified the caller will be registered

Namespace

api.tx.marketplace.registerMarketplace

Type

function registerMarketplace(
  marketplace_account: Option<SeedPrimitivesSignatureAccountId20>,
  entitlement: Permill
)

sellNft

Sell a bundle of tokens at a fixed price

  • Tokens must be from the same collection

  • Tokens with individual royalties schedules cannot be sold with this method

buyer optionally, the account to receive the NFT. If unspecified, then any account may purchase asset_id fungible asset Id to receive as payment for the NFT fixed_price ask price duration listing duration time in blocks from now Caller must be the token owner

Namespace

api.tx.marketplace.sellNft

Type

function sellNft(
  collection_id: u32,
  serial_numbers: Vec<u32>,
  buyer: Option<SeedPrimitivesSignatureAccountId20>,
  payment_asset: u32,
  fixed_price: u128,
  duration: Option<u32>,
  marketplace_id: Option<u32>
)

setFeeTo

Set the FeeTo account This operation requires root access

Namespace

api.tx.marketplace.setFeeTo

Type

function setFeeTo(
  fee_to: Option<SeedPrimitivesSignatureAccountId20>
)

updateFixedPrice

Update fixed price for a single token sale

listing_id id of the fixed price listing new_price new fixed price Caller must be the token owner

Namespace

api.tx.marketplace.updateFixedPrice

Type

function updateFixedPrice(
  listing_id: u128,
  new_price: u128
)

Storage

feeTo

The pallet id for the tx fee pot

Namespace

api.query.marketplace.feeTo

Type

function feeTo(

): Option<SeedPrimitivesSignatureAccountId20>

listingEndSchedule

Block numbers where listings will close. Value is true if at block number listing_id is scheduled to close.

Namespace

api.query.marketplace.listingEndSchedule

Type

function listingEndSchedule(
  u32,
  u128
): Option<bool>

listings

NFT sale/auction listings keyed by listing id

Namespace

api.query.marketplace.listings

Type

function listings(
  u128
): Option<PalletMarketplaceListing>

listingWinningBid

Winning bids on open listings.

Namespace

api.query.marketplace.listingWinningBid

Type

function listingWinningBid(
  u128
): Option<(SeedPrimitivesSignatureAccountId20,u128)>

nextListingId

The next available listing Id

Namespace

api.query.marketplace.nextListingId

Type

function nextListingId(

): u128

nextMarketplaceId

The next available marketplace id

Namespace

api.query.marketplace.nextMarketplaceId

Type

function nextMarketplaceId(

): u32

nextOfferId

The next available offer_id

Namespace

api.query.marketplace.nextOfferId

Type

function nextOfferId(

): u64

offers

Map from offer_id to the information related to the offer

Namespace

api.query.marketplace.offers

Type

function offers(
  u64
): Option<PalletMarketplaceOfferType>

openCollectionListings

Map from collection to any open listings

Namespace

api.query.marketplace.openCollectionListings

Type

function openCollectionListings(
  u32,
  u128
): Option<bool>

registeredMarketplaces

Map from marketplace account_id to royalties schedule

Namespace

api.query.marketplace.registeredMarketplaces

Type

function registeredMarketplaces(
  u32
): Option<PalletMarketplaceMarketplace>

tokenOffers

Maps from token_id to a vector of offer_ids on that token

Namespace

api.query.marketplace.tokenOffers

Type

function tokenOffers(
  (u32,u32)
): Option<Vec<u64>>

Events

AuctionClose

An auction has closed without selling

Namespace

api.events.marketplace.AuctionClose

Type

type AuctionClose = {
  collection_id: u32,
  listing_id: u128,
  reason: PalletMarketplaceAuctionClosureReason
}

AuctionOpen

An auction has opened

Namespace

api.events.marketplace.AuctionOpen

Type

type AuctionOpen = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  payment_asset: u32,
  reserve_price: u128,
  listing_id: u128,
  marketplace_id: Option<u32>,
  seller: SeedPrimitivesSignatureAccountId20
}

AuctionSold

An auction has sold

Namespace

api.events.marketplace.AuctionSold

Type

type AuctionSold = {
  collection_id: u32,
  listing_id: u128,
  payment_asset: u32,
  hammer_price: u128,
  winner: SeedPrimitivesSignatureAccountId20
}

Bid

A new highest bid was placed

Namespace

api.events.marketplace.Bid

Type

type Bid = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  amount: u128,
  bidder: SeedPrimitivesSignatureAccountId20
}

FeeToSet

The network fee receiver address has been updated

Namespace

api.events.marketplace.FeeToSet

Type

type FeeToSet = {
  account: Option<SeedPrimitivesSignatureAccountId20>
}

FixedPriceSaleClose

A fixed price sale has closed without selling

Namespace

api.events.marketplace.FixedPriceSaleClose

Type

type FixedPriceSaleClose = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  reason: PalletMarketplaceFixedPriceClosureReason
}

FixedPriceSaleComplete

A fixed price sale has completed

Namespace

api.events.marketplace.FixedPriceSaleComplete

Type

type FixedPriceSaleComplete = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  price: u128,
  payment_asset: u32,
  buyer: SeedPrimitivesSignatureAccountId20,
  seller: SeedPrimitivesSignatureAccountId20
}

FixedPriceSaleList

A fixed price sale has been listed

Namespace

api.events.marketplace.FixedPriceSaleList

Type

type FixedPriceSaleList = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  marketplace_id: Option<u32>,
  price: u128,
  payment_asset: u32,
  seller: SeedPrimitivesSignatureAccountId20
}

FixedPriceSalePriceUpdate

A fixed price sale has had its price updated

Namespace

api.events.marketplace.FixedPriceSalePriceUpdate

Type

type FixedPriceSalePriceUpdate = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  listing_id: u128,
  new_price: u128
}

MarketplaceRegister

An account has been registered as a marketplace

Namespace

api.events.marketplace.MarketplaceRegister

Type

type MarketplaceRegister = {
  account: SeedPrimitivesSignatureAccountId20,
  entitlement: Permill,
  marketplace_id: u32
}

Offer

An offer has been made on an NFT

Namespace

api.events.marketplace.Offer

Type

type Offer = {
  offer_id: u64,
  amount: u128,
  asset_id: u32,
  marketplace_id: Option<u32>,
  buyer: SeedPrimitivesSignatureAccountId20
}

OfferAccept

An offer has been accepted

Namespace

api.events.marketplace.OfferAccept

Type

type OfferAccept = {
  offer_id: u64,
  token_id: (u32,u32),
  amount: u128,
  asset_id: u32
}

OfferCancel

An offer has been cancelled

Namespace

api.events.marketplace.OfferCancel

Type

type OfferCancel = {
  offer_id: u64,
  token_id: (u32,u32)
}

Errors

BidTooLow

Auction bid was lower than reserve or current highest bid

Namespace

api.errors.marketplace.BidTooLow

InvalidMetadataPath

The metadata path is invalid (non-utf8 or empty)

Namespace

api.errors.marketplace.InvalidMetadataPath

InvalidOffer

No offer exists for the given OfferId

Namespace

api.errors.marketplace.InvalidOffer

IsTokenOwner

The caller owns the token and can't make an offer

Namespace

api.errors.marketplace.IsTokenOwner

MarketplaceNotRegistered

The account_id hasn't been registered as a marketplace

Namespace

api.errors.marketplace.MarketplaceNotRegistered

MaxOffersReached

The maximum number of offers on this token has been reached

Namespace

api.errors.marketplace.MaxOffersReached

MixedBundleSale

Selling tokens from different collection is not allowed

Namespace

api.errors.marketplace.MixedBundleSale

NoAvailableIds

No more Ids are available, they've been exhausted

Namespace

api.errors.marketplace.NoAvailableIds

NoCollectionFound

The collection does not exist

Namespace

api.errors.marketplace.NoCollectionFound

NotBuyer

The caller is not the specified buyer

Namespace

api.errors.marketplace.NotBuyer

NotCollectionOwner

Origin is not the collection owner and is not permitted to perform the operation

Namespace

api.errors.marketplace.NotCollectionOwner

NotForAuction

The token is not listed for auction sale

Namespace

api.errors.marketplace.NotForAuction

NotForFixedPriceSale

The token is not listed for fixed price sale

Namespace

api.errors.marketplace.NotForFixedPriceSale

NoToken

The token does not exist

Namespace

api.errors.marketplace.NoToken

NotSeller

The caller is not the seller of the NFT

Namespace

api.errors.marketplace.NotSeller

NotTokenOwner

Origin does not own the NFT

Namespace

api.errors.marketplace.NotTokenOwner

RoyaltiesInvalid

Total royalties would exceed 100% of sale or an empty vec is supplied

Namespace

api.errors.marketplace.RoyaltiesInvalid

TokenLocked

Cannot operate on a listed NFT

Namespace

api.errors.marketplace.TokenLocked

TokenNotListed

The token is not listed for sale

Namespace

api.errors.marketplace.TokenNotListed

TokenOnAuction

Cannot make an offer on a token up for auction

Namespace

api.errors.marketplace.TokenOnAuction

ZeroOffer

Offer amount needs to be greater than 0

Namespace

api.errors.marketplace.ZeroOffer

Constants

defaultFeeTo

The default account which collects network fees from marketplace sales

Namespace

api.consts.marketplace.defaultFeeTo

Type

type defaultFeeTo = Option<FrameSupportPalletId>

defaultListingDuration

Default auction / sale length in blocks

Namespace

api.consts.marketplace.defaultListingDuration

Type

type defaultListingDuration = u32

palletId

This pallet's Id, used for deriving a sovereign account ID

Namespace

api.consts.marketplace.palletId

Type

type palletId = FrameSupportPalletId