Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 2.29 KB

22.md

File metadata and controls

42 lines (27 loc) · 2.29 KB

NIP-22

Event created_at Limits

draft optional author:jeffthibault author:Giszmo

Relays may define both upper and lower limits within which they will consider an event's created_at to be acceptable. Both the upper and lower limits MUST be unix timestamps in seconds as defined in NIP-01.

If a relay supports this NIP, the relay SHOULD send the client a NOTICE message saying the event was not stored for the created_at timestamp not being within the permitted limits.

Client Behavior

Clients SHOULD use the NIP-11 supported_nips field to learn if a relay uses event created_at time limits as defined by this NIP.

Motivation

This NIP formalizes restrictions on event timestamps as accepted by a relay and allows clients to be aware of relays that have these restrictions.

The event created_at field is just a unix timestamp and can be set to a time in the past or future. Relays accept and share events dated to 20 years ago or 50,000 years in the future. This NIP aims to define a way for relays that do not want to store events with any timestamp to set their own restrictions.

Replaceable events can behave rather unexpected if the user wrote them - or tried to write them - with a wrong system clock. Persisting an update with a backdated system now would result in the update not getting persisted without a NOTICE and if they did the last update with a forward dated system, they will again fail to do another update with the now correct time.

A wide adoption of this nip could create a better user experience as it would decrease the amount of events that appear wildly out of order or even from impossible dates in the distant past or future.

Python Example

import time

TIME = int(time.now)
LOWER_LIMIT = TIME - (60 * 60 * 24) # Define lower limit as 1 day into the past
UPPER_LIMIT = TIME + (60 * 15)      # Define upper limit as 15 minutes into the future

if event.created_at not in range(LOWER_LIMIT, UPPER_LIMIT):
  # NOTE: This is one example of a notice message. Relays can change this to notify clients however they like.
  ws.send('["NOTICE", "The event created_at field is out of the acceptable range (-24h, +15min) for this relay and was not stored."]')