NIP-AD: decentralized advertising protocol #2073
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is inspired by #956 .
While exploring the implementation of the nostr-dan protocol, I realized it wasn’t privacy-friendly, as it would expose users’ metadata publicly on the network. So, I developed my own protocol that flips the script, putting users in control instead of advertisers.
The protocol distinguishes four roles:
By separating these roles, the protocol becomes more flexible. Advertisers don’t need to be online constantly if they trust a third-party delegate service, but they can also choose to self-host.
The protocol is focused on standardizing how interested parties communicate in an interoperable way. It can accommodate various implementation-specific logic, such as who receives payments (e.g., app developer or user), how actions are tracked, and how ad spaces are selected and validated.
I have a proof of concept implementation here: https://nostr-ads.ngengine.org/ , source: https://github.com/NostrGameEngine/nostrads .
The rationale behind this is not to propose an alternative to high-volume targeted networks like Google Ads, which rely heavily on collecting users’ personal information and require very high throughput and centralization, but to create something similar to satogram, embeddable directly into Nostr app UIs, with a mechanism to filter ads and enable private client-side targeting.
I hope this proposal is well-received. I put a lot of effort into making the specification clear, but I’m just not very good at writing docs, so any feedback is very welcome.
Also, this PR includes a CSV file for the standard ads categories. I’m not sure where it should go, I’ve pushed it to the repo, but it doesn’t seem like the right place.