Where does Lemmy store upvotes, downvotes, and replies?
Does ActivityPub send those to other instances, or does ActivityPub only send the original post and the rest (upvotes, downvotes, replies) are stored only on the original server where the post was made?
Posts and comments are federated (synchronised). Upvotes are actually a bit of a fudge, they are actually 'Favourites' if considered from an activity pub (e.g. Mastodon) perspective, and yes favourites are also federated.
Downvotes don't exist in activity pub and, as a result, they do not federate between instances.
At least that is my understanding.
Downvotes do federate, but it uses protocol extensions to do it. So the downvotes won't federate to Mastodon, but it does for Lemmy and I think Kbin too
Votes federate with standard Like and Dislike activities which are part of Activitypub. It's just that some platforms like Mastodon can't handle Dislikes.
It's not hard to identify if you're looking for it, they just use one instance, they aren't subtle about it, and they are only boosting a specific company instead of a variety of products and ideas.
Vote manipulation is hard enough to detect on Reddit where they have visibility top to bottom. I think this will become a major issue in the future.
This is on top of the already significant scaling issues votes are causing.
Other instances can cache the total count for historical reasons, to preserve lost instance vote counts, but keeping the full ledger is going to be a serious barrier to entry for hosters and a security (manipulation) issue.
A whitelist defeats the decentralisation and openness of a defederated system.
I think you're mistaken in your assumption it would be easy to identify malicious instances. Bots are notoriously difficult to fight, every time you block one method another workaround will appear.
They almost certainly already have vote manipulation tools for reddit that work via browser automation, because someone offered me money to build one 10 years ago.
Those tools and a handful of accounts+vpns would already be borderline undetectable without the access needed to see that 25 accounts always voted the same way.
At least on Lemmy, you have that access. Reddit not only makes zero effort to prevent it, they actively obfuscate the information needed to spot it.
I disagree. Reddit openly admitted to manipulating its upvote count to "deter bots", especially since it became apparent that the front page of reddit became a very lucrative position to be if you were promoting a product, service, or ideology. In the post API world of Reddit, it's more apparent than ever that votes are being manipulated to give users an illusion of activity that isn't actually there.
In fact, Reddit's manipulation was always as easy as paying someone to upvote a post a few hundred times within an hour of posting which in turn boosted it on the algorithm that displayed leading posts based on rate of activity instead of actual upvotes.
On the fediverse, being on the front page of an instance isn't nearly as lucrative, and being on the front of ALL of them isn't feasible. Even if one instance is manipulated, federation makes that effort null in seconds.
The fact these services aren't monetised, are volunteer-funded, and don't have the economic or advertising power as reddit does, really makes it harder for votes to be manipulated, let alone make someone want to manipulate the service.
Lemmy and Mastodon have issues with moderation but at worst the manipulation risk is nowhere near as bad as reddit. At best, it looks like corporate manipulation of social media is all but nonexistent on here. Let's celebrate that
Technically votes are public. Only UI is hiding them. Which should be resolved, one way or another.
Edit: there was a post with that here a few weeks ago. I understand that this isn't a real answer to your question. Maybe you find it with these hints.
Individual votes are federated but not by number but by user, so you'd have to set up fake users and then federate a vote from each of them.
That makes it rather easy to detect and identify and get that particular instance defederated.
Votes will still go from origin instance -> community instance -> other instance, be if the other instance has defederated the origin instance then it simply gets dropped.
If you use kbin you can even see who has made each upvote, so yes easy to then look for patterns of voting together and also at the profiles to see if the accounts looks like real people etc.
haven't worked with AP yet, but as a webdev I'm certain it's original server only. Syncing upvotes between nodes would be an insane datavolume and one hell to properly keep in sync to begin with.
Thanks, that's very informative. How does this work since ActivityPub can be used for other things, e.g., Mastodon? They ignore any "Type" entries that they don't support?