How we created an NFT of another NFT

NyFTed
9 min readApr 2, 2021

--

We recently minted what is probably the world’s first on-chain meta-NFT: an NFT that irreversibly points to another NFT.

Having read about the simplicity of creating NFTs, we thought this would be a piece of cake, but we hit a few snags along the way, and wanted to share stories from our journey.

If you’re interested in the details — read on. The description gets a bit technical at times (and involves a lot of browsing to etherscan.io) so don’t say we didn’t warn ya’.

Step 1: finding the original NFT

What we set out to do was to create an NFT of another NFT, so the first thing we needed to do was find “the other” NFT — i.e, the one our own NFT will refer to. The NFT that we wanted to point at was for Beeple’s record setting “Everydays: the first 5000 days”, so we decided to find the Ethereum transaction for the minting of the NFT for that picture.

After a bit of searching, we found the auction page on Christie’s, where we saw the following information:

Beeple (b. 1981)
EVERYDAYS: THE FIRST 5000 DAYS
token ID: 40913
wallet address: 0xc6b0562605D35eE710138402B878ffe6F2E23807
smart contract address: 0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756
non-fungible token (jpg)
21,069 x 21,069 pixels (319,168,313 bytes)
Minted on 16 February 2021. This work is unique.

That told us that we needed to find token #40913 of smart contract 0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756. The Etherscan page for the contract told us that this is a “MakersTokenV2” contract, but didn’t provide an easy to find the minting of a specific token. So we went ahead and downloaded all of the transactions on that smart contract, searched the contents for the wallet address, and found that Ethereum transaction 0x84760768c527794ede901f97973385bfc1bf2e297f7ed16f523f75412ae772b3 was a transfer to the wallet that is listed on the Christie’s page. Sure enough, not only did that transaction have Beeple’s wallet identified by name, it also had the correct token number (40913) in the “For” field:

The wallet address matches the one from the auction page

Clicking on the “logs” link, we also found the token number in the “Transfer” event:

At this point, we knew we had found the blockchain transaction that we wanted to point at. The token also contained the cryptographic identity of Beeple’s digital media asset, but more on that later.

Step 2a: minting the wrong type of NFT

Our first attempt at minting the meta-NFT was a failure. We prepared an image that described Beeple’s NFT, initiated the Ethereum transaction to create an NFT for that image on a web site called “Mintable”, paid about $50 for the gas price of the transaction, and celebrated our success.

Then we headed over to Etherscan to find our token, but alas: when we examined the details of our interaction with Mintable’s smart contract, all we could find was a reference to data that is stored on Mintable, with no cryptographic signature that connected our NFT to our PNG! That meant that even though we had our own token permanently inscribed on the Ethereum blockchain, all that token did was point to data that depended on the goodwill of Mintable: employees of that company would be able to modify or delete our data. And if the Mintable web site went down, no one would be be able to access our PNG.

That was disappointing.

So we tried again.

Steps 2b/2c: minting a real on-chain meta-NFT

For our second attempt, we interacted with Rarible.com. We slightly modified our PNG, and uploaded it to Rarible. In addition to the image, we also included a textual description the minting of Beeple’s NFT, and once again, initiated an Ethereum transaction.

This time we tried to save a few bucks on the price of the transaction, so we limited the gas fee to around $45. We thought that this would only delay our transaction by a few hours.

We were wrong. Not about the “delay” part, but about the “only” part: when we came back a few hours later, we saw that:

  1. We paid the entire $45 in gas fees.
  2. The transaction had failed.

It turns our that when you limit the gas fee, you risk running out of gas — but if that happens then you still pay for whatever computations the transaction had required until it ran out of gas. Yet another disappointment.

Oh, well.

So we give it another try. We went through the same process on Rarible, but this time we didn’t limit the gas fee, and it the transaction was completed successfully. Indeed, third time’s a charm.

Step 3: verifying that our data is etched into the Ether(eum)

We now went through a series of steps that proved to us that our token was created with enough meta-data to irreversibly link it to Beeple’s NFT. If you want to go through the same steps that we took, then follow along.

To start, go ahead and take a look at this page on etherscan.io. It shows the forging of our Non-Fungible Token on the blockchain. You’ll find the name “Rarible” on that page, because that’s the web site that we used to mint our token. And if you look closely you will find that the minting transaction cost us the equivalent of $49.28. But the really interesting data is hidden: you’ll need to go through some steps to uncover it. The first one is to click “see more” at the bottom:

See the “Click to see More” link at the bottom of this image?

Once you click that link, the “input data” field will be revealed:

Well, now that you see this long string of hex digits you can figure out why it’s hidden: it’s encoded, and quite meaningless to mere humans. However, etherscan.io has a nifty “Decode Input Data” button that solves that for us and reveals the super exciting call to the mint() function:

And voila! More cryptic hex digits! But this time at least they are nicely parsed and accompanied by some explanations. What you’re looking at are the details of the minting of our NFT, as extracted from the unalterable ledger on the blockchain. But wait — where’s the unalterable proof that this NFT points to that other NFT? Could it be anxiously waiting for us to scroll down the pane of decoded data? Indeed it is! Because scrolling down reveals…

Field #6 is…

… the tokenURI:

/ipfs/QmeqXmsNhm7bK8y566PMw4ovV3utpUwbtkmxsmy2FHbCb3

Yay!!! Our proof!

