Title: Idea__A_marketplace_extension_to_ERC721_standard
Category: ERCs

Author: lambdalf-dev
Date: 2022-12-01T19:32:29.541Z

“Not your marketplace, not your royalties”
OpenSea’s latest code snippet gives them the ability to entirely control which platform your NFTs can (or cannot) be traded on.
We propose to add basic marketplace functionality to the ERC721  standard to allow projects creators to gain back that control.
It includes:
~ a method to list an item for sale or update an existing listing, whether private sale (only to a specific address) or public (to anyone),
~ a method to delist an item that has previously been listed,
~ a method to purchase a listed item,
~ a method to view all items listed for sale, and
~ a method to view a specific listing.
This interface could also be adapted for ERC1155 standard, but might require adjustments
Edit:
This proposal is both compliant with OpenSea’s snippet and safe from it as it doesn’t need to make usage of the transfer(), safeTransfer(), and approve() functions.
This way, if OpenSea suddenly decided to completely block all other marketplaces, your internal marketplace can still operate.

Author: offgridgecko
Date: 2022-12-01T20:41:19.953Z

Thank you Lambdalf for posting this.

Author: offgridgecko
Date: 2022-12-01T20:58:20.087Z

Would also add to this that the code as presented is compliant with the new snippet from opensea for their listing function, but collection-only marketplaces will not be affected if OpenSea were to choose to do something nefarious, because (and why) this code doesn’t affect approval and transferFrom protocols.
It therefore also leaves the devteam/founders to decide what kind of secure control they wish to implement over those functions to increase security of their collections and specify which marketplaces can/should be aloud to carry out 3rd party trading.

Author: lambdalf-dev
Date: 2022-12-01T21:36:48.314Z

right, I’ll update the initial post to reflect it better

Author: MilkyTaste
Date: 2022-12-01T22:04:03.992Z

Nice that this standard would work in tandem with EIP-2981: NFT Royalty Standard
Can the interfaces support sales in currencies other than ETH? e.g. I imagine a lot of projects would want to use their own utility token for sales.

Author: Pandapip1
Date: 2022-12-01T22:31:01.381Z

MilkyTaste:

I imagine a lot of projects would want to use their own utility token for sales.


It wouldn’t be too hard for the purchase function to call uniswap and swap the ether for the correct number of tokens, and send back the excess.

Author: lambdalf-dev
Date: 2022-12-01T23:03:27.084Z

Yes, the interface doesn’t really care about the currency used, so if you want to use a different currency than the default chain token, make sure you add the address of the currency contract in your code, and use appropriate transfer on those tokens

Author: johnamcconnell
Date: 2022-12-02T00:07:38.527Z

Will the listing and delisting functionality be the same as an Opensea or anywhere else, meaning you have to sign and also pay gas in order to switch it on and off? I assume yes but I am asking just in case you might have did some wizardry where its simpler (and cheaper)

Author: MilkyTaste
Date: 2022-12-02T00:18:58.240Z

This implies the sale price is always pegged to ETH which they may not want. e.g. you might want to peg to USDC

Author: MilkyTaste
Date: 2022-12-02T00:21:41.528Z

This wouldn’t support multiple tokens when using the interface. Would we be able to sell one token for $APE and another for $ETH? for example

Author: MilkyTaste
Date: 2022-12-02T00:22:51.738Z

Think it would be valuable to include a deadline/expiry when listing an item for sale.
Sorry for multiple posts, I didn’t see the quote reply feature…

Author: Pandapip1
Date: 2022-12-02T01:14:18.543Z

MilkyTaste:

This implies the sale price is always pegged to ETH which they may not want. e.g. you might want to peg to USDC


No, it doesn’t. Here is how it could work:

I send 0.1 ETH to buy an NFT
The marketplace calls uniswap to transform (for example) 0.0008 ETH into 1 USDC, leaving 0.0992 ETH.
That 1 USDC gets sent to the NFT’s owner.
The NFT is transferred.
The remaining 0.0992 ETH gets sent back to the original caller.

Author: offgridgecko
Date: 2022-12-02T01:31:45.046Z

To be clear, currently the purchase function is “payable” and thus is expecting an eth amount in our example code. However this is only the default listed idea. It could easily be modified with the same interface to allow payment via ERC20 token.
Other “purchase” functions can be added as needed to suit the intended functionality of your smart contract.

