When arguing that a particular NFT is highly valued, collectors often turn to the “first” argument. They claim that theirs was the first to contain an image, or to be used in a game, or to represent a plot of land. Proof is rarely offered up, however. When the term “first” is used, it’s more accurately interpreted as “first known”.
In the physical world, “first known” is often the best we can do. Someone found pottery from 20,000 years ago, but perhaps, someday, someone else will find even older pottery. For digital assets on the blockchain, however, we don’t have to settle. All the historical data is publicly available, dating back to the genesis block. This fact is underappreciated, and the data is underutilized.
In this article, I will begin making the case that I own the absolute first “kitten” on Ethereum. (To be clear, I’m talking about the literal text string “kitten”, not an image of a kitten or any other piece of data that is kitten-related.) Along the way, I hope to give people a better idea of the tools available for establishing true firsts on the blockchain.
The Story of My Kitten
The particular “kitten” to which I am referring is a domain that was registered in the Ether ID system. Ether ID was an early attempt at a name registration system for Ethereum. The V1 contract was deployed on November 29, 2015, and “kitten” was registered on January 26, 2016. If you inspect the input data for the transaction, you’ll see the hexadecimal representation of “kitten”, which is 6B 69 74 74 65 6E.
In the Ether ID system, domain ownership expires every 2,000,000 blocks (approximately nine months). Upon expiration, the domain and its associated websites remain intact. The only change is that anyone can assume ownership of the domain. The original registrant of “kitten” did not renew their ownership, and I was able to transfer it to myself in September of 2022. As long as I remember to renew my ownership every nine months, “kitten” is mine for as long as I want it.
Ethereum BigQuery Public Dataset
My task is to show that no ownable “kitten” was created between the mining of the Ethereum genesis block (on July 30, 2015) and the mining of block 904,783 (the one in which my “kitten” was created). This requires analyzing blockchain data from that window of time.
Ethereum archive nodes contain all the necessary data, but they do not store it in a way that facilitates easy analysis. Fortunately, as part of the Blockchain ETL project, all of this data was extracted and loaded into a Google BigQuery database.
The database can be used to answer a range of questions about activity on Ethereum. For example, to determine the total number of transactions on the CryptoPunks contract in 2017, one can run the following query:
Searching Function Inputs
For there to be an earlier ownable “kitten” than mine, there has to be a contract deployed prior to block 904,783 that stores data objects along with associated owner addresses. The contract must also have a transfer function. Indeed, contracts satisfying these criteria do exist. See, for example, the handful of Global Registrar or Etheria contracts.
We know that there exist older ownable items, but how would we know if there was a “kitten” among them? Most likely, the creation of an ownable “kitten” would involve a function call with “kitten” as one of the inputs.
To see if one exists, we can simply ask the database if “kitten” ever appeared as a function input prior to block 904,783. As a technical aside, we need to make sure to use the traces table instead of the transactions table, since the transactions table only includes function calls initiated by end users and not by contracts.
This query yields just two results: “kitten” and “kittens”, both created in block 904,783. (Note that “kittens” got picked up because it contains “kitten” as a substring. It comes second in the trace ordering) No prior “kitten” was found.
Establishing that no earlier function input contains “kitten” does not conclusively prove the absence of earlier ownable “kitten” strings. There are infinitely many ways for a computer program to assemble the word “kitten” and store it alongside an address. In fact, the general problem of determining whether a program does so is equivalent to the halting problem, which is undecidable.
Despite the absence of irrefutable proof, there is strong evidence that no earlier “kitten” will ever rear its head. Over the past year, collectors have scoured online platforms such as Reddit, Twitter, and Github for public discussions of old Ethereum projects. At this point, any project for which there was a nontrivial amount of public discussion has been examined. What’s left are most likely experimental contracts that didn’t see much use.
From researching public posts and running database queries over the past year, I can convey the rough lay of the land for ownable assets created in 2015 and early 2016:
- Various fungible tokens (100s)
- Domain names from early registrars (100s)
- Etheria tiles (1,000s)
- Ether ID V1 (around 15,000)
- Miscellaneous ponzi, DAO, etc. contracts (100s)
As one data point, the number of contracts with over 100 transactions through block 904,783 is 121. I looked at each of these in Etherscan and did not find any surprises. (Of course, I was looking at undocumented decompiled code, so there’s always a chance that I missed something.)
I am over 99% certain that my “kitten” is the first ownable “kitten” on the Ethereum blockchain. Is it possible that some contract with very few transactions somehow generated an ownable “kitten” before mine was created? Yes. Would I like to see further analysis that pushes the certainty level closer to 100%? Of course.
Despite all of the above, I believe this effort represents a step forward in our collective understanding of blockchain collectibles. I was able to achieve near certainty that I own the first “kitten”, and others can follow the same steps for different data objects of interest.