This is a brief overview of Duin.fun
Duin.fun is an anonymous NFT marketplace that allows you to own NFTs without revealing your identity or current bids on your NFT.
It does not create or manage any wallet, private data or secrets for you.
keccak256(ownerAddress || ownerSecret) = ownershipSecretkeccak256(ownershipSecret || tokenId) = commitment₁hash(commitment₁, commitment₂, ..., commitmentₙ) = merkleRootAll the commitments together form the leaves of a Merkle tree
keccak256(bidderAddress || bidderSecret) = bidSecretkeccak256(bidSecret || commitment) = bidNullifier(bidNullifier, amount, addressSent) = bidBids are stored on chain but the NFT for which the bid was placed is not revealed.
In order for the owner to accept your bid, you need to share the bidSecret with them.
If a bid is made on your NFT, you can transfer the NFT to the bidder and the bid amount to any address of your choice.
Private Inputs: ownerAddress, ownerSecret, tokenId, bidSecret, receiverAddressPublic Outputs: bidNullifier, bidSecret, tokenNullifierThe admin will check the following:
1. keccak256(ownerAddress || ownerSecret) = ownershipSecret
2. keccak256(ownerSecret || tokenId) = commitment
3. commitment belongs to the merkle tree
4. keccak256(bidSecret || commitment) = bidNullifier
5. keccak256(ownerAddress || ownerSecret || commitment) = tokenNullifier
If tokenNullifier is not used before in a past transaction
and If bidNullifier has not been withdrawn or used before
A new commitment is minted to the bidder's address, and bid amount is transferred to the receiver address.The Admin runs inside a TEE and its integrity can be verified.
In order for the owner to accept your bid, you need to share the bidSecret with them.
Losing access to your secret means losing access to your NFT as well as potentially any bids you might have placed.
Roadmap: