Since the start of 2021, Non-Fungible Tokens (NFTs) have become increasingly popular inside and outside of existing crypto communities. Trading volumes for NFTs have skyrocketed and a bunch of new communities have formed around them.

Most NFTs are traded on marketplaces such as OpenSea or Rarible. The main value of these marketplaces lies in their big orderbooks of listings and bids to choose from. This allows anyone to buy and sell NFTs from anyone else without needing to actually interact with their counterparty.

This works great when you want to buy and sell your NFTs for ETH or other cryptocurrencies. But it is lacking when you want to trade NFTs for other NFTs or when you want to negotiate a deal with your counterparty.

So today we're looking into platforms that are specifically tailored for trading NFTs in a peer-to-peer (P2P) manner rather than using a centralised marketplace.

What platforms exist in 2021?

Three popular P2P trading platforms are NFTTrader, Sudoswap and Swap.kiwi. All three were created in this past year so the ecosystem is still young and we should expect more platforms to be developed in the future.

NFTTrader

NFTTrader was the first P2P NFT trading platform as it was launched in January of 2021 by a team of four founders. The team created their own custom asset-swap smart contracts that allows users to swap any combination of ERC20, ERC721 and ERC1155 tokens, as well as ETH.

Sudoswap

Sudoswap was created by well-known developer 0xmons in April of 2021. And while NFTTrader created their own smart contracts, Sudoswap uses the open-source 0x protocol to create and settle swaps between any combination of ERC20, ERC721 and ERC1155 tokens.

Swap.kiwi

Swap.kiwi is the youngest platform of the bunch as it was created in June of 2021 by ape punk niftynaut. They developed their own smart contracts to execute swaps between any combination of ERC721 and ETH.

How do the platforms compare?

To compare the different platforms, I asked snooplyin42 to help out. Together we sat down and swapped 2 for 2 BASTARD GAN PUNKS NFTs on each of the platforms and discussed the pros and cons of each platform.

Features & functionality

In its essence these three platforms offer the same basic functionality. Namely, they allow you to swap baskets of NFTs and fungible tokens with a counterparty. But the supported assets are slightly different.

NFTTrader has the broadest asset support as it allows baskets of any ERC20, ERC721, ERC1155 or ETH tokens. Sudoswap also supports ERC20, ERC721 and ERC1155, but lacks support for the native ETH token (although WETH can be used). Swap.kiwi has the smallest list of supported assets since it only supports ERC721 and ETH.

Sudoswap boasts two additional features that the other two platforms lack. First, it allows you to leave the counterparty blank, which means that anyone can fill the order. This is particularly useful when trading your NFTs for fungible tokens.

Second, it allows you to set an expiry date/time. When this date/time is reached, the proposed swap automatically becomes invalid. This gives you the option to let a swap expire rather than having to send an on-chain transaction to cancel the swap. This limits the downside when the counterparty decides not to go through with a swap.

However, one important feature limitation of Sudoswap is that it's impossible to create swaps from multisig wallets or smart contract wallets like Argent. NFTTrader and Swap.kiwi do fully support multisig wallets (and smart contract wallets).

Sudoswap NFTTrader Swap.kiwi
ETH
ERC20
ER721
ERC1155
Blank counterparty
Expiry date/time
Multisig support

Overall website & UI

The Sudoswap UI has a sort of vapourwave windows 95 look. There are plenty of people - especially within the crypto space - that enjoy this kind of aesthetic. At the same time it can also be a barrier to entry for people more used to a regular "web2" aesthetic. But while the aesthetic may be an acquired taste, the functionality is laid out clearly and it's easy to find what you're looking for.

Swap.kiwi, on the other hand, has a very clean and much more approachable UI than the other two. It is laser-focused on only offering the swap functionality in a single page, without any secondary features. This makes the app very accessible and familiar, especially for web2 users. At the same time, it could be good to offer more information or explanation about the app itself.

While the UIs of Sudoswap and Swap.kiwi are mainly centred around the swap features, NFTTrader has a lot more going on. On one hand, this means they include a lot more useful information and explanations. But it also means that it includes some less relevant features, such as leaderboards, gamification and their own NFTs.

All platforms have some small UI bugs and weird quirks that still need to be polished out. As an example, each of the platforms seemed to have some trouble with updating the UI after certain blockchain actions were executed (e.g. approval or accept swap). But that is a notorious problem in blockchain development in general.

