One popular criticism of image-based NFTs is that any value derived from owning the digital asset is lost due to anyone being able to download / screenshot / copy and paste it. This is also true for NFT marketplaces and any method they currently use for displaying an NFT image to prospective buyers. In this project, I first distort the image (by blanking out every other pixel) while retaining viewability and then store an AES-encrypted version of the original image as an EXIF tag inside this distorted image. This image is then pushed via to IPFS, where it's pinned with (Protocol Labs). This IPFS address is then minted as an NFT using We return the AES decryption key to the minter for them to store. The distorted image can be viewed by anyone, but only the minter (and anyone they share the decryption key with) can view the unaltered image.

peNFT showcase

How it's made

Technologies used: Golang backend and HTML/JS frontend, deployed via Netlify. IPFS/, with all interaction via's HTTP API NFT minting via's HTTP API.'s tech helped a lot in abstracting away some of the Web3 concepts that I'm less familiar with and presenting them in a standard HTTP API format.