Chris Chris 15.02.2022

Rarity of NFT will be Something that will Come to be Defined by the Community — Founder's Interview

Kevin is the creator of 21MM Pixels. He has been a developer since the late 1990s, everything from original Web2 to the current day.  His career started in finance, moved to a technology startup, back to finance, and today he focuses on both development as well as investing in and supporting early-stage companies. 

Chris: The 21 MM Pixels NFT are inspired by the Million Dollar Homepage. How does this pixel artwork NFT come together? How can the buyers make use of the tiles?

Kevin: The contract function to set the image for your tile will be live in March.  Every time a token owner sets the image for their tile, the 21MM Pixels image will change.  Each NFT holder controls their portion of the ultimate artwork. 

21MM Pixels NFT holders shouldn’t be dependent upon the existence of a website, so we included display functions in the contract that allow you to convert an IPFS file hash in CIDv1 format, or an Arweave Transaction ID into the bytes structure to store a permanent link to the image for their tile on-chain.  We chose to use a structure that uses bytes over strings and to allow the holder to first convert a string to bytes with a display function to save on gas when setting the image for a tile.  The setImage contract function stores the image link for a tile on-chain, while the tokenImg read function will display the image link for any tile, with on-chain support for displaying a stored IPFS hash or Arweave Transaction ID in a readable format.  

Chris: What are the benefits of owning a 21 MM Pixels NFT tile? How can the adjacent tiles be brought together to make big tiles?

Kevin: It will be interesting to see how NFT holders choose to utilize their tiles.  There is a lockToken function, which makes a tiles image and position permanent (it can no longer be merged or unmerged, and the stored image link is locked).  There may be people out there with a special memory that they want to make an immutable portion of the 21MM Pixels image.  Others may wish to use their tile to celebrate events or achievements, to promote themselves, or perhaps figure out a way to lend their tile to others who want to be a part of 21MM Pixels for some time period; these holders may change their tile image and the URL link for their tile more often.  It will be interesting to see how the 21MM Pixels image evolves over time.

You can find the adjacent tiles for any tile with the contract’s showAdjacentTiles function.  This function works for both the original tiles and for “big” tiles.  Once someone owns 4 adjacent tiles, they can call the mergeTiles function with the smallest token ID from the set of 4 tiles they wish to merge.  The 4 smaller tiles token IDs will be burned, and a new token will be issued that has a tile ID of the smallest original token ID plus 10000.  For example, the tiles adjacent to Tile ID 469 are 501, 500, and 533.  If you call mergeTiles for those tiles, you would receive a new tile with an ID of 10469.  If for some reason you want your four tiles back, you can call the unmergeTiles function to burn the bigger tile and get its four component tiles in return.

Chris: Furthermore, do you have any minting limits for the 21 MM Pixels NFTs?

Kevin: Our current minting limit is 5 tiles.  We want people to have the possibility to control a meaningful, but not overwhelming portion of the 21MM Pixels, and for minters to have tiles they can potentially trade with others to try to make a “big” tile. 

Chris: So, what is the buying process for the tiles? How can I mint my chosen NFT?

Kevin: The tiles are available to mint on the 21MMPixels.com website, or of course via a direct contract call on Etherscan.  We have also listed the collection on Opensea so holders can exchange tiles to potentially build a big or super tile. Also you can follow our Website and Twitter so as not to miss new updates.

The location of each tile is defined in the contract (you can find the location of any tile with the tileDescription view function), and tiles are issued in sequential order.  Tile number 1 is the upper left corner of the image, and tile 8400 is the lower right corner of the image.  It is essentially a diagonal grid of tiles that are immutably defined in the contract.  The 21MM Pixels website has a link to an IPFS file that shows the original location of every tile, but the contract tileDescription function is fully on-chain and uses no external calls. 

Chris: Additionally, is it possible to choose the tile artwork or pixels? How do I know which ones are rare?

Kevin: You set the artwork for your tile.  It will be interesting to see how holders use this functionality.  Some may use it to advertise, some may use it to memorialize something, an artist may create a work for their tile and lock it.  Aside from the position of a tile within the image, and big and super tiles that holders manage to build, rarity will be something that will come to be defined by the community. 

Chris: The team must have invested a lot of time and energy towards the development of the unique tiles NFT? Who are on your core team and how do they contribute towards 21 MM Pixels NFT?

Kevin: I originally conceived the idea of a blockchain community-controlled image about a year ago.  There was a lot of thought that went into how we could implement this.  We looked at using other chains to try to implement our vision and spent a lot of time investigating how to immutably store each tiles image.  Ultimately, Ethereum offered the best mix of permanence and functionality, so we started the process of building the contract. 

We wanted the 21MM Pixels image to be something that can be created in perpetuity, so we made sure to put all of the pieces on-chain, from tile location to image storage.  The token location pattern and the mergeTiles functions, with its adjacentTiles counterpart, were the first part we tackled.  These functions are all “just math,” but translating a grid to gas-efficient Solidity functions took some time. 

For image storage, the decision was made that off-chain permanent storage is possible with newer technologies.  IPFS is obviously the most well-known and used storage medium in the NFT space, and technologies like Filecoin promise object semi-permanence.  For any images stored with IPFS, the plan is to make them as permanent as possible by pinning them.  Since IPFS is moving to CIDv1, which are Base32 file hashes, we wrote view functions to convert Base32 strings into gas efficient bytes (each Base32 character can be represented with 5 bits).   

Arweave is another interesting storage technology that promises permanent storage.  We built view functions to convert Base64URL strings to bytes in order to support both storing and retrieving Arweave transaction IDs in the contract. 

The structure which is used in the mapping for the image information for a tile has 60 bytes of space available for storage of the image link, and a multibase designator, so the 21MM Pixels contract should be able to support any future storage technologies that become prevalent.

Our Solidity and front-end work was all done by the lead developer. 

Chris: What is the minting price of one 21 MM Pixels NFT? How much do I pay for gas?

Kevin: The initial mint price for each tile is 0.21 Ether.  We made a number of gas optimizations for minting, while also trying to keep the gas cost for transfers as low as possible.  We stuck with OpenZepplelin’s ERC721 implementation as it is well tested but did not include gas hogging functions like ERC721Enumerable that do not add necessary on-chain functionality. 

Chris: In the end, what are your future plans for the benefit of 21 MM Pixels NFT holders?

Kevin: Every time a holder sets an image or updates the URL link for their token, 21MM Pixels evolves.  Every time a tile is set, an event is created, both on-chain, and for social media.  21MMPixels.com and its social media presence will be the front door to this collection, a community billboard built on Ethereum.  Even though a tile may only represent a 2,500, 10,000, or 40,000-pixel portion of the image, holders may choose to set their tile using a larger image, so someone exploring 21MM Pixels could see a larger version of their tile, and could explore any URL they wish to link to their tile.