Among the platforms, we ran into the most UI quirks with Sudoswap, while NFTTrader had the most polished experience, albeit still not without quirks. This makes sense as Sudoswap was recently overhauled while NFTTrader has been able to mature since its January launch.

Swap flow & UX

While all three platforms achieve similar things, the swap process and UX is drastically different among the platforms.

Sudoswap

On Sudoswap you can propose a new swap by choosing the "create swap" option. You can then select the tokens they are putting up for the swap and the tokens they want to get in return.

When selecting which tokens to send, it automatically displays the NFTs that you have in your wallet, but any kind of search functionality is lacking here, so scrolling through a large wallet can get very tedious.

If you can't find the tokens you're looking for, you can use the included "form" to add other tokens. The form requires you to copy-paste a contract address + token ID, so this process is only really suited to advanced users.

When selecting which NFTs to receive, you can choose from a default list of NFT collections, where you have to specify which token ID you want to receive. While some of the bigger collections are included, some very notable collections are missing, such as Cool Cats or CrypToadz. For these contracts you have to use the earlier mentioned form, which again requires you to look up and paste the token's contract address, which is advanced functionality.

Once you're happy with your swap, you have to send an approval transaction for every separate collection and you can optionally specify values for the counterparty address and expiry date, and finally click "create swap". From there you are prompted to sign a message through your wallet, after which a swap link is created which can be shared with your counterparty.

If you specified a counterparty address, then they can also find it under the "your swaps" section of the website. After sending the required approval transactions they can accept the swap with a transaction.

NFTTrader

Similar to Sudoswap, NFTTrader allows you to specify a list of tokens you want to send and a list of tokens you want to receive. Unlike Sudoswap, NFTTrader has a more mature selection interface with an easy-to-use search functionality.

But while Sudoswap allows you to add custom tokens through the "form", NFTTrader is limited to the tokens that are enabled in the UI. If your token is not in the list you'll need to contact the NFTTrader team to have it added. Luckily the team is responsive in doing so.

Also unlike Sudoswap, with NFTTrader you have to specify a counterparty address. But the great thing about that is that you can then select the NFTs you want to receive by browsing your counterparty's wallet, rather than having to copy-paste token IDs.

Once you're happy with your swap, you have to send an approval transaction for every separate collection, after which you click "pay now". This prompts you to send a transaction, after which a swap link is created.

Similar to Sudoswap, you can either send that swap link to your counterparty or they can find it under their "my swaps" section. After sending the required approval transactions the counterparty can accept the swap with a final transaction.

Swap.kiwi

Of the three platforms, Swap.kiwi definitely has the most unorthodox UX. Rather than proposing a full swap you can only select the NFTs that you're putting up for the trade as well as the counterparty's address. After approving the assets they then send an initial transaction to start the trade.

The counterparty can then see this "half swap" under their "open swaps" section, where they can add the NFTs that they are putting up. After approving those assets they can create a full swap by sending another transaction.

The initial swap creator then has to find the swap under "open swaps" and after inspecting the swap terms, they can finally accept the swap with a final transaction. In total this flow requires three transactions, and both parties have to select the NFTs they're putting up for the trade.

The good thing about this kind of flow is that both parties have full control over the assets they select for the swap, which makes scamming your counterparty slightly more difficult. But the problem with it is that it's fundamentally not how people think about P2P swaps.

Because the maker and the taker are usually in contact through some other means to negotiate a fair trade before settling it on-chain, the maker can propose the full trade, rather than having these on-chain "negotiation" steps.

Gas cost & fees

When looking at gas efficiency and fees, Sudoswap comes out miles ahead. Because the platform uses well-established and gas-efficient contracts (through 0x) and they only require a single transaction, the total gas required for the swap is around a third of that of the other two platforms. And for the maker, Sudoswap doesn't cost any gas at all.

Additionally, Sudoswap is the only platform to include an expiry date for a swap, meaning that it's possible to let a swap expire rather than cancelling it through an on-chain transaction. The other two platforms do not have that functionality, so if you want to cancel a swap, you'll incur additional transaction fees.

Finally, both NFTTrader and Swap.kiwi include a flat platform fee to both the maker and the taker, while Sudoswap charges no fees at all.

Below is a comparison of the total fees paid for a 2-for-2 NFT swap at different gas price levels. As can be seen, the difference between NFTTrader and Swap.kiwi is not as significant, although NFTTrader is slightly more expensive - despite Swap.kiwi needing three transactions.

