Filing this in an article to put some of the research and concepts into motion. Thanks for all involved and for any advice on better ways to accomplish this. -Steve
Mockup

1️⃣ Add to Kinds section
### Kind 30021: Anchored Commerce Review
`kind:30021` defines a signed commerce review event anchored to a NIP-15
marketplace listing or order reference.
This event kind is intended to be used in conjunction with **NIP-59
Gift Wrap** to support privacy-preserving or pseudonymous reviews.
Clients and relays that do not recognize this kind MUST ignore it.
2️⃣ Add ACReS Overview subsection
## Anchored Commerce Review System (ACReS)
The Anchored Commerce Review System (ACReS) extends NIP-15 by defining a
verifiable review mechanism that is cryptographically anchored to
marketplace listings or orders.
ACReS is composed exclusively of:
- NIP-15 (Marketplace Events)
- NIP-59 (Gift Wrap)
No additional NIPs are required.
3️⃣ Event definition block
### Anchored Commerce Review Event
An Anchored Commerce Review is represented by a `kind:30021` event.
The event MAY be published publicly, or MAY be wrapped using NIP-59
to provide reviewer privacy.
{
"kind": 30021,
"created_at": "unix timestamp",
"pubkey": "reviewer pubkey",
"content": "review text",
"tags": []
}
4️⃣ Required tags table
### Required Tags (kind:30021)
| Tag | Description |
|-----|-------------|
| `e` | Event ID of the NIP-15 listing or order being reviewed |
| `p` | Pubkey of the merchant or listing owner |
| `rating` | Integer rating value (recommended range 1–5) |
| `anchor` | Stable review anchor (SKU, order ID, or content hash) |
Example
"tags": [
["e", "listing_event_id"],
["p", "merchant_pubkey"],
["rating", "5"],
["anchor", "sku:survival-seasoning-batch-2"]
]
5️⃣ Optional tags block
### Optional Tags (kind:30021)
| Tag | Description |
|-----|-------------|
| `title` | Short review title |
| `quality` | Product quality rating |
| `delivery` | Delivery or fulfillment rating |
| `service` | Merchant service rating |
| `confidence` | Reviewer confidence score (0–100) |
| `proof` | Optional proof-of-purchase commitment |
6️⃣ NIP-59 Gift Wrap integration (key part)
### Gift-Wrapped Reviews (NIP-59)
When reviewer privacy is desired, the entire `kind:30021` event MUST be
wrapped using NIP-59.
Relays MUST treat wrapped review events as opaque payloads and MUST NOT
require decryption in order to accept or propagate them.
Wrapped example
{
"kind": 1059,
"content": "encrypted kind:30021 event",
"tags": [
["p", "recipient_pubkey"],
["kind", "30021"]
]
}
7️⃣ Relay behavior section
### Relay Behavior
Relays that support NIP-15 marketplaces:
- SHOULD index `kind:30021` events
- SHOULD associate reviews with referenced listings
- MUST NOT reject gift-wrapped reviews
Relays MAY provide aggregated rating metadata as a non-consensus feature.
8️⃣ Client behavior section
### Client Behavior
Marketplace clients implementing ACReS:
- SHOULD display aggregated review data per listing
- SHOULD indicate whether a review is public or gift-wrapped
- MUST respect NIP-59 encryption boundaries
9️⃣ Spam & abuse mitigation (lightweight, non-authoritative)
### Spam Considerations
ACReS does not mandate global enforcement.
Clients and relays MAY apply heuristics such as:
- One review per anchor
- Optional proof-of-purchase commitments
- Temporal or reputation-based weighting
🔟 Compatibility note (important for reviewers)
### Backwards Compatibility
This extension does not alter existing NIP-15 behavior.
Clients and relays unaware of `kind:30021` will safely ignore review
events without impact.
