Hey relay runners! It's time to raise the event size limit on your relays. 64kb is so 2023. 1MB+ is the hot stuff now. We're trying to support groups larger than ~60 on @White Noise and the limiting factor is inbox relays rejecting events that are larger than 64kb. White Noise handles it beautifully when your inbox relays don't block it.

Replies (44)

sure - that's fine. Kind 1059 is really the only one that needs a higher limit.
this is not a fork. it's already in the NIPs. the past limit was NIP-44, but that limit was raised months ago in the NIPs repo. this is just relay implementations not being updated or configured for higher limits.
The current payload size limit is one of the main inhibitors of Nostr’s growth. Try updating a follow list with 900 pubkeys on it using a remote signer.
total event size. this only for welcome messages that invite people into the group (which are gift-wraps - kind 1059). most group messages are kind:445 and are tiny.
it's an easy fix too. 🤷‍♂️ my relay implementation Wok has higher default limits. Khatru, Haven, and others also default higher than 64kb now. It's basically just a historic holdover.
no - a 200 person group has a welcome message of about 300kb. the MLS welcome object itself is only about 100kb but then we nip-44 encrypt and base64 it, so it gets bigger. I just think 1MB+ is a better size limit is all.
I know concord ran into the same issue and switched to a sharded system to bypass the limit. @Vitor Pamplona its been a month now are you finally going to bring amethyst in line with that now? We keep having to tell people not to use amethyst for concord because of this. Would be nice if it was actually compatible again.
It wasn’t the transport happy path that we had issues with. How does a nostr relay identify that a message is missing and restore it? Traditional nostr relays have no concept of missing messages. You can negantropy gaps but without knowing the full missing set. That prevents the system from finding and restoring full gaps. I suspect that this issue will show up in system resilience. Clients may get out of missing messages and key material. To compensate, you can move the feed protocol to the clients instead of the server, but then that might reduce DX for new integrations. Anyway, that’s what motivated our new relay for messaging: Move primary inventory to clients from the server (expect the server to drop messages). Use server as hot cache only. Backfill gaps from clients to each other. If it’s useful for you, feel free to use.
The concord spec changed a month ago to deal with those limitations. So the communities you join are now sharded on armada and vector. At the time you did not want to update amethyst. Now that means pretty frequently people wonder why their communities from Armada do not sync correctly. And we have to explain its because Amethyst never updated itself to the newer spec. So amethyst not only doesn't get the proper channel sync, it also is subject to the limitation issues that change solved to begin with. Once you implement the sharding kínd 33302 instead of sticking to 13302 you are in line with the spec again so people dont miss channels and dont risk issues with their community list.
But that was just for community lists, right? Are people having more than 64KB of community headers already? That sounds crazy. What do you do in messages that are bigger than 64kb?
Some people indeed hit community lists that big which was why they did the sharded one. Point remains that even if you dont find it neccesary you being behind on the spec still causes issues. I don't know what armada does when it encounters a changed 13302. But it doesnt actively update its 13302 anymore so amethyst is left out on any community list updates.
That the same issue for follow lists and people lists in nostr.. I will implement the sharing, but to me that doesn't solve anything since messages cannot be big. I have seen more people losing messages than losing lists, by far.
it is solved at the protocol level. in june, the limit on events for nip-44 was raised to 4GB minus 1 byte. it's just that most relay implementations & operators haven't updated their config yet.
Just make the limit for all events 4GB minus 1 byte. I'm sure relay operators paying network out fees will be accepting of that change.
"Relays are lightweight WebSocket servers designed to index and serve small JSON objects." "NIP-44 payloads are Base64 encoded. Encoding binary data to Base64 introduces a ~33% size inflation penalty right out of the gate." "Nostr clients process events in memory. Parsing, base64-decoding, and running ChaCha20/HMAC over a 500 MB event payload will crash mobile apps and browser tabs with Out-Of-Memory (OOM) errors." "If a 1 GB event download drops at 99%, you have to fetch the entire WebSocket message again from scratch." "Wanting 4GB events directly over Nostr relays treats a WebSocket message bus like an HTTP storage server. Using Blossom for files and NIP-44 for small text/keys is the correct, architecturally sound design for Nostr." a lot of other arguments might over that request. Why not consider to do that? "Just as with media, large Welcome objects can be stored out-of-band: 1- The admin encrypts the 300 KB MLS Welcome object and uploads it to an HTTP blob server (Blossom). 2- The Nostr kind: 444 Welcome event sent over the relay contains only the URL + SHA-256 hash of the blob (a tiny ~500 byte event). 3- The recipient fetches the blob over standard HTTP range/stream requests and decrypts it locally." "
is there really group ~60 in nostr? Can I see it? I'm just curious...
↑