A Python Code that Programmatically Generates 10,000 Programmatically Generated NFT Projects
About the Project
Several months into the NFT craze, not too long after the Bored Ape Yacht Club began its minting process (which, for those of you who aren’t DeGens, is when they started selling their NFTs), the concept of "10k 10ks" struck me. This was at a time when PFP (Profile Pic) collections were popularly known as “10k projects.” It was a time when imitation NFT projects (known as “derivs”) were sprouting like mushrooms after rain, each trying to capture the magic that BAYC had unleashed. But back then, my programming skills were virtually non-existent. I created my NFTs using methods that didn't involve a speck of coding. So, this stupid idea of "10k 10ks" just floated in my mind, a "You know what would be funny?" kind of thought.
I think I made a Google Sheet with four columns and started coming up with different animals. But that was it. Fast forward to now, years later, when NFTs and PFPs are long dead (and the joke of this entire project is no longer funny), I've been dabbling in Python, thanks to my trusty sidekick, ChatGPT 4.0. With my newfound programming chops and ChatGPT's guidance, what once was a dumb throwaway joke turned into the dumb throwaway joke that actually exists.
So here we are, "10k 10ks" – my playful homage to the NFT world's follow-the-leader mentality. This project isn't some deep dive into the power of satire in digital art. Hell, I had my own PFP project that I ran for more than a year! I collected thousands of PFPs. I still love NFTs. So I’m not throwing any shade. “10k 10ks” is just a funny, self-deprecating way to learn Python. It’s a testament to how a silly idea can evolve into something tangible with a bit of curiosity and a helpful AI buddy. It's a reminder that sometimes, the journey to learn something new can lead to really stupid destinations.
So that’s the project. And for what it’s worth … Nearly all of them have better-looking art than real derivs that made millions.
I’d mint most of these suckers if it were Summer 2021, because, at heart, I’m still a sucker.
How it works
This Python script is not terribly sophisticated but it did exactly what I was hoping it would do.*
We start with four massive dictionaries, each a treasure trove of stupid terms that sound a *lot* like “Bored” “Ape” “Yacht” and “Club” coupled with rarity scores. These are the core variables for our NFT title generation - each term's score is pivotal in defining its rarity.
Next up, we've engineered rarity pools - a sophisticated method to manage the distribution of these scores. Each pool corresponds to a specific range of combined scores, delineating categories like 'Common' or 'Legendary'. The script deftly selects combinations from these pools, ensuring a diverse spread across different rarity tiers.
The real magic happens in the title generation process. Here, we loop through a predefined number of iterations - 10,000, to be exact. In each iteration, the script picks a rarity tier based on our pre-set distribution (to maintain that all-important illusion of rarity). It then fetches a unique combination of terms from the corresponding rarity pool. Because of course, some titles are rarer than others, because what's an NFT without artificial scarcity?
But here's the kicker: to uphold the sanctity of uniqueness (because that's the NFT creed, isn't it?), we've implemented a no-duplicates policy. This ensures each title is as unique as a hexadecimal wallet address. We're talking about meticulous craftsmanship to achieve a blend of commonality and rarity - the quintessential hallmark of every NFT project ever.
In essence, the script is a finely-tuned, algorithmic artisan, churning out titles that range from 'mundanely ubiquitous' to 'elusively rare' – all the trappings of a typical NFT collection.
Distribution
3,116 Common
3,520 Uncommon
2,123 Rare
1,041 Super Rare
182 Ultra Rare
18 Legendary
-------------
10,000 10k PFP Projects
*Important Note!
It is very important to note that it wasn’t until I was making this website that I noticed there are more “Uncommon” NFT Projects than there are “Common” NFT Projects which doesn’t make any sense. This is something I probably could’ve fixed pretty quickly, but I’ve already made all the artwork and this project is too stupid to waste any more time on it. So just pretend the distribution worked out properly, because who gives a shit?
If anything let this be a testament to how difficult these PFP Projects are to pull off successfully. “10 10ks” is just combining four different terms to create a four-word project name. The artwork isn’t actually generated by the algorithm. Imagine adding that element to it all. It’s at this point you realize how truly impressive Cryptopunks and BAYC were at their time even if you think NFTs are the dumbest thing in the world.
Now back to project…
Traits
Each term dictionary contains ~100 entries which creates 371 unique traits. That’s . . .
73,508,000 POSSIBLE COMBINATIONS
Some Examples with rarity weights:
First Terms (Emotions)
Common: "Happy”
Uncommon: "Euphoric"
Rare: "Melancholy"
Super Rare: "Frenetic"
Ultra Rare: "Bliss"
Legendary: "Bored"
Second Terms (Animals)
Common: "Puppy"
Uncommon: "Guinea Pig"
Rare: "Dolphin"
Super Rare: "Ocelot"
Ultra Rare: "Raccoon Kit"
Legendary: "Ape"
Third Terms (Vehicles)
Common: "Bike"
Uncommon: "Golf Cart"
Rare: "Submarine"
Super Rare: "Space Shuttle"
Ultra Rare: "U-Boat"
Legendary: "Yacht"
Fourth Terms (Groups)
Common: "Group"
Uncommon: "Company"
Rare: "Federation"
Super Rare: "Dynasty"
Ultra Rare: "Xenodochium"
Legendary: "Club"
To see all possible traits and their rarity scores, check the code or Google Sheet links below!
The Artwork
As if "10k 10ks" wasn’t cringe enough, I also generated an embarrassing amount of actual PFPs for these NFT Projects using Midjourney, an AI tool. I simply input the project name and asked for a PFP NFT Illustration and BAM! There it is! Again, I can’t stress how much better most of these fake PFP Projects look than real PFP Projects that made millions and millions of dollars. What a time to be alive!
Legendary cards
There are only 18 Legendary Cards. What makes them Legendary? Their total rarity score can’t be higher than 12.
Example: Bored [1] Dog [2] Kennel [2] Club [1] would have a rarity score of 6.
Legendary Traits
First Terms (Emotions)
"Bliss": 4,
"Gloom": 3,
"Mutant": 2,
"Bored": 1
Second Terms (Animals)
"Otter Pup": 4,
"Dog": 2,
"Ape": 1
Third Terms (Vehicles)
"Bireme": 4,
"Trawler": 3,
"Kennel": 2,
"Yacht": 1
Fourth Terms (Groups)
"Wave": 4,
"Xanadu": 3,
"Yard": 2,
"Club": 1