Author: offgridgecko
Date: 2022-12-02T01:33:34.952Z

Pandapip1:

esn’t. Here is how it could work:

I send 0.1 ETH to buy an NFT
The marketplace calls uniswap to transform (for example) 0.0008 ETH into 1 USDC, leaving 0.0992 ETH.
That 1 USDC gets sent to the NFT’s owner.
The NFT is transferred.
The remaining 0.0992 ETH gets sent back to the original caller.



I’m not writing that part, lol. Hate interfacing with swap contracts, but this is totally doable. Great idea as an optional upgrade. Maybe something like this can be added to our example code on GIT when we are ready, or a fork could be made.

Author: offgridgecko
Date: 2022-12-02T01:36:13.630Z

johnamcconnell:

u have to sign and also pay gas in order to switch it on and off? I assume yes but I am asking just in case you might have did some wizardry where its simpler (and cheaper)


Gas is a thing, it’s always there, but there is no “setApprovalForAll()” required as you are interacting with the SC directly. The list and delist functions by themselves are quite small and easily manageable, gas costs should be minimal. Also listing again kills the previous listing, so if you want to change price or set so one wallet address only can purchase, it’s the same call to change the existing listing.

Author: lambdalf-dev
Date: 2022-12-02T03:06:57.679Z

MilkyTaste:

Think it would be valuable to include a deadline/expiry when listing an item for sale.
Sorry for multiple posts, I didn’t see the quote reply feature…


You’re good, discussion needs to be open and I’ve been doing some twitterspaces to discuss these issues.
I considered expiration, and agree it could be valuable, but left it out for simplicity. There is really nothing stopping someone from adding it to the base code that we are using for this standard. You would simply need to add some checks to the buy function as well as the data being pulled to your front end.

Author: 1-om
Date: 2023-01-09T15:14:05.060Z

Cryptopunks, that precede the ERC721 standard itself, seem to have this idea in right direction, incorporating this model. Have a look at cryptopunks/CryptoPunksMarket.sol at master · larvalabs/cryptopunks · GitHub
However, this extension does not solve the royalty issue. It is correct that “if the sale is not on the in-built marketplace, then royalty is not guaranteed” but this does not ensure that sale is only via inbuilt marketplace.

Author: Pandapip1
Date: 2023-01-09T17:30:13.132Z

1-om:

However, this extension does not solve the royalty issue. It is correct that “if the sale is not on the in-built marketplace, then royalty is not guaranteed” but this does not ensure that sale is only via inbuilt marketplace.


That can be done via off-chain means (such as legal agreements).

Author: lambdalf-dev
Date: 2023-01-12T15:02:02.083Z

it doesn’t solve the entirety of the royalty issues, as long as you allow any marketplace to operate sales for you, but if you couple that with blocking transfer from 3rd parties, for example, then only your contract can handle sales, ensuring that all royalties are paid.

Author: 5cent-AI
Date: 2023-01-17T03:44:51.348Z

If the NFT project is willing, it can set up a blacklist function to prevent NFT from being traded on all intermediary trading markets that do not charge copyright taxes.
On the other hand, I am also considering the rationality of copyright tax. IMHO, the copyright tax charged by many NFTs is too high, but it does not bring enough benefits to NFT holders.
In addition, we have also considered some new copyright tax schemes to adapt to different categories of NFT.


mirror.xyz



几种新的NFT版权税方案-CR5-OIP007(3)
方案一：超额收益版权税（增值税）—适用于艺术类NFT等






But I’m sorry that I haven’t translated it into English yet, so I have to suggest you use Google Translate or DeepL to read it.

Author: 5cent-AI
Date: 2023-01-17T03:46:49.047Z

Final: EIP-6105: No Intermediary NFT Trading Protocol With Mandatory and More Diverse Royalty Schemes Tokens


    No Intermediary NFT Trading Protocol With More Diverse Royalty Schemes 

Abstract
Add a marketplace functionality to ERC-721 to enable non-fungible token trading without relying on an intermediary trading platform. At the same time, implement a mandatory, more diverse royalty scheme. 

Motivation
Most current NFT trading relies on an NFT trading platform acting as an intermediary, which has the following problems: 

Security concerns arise from authorization via the setApprovalForAll function. T…
  


Here is some content, also can be used as a reference