From b33409c099b4d08278c95beda0f42ba76f55c32c Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 29 Sep 2023 15:47:04 -0300 Subject: [PATCH] make it clear that relays can keep multiple replaceable event versions. --- 01.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/01.md b/01.md index d822bfbc..2b28f23f 100644 --- a/01.md +++ b/01.md @@ -82,12 +82,14 @@ Kinds specify how clients should interpret the meaning of each event and the oth And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: - for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays. -- for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event is expected to (SHOULD) be stored by relays, older versions are expected to be discarded. +- for kind `n` such that `10000 <= n < 20000 || n == 0 || n == 3`, events are **replaceable**, which means that, for each combination of `pubkey` and `kind`, only the latest event MUST be stored by relays, older versions MAY be discarded. - for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays. -- for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event is expected to be stored by relays, older versions are expected to be discarded. +- for kind `n` such that `30000 <= n < 40000`, events are **parameterized replaceable**, which means that, for each combination of `pubkey`, `kind` and the `d` tag's first value, only the latest event MUST be stored by relays, older versions MAY be discarded. In case of replaceable events with the same timestamp, the event with the lowest id (first in lexical order) should be retained, and the other discarded. +When answering to `REQ` messages for replaceable events such as `{"kinds":[0],"authors":[]}`, even if the relay has more than one version stored, it SHOULD return just the latest one. + These are just conventions and relay implementations may differ. ## Communication between clients and relays