Offers
Offers are gaslessly signed off-chain by one or more parties interested in purchasing the NFT. Payment Processor support three offer types:
- Item Offer: An order (standard or cosigned) to buy a single, specific NFT once filled by a taker. Item offers apply to exactly one specific token id in a collection.
- Collection Offer: An order (standard or cosigned) to buy any NFT belonging to a specific collection once filled by a taker. Collection offers apply to any token id for a specific collection.
- Token Set Offer: An order (standard or cosigned) to buy a single NFT from a subset of token ids in a specific collection once filled by a taker. Token set offers apply to a subset of token ids for a specific collection.
Notional Exchange Offer Flow
Item Offer
- Maker browses a collection and selects a single item to make an offer on.
- Maker inputs: Offer Currency/Payment Method, Price, Validity Time, Beneficiary.
- Maker prompted to acknowledge/accept maker marketplace fee percentage (display sale price, fees, and net seller proceeds)
- Maker prompted to decide on standard order (on-chain cancellations) or co-signed order (gasless cancellation). For standard orders, a nonce is generated.
- Signature Prompt for either ItemOfferApproval.
- Order and signature submitted to order book.
Collection Offer
- Maker browses a collection and chooses to make a collection offer for any item in the collection.
- Maker inputs: Offer Currency/Payment Method, Price, Validity Time, Beneficiary.
- Maker prompted to acknowledge/accept maker marketplace fee percentage (display sale price, fees, and net seller proceeds).
- Maker prompted to decide on standard order (on-chain cancellations) or co-signed order (gasless cancellation).
- Signature Prompt for either CollectionOfferApproval.
- Order and signature submitted to order book.
Token Set Collection Offer
This can take a few forms depending on how the marketplace chooses to implement this. This can take the form of offers on traits, offers on tokens that have not been stolen, etc.
- Maker browses a collection and chooses some criteria for token ids to make an offer on. The marketplace generates a merkle tree of tokens based on the criteria.
- Maker inputs: Offer Currency/Payment Method, Price, Validity Time, Beneficiary.
- Maker prompted to acknowledge/accept maker marketplace fee percentage (display sale price, fees, and net seller proceeds).
- Maker prompted to acknowledge the set of tokens/merkle root.
- Maker prompted to decide on standard order (on-chain cancellations) or co-signed order (gasless cancellation).
- Signature Prompt for either TokenSetOfferApproval.
- Order and signature submitted to order book.
Item Offer Approval
When making an offer on a specific NFT the buyer/maker MUST be prompted by the exchange to sign an EIP-712 sale approval
in the following format. If the offer is a standard order cosigner MUST be set to address(0), for cosigned orders
cosigner is set to the address that will cosign the order at time of fulfillment. The exchange MUST submit the
signature and order data to an integrated order book via its API(s).
ItemOfferApproval(
uint8 protocol,
address cosigner,
address buyer,
address beneficiary,
address marketplace,
address fallbackRoyaltyRecipient,
address paymentMethod,
address tokenAddress,
uint256 tokenId,
uint256 amount,
uint256 itemPrice,
uint256 expiration,
uint256 marketplaceFeeNumerator,
uint256 nonce,
uint256 masterNonce
)
Typed data hash: 0xce2e9706d63e89ddf7ee16ce0508a1c3c9bd1904c582db2e647e6f4690a0bf6b
Collection Offer Approval
When making an offer on any NFT in a specific collection the buyer/maker MUST be prompted by the exchange to sign an EIP-712
sale approval in the following format. If the offer is a standard order cosigner MUST be set to address(0), for cosigned
orders cosigner is set to the address that will cosign the order at time of fulfillment. The exchange MUST submit the
signature and order data to an integrated order book via its API(s).
CollectionOfferApproval(
uint8 protocol,
address cosigner,
address buyer,
address beneficiary,
address marketplace,
address fallbackRoyaltyRecipient,
address paymentMethod,
address tokenAddress,
uint256 amount,
uint256 itemPrice,
uint256 expiration,
uint256 marketplaceFeeNumerator,
uint256 nonce,
uint256 masterNonce
)
Typed data hash: 0x8fe9498e93fe26b30ebf76fac07bd4705201c8609227362697082288e3b4af9c
Token Set Offer Approval
When making an offer on a subset of NFTs in a specific collection the buyer/maker MUST be prompted by the exchange to sign
an EIP-712 sale approval in the following format. If the offer is a standard order cosigner MUST be set to address(0),
for cosigned orders cosigner is set to the address that will cosign the order at time of fulfillment. The exchange MUST
submit the signature and order data to an integrated order book via its API(s).
TokenSetOfferApproval(
uint8 protocol,
address cosigner,
address buyer,
address beneficiary,
address marketplace,
address fallbackRoyaltyRecipient,
address paymentMethod,
address tokenAddress,
uint256 amount,
uint256 itemPrice,
uint256 expiration,
uint256 marketplaceFeeNumerator,
uint256 nonce,
uint256 masterNonce,
bytes32 tokenSetMerkleRoot
)
Typed data hash: 0x244905ade6b0e455d12fb539a4b17d7f675db14797d514168d09814a09c70e70
