Downloading every reaction note to get a count of likes is so fucking dumb lol

What happens when we are bigger are posts get thousands of likes?

Just download 20mb of data to compute one count?

We need to fix this

Reply to this note

Please Login to reply.

Discussion

Same challenge with follower count 😂

These are the logic of social media. With this one you're not implementing a new function, you're aiming to disrupt a social model. I believe it's gonna be hard

just download the reactions of people you want, just like you do with kind:1

it was always dumb to ask for everything, either reactions or any other note, but clients decided to go the dumb route.

Or let the relays just give you the count with a few bytes

I don't need to do that because I don't tally anything, I display all the reactions like any other reply, but I would use relays to count if I needed to use that feature.

One relay is going to report 5, another one 7. How do you combine them? Max? Sum? Guess?

But, push a new meta event from the relay. If clients want to use it, that's great. If not, that's also great.

Use the highest count

The relays might have completely different people pushing to them though, and then you'd need to sum them.

If it happened a lot you could include some optimized data hinting at the npubs behind the counts. It's not an easy problem.

Smart relays using negentropy to stay in sync with others in the network. You could even expose count over HTTP given an event ID.

It's better to keep information in the messages themselves so the protocol stays focused. But if relays want to talk to each other using some sort of magic that's cool too. At the end of the day, most clients will be using more than one relay, so they need to combine that information somehow.

Sounds like a pivot from relay dev to protocol designer

Exact count is a psyop. There is no global. Few.

It's the bandwidth more than the count I have beef with.

A relay can already give you a count with a few bytes, and it will be equally as inaccurate as trying to fetch them all individually

The personal and local relays will soon all be syncing, based upon some criteria (like a follow list), so you'd have the reaction events, already, from the npubs you actually care about, and can just count that.

If you want more info, for some particular note, you can look at an aggregator website, like nostr.band, or ask an API.

I only see when my frens react.

#onlyzaps fixes this.

I think. Any stats on how much data it requires to log?

How about clients just don’t display total counts and if you do want that you can rely on a trusted server to check that for you

Cuz reliance on trust is what got us in this mess to begin with.

What part of don't trust, verify has everyone forgotten?

Sir this isn't Bitcoin

Either way you see trusting relays to give you the notes, it's identical to asking them for the count

Yea literally

I never mentioned bitcoin. I am as mply pointing out that relying on trust is problematic and leads to the emergence of "trusted third parties" which is counterparty risk tofunctionaltity.

Agreed that client downloading 20mb for a count is inefficient and that's dumb way to count though.

Why not micro relays on every "full" client? Data is pretty cheap most places and solves the trust issue for day to day operations.

Jus's a thought.

What’s a “micro relay”? Isn’t that basically a trusted server?

Lol no. I mean the relay implementation can be skinny and stuffed in local client.

But nm. I have argued this before enough to have been told by the creator of this protocol that centralization is a feature and relays are private property.

So. It doesn't matter what I say. This is how it will be. We are just rebuilding the old world with new faces and phrases.

Be well

I don't think it's necessarily a question of size. It's just that you can only trust your own relays.

The Android relay I run on my localhost is more trustworthy than one run by someone else, on their machine, regardless of who they are, because I can see the entirety of it and verify everything.

I just setup Citrine on my phone and it's running really good. Do you know if there are other relay apps for Android, or is Citrine pretty much it for now?

I think that's the only one, so far.

That's OK. Setting it up and getting it running was a snap. I wish it had more configuration options, but it's pretty great for a personal relay that runs on your phone.

no, because the notes are external content not generated by the relays, the relays cannot be trusted ever, the client needs to verify everything. you're advocating for clients to "just trust me bro" which is completely wrong. the practice of displaying a single integer count is the problem, and clients downloading tons of events just for that are the problem. anyway, there's a COUNT nip since a long time ago that I helped shape precisely to unburden relays from this bad practice.

And you’re trusting the relays to give you the right count…

I'm not because I don't use the feature. but if you're going to ask for everything just for a count, might as well trust the relay for that, because it's meaningless anyway and the relay doesn't have to send everything and you don't have to download everything just to discard it afterwards. but just because I don't use it doesn't mean that other don't as well, so if clients will do it because they can, they will, and in that scenario, it is best to have a better solution with tradeoffs both agree.

???

Maybe signature aggregation can help lighten the load somehow?

I was thinking about that, it's actually a pain.

We can aggregate data, but we loose the signature, so it's useless. Perhaps one solution is to somehow use a Merkle tree structure?

Or maybe reactions are not so important.

As an aside, I get that signatures prevent relay manipulation of the data; but, what prevents client manipulation of what is presented to the user?

Maybe aggregated data is good enough if the underlying source reaction notes remain available to be spot-checked for signature verification.

that's what databases are for

i've tinkered a lot with the badger eventstore... i've done to things to it, one was to make it single threaded per query and another was to design a garbage collector

making more sophisticated indexes would be fairly easy to do, and honestly out of all the things i've done with eventstore/khatru/go-nostr/relayer codebases (btw relayer is much better than khatru) the stuff i had the most fun with was writing the bulk concurrent transaction processing with badger to implement the GC utilisation census

i'd love to do more stuff in this direction... high performance computing is one of my most favourite things

Do we see a small-noters vs big-noters war incoming? 🤣

Agree though, feels a bit clunky just for likes. Maybe relays aggregate them and you can still verify if you want. Nobody will do that but this is not really imporant data anyway. Or we go #onlyzaps

nostr:nevent1qvzqqqqqqypzpckv7l8jqspl8u4y54dn9rcduwlrs4v2040nxce0m2h0cunvrj8tqy2hwumn8ghj7un9d3shjtn4w3ux7tn0dejj7qghwaehxw309aex2mrp0yhxummnw3ezucnpdejz7qpqchhax00x2g5qgpw09rgg5k80mch7el98ww44l9jrmvqhyev684kspy7xsz