First, I’d like to introduce myself as the creator of Actual 3D Punks; my name is Anthony Liardo. Basically, I’m a nerdy guy who is studying engineering and likes 3D printing/modeling stuff. The idea in creating this piece is to have one central place (minted to a decentralized blockchain and backed up on IPFS) for common questions to be asked. Below, you will find a description of how the project began, what the project is about, the trustless-ness of the project, and what value the collection holds.
How It Started
Looking back at my own perspective from before I understood NFTs is honestly enlightening, not only because it’s introspective but also because it reminds me of what NFTs look like to the general public. I first heard about NFTs in the summer of NFTs (~August 2021), but still didn’t understand them even up until end of 2021. I dove deep into the world in early 2022, and began to understand the derivative culture, the rug pull culture, the collector culture, the maxi culture, etc. I then grew interest in what value I could create in the community.
There were three things that really stuck out to me that helped me determine what the foundation of my project would be:
NFTs have an intimate relationship with a/the metaverse and web3, and it was clear to me that 3D is the future.
There were industry giants that still hold their place as top players to this day, even with hundreds of derivatives that had great success, without having to reinvent the wheel. This is a clear sign CryptoPunks have cemented their legacy.
3DPunks was an iconic collection and paved the way for literally another dimension, but the NFTs were still images.
With all of the derivatives of this collection, and the growing importance of web3 and the necessary emphasis on 3D, I was surprised there were no derivatives of punks that were actually 3D. NFTs have URIs that can point to YouTube videos, Tweets, mp4 files, mp3 files, etc. and a/the metaverse is indisputably built on 3D files. I thought it would be cool to build 3D versions of punks as a “derivative”. Although, I’m reluctant to call it a derivative because I’m confident the punk community will look at Actual 3D Punks as THE 3D version of their original NFT, not a text punk or a fast food punk or a Picasso punk, etc. I discovered BlendMyNFTs by Torrin Leonard and I instantly knew I would be able to do it with his great tool, so I began when I had the opportunity during Spring break in March.
Down to the Details - What the Project Is, and How it Relates to CryptoPunks
After literally hundreds of hours of work, I finally finished the project up a little over a month ago (July 2022) and am now proud to introduce:
Actual 3D Punks.
Actual 3D Punks is a collector NFT collection, obviously centered around the CryptoPunks ethos but built essentially as a gift to the community.
Each ID corresponds to the 2D punk and has the same attributes.
Each attribute was hand-built in Blender, containing blocks that are the same hex code colors as the pixels they represent, including the alpha’d pixels in the smoke in the cig, the lenses in the horned rim glasses, the semi-clear shadow beard etc.
With minor exceptions and wherever possible, every attribute interacts with every attribute in the same way they interact in the original 2D image.
Each block was only placed within the 24x24x24 grid increments, analogously meaning no halfway pixels and no half-sized pixels or 3D blocks.
Each Actual 3D Punk is a .glb file, which has been dubbed the jpg of 3D, to make each NFT fully capable of being integrated into any metaverse.
Actual 3D Punks will integrate the core, beatnik CryptoPunk community with the newer NFT collectors interested in metaverse application.
How was the artwork done?
As stated in another answer, each attribute was designed by hand in Blender. I used BlendMyNFTs by Torrin Leonard in conjunction with the 133 attributes. The attributes that are the same in 2D still need to be moved in the z direction up/down and widened/thinned in the x and y directions to account for differences in the position and height/width of the different genders. This means there are more individual attributes in 3D.
There was z-fighting during the design part of the process, and I had a desire to not heavily modify BlendMyNFTs so it preferentially overrides and deletes objects in other lower authority attributes on specific generated files. This was a problem because some attribute combinations have blocks in the same xyz coordinates. I had to develop a system where blocks from one attribute that would collide with blocks from another would be 1-2% wider. This made it so that the wider (or taller, or longer) block would be the only one that shows in that dimension when those two blocks are both present because of coinciding attributes. It also fixed it so there would be no z-fighting when both blocks are present.
Do you have a website?
I will be clear: there is no website for Actual 3D Punks because I do not want to pretend that this project is something that it is not. Trust is the elephant sitting in the room that is web3 discussion.
I will not lie to you and say “the roadmap is this, this, and that”. The roadmap is web3 and metaverse development.
I will not lie to you and say “the utility is: verified owners get exclusive access to this irl event and this merch drop and that private discord group. Oh and we’re building a metaverse.” The implied utility of your Actual 3D Punk is having an authentic “sculpture” version of your analogous “painting” in AR/VR/Metaverses etc.
But a meetup or irl event for holders would be nice 😊
How can I trust you?
Obviously I put my full name at the beginning of this, so I’d like to show the community I can be trusted. Otherwise, I’d go by “Frostie” or “heyanthony”.
Other important points: The NFTs are JSON objects on IPFS, meaning anybody else can pin the 10,000 files and they become immutable and unmalleable. You should confirm this on Etherscan by going to 0xE55eF44bE672Ff4557931Eb9ef91A42d8C9A0d6C and clicking read contract and calling the tokenURI function and entering in a token ID. If you copy and paste the string in your browser (you need IPFS companion extension installed on Chrome I believe, or a web3 browser like Brave or Opera) you will open a JSON object. If you don't have Chrome or a web3 browser, you'll have to use the https gateway that IPFS uses: https://ipfs.io/ipfs/QmacftaYgCKh7HX6xCufCW8ghCYA8Mtx1AocNuustu2A24/the-id-number-goes-here where 69, 1234, or 420 replaces the-id-number-goes-here. This is the NFT. It has an image URI (also an IPFS identifier, which you'll have to use the https://ipfs.io/ipfs/ gateway to visit and view if you don't have access to a web3 browser or Chrome). The JSON file also has an animation_url field, this is for 3D files or any multimedia other than images. This is the standard way NFT platforms (including metaverses) load NFT data.
The 3D files are also IPFS URIs, unable to be changed. If you look through the main contract Actual3DPunks.sol, you can find the variable _baseURIHardCoded, which is “ipfs://QmacftaYgCKh7HX6xCufCW8ghCYA8Mtx1AocNuustu2A24/”. The other imported library .sol files are not changed, and the main contract is relatively simple and short. There is no function anywhere in my smart contract to set the URI, meaning even onlyOwner (the deployer of the contract: me in this instance) can’t change that variable. This is different from a lot of NFT projects, including BAYC where the setBaseURI function has no check to make sure it’s called a limited number of times. This means onlyOwner can call it whenever they want on contracts like that, as many times as they want, and change the URIs to make the NFTs different. The tokenURI getter function in the Actual 3D Punks smart contract calls another getter function, which simply gets the variable _baseURIHardCoded that is permanently hard-coded into the contract (contract is not upgradable), so these NFTs are about as on-chain as you can get without actually coding .glb files into the smart contract, like Blitblox did. Note that this would possibly cost millions of dollars in ETH to deploy if I wanted to undergo such an endeavor.
Another aspect of the smart contract that will be talked about is the myMint function and the fact that I minted all 10,000 NFTs to my own wallet. I did this on purpose. The tokens are actually ERC721A, the new standard developed by Azuki. The change in batch minting makes incrementally sized batches almost the same cost to mint. The traditional ERC721 standard essentially has the same cost per NFT-mint, meaning your gas cost is 10x higher if you’re minting 10 NFTs. ERC721A makes a batch almost the same cost in gas per transaction, even if you’re minting 10 NFTs. Every 10,000 NFT project that dropped and sold out in the past cost somewhere around 50-200 ETH in total mint costs/gas (although it was spread out among the community obviously). I used the new batch minting to safely mint the whole collection for 0.2365 ETH, decreasing total wasted mint gas by 99%. The less individual minters on an ERC721A token drop, the more gas is saved. Doing the minting of Actual 3D Punks this way also completely eliminated the possibility of a gas war.
The only con of ERC721A is that there are higher transfer costs the first time an NFT that was originally in a batch mint is sold. This is why I compiled the smart contract in Solidity with optimization for 10,000 runs (if I wanted to save gas on my minting and didn’t care about the “higher” transfer costs when the NFTs are on the marketplace later, I’d optimize it for 1 run). You can verify this on Etherscan. I don’t know why some developers don’t optimize their smart contracts, because it is literally Solidity compiling the opcodes of your code in the most efficient way to save gas. Regardless, the transfer fees are comparable to mint fees for those diamond hands out there and were already a part of the cost for those looking to flip NFTs.
Do these NFTs have any value?
CryptoPunks forever have a place in history because they predated ERC721 and inspired the Ethereum NFT standard. However, in a VR type metaverse, CryptoPunks are flat 2D “paintings” or “sheets.” Actual 3D Punks have depth and texture and they are the first NFT collection to convert CryptoPunks to this block style on a token basis. (I am not pretending there were no other collections that had this idea because I found LegoPunks and Voxel Punks a few months ago. These collections still keep the actual NFT as a 2D image, though. Voxel Punks are very detailed, but they are still 2D images and they do not keep the 24x24 pixel/block resolution from the original CryptoPunks ethos. CryptoPunks males are 11 pixels wide, counting the black pixels, whereas Voxel Punks have width of ~27 blocks, giving it: higher resolution, more roundness, and less blockiness.)
On an adoption basis (the specific metric like market cap or # of holders, is not very important for this statement), crypto and web3 in general feel like they’re following a stair pattern. The peaks in 2017 and 2021 were stairs. The percentage of the world who adopted blockchain took huge leaps up during these bull markets, as well as the value of assets. The infamous investment quote “be fearful when others are greedy. Be greedy when others are fearful” comes to mind when thinking about the current bear market. Investments in NFTs today can be extremely lucrative in the long term.
Actual 3D Punks are offered for free (minus gas of sale) for a 3-day claim period to all original holders at launch. I can imagine punk holders in the future having the internal debate when going into the metaverse: “do I make my avatar the 2D version or the 3D version today?” They are the sculpture version of the iconic paintings that are CryptoPunks.
Actual 3D Punks is not affiliated in any way with Larva Labs or Yuga Labs.