Backstory
This proposal aims to be a small stepping stone toward #2 of Brian Gu’s Six ZK Moonshots. The idea is to have an on-chain data marketplace where users can trade private data, for example, “a high-res image that downsamples to a known low-res image”, using ZK. Within the scope of this proposal, the MVP is to implement a dApp that (0) use ZK to prove that the low-res image is downsized from an actual high-res image, (1) mint an NFT that contains the downsized image, *as well as the hash of the original image, (2) implement an in-browser camera for authentic on-chain photo-taking, and *(3) a marketplace providing secured transfer of the underlying full-res image.
*=optional/nice to have
Phase 0: downsizing photo with ZKP
MVP: a verifier contract that takes a private input of the fixed-size high-res image and outputs the low-res image *and the hash of the original image
Input: an image of resolutions 1024x1024 in png format
Output: a downsized image of resolutions 64x64 and the hash of the original image
Requirements:
Extensions:
Phase 1: NFT minting
MVP: a smart contract that mints an NFT given the downsized image and *the hash of the high-res image
Requirements of the zkPhoto smart contract
Extensions:
Phase 2: on-chain photo taking
MVP: an in-browser js camera that takes a photo then mints a zkPhoto NFT directly
Requirement:
Phase 3: secured transfer of private data
TBC