mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 08:25:53 -05:00
commit
e8a501c08f
23
22.md
23
22.md
|
@ -6,23 +6,25 @@ Event `created_at` Limits
|
|||
|
||||
`draft` `optional` `author:jeffthibault`
|
||||
|
||||
Relays may define both upper and lower limits for which they will consider an event's `created_at` time to be acceptable if it is within those limits. Both the upper and lower limits MUST be unix timestamps to match the format of the event's `created_at` field. The upper limit restricts how far into the future an event's `created_at` time can be set to and the lower limit restricts how far into the past an event's `created_at` time can be set to.
|
||||
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](01.md).
|
||||
|
||||
If a relay supports this NIP, the relay SHOULD send the client a `NOTICE` message saying the event was not stored when the `created_at` time is not within the upper and lower limits.
|
||||
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` not being within the permitted limits.
|
||||
|
||||
Client Behavior
|
||||
---------------
|
||||
|
||||
Clients SHOULD use the `supported_nips` field to learn if a relay uses event `created_at` time limits as defined by this NIP.
|
||||
Clients SHOULD use the [NIP-11](11.md) `supported_nips` field to learn if a relay uses event `created_at` time limits as defined by this NIP.
|
||||
|
||||
Motivation
|
||||
----------
|
||||
|
||||
The motivation for this NIP is to formalize a way for relays to restrict event timestamps to times they deem to be acceptable and allow clients to be aware of relays that have these restrictions.
|
||||
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. For example, the `created_at` field can be set to a time 20 years ago even though it was created today and still be a valid event. It can also be set to a time 20 years in the future and still be a valid event. This NIP aims to define a way for relays that do not want to store events with *any* timestamp to set their own 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.
|
||||
|
||||
A wide adoption of this could create a better UX on clients as well because it would decrease the likelihood of the user seeing events from dates such as 1984 or 2084, which could be confusing.
|
||||
[Replaceable events](16.md#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
|
||||
--------------
|
||||
|
@ -30,9 +32,10 @@ Python Example
|
|||
```python
|
||||
import time
|
||||
|
||||
UPPER_LIMIT = int(time.now) + 900 # Define upper limit as 15 minutes into the future
|
||||
LOWER_LIMIT = int(time.now) - 86400 # Define lower limit as 1 day into the past
|
||||
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 < LOWER_LIMIT or event.created_at > UPPER_LIMIT:
|
||||
ws.send('["NOTICE", "The event created_at field is out of the acceptable range for this relay and was not stored."]')
|
||||
if event.created_at not in range(LOWER_LIMIT, UPPER_LIMIT):
|
||||
ws.send('["NOTICE", "The event created_at field is out of the acceptable range (-24h, +15min) for this relay and was not stored."]')
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue
Block a user