Attention is scarce. ATTN prices it.
ATTN is an open protocol built on Nostr that creates a marketplace for attention — the one commodity platforms extract but never let you own. Promoters pay sats for access to citizen attention. Citizens get paid for what they already give away for free. No middleman decides who sees what. Two parties, skin in the game, on an open protocol.
Promoters publish promotions — content they want seen. Citizens publish attention offers — a signal that they're willing to look. Marketplaces match them. Both sides confirm. Sats flow over Lightning.
Every event is a signed Nostr event. Every action is verifiable. No accounts, no platform APIs, no permission. Your keys, your attention, your money.
All events are NIP-33 parameterized replaceable events.
| Kind | Name | Description |
|---|---|---|
| 38188 | MARKETPLACE | Marketplace registration and configuration |
| 38288 | BILLBOARD | Ad slot registration |
| 38388 | PROMOTION | Paid content submitted by promoters |
| 38488 | ATTENTION | Attention offer from citizens |
| 38588 | BILLBOARD_CONFIRMATION | Billboard confirms a match |
| 38688 | ATTENTION_CONFIRMATION | Citizen confirms a match |
| 38788 | MARKETPLACE_CONFIRMATION | Marketplace confirms both parties agreed |
| 38888 | MATCH | Pairing a promotion with attention |
| 38988 | PAYMENT_CONFIRMATION | Payment confirmation after sats settle |
A citizen publishes a kind 38488 event to offer their attention to a marketplace:
{
"kind": 38488,
"pubkey": "<citizen_pubkey>",
"tags": [
["d", "c3d4e5f6-a7b8-9012-cdef-012345678901"],
["t", "936237"],
["a", "38188:<marketplace_pubkey>:7d1e3a2b-4c5f-6789-abcd-ef0123456789"],
["p", "<citizen_pubkey>"],
["p", "<marketplace_pubkey>"],
["r", "wss://relay.nextblock.city"]
],
"content": {
"ask": 3000,
"min_duration": 15000,
"max_duration": 60000,
"ref_attention_pubkey": "<citizen_pubkey>",
"ref_attention_id": "c3d4e5f6-a7b8-9012-cdef-012345678901",
"ref_marketplace_pubkey": "<marketplace_pubkey>",
"ref_marketplace_id": "7d1e3a2b-4c5f-6789-abcd-ef0123456789"
}
}The citizen is saying: "I'll look at promotions in this marketplace for 3,000 sats." Blocked promoters and trusted billboards are managed via NIP-51 lists — the citizen controls who they won't see.
A promoter publishes a kind 38388 event to promote content on a billboard:
{
"kind": 38388,
"pubkey": "<promoter_pubkey>",
"tags": [
["d", "b2c3d4e5-f6a7-8901-bcde-f01234567890"],
["t", "936237"],
["a", "38188:<marketplace_pubkey>:7d1e3a2b-4c5f-6789-abcd-ef0123456789"],
["a", "38288:<billboard_pubkey>:a1b2c3d4-e5f6-7890-abcd-ef0123456789"],
["a", "34236:<video_author_pubkey>:<video_d_tag>"],
["p", "<marketplace_pubkey>"],
["p", "<billboard_pubkey>"],
["p", "<promoter_pubkey>"],
["r", "wss://relay.nextblock.city"],
["k", "34236"],
["u", "https://example.com/watch"]
],
"content": {
"duration": 30000,
"bid": 3000,
"event_id": "<video_event_id>",
"call_to_action": "Watch Now",
"call_to_action_url": "https://example.com/watch",
"escrow_id_list": ["strike_tx_abc123"],
"ref_promotion_pubkey": "<promoter_pubkey>",
"ref_promotion_id": "b2c3d4e5-f6a7-8901-bcde-f01234567890",
"ref_marketplace_pubkey": "<marketplace_pubkey>",
"ref_marketplace_id": "7d1e3a2b-4c5f-6789-abcd-ef0123456789",
"ref_billboard_pubkey": "<billboard_pubkey>",
"ref_billboard_id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789"
}
}The promoter is saying: "I'll pay 3,000 sats for 30 seconds of attention on this video, through this billboard and marketplace." The escrow_id_list proves funds are locked before any match happens.
ATTN runs on Bitcoin time via City Protocol. Each new block (kind 38808) is the heartbeat — marketplace state snapshots are anchored to block heights, not wall clocks.
| Document | Description |
|---|---|
| Overview | What ATTN is and why it exists |
| Specification | Event kinds, schemas, and tag definitions |
| Event Flow | Event lifecycle and match phases |
| User Guide | Trust model, value proposition, and FAQ |
| Package | Description |
|---|---|
packages/ts-core |
Core constants and type definitions (TypeScript) |
packages/ts-sdk |
Event builders and validators (TypeScript) |
packages/go-core |
Core constants and validation (Go) |
packages/go-sdk |
Event builders and validators (Go) |
- City Protocol — Block-aware domains with clock service
- Nostr Protocol — The foundation
MIT