From 980902bb2cdd08dde84cb71f0abe636f1022bda8 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 3 Feb 2025 13:35:02 -0800 Subject: [PATCH] Simplify timestamp attestations --- 03.md | 37 ++++++++++++------------------------- README.md | 2 +- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/03.md b/03.md index 477bef47..ab9795a2 100644 --- a/03.md +++ b/03.md @@ -1,16 +1,15 @@ NIP-03 ====== -Notarizing Events ------------------ +Timestamp Attestations for Events +--------------------------------- `draft` `optional` This NIP defines strategies for establishing when an event was first found on the nostr network: - [OpenTimestamps](#opentimestamps) -- [Relay Notaries](#relay-notaries) -- [Peer Notaries](#peer-notaries) +- [Attestation Event](#attestation-event) # OpenTimestamps @@ -41,35 +40,23 @@ Using [`nak`](https://github.com/fiatjaf/nak), [`jq`](https://jqlang.github.io/j timestamp validated at block [810391] ``` -# Relay Notaries +# Attestation Event -Relays MAY notarize events by supporting a `NOTARY` message. +Users MAY verify when they first saw an event by publishing a `kind:4341` event. -- First a client sends a `NOTARY` message to the relay with an event id as the first argument. -- Next, the relay MAY respond with a `NOTARY` message with the same event id as the first argument and a timestamp matching when the relay first saw the event as the second argument. -- If the relay has not seen the event it SHOULD respond with `null` in the timestamp field. - -Example: - -```jsonc --> ["NOTARY", "e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323"] -<- ["NOTARY", "e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323", 1738617405] -``` - -Note that relay-provided notaries provide a weaker guarantee than OTS proofs. Depending on the importance of the verification, multiple relays with a good reputation should be consulted in order to determine a reasonable result. - -# Peer Notaries - -Users MAY notarize events by publishing a `kind:4341` event. `content` MAY provide any human-readable explanation of the event. One or more `notary` tags MUST be included indicating event ids and timestamps. Event addresses MUST NOT be used. +- One or more `stamp` tags MUST be included indicating event ids and timestamps. Event addresses MUST NOT be used. +- The `content` field MAY provide any human-readable explanation of the event.- ```jsonc { "content": "I vaguely remember hearing about this note last year", "tags": [ - ["alt", "A notary event"], - ["notary", "e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323", 1738617405] + ["alt", "A timestamp attestation event"], + ["stamp", "e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323", 1738617405] ] } ``` -Note that user-provided notaries provide a weaker guarantee than OTS proofs. Depending on the importance of the verification, multiple users with a good reputation should be consulted in order to determine a reasonable result. +Note that user-provided attestations provide a weaker guarantee than OTS proofs. Depending on the importance of the verification, multiple users with a good reputation should be consulted in order to determine a reasonable result. + +Relays MAY also provide these attestations by generating and signing them on the fly using the pubkey listed in the relay's [NIP 11](./11.md) document. diff --git a/README.md b/README.md index d4f15db5..20ac4b5a 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `2003` | Torrent | [35](35.md) | | `2004` | Torrent Comment | [35](35.md) | | `2022` | Coinjoin Pool | [joinstr][joinstr] | -| `4341` | Peer notary | [03](03.md) | +| `4341` | Timestamp Attestation | [03](03.md) | | `4550` | Community Post Approval | [72](72.md) | | `5000`-`5999` | Job Request | [90](90.md) | | `6000`-`6999` | Job Result | [90](90.md) |