gem.xyz it's on like king kong!

Gem.xyz now has batch sending of ERC721s. How does it compare to niftymoves.io?...

gem.xyz it's on like king kong!
Photo by KWON JUNHO / Unsplash

Gem.xyz yesterday announced that they had added batch sending of ERC721s to their platform (https://twitter.com/gemxyz/status/1527309297168052229). This is great news! Sending multiple NFTs one at a time wastes a lot of gas, and increases your chances of RSI with all that clicking and pasting of addresses...

Which is why I created https://niftymoves.io/ back on the 1st May, as the first gas efficient way to send multiple ERC721s. That's almost a month before gem.xyz made the same innovation.

Just gonna stand here and flex for a bit. Huuuuurgh!

(FWIW OpenSea has had batch sending for years, but it doesn't save you any gas).

Now that niftymoves has some serious competition I think it's time for a showdown!! Which protocol (niftymoves or gem.xyx) saves you more gas! Let's go back to the lab again!

Gas tests

No, not that sort of gas....

A simple head to head. Two protocols, three ERC721s, two batch transfers.

Why are you doing this in mainnet you ask? At the moment gem.xyz haven't published the source code for their transfer, otherwise I would ship a copy to a testnet and play there (more on what I think of not publishing contract code later). So I am left on mainnet, and yes, this is me just setting fire to money in order to prove a point.

For this test I took three ERC721s (my trusty truchet styles NFTs) and transferred them using the batch transfer on gem.xyz from one wallet to another. Then I used niftymoves.io to move them back. And here are the scores:

  • Niftymoves: 180,362 gas
  • gem.xyz: 194,576

So that's a convincing 14,214 gas advantage for niftymoves.io. No matter what the gas price, that NFT transfer cost almost 8% less on niftymoves.io.

The original and still the best.

You can see the niftymoves gold medal winning txn here: https://etherscan.io/tx/0xe8b2de2dfd22616f8116d7cb4482a17f235a0568c958fd2f9b6db04b3bac082d

And the very noble silver medal for gem here: https://etherscan.io/tx/0x0807953734fe57f9c84e3df41c7dd6face0afa6b66d774ec0f159884ce2bd8fd

Other considerations

With this sort of service cost (gas) is key. But I think there are some other things to consider. Here are the pros and cons of the two services from my totally unbiased position as the developer of one of them:

niftymoves.io

Pros:

  • Source code for the contract is verified. This is very important imo.
  • A public good protocol with no links to any organisation.
  • No owner contract functionality (other than two safety functions to retrieve assets sent to the contract in error).
  • Cool trait pickers and auto-selector for true mass moves.
  • Decent domain of .io (seriously gem, you could only spring for the $1 .xyz domain?!).
  • Cheaper

Cons

  • 100% the work of a single developer larping as a canary yellow wassie with a sticking out tongue.

gem.xyz

Pros:

  • Lots of other functionality on the site obvs, so you're already here.
  • Developed by a team larger than a single canary yellow sticky out tongue wassie.

Cons:

  • No verified source atm, kinda centralised.
  • Not 100% the work of a single developer larping as a canary yellow wassie with a sticking out tongue.
  • More expensive.

FWIW I also think that neither service should exists long-term as NFTs should provide their own batching (which shaves even more gas off). I've written that for you too, check out https://github.com/omnus/omnus-contracts/blob/main/contracts/token/ERC721BatchTransfer/ERC721BatchTransfer.sol.

(And yes, I intend to rename that ERC721BatchSafeTransfer and make a new lib that doesn't use the extra gas to check ERC721Receive).