I said it before and I'll say it again and again: we need ideas to fix the huge traffic issue with noste. My computer starts downloading events with 20 MB/s whenever I open a new nostr tab. That's unacceptable. If we want the world to use nostr (not just the US), clients need to work in a low bandwidth environment. Think smaller.

Replies (43)

We will remember this day, as the day the Note size wars began.
calle's avatar calle
I said it before and I'll say it again and again: we need ideas to fix the huge traffic issue with noste. My computer starts downloading events with 20 MB/s whenever I open a new nostr tab. That's unacceptable. If we want the world to use nostr (not just the US), clients need to work in a low bandwidth environment. Think smaller.
View quoted note →
Personally, I have to set image disabled and limit my relay usage by using aggregator relay (1 or 2) as "read relay" and other relays for write only in Amethyst.
Sid Shattuck's avatar
Sid Shattuck 1 year ago
My GPU sounds like a jet turbine when I open Primal. How can this be solved?
I think it would be a start to let people better choose what they see. I see so much content from people I don't want to see. I would only see content from people I explicitly follow (no global bullshit, nothing from the people they follow, etc). I literally only want to see posts from those I 'follow.' This isn't a broad solution, but it would certainly lower the amount of data my connection needs to download. Currently, well over half of what I see on Nostr is shit I don't even want to see. I'm sure there are other preference settings (filters) that could greatly reduce data usage. This seems like low hanging fruit, but I'm not knowledgeable enough on Nostr to know for sure.
I conducted an experiment to demonstrate the point in my other comment. On average, I would NOT see 18 out of every 25 posts that are loaded on my feed (using the most aggressive filter offered by the client - which clearly isn't much of a filter). I don't understand all the underlying mechanics, but allowing me to only see the 7/25 posts I want to see has to save data. I can't see how it wouldn't.
I got rekt last week, ran out of mobile data while travelling, cost me 40 bucks to extend my data on the fly. Then got rekt again 3 days later. Its unsustainable
someone's avatar
someone 1 year ago
simplest solution is proxies. bostr, blastr, .. not sure if blastr is reading from every relay though. if it is not then it is not reducing read traffic (which is the most traffic). another one is aggregating relays that collect notes from a lot of relays (strfry router feature). this is also for reading. primal's thing is cache service, for reading as far as I understand. it posts directly to relays of your choice. all comes whit the cost of more centralization.
someone's avatar
someone 1 year ago
this is probably compatible with lol but incompatible with mom because mom looks at the IP when rate limiting.
Any clients or relays out there that have reposts disabled? That may help. My feed is consistently a broken record of reposts. May help bandwidth and UX.
You could still try to manually connect and set it as "write relay" in client if broadcasting in bostr does not work properly.
Most clients need to request a ton of data to filter it out because the relays are meant to be dumb by design if I am remembering right
like when are we dropping the stupid JSON representation ? Binary format with 2 version bytes at the beginning
dluvian's avatar
dluvian 1 year ago
- Clients make wasteful requests. - Kind 1 is root post and reply, no way to request only one of them. - Lazy loading threads is impossible because e-tags are used to reference too many things. Easy fixes for those but low interest in doing it.
I too am interested in this. I basically avoid nostr when I'm not on WiFi. I don't have unlimited data and it blows my data plan out of the water after about 5 min when I accidentally use it on a mobile network. I think there are some settings that can help with this though like, having a different app/profile with just one relay, turning off media loading. Turning off all extra stuff like nip05, and possibly pfps.
having a local relay and imageproxy like a little local deployment of nostrudel, that i use here, would probably help a lot, especially the imageproxy, though the app should be keeping a cache of images (ya know, cache management isn't that hard but mosta y'all never did serious systems programming, and i only just got the excuse to build a cache) second thing that would help would be a new field in filters that lets you send a bloom filter of all the event IDs you don't want to be sent in a request i've filed this as an issue/enhancement request on nip-01 and i'd appreciate it if more people would recognise what a massive boost it would make to mobile users
probably from the local relay. but passing a bloom filter up seems like a solution looking for a problem. send up event ids. too many? use since/until. too big? use better encoding. still too much? write a for loop.
I connect to the nostr network through a proxy relay that I wrote and operate, so I’m aware. I’m also cautious of premature optimization, particularly when solutions are advocated very matter of fact. I agree bloom filters would help reduce data tx, but it feels like a spoiler on a honda civic.
with that said, I encourage you to explore and implement it! all iteration is good iteration.
Since people invariably will want to use many different nostr clients, any ideas that a single client can use (caching events locally, doing any kind of negentropy with the relay, etc, etc) will not be sufficient. Any client-specific solutions will not be enough. We need a NIP based solution. I've been saying for as long as I can remember that we need what I call a "client proxy". People have pushed back by imagining I'm talking about some central service people sign up for which would become another point of censorship - NO! I'm talking about something that you run on your local computer, or your local network, or a data center where YOU control it ... and all your various nostr clients funnel everything through it so as to avoid events being downloaded over and over again. The protocol from client to client proxy might have to be outside of nostr proper. It just has to add which relay the client would have asked directly. For example, the client can say "Get this filter from these relays" and the proxy can (being smart) say "Hah, I already have that from relay A, here you go" while it asks relays B and C and caches those results.
There was one time I forgot to turn my wifi back on and couldn't doordash for a month because nostr ate up all my mobile data.... 😭
calle's avatar calle
I said it before and I'll say it again and again: we need ideas to fix the huge traffic issue with noste. My computer starts downloading events with 20 MB/s whenever I open a new nostr tab. That's unacceptable. If we want the world to use nostr (not just the US), clients need to work in a low bandwidth environment. Think smaller.
View quoted note →
I'm with @Mike Dilger ☑️ there. We need basically a proxy relay that lives on the device so you make requests exclusively to that but it has to be more complex than a common relay as you need a way to instruct it to get data from specific other relays and it needs some smarts of what was requested already.
Youre going to have to let us know what client you are using so we can get to the bottom of this, and 20MB/s the internet speed dedicated to this activity, its not too helpful in diagnosing this, you could download 1MB @ 1000MB/s, it just would just be instant.
So scaling nostr and saving bandwidth can both be part of the same effort. Primal doing good work there, but needs to be more appetite in the wider eco system to make it reality.
I actually had a service delete my number (yeah, I couldn't even transfer it out) for using too much unlimited data, which was 30GB at the time. Hearing them try to explain that would have been amusing if not so annoying.