cameri / nostream

A Nostr Relay written in TypeScript
MIT License
729 stars 188 forks source link

[BUG] Strange behavior with NIP-33 parameterized replacable events and NIP-40 (expiration tag) #255

Closed dskvr closed 1 year ago

dskvr commented 1 year ago

Describe the bug There appears to be a ghosting affect when mixing NIP-40 and NIP-33. I spent a few hours trying to track down what was going on, and am fairly certain I have eliminated human error on my side.

To Reproduce

  1. Pick a kind in the parameterized replaceable event range
  2. Publish an event.
  3. Subscribe with filters for that kind. Observe expected behaviors
  4. Add an expiration tag with a UNIX timestamp sometime in the future.
  5. Publish the event.
  6. Observe incorrect behaviors (event is not stored)
  7. Remove the expiration tag.
  8. Publish the event again.
  9. When subscribing, the event will not be returned, suggesting it was not stored.
  10. Subscribing with filters for that kind before the event is published will show that the event is returned once by the subscription but if you resubscribe that same event will not be returned; similar to the behavior of an ephemeral kind.

Expected behavior expiration tag on an event kind has absolutely no effect on future events of that kind.

Screenshots Screen Shot 2023-03-05 at 12 26 20 AM

System (please complete the following information):

Logs There was nothing in logs to suggest anything was wrong.

Additional context

cameri commented 1 year ago

@dskvr my man I could not reproduce this. If you ever encounter this issue again let me know and I'll re-open :/