partially-encryptedNFT: Proof-of-concept of partial encryption of image NFTs, to display and prove ownership while avoiding the artwork being stolen
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 tatum.io to IPFS, where it's pinned with nft.storage (Protocol Labs). This IPFS address is then minted as an NFT using tatum.io. 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.
How it's made
Technologies used: Golang backend and HTML/JS frontend, deployed via Netlify. IPFS/nft.storage, with all interaction via tatum.io's HTTP API NFT minting via tatum.io's HTTP API. tatum.io'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.