Simplify timestamp attestations

This commit is contained in:
Jon Staab 2025-02-03 13:35:02 -08:00
parent 497c505879
commit 980902bb2c
2 changed files with 13 additions and 26 deletions

37
03.md
View File

@ -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.

View File

@ -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) |