dorkis · solidity · smart-contracts · nft
How hard can it be
19 Sep 2026
"I have never tried that before, so I think I should definitely be able to do that!" Pippi Longstocking, Astrid Lindgren
A tweet
In the summer of 2021 I spent my evenings in the Foundation Discord. I was one of the founding members of DAOThe50, a group of artists and collectors who thought the small artists on the platform deserved the same treatment as the big ones, or as the friends of the leadership. That sentence tells you which group I was not in.
One of the Foundation mods was fccview, Fcc to everyone who knew him. On 11 July 2021 he tweeted this:

I volunteered. I had never written a line of NFT-Solidity in my life. But I had been a professional developer for over twenty years... how hard can it be.
The artist turned out to be Tori Batt from New Zealand. The thing that had not been done yet was two things at once: a collection drawn entirely by hand, pencil and ballpoint on paper, and a burn and rebate.
Eight weeks
There was no AI to ask in 2021. You learn a language the way you always did: you read, you play with it, you break things. Rinkeby was the playground, and the OpenSea testnet was where we checked how it looked. The contract sat on OpenZeppelin's ERC721. The ERC721F did not exist yet; it grew out of what this contract taught me, but that is another story.
Turned out that the contract was the small part. Tori drew three hundred traits and scanned and scaled every one of them. Nothing off the shelf could assemble pencil drawings into a face. Paper has texture, and where one trait lies over the next the edges need transparency or you get horrible seams. So I wrote the randomizer and the assembler, in Python, from scratch. By the time we were done Fcc and I had test run over 100,000 Dorkis.
Tori and I never met. New Zealand is so far away. But we worked closer together than I have with most people in the same office; she is a very warm person and an amazing artist. Fcc is an idea fountain. The rebate, the curation, the graveyard: all his.
On 31 August 2021, at 07:22 UTC, I deployed the contract. One transaction, 5,678,626 gas at 82 gwei: 0.468 ETH in fees, about 1,500 dollars at that day's ether price. First lesson, before anyone had minted anything. Gas is a bitch.
That same transaction did one more thing. The constructor minted tokens 0, 1 and 2 straight to the three of us. Dorkis get random names at assembly time. These three had theirs hardcoded in the metadata: Tori van Dork, Frank van Dork, FCCView van Dork. They look a little like us. No other Dorki carries this family name and token 1 is mine.
The mint
Presale on the 31st, public sale from 5 September, 0.07 ETH each, ten thousand planned.
The rebate was Fcc's hypothesis. If all ten thousand sold, the contract would open a window of 24 hours in which anyone could burn a Dorki and get 80% of the mint price back, paid out of the ETH the sale had brought in. The metadata would only be revealed after that window closed. The idea: the whales who buy a hundred and dump the common ones under the floor would burn them instead, the burned ones would go to a "Graveyard Collection", and the holders would curate their own scarcity.
Sadly the momentum was not there. When the floor reaches mint price there is no point keeping a mint open; you are competing with your own secondary market. Some of the rare ones did sell high, though. On 11 September Tori asked the holders how they wanted the sale to end. 67 answered the form, and at the first Discord town hall on the 12th the answer went out: close in one week. Sunday 19 September, 22:00 GMT, the sale closed. 4,724 Dorkis minted, 5,276 never will be. The rebate needed a sellout that never came so it died with the close... not a single Dorki was burned.

What came after
The roadmap was planned for six months and ran for almost a year: companions, a Halloween resurrection for the fallen Dorkis, merch, a D&D community, a liquidity pool, a 35% community fund in a Gnosis Safe with Snapshot votes. The project published it as a piece of art of its own. The merch shipped, a lot of it. The D&D campaign, with two dungeon masters lined up, never sailed. To my knowledge it ran into the IP rights of D&D; I was less involved in that part. For context: Wizards of the Coast sent a takedown to a fan made Magic NFT project in February 2022, and in January 2023 said its new licence would address "those attempting to use D&D in Web3, blockchain games, and NFTs". We saw it coming... an NFT campaign in that universe was a bad bet by then.
Psyborg had bought around 200 Dorkis. In November 2021 he asked me for something else, and that became the CryptoPunks V1 wrapper. Everything I wrote on chain after this contract got its seed here.
What it taught me
Gas is a bitch. On Ethereum every byte you store and every loop you run is paid for by whoever sends the transaction, and it is paid at the price of that minute, not the price you planned for. The deploy alone cost 0.468 ETH before a single Dorki existed. Every mint after that was somebody else's gas, and a contract that wastes it is wasting other people's money. That is where ERC721F came from.
Solidity methods roll back when they fail. Not partly, not up to the line that failed: a transaction that hits a failed check reverts everything it changed, as if it never ran... and the gas is still gone. Coming from twenty years of code where you catch the exception, log it and carry on, that takes a while to sink in. It also means a mint that fails halfway costs the buyer and gives them nothing.
Arrays in Solidity are weird. Some of them cannot be resized. A memory array has the length it was created with, full stop; a storage array grows with push and costs you for every element it keeps. Which one you have depends on where you declared it, and the compiler tells you at the worst possible moment. That is painful when everything you know about arrays comes from Java and Python.

The keys
Dormant is the word. NFTs are dead, with a few exceptions... Dorkis is not one of the exceptions. I still hold the contract keys. What can they do? Reopen the sale, which would be a really bad idea. And change the pointer to the art. The images and the metadata live on IPFS, and if anything ever happens to the account that pins them, the owner key is how 4,724 drawings get reattached to their tokens. We can recover from that. The chance is low, but not zero.
I assume they die with me...
For the record
I co-founded We are Dorkis and wrote its contract and its tooling. I still hold several Dorkis, Frank van Dork among them.