I’ve designed a decentralized advertising protocol on top of Nostr, Lightning and proof of work.
The full specs are drafted here.
Unlike current systems, which rely on tracking and profiling users against their own will, and even the proposed Nostr-DAN which merely makes user data public, so... arguably even worse, this approach flips the script entirely.
Advertisers broadcast signed bids with metadata to nostr; user apps then independently choose which ads to display, by filtering them relay-side and client-side.
When a user app selects an ad, the negotiation begins: either party may reject or bail out the negotiation at any time, incurring in a proof‑of‑work or rank penalty on the other side.
If the negotiation succeed, the payout is sent instantly via Lightning to the
lud06
or lud16
address set in the kind 0 metadata event of the "app" pubkey, that could be a pubkey assigned to the app that the user is running or of the user itself.The advertiser’s side of each negotiation is managed by a delegate service, that can be a trusted third‑party service, or self‑hosted if preferred. These delegate services can apply additional heuristics and checks to decide when to process a payout or impose a pow penalty if the counterparty attempts to cheat.
This integrates with the existing Nostr protocol and is flexible enough to support various advertising models, such as:
- The classic ad model targeted to a specific, centralized app
- A Brave-reward style reward model that compensates users directly
- A Satogram-like, open broadcast model that any app can pick up and display
This is a crude, mostly complete, implementation of the protocol: NostrGameEngine/nostrads
that is demoed on: https://nostr-ads.ngengine.org/