No Intermediary NFT Trading Protocol

No Intermediary NFT Trading Protocol

Abstract

Write the NFT trading function into the NFT own contract to realize NFT trading without relying on an NFT trading intermediary platform.

Motivation

Most of the current NFT trading rely on the NFT trading platform acting as an intermediary, which has the following problems.

  1. Security issues. For example, security issues caused by authorization through setApprovalForAll. The permission obtained by the NFT trading platform has carried out unnecessary risk exposure. Once there is a problem with the trading platform contract, it will bring huge losses to the entire industry.If the user has authorized the operation right of his NFT to the NFT trading platform, the latest phishing website fraud method is to trick the user into signing, and let the victim place an order at a very low price on the NFT trading platform, and designate the recipient. The scammer then accepts the deal, thereby reaping illicit benefits. Ordinary users are hard-pressed to guard against this.

  2. High trading costs. On the one hand, with the increase in the number of trading platforms, the liquidity of NFT is scattered. If a user needs to make a deal as quickly as possible, he needs to authorize and place orders on multiple platforms, which further increases the risk exposure, and each authorization needs to spend gas. Taking BAYC as an example, the total number of BAYC is 10,000, and the number of current holders exceeds 6,000. The average number of BAYC held by each holder is less than 2. Although setApprovalForAll saves the subsequent pending order gas expenditure of a single trading platform, due to the need to authorize to Multi-platform, in essence, leads to an increase in gas expenditures for users. On the other hand, more importantly, the trading service fee charged by the trading platform must also be listed as the cost of user trading, which is much higher than the required gas spending for authorization.

  3. The aggregator provides a solution to aggregate liquidity, but whether the aggregator aggregates the liquidity of a certain trading platform, its decision is centralized. And because the order information of the trading platform is off-chain, the efficiency of the aggregator to obtain order data is affected by the frequency of the trading platform API, and sometimes the NFT trading platform will suspend the distribution of APIs and limit the frequency of APIs.

  4. Whether the NFT project party’s copyright tax income is obtained depends on the centralized decision-making of the NFT trading platform. Some trading platforms ignore the interests of the project party and implement 0 copyright tax, which infringes the interests of the project party. I personally think that NFT project parties can be encouraged to appropriately reduce copyright taxes, or adopt a new copyright tax mechanism, but it is not appropriate to directly cancel copyright taxes by harming the interests of project parties.
    Our research on the new copyright tax scheme (Chinese version, I will translate it into English as soon as possible):
    几种新的NFT版权税方案-CR5-OIP007(3) — Web3 Saltman

  5. Not resistant to censorship. Some platforms have delisted many NFTs, and the formulation and implementation of delisting rules are centralized and not transparent enough. Previously, some NFT trading platforms have also failed and wrongly delisted some NFTs, which caused market panic.

Solution

In short, the NFT trading function is directly written into the NFT’s own contract, and the copyright tax distribution mechanism is set. In this way, we have no intermediary, safer, 0 service fee, with network-wide liquidity and meet the project party of the copyright tax revenue, anti-censorship NFT trading protocol.

Basic Mechanism Design

Copyright tax

Copyright tax parameters: tax rate; copyright tax receiving address.

Copyright tax parameters are set by the NFT contract owner and can be modified .

If it is convenient to use, you can also use the ERC2981 copyright tax standard.

Swap

Swap parameters: token ID; swap price; swap expires.

e.g. setSwap(token id; price; expires)

Swap parameters are set by the NFT holder, and can be modified or deleted.

Swap price consideration cannot be 0.

Orders that exceed the expires are invalid. If the expires is not set, the default time can be considered to be infinite.

When a purchaser pays the corresponding ETH to buy the NFT, e.g. acceptSwap(token ID), the NFT is transferred to the purchaser, and the ETH paid by the purchaser is distributed between the original NFT holder and the copyright tax receiving address according to the set ratio.

When the NFT is transferred, the setSwap is deleted.

Set removeSwap(token ID) function, the NFT holder can call the contract to delede setSwap.

Currently only consider the swap currency is ETH, If ERC20 or more complex ERC721 needs to be introduced, further design is required.

Note: Consider compatibility with 721qs. Set the conditions, only when there is no guard, you can set swap, if there is swap, set the guard that clears the swap information.

Example of use

  1. The NFT contract owner sets a copyright tax rate of 1%, and the copyright tax receiving address is Alice;

  2. Bob mint the NFT#0001;

  3. Bob calls the NFT contract and sets the swap parameters: sell NFT#0001 at a price of 5 ETH within 3 days;

  4. 5660.eth likes NFT#0001 and is willing to buy NFT#0001 at 5eth. So 5660.eth calls the NFT contract and spends 5 ETH to buy the NFT. At this time, NFT#0001 is transferred from Bob’s address to 5660.eth’s address; 0.05 ETH is transferred to Alice’s address as copyright tax; 4.95 ETH is transferred to Bob’s address. The swap is completed.

Design advantages

  1. Point-to-point swap, no need to setApprovalForAll, NFT trading is more secure.

  2. 0 service fee.

  3. The NFT trading pending order information can be seen on the whole network. Anyone who pays the corresponding price can obtain the NFT. Any platform that supports NFT viewing can obtain all the pending order information of the NFT collection and can trade NFTs, thus realizing Market-wide liquidity aggregation. Aggregators are also no longer affected by the NFT trading platform on the API frequency limit.

  4. The copyright tax income of the project party is guaranteed.

Other

NFT project parties may also consider setting up a contract address blacklist function to block NFT trading platforms that do not charge copyright taxes. If community members support it, they may also block these platforms that charge higher service fees.

I think the trading market of CryptoPunks is worth referring to.
https://etherscan.io/address/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb#code

Here is some early code and documentation for reference (will continue to be updated).

OpenSea is delisting Cuban artist and collector accounts from its platform.Everyone has the right to enjoy the convenience brought by NFT. This is one of the reasons we need No Intermediary NFT Trading Protocol