Wait. Is that what we’re looking for? How is that the undeniable proof that our meta-NFT really points to the most expensive NFT to date? Well, we still had to go through a few more steps, so if you still want to follow along then get ready to copy & paste.

The cryptic tokenURI string contains the cryptographic signature of a piece of content on the Inter-Planetary File System, or IPFS for short. IPFS is a file system that is distributed across the internet. Pieces of content on IPFS are identified not by a name, but rather by the cryptographic signature of the content itself (here’s a nice explanation of the details). When you store content on IPFS, it is replicated across many different computers that rely on that signature to retrieve it later. So on IPFS: if you change the content, you must change the identifier. Whatever our dear tokenURI points at is immutable, and no one can change it.

But how can we find out what the tokenURI points to? The easiest way to retrieve content from IPFS is through online gateways. We can retrieve the data for this tokenURI by copying and pasting it to follow the URL of an IPFS gateway of our choice. For example:

https://cloudflare-ipfs.com/ipfs/QmeqXmsNhm7bK8y566PMw4ovV3utpUwbtkmxsmy2FHbCb3

If you click on that link, you’ll retrieve the content of our NFT. Here’s what you’ll find there:

{"name":"The world’s first on-chain NFT 
of another NFT","description":"\nOn March 11, 2021, Beeple sold an NFT of \"Everydays: The First 5000 Days\" via Christie’s for over $69M.\n\nThe Christie’s auction number was 20447, and the details can be viewed at http://bit.ly/auction-20447\n\nThe non-fungible token that was exchanged for that amount was MKT2 token #40913.   \nIt points to ipfs://ipfs/QmPAg1mjxcEQPPtqsLoEcauVedaeMH81WXDPvPx3VC5zUz.\n\nThe Ethereum transaction for the creation of this token has the hash 0x84760768c527794ede901f97973385bfc1bf2e297f7ed16f523f75412ae772b3 and can be viewed at http://bit.ly/beeple-first-5000-days-nft\n\nThe image you are looking at right now describes Beeple's NFT, and itself offered as an NFT, with on-chain proof-of-authenticity. 
We believe it is the world’s first on-chain NFT of another NFT.\n\nTo see more information about the Rarible NFT that points to this image, go to: http://bit.ly/NFT-of-NFT","image":"ipfs://ipfs/QmXMZWyvkiA85SHwk5mWmW9kxeJbZB6eafo6M6o2ZCCqcX/image.png","external_url":"https://rarible.com/token/0x60f80121c31a0d46b5279700f9df786054aa5ee5:552242","attributes":[{"key":"Dimensions","trait_type":"Dimensions","value":"1020 × 541"},{"key":"Creator","trait_type":"Creator","value":"NyFTed"}]}

This text (in JSON format) is not as cryptic as what we saw in the previous steps, but it’s still little hard to read, so we headed over to one of many JSON parsers out on the web, copy-pasted the text, and got the following human-friendly representation:

The external_url field points to our meta-NFT listing on Rarible. The image is the visual part of our artwork — it’s what you’ll see if you browse to that listing (of course, if you’ve read up to here, then by now you should have no problem retrieving it on your own from IPFS directly). The Dimensions and Creator fields are data that Rarible allowed us to add when minting the token.

The “description” field value in the screenshot is cropped, but that’s the really interesting part, so here it is again, reformatted for your convenience:

On March 11, 2021, Beeple sold an NFT of "Everydays: The First 5000 Days" via Christie’s for over $69M.  The Christie’s auction number was 20447, and the details can be viewed at http://bit.ly/auction-20447  The non-fungible token that was exchanged for that amount was MKT2 token #40913. It points to ipfs://ipfs/QmPAg1mjxcEQPPtqsLoEcauVedaeMH81WXDPvPx3VC5zUz.  The Ethereum transaction for the creation of this token has the hash 0x84760768c527794ede901f97973385bfc1bf2e297f7ed16f523f75412ae772b3 and can be viewed at http://bit.ly/beeple-first-5000-days-nft  The image you are looking at right now describes Beeple's NFT, and itself offered as an NFT, with on-chain proof-of-authenticity. We believe it is the world’s first on-chain NFT of another NFT. To see more information about the Rarible NFT that points to this image, go to: http://bit.ly/NFT-of-NFT

That description is a tamper-proof textual description of Beeple’s NFT, with all the details that you need in order to access its blockchain minting. Beeple’s NFT is structured in a very similar way to NFT-of-NFT — i.e., the blockchain transaction contains an IPFS identifier of a JSON file, which points to the actual artwork. So if you want to download Beeple’s “Everydays” artwork, you can follow the same steps that are described above.

Summary

So, as you can see in the diagram below, what we essentially have are:

On-chain NFT-of-NFT. Involved are the Ethereum blockchain, and the global, immutable files on IPFS.

On the left: the immutable Ethereum blockchain blocks, both for “Everydays: The first 5000 days”, and for “NFT-of-NFT”.

On the right: the immutable IPFS content, where each of the two NFTs has a JSON metadata file which points to an image file. Both of the “NFT-of-NFT” content items also point to the “Everydays” items.

Hopefully this demystifies some of the aspects of NFT construction. If not, please feel free to add a response with your questions and we’ll try to address them.

--

--

NyFTed
NyFTed

Written by NyFTed

An artist team that is fascinated by NFTs.

No responses yet