5.0 KiB
NIP-100
NOSTR Decentralized Advertising Network (NOSTR-DAN)
draf
optional
This NIP defines the kind:20100
: a parameterized event dispatched to a listener or pool of listeners to offer space for advertising,
a listener can answer accepting the offer and contracting the space.
Motivation
Most of the digital social networks are based on data-driven advertising, then NOSTR-based applications can also take competitive advantages learning it from industry to improve earnings in the NOSTR ecossystem.
Problem
Using the centralized adversting networking is staying in hand of the big companies.
Solution
The implementation of the NOSTR Decentralized Advertising Network (NOSTR-DAN) allows the NOSTR-based applications implement features to display ads to the users and distribute ads to the pool of partners.
Competitive Advantages for Stakeholders
stakeholder | advantage |
---|---|
investors and entrepreuners | profitable feature |
content creators | profitable feature |
tech professionals | new profitable industry, new NOSTR-jobs |
Properties
Property | Help |
---|---|
action |
start-offer , assign-offer , paid , cancel-offer |
offer |
offer identity {pubkey , created_at , created_at , expires_at , tags , description } |
schema |
Accepted data schemas for the ad be displayed (example: https://schema.org/LocalBusiness), each pool can define your own custom schema |
schemaName |
What schema is being used to structure the ad |
cluster |
Marketing parameters about the audience cluster that will see the ad |
transaction |
Conditions to contract and pay the offer |
whitelist |
List of wallets that can contract and pay for this offer |
bannedlist |
List of wallets that CANNOT contract this offer |
Schemas
The concept of schema is based on the https://schema.org/LocalBusiness to offer more freedom to pools and communities decide how to delivery your ads, because ads can have custom properties according to the industry and products/services evolutions.
Example of usage
- The client dispatch the event to the pool offering space to advertisers
- The listeners (advertisers) understand the event and decide if contract or not the space
Dispatched Event (Request Body)
The application send an event offering space to advertisers
{
"kind": 20100,
"action": "start-offer",
"schema": [env.POOL.SCHEMA],
"offer": {
"pubkey": env.MYPUBKEY,
"created_at": 1704012878,
"expires_at": 1704016478,
"tag": env.TAG,
"description": "Announce your ecommerce on www.example.com"
},
"cluster":
{
"userAgent": env.WEBBROWSER.DESKTOP.[FIREFOX | CHROME | EDGE | ...],
"country": env.COUNTRY,
},
"transaction":
{
"paymentModel": "prepaid",
"price":
{
"btc": {
"min": 0.0001
},
"eth": {
"min": 0.001
}
},
"conditions":
{
"maxViews": 100,
"maxHours": 24,
"formats": ["image/png,jpg,gif", "text/html,plain", ...]
...another properties about the conditions (specified by Schema)
}
},
"whitelist":[env.LISTERNER.wallet.address],
"bannedlist":[env.LISTERNER.wallet.wallet.address]
}
Listener contracted the space to display ad
The advertiser (listener) decided to contract the space to display the ad, then answer with:
{
"kind": 20100,
"action": "assign-offer",
"assign_at": "1704012879",
"cancel_at": "1704012880",
"offer": {
"pubkey": env.PUBKEY,
"created_at": 1704012878,
"expires_at": 1704016478,
"tag": env.TAG
},
"transaction": {
"currency": "btc",
"amount": 0.0001,
"wallet": env.MYWALLET.address
},
"schema":{
"schemaName": env.POOL.SCHEMA,
"properties": {
"format": "text/html",
"content": "",
...custom community schema of properties (specified by Schema)
}
}
}
Client accepts contract and answer with wallet
{
"kind": 20100,
"action": "assign-offer",
"assign_at": "1704012879",
"cancel_at": "1704012880",
"offer": {
"pubkey": env.PUBKEY,
"created_at": 1704012878,
"expires_at": 1704016478,
"tag": env.TAG
},
"transaction": {
"wallet": env.MYWALLET.address
},
}
Listener (Advertiser) announces payment
{
"kind": 20100,
"action": "paid",
"paid_at": "1704012879",
"offer": {
"pubkey": env.PUBKEY,
"created_at": 1704012878,
"expires_at": 1704016478,
"tag": env.TAG
},
"transaction": {
"wallet": env.MYWALLET.address
},
}
REVIEW
- NOSTR-DAN needs only to members to work:
- The client that offers spaces to the advertisers
- The listeners (advertisers) that contract the spaces to advertise
- NOSTR-DAN community can create custom schemas for your ads, allowing the dynamic communication required by competitive industries and unpredictable market changes
- Members of the NOSTR-DAN can apply the whitelist and bannedlist to filter ads