chore: track previous references and preserve foreign tags

This commit is contained in:
2026-10-11 09:02:06 +07:00
parent 440d6dfea3
commit f1192492d2
5 changed files with 213 additions and 169 deletions
+13
View File
@@ -580,6 +580,8 @@ impl Group {
fn absorb(&mut self, event: &Event, me: PublicKey) -> Absorbed {
if STATE_KINDS.contains(&event.kind) {
self.window.note(event);
return if self.absorb_state(event, me) {
Absorbed::Updated
} else {
@@ -587,6 +589,17 @@ impl Group {
};
}
// NIP-29: relays must reject events whose
// `previous` references are absent from their database.
let previous = event.tags.iter().find(|tag| tag.kind() == "previous");
if self.window.references_seen(previous) == Some(false) {
log::warn!(
"nip29: event {} carries previous references not seen on {}",
event.id,
self.key.relay()
);
}
self.track(event);
let updated = self.absorb_membership(event, me);