Specify replacement behaviour when replaceable events have the same timestamp

- This is so that relays can converge on a deterministic sets of events, no matter the order they were received
- Otherwise, clients or relays that sync their sets of events could continually retransmit events they think are missing on the other side, wasting bandwidth
This commit is contained in:
Doug Hoyte 2023-05-19 00:54:44 -04:00
parent ccbdfb95c1
commit 9cac35db9b
2 changed files with 4 additions and 0 deletions

2
16.md
View File

@ -20,6 +20,8 @@ Upon a replaceable event with a newer timestamp than the currently known latest
effectively replacing what gets returned when querying for effectively replacing what gets returned when querying for
`author:kind` tuples. `author:kind` tuples.
If two events have the same timestamp, the event with the lowest id (first in lexical order) SHOULD be retained, and the other discarded.
Ephemeral Events Ephemeral Events
---------------- ----------------
An *ephemeral event* is defined as an event with a kind `20000 <= n < 30000`. An *ephemeral event* is defined as an event with a kind `20000 <= n < 30000`.

2
33.md
View File

@ -18,6 +18,8 @@ replaceable event with the same kind, author and first `d` tag value being recei
SHOULD be discarded, effectively replacing what gets returned when querying for SHOULD be discarded, effectively replacing what gets returned when querying for
`author:kind:d-tag` tuples. `author:kind:d-tag` tuples.
If two events have the same timestamp, the event with the lowest id (first in lexical order) SHOULD be retained, and the other discarded.
A missing or a `d` tag with no value should be interpreted equivalent to a `d` tag with the A missing or a `d` tag with no value should be interpreted equivalent to a `d` tag with the
value as an empty string. Events from the same author with any of the following `tags` value as an empty string. Events from the same author with any of the following `tags`
replace each other: replace each other: