diff options
| author | fiatjaf <fiatjaf@gmail.com> | 2023-09-29 15:47:04 -0300 |
|---|---|---|
| committer | fiatjaf_ <fiatjaf@gmail.com> | 2023-09-29 16:49:55 -0300 |
| commit | b33409c099b4d08278c95beda0f42ba76f55c32c (patch) | |
| tree | 36204f5a399a367bcf1e264550047ea021f1d6a0 /01.md | |
| parent | 7dc6385f1b9f185601c50f84df2e7e06933a71ce (diff) | |
make it clear that relays can keep multiple replaceable event versions.
Diffstat (limited to '01.md')
| -rw-r--r-- | 01.md | 6 |
1 files changed, 4 insertions, 2 deletions
| @@ -82,12 +82,14 @@ Kinds specify how clients should interpret the meaning of each event and the oth | |||
| 82 | And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: | 82 | And also a convention for kind ranges that allow for easier experimentation and flexibility of relay implementation: |
| 83 | 83 | ||
| 84 | - for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays. | 84 | - for kind `n` such that `1000 <= n < 10000`, events are **regular**, which means they're all expected to be stored by relays. |
| 85 | - 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. | 85 | - 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. |
| 86 | - for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays. | 86 | - for kind `n` such that `20000 <= n < 30000`, events are **ephemeral**, which means they are not expected to be stored by relays. |
| 87 | - 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. | 87 | - 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. |
| 88 | 88 | ||
| 89 | 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. | 89 | 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. |
| 90 | 90 | ||
| 91 | When answering to `REQ` messages for replaceable events such as `{"kinds":[0],"authors":[<hex-key>]}`, even if the relay has more than one version stored, it SHOULD return just the latest one. | ||
| 92 | |||
| 91 | These are just conventions and relay implementations may differ. | 93 | These are just conventions and relay implementations may differ. |
| 92 | 94 | ||
| 93 | ## Communication between clients and relays | 95 | ## Communication between clients and relays |