Provenance sounds like a region in France, but is in fact a key concept for NFTs.
I recommend you to visit the region at some point, but let’s focus on the concept for now 🧵👇
First off, let’s establish what an NFT is NOT:
It is not the piece of art you are buying.
So, @punk6529’s Cryptopunk is not the NFT, but the art.
The underlying NFT is, as the name suggest, a unique token on Ethereum that represents ownership of the Cryptopunk, related to it.
In short:
An NFT is a token on a blockchain that establishes the ownership of a digital or physical asset.
While it might be straightforward to imagine how the Token and the Owner can be stored on the Blockchain, it is much harder to record the art itself and the place where it is stored.
Provenance is defined as the “record of ownership of a piece of art” or “the place of origin”.
In the case of NFTs on Ethereum, Provenance basically refers to three things:
1️⃣ Sequence of formal ownership
2️⃣ Place of storage
3️⃣ Mechanism to verify the NFT's integrity
Let's unpack them, one by one.
1️⃣ Sequence of formal ownership
This is, for the first time, unequivocally and invariably recorded, using a Blockchain like Ethereum.
It all starts with an NFT project, deploying their collection on the mainnet:
The NFTs of the collection are owned by the contract itself, with the contract also defining precisely how the minting will work.
Once a user mints an NFT, which means generating it from the contract’s collection, both the transfer and the ownership are recorded on Ethereum.
1. The owner is stored directly in the Contract.
2. The transfer from the contract to the new owner is included as a transaction in a block.
This design ensures that both the sequence of ownership and the current owner are always unambiguously retrievable from the Ethereum Blockchain.
This is Sequence of formal ownership.
Ouster impossible.
2️⃣ Place of storage
Each item in the collection is given a specific location in form of a URI (Unique Resource Identifier).
This is a requirement of ERC-721, Ethereums implementation of NFTs.
twitter.com/CordtMinzer/status/1522229641209020416
But this, for some projects, introduces a hole in the otherwise seamless ledger:
If the place of storage is not Ethereum itself, but an external location, all security guarantees are gone and the availability and integrity of the item depend on this external location 🕳
Storing the asset on Ethereum itself is rarely an option either, as the Blockchain offers one of the most expensive digital real estate out there 💰
What can be done? Let's look at two prominent examples:
Cryptopunks:
Ever wonder why pixel-art is so prominent in our space? It's because it needs so little storage.
In the case of Cryptopunks, both Bytes and SVG are directly stored in the contract.
Query, download, open in your browser.
Expensive, but secured by Ethereum.
BAYC:
Looking at a Bored Ape jpeg, you can immediately tell that this will be wildly expensive to store on Ethereum.
Instead, the project stores a reference to the Metadata on IPFS in the contract.
This is where Provenance, in terms of integrity, becomes important.
3️⃣ Mechanism to verify the NFT's integrity
What's needed is a guarantee that the NFT that is stored at a given location is indeed the one that was minted or bought.
This comes down to two important properties:
1. It can be verified that a given asset (e.g. an image) is actually the image that belongs to the NFT and hasn’t been tampered with (integrity).
2. It can be verified that the asset which belongs to the NFT you minted was associated with it in the first place (authenticity).
Why is this even important?
Many PFP NFT projects use generative art to create the various different images.
This basically means mixing so called ‘traits’ to form the final image.
Which hat, is it smoking, cool sunglasses? You name it.
Mixing these traits forms the image and comes with a certain rarity.
The rarity is basically the combination of how rare every single trait occurs within the collection.
So for the highest upside, you look for the rarest NFTs.
To prevent savvy traders from front-running everyone else by targeting the rarest elements of the collection, the project often uses a reveal date, which is slightly after the mint date.
That way you buy the pig in a poke :)
Coming back to the problem, how can we ensure the two required properties (integrity and authenticity)?
Let’s look at it using the example of BAYC:
Each Ape is associated a Token ID.
This already happened pre-mint by the creators, Yuga Labs.
Then, each Ape is associated with a Fingerprint. This is as simple as using a hash function on the Image Data.
Looking closely at the BAYC Contract on Ethereum, you will notice a field called “BAYC_PROVENANCE”.
Just one field for all apes? Here is the trick:
The provenance field in the contract is a hash of all fingerprints of all Apes concatenated together and then hashed again 🤯
The reason for this is that it both combines the integrity of all Ape Images as well as their order, which was defined pre-mint:
Changing the order of the Images or just a single pixel of one of the apes would yield a different result.
Ok, that was a lot. Here is a short recap:
1️⃣ An NFT is a token on a blockchain that establishes the ownership of a digital or physical asset.
2️⃣ Provenance means sequence of formal ownership, place of storage and mechanism to verify the NFT's integrity.
3️⃣ Some projects store NFT data on Ethereum, but that's expensive.
4️⃣ Other projects store NFT data on IPFS, but need to use Provenance to verify integrity.