But the difference between Sudoswap and the others is immense, as it is at least three times cheaper at every gas level, while it's even six times cheaper than NFTTrader when gas is at 10 gwei due to the platform fees.

Sudoswap NFTTrader Swap.kiwi
Maker gas used 0 810k 740k
Taker gas used 370k 440k 330k
Maker platform fees 0 ETH 0.005 ETH 0.0025 ETH
Taker platform fees 0 ETH 0.005 ETH 0.0025 ETH
Total cost (gas = 10 gwei) 0.0037 ETH 0.0225 ETH 0.0157 ETH
Total cost (gas = 100 gwei) 0.037 ETH 0.135 ETH 0.112 ETH
Total cost (gas = 1000 gwei) 0.37 ETH 1.26 ETH 1.075 ETH

Popularity & usage

To measure popularity of each of the platforms we look at the number of trades in the past 30 days (as of 30 Nov 2021). In doing so it's important to make a distinction between swaps, where both sides include NFTs, and sales, where only a single side includes NFTs. Note that Swap.kiwi only supports swaps.

To get this data I put together a script that retrieves the transaction data from the blockchain and classifies the different trades as either a swap or a sale. Another important metric is the value of those trades. So besides the classification of trades, the script also estimates their value. Note that both sides of the trade are included in the total value.

For ETH and ERC20 tokens it uses the latest USD price, while for NFTs it calculates the recent average sale price. This estimation is not perfect since the crypto and NFT markets are very volatile, so the current price may not accurately reflect the price at the time of the trade. Additionally, the estimate may not accurately reflect the price of 1/1 NFTs or shared collections like Art Blocks or Foundation.

As can be seen in the table below, NFTTrader is leading in number of monthly swaps and sales, with Sudoswap having about half the sales and 2/3rd the swaps that NFTTrader has. Swap.kiwi on the other hand doesn't come close to the other two, as it only has less than 20% of NFTTrader's monthly swaps.

But when looking at the value of the trades, we see a different story. While Swap.kiwi has a much smaller number of swaps, the average value is more than twice as high. This seems to indicate that Swap.kiwi is the preferred platform for higher value trades.

Another interesting observation is the difference between swaps and sales. The total number of sales across the platforms is more than twice the total number of swaps and the total dollar volume of sales is almost five times the volume of swaps, showing that sales are still the main use case for these platforms.

volume(30d) Sudoswap NFTTrader Swap.kiwi
Number of swaps 209 281 42
Swap volume $3.3m $8.1m $2.6m
Average swap value $16k $29k $61k
Number of sales 349 788 N/A
Sale volume $17.1m $55.8m N/A
Average sale value $49k $71k N/A

Smart contracts & audits

NFTTrader and Swap.kiwi developed their own contracts, while Sudoswap uses the open source 0x contracts. The 0x contracts were audited by ConsenSys Diligence, Swap.kiwi was audited by Hacken.io, and NFTTrader has received review from Carl Farterson. All contracts are available on Etherscan: NFTTrader, 0x, Swap.kiwi. The audits are also available online: NFTTrader, 0x, Swap.kiwi.

Verdict

All three platforms are designed to trade baskets of assets in a peer-to-peer fashion, but Sudoswap and NFTTrader offer a more diverse set of assets than Swap.kiwi. In addition, Sudoswap has some interesting extra swap features that do not exist on the other two platforms. However, Sudoswap does not support multisig wallets.

The swap UX of Sudoswap and NFTTrader is very similar. The main differences are in NFTTrader having a more polished and accessible experience and Sudoswap only requiring a single transaction. Swap.kiwi employs a very different swap UX that requires a total of three transactions.

Despite requiring three transactions, Swap.kiwi comes out slightly ahead of NFTTrader in terms of gas and platform fees, but neither is a match for the gas efficiency of Sudoswap, which is at least three times cheaper to use than the other platforms.

NFTTrader is the most mature product of the bunch and has the most active users, but Sudoswap is gaining fast after their overhaul in October. Swap.kiwi is lagging behind in terms of usage, but is also the youngest of the three platforms.

And while NFTTrader is a more polished product, Sudoswap comes out as the clear winner in this comparison due to its added functionality and vastly superior cost effectiveness.


Cover art by Kajal Baliyan