scrtlabs / Grants

Repository for grant proposal submissions
42 stars 22 forks source link

Copyright NFTs #74

Open PrateekHumane opened 2 years ago

PrateekHumane commented 2 years ago

Copyright NFTs

Project Description

A setup for secret NFTs that significantly discourages unauthorized spreading of digital media.

Problem / Solution

Artists are constantly being scammed out of profit as their work can almost always be found on the web illegally. Secret NFTs offer the value proposition of concealing media publicly; however, nothing stops someone from minting an NFT and putting it up online for free. Currently, its relatively easy to find any song, movie, artwork or book online for free.

I propose a secret NFT which is heavily discouraged from being put online - this enforces people to pay for all the digital media they consume.

This solution takes form in two steps:

  1. Embedding unique tags in the digital media itself in such a way that someone cannot remove these tags without defacing the media itself.

  2. Providing a reward to someone who exposes the digital media and punishing the original minter (as identified by the tags present)

In this schema, if the media of any NFTs are put online - or even sold - an exposer can get paid to upload the media on chain. The minter of exposed media will subsequently be punished. If the punishment is severe enough, it will prevent anyone from putting their secret NFTs online.

Detailed product description

Detailed summary

Tags in the media will be constructed in such a way that they are:

  1. Part of the media itself
  2. Not invasive enough that the media changes meaning
  3. Not easily augmented such that it looks closer to an NFT minted with a different tag (not easily meaning it can be augmented and only with a low probability will the media look similar by chance)
  4. Not easily augmented such that it looks close to the original media (cleansing of a tag)

An example of a tag could be changing the color of a leaf in an image to a slightly darker green.

All media that is minted will have many tags, some more distinguishing than others. As such all media minted will look slightly different, however the overall message of the media would be the same. In a book this would take the form of a sentence with the same meaning but slightly different words being used.

If someone’s NFT is discovered online, by a fleet of web scrapers or any old joe, the NFT can be traced back to its minter via the tags. The minter would be punished and the exposer would be rewarded.

Ultimately the punishment for minters should be banning their wallet, and only allowing one registered verified wallet per person using some Proof of Human Existence. In this ideal setup, if you leak an NFT, you are banned from ever consuming media again. Seeing as there is not yet a standard method for proving human existence, a provisional solution will be implemented involving building trust. Essentially, as time goes on and wallets accrue more NFTs, the trust rating associated with their wallet will increase. Artists can then offer more money to exposers to increase the minimum trust rating necessary to mint their NFT.

Technical solution

Tagging:

Unfortunately, we can not just add tags by randomly augmenting pixel values. Randomly distorting pixels would have to be done at a granular enough level that the image doesn't look noisy, but augmentations this granular can easily be removed.

We want our tags to be even further embedded in the media such that it is harder to find them, remove them, or alter them. We propose using features of the image itself - for example the direction of a stroke of a paintbrush.

To augment features we will use machine learning encoders and decoders navigate the latent space of artwork. A point in our latent space is essentially representative of artwork with certain meaning. Thus points that are very close to each other have effectively the same meaning. Moving in some direction away from a point will augment any number of relevant features when decoded. For example, in a model trained on faces, specific directions away from a point can lead to adjusting age, glasses, etc. Thus we can embed multiple unique tags by adding a vector to the original artworks latent space representation. To give augmented images unique features, orthogonal vectors will be added to generate images.

Here are some augmented images I generated using the approach above: 6rse0k

It should be noted that augmented images need to be stored privately on chain (so no one will be wrongly exposed). They also need to be shared privately with their respective minters.

Tracing tags:

The following is pseudocode for the general algorithm used to trace back tags:

// input is the image to be exposed
input_latent = encode(input)
// check that input is an image with the same meaning as the original artwork
// d(x,y) is a distance function 
assert(d(input_latent,original_image_latent) < threshold)
// find which image this was minted from
for image_latent in minted_images:
    if d(image_latent,input_latent) < d(closest_image, input_latent)
        closest_image = image_latent
// the minter of the image loses all trust
trust_ranking[owner(image_latent)] = 0
// payback the exposer
pay msg sender

Technical summary:

Relevant questions:

You may still be skeptical that this setup can work. Here are some questions you may have.

Why can't a minter change their augmented image to look like someone else's? A non-techincal explanation is that without any information on the original artwork or other minted images, you wouldn't know which direction to adjust the latent space vector. This equates to not knowing which features to adjust. You could move in a random direction, but only with a very low probability will you end up closer to someone else's minted image then your own.

What if you buy multiple NFTs, can you use the differences in features to get back to the original image and publish that? Even with many images, only with very low probability could you remove all the features. So long as the dimension of the latent space is sufficiently large, there is no way to average exactly back to the point corresponding to the original artwork. In other words, the latent vector of your image will always be "leaning" in the direction of at least one of your minted images.

What stops someone from sharing their NFT with their friends? Nothing, however, this would be akin to letting you friend borrow your CD. It's not against the spirit of the copyright.

Why can't someone just buy an NFT with the intention of leaking it and losing the account? This is very much possible. The only way the setup will work is if the accounts minting are worth a lot more than the NFTs being minted. I will continue to explore other ways to ensure this.

How can you trust the artist doesn't expose minters images? Using SCRT allows us to ensure that the artists don't have access to the augmented images. They will be generated using onchain randomness and thus the artist cannot create augmented images that are sufficiently close to any one minted image.

Go-to-Market plan

I plan to start with secret NFT artwork. I will reach out to existing secret NFT artists as this product aligns with the value proposition of secret NFTs and can only help with the vision for their products.

After working out the kinks of the system with images, I will support music NFTs next. I will reach out to any musician who has created an NFT of their work. This will solve an enormous problem in the music industry: consumers can easily find music online for free so artists have been forced to turn to streaming services where they are underpaid for their work.

Value capture for Secret Network ecosystem

This will significantly add to the value proposition of secret NFTs on the SCRT Network. It ensures that secret NFTs stay secret, and that the only way to consume media associated with a secret NFT is to buy the NFT. It will attract more artists from eventually all types of media. With these artists will come their fans. Overall increasing the volume of transactions and users on the network.

Team members

Team's experience

Team Code Repos

Upon request I can walk through the code of the main NFT game I have been working on over the past year.

Team LinkedIn Profiles

*https://www.linkedin.com/in/prateek-humane

Development Roadmap

It will take me 4 months to complete this project.

Milestones:

1 ) Launch Copyright NFTs for artwork (weeks 0 - 8)

2 ) App for artists to add their own artwork (weeks 8-16)

I am asking for two payments calculated at: 60 hours a week $40 / hour 8 weeks = ~$19,000

$19,000 after completing the first milestone. Another $19,000 after completing the second milestone.

I would be willing to have the full amount funded in SCRT.

Additional Information

I also intend to implement the Copyright NFT for music after finishing the implementation for artwork and working out the kinks.

reuvenpo commented 2 years ago

Thanks for submitting this grant application!

While this is an interesting idea, I think that some of the assumptions you're making are incorrect. On the technical level, it seems like you intend to perform the image transformations inside the secret contract, which i think might be computationally impractical at present.

Can you please describe in more detail the workflow from the perspective of artists, customers, and the content itself? What information is displayed publicly vs. what isn't, and when? If the original content is stored in the private metadata of the NFT, then you're already protected from unrelated actors leaking the information. People who bought the NFT could leak the content, but arguably that's fully in their rights.

Even if content is leaked against the content creator's wishes or term of sale, a reputation system such as the one you describe is only as good as its enforcement - I don't see the entire network blacklisting long lists of addresses over copyright infringements. Even if the network did, people can always generate alternate addresses... And trusting this kind of system would be dangerous, since if it gets compromised in some way, it could blacklist "innocent" addresses that aren't associated with any copyright infringement at all.

PrateekHumane commented 2 years ago

Thank you for taking the time to read my proposal and for responding so quickly!

As far as your technical comments, here is an updated, more comprehensive outline:

Artist Off chain:

On chain:

Customer On chain:

Off chain:

Exposer Off chain:

On chain:

To address the usefulness of the concept - I didn’t intend for the app to fit into the traditional use case of an NFT. I do not believe it is helpful for NFT collectible projects. I intend for this to be targeted towards the artist that sells CDs of their music. Nowadays it isn’t viable for a musician to sell individual songs because they can be found easily illegally online. I want to create an app that gives power back to the artist. Current NFT music projects are generally still seen as collectibles for hardcore fans who want to support the artist. I want to create a project for artists who simply want their fans to have to pay to listen to enjoy their content.

I still need to do some testing and surveying to settle on exactly how I want the rewarding and punishing to be setup, but this is what I’m thinking currently:

Customers have a trust level which starts at 0. Artists also have a trust level which starts at 0.

Artists can only list NFTs with a minimum trust level that is less than or equal to their own.

At any given time: Artists trust level = sum over all unexposed NFTs (days_unexposed trust_threshold) - sum over exposed NFTs (trust_threshold exposure_constant) Customer trust level = sum over NFTs (days_unexposed * trust_threshold)

To make your wallet eligible to purchase Copyright NFTs, require a security deposit of $500

The following examples show the workflow from different perspectives: From the perspective of a customer:

From the perspective of the artist:

For a malicious user trying to leak an artists work: It will take $500 to get a wallet. Then only after a lot of time and purchasing random NFTs will they get the trust level necessary to purchase the work they want to leak. Even then, their trust level will go back to 0 once they leak the work so they won't be able to leak future work.