28 ms·
Have you thought about implementing a decentralized, user centric moderation system instead of electing mods? Like this: https://adecentralizedworld.com/2020/0
by TimJRobinson 6y ago
Have you thought about implementing a decentralized, user centric moderation system instead of electing mods? Like this:
https://adecentralizedworld.com/2020/06/a-trust-and-moderation-system-for-the-decentralized-web/ https://adecentralizedworld.com/2020/06/a-trust-and-moderati...
Would this work with Aether?
- rolleiflex 6y agoThe way it works in Aether is that we have a few rules on choosing what 'effective' mods you have on your view. From weakest (as in, most prone to be overridden) to strongest: - Default mods, which are either the creator of the community or those that are assigned by that person - Elected mods, mods which are chosen by the community. Election goes both ways, you can both be elected or impeached. For example, a default mod can be impeached by the election system, and that would render that mod a non-mod for you - Mods you've personally chosen. Choosing someone to be a mod for you is your vote in the election. So the system isn't 'enforcing' mods you haven't chosen onto you as a result of the elections. Elections only make the decision only if you haven't made a decision for that mod in either way — if you make a decision that is ironclad (for you, in your personal, local view), since nothing can override your personal vote for or against somebody. The more you vote in elections, the more you shape your own view of the universe. The article is long, but what I can see there that is not implemented in Aether is the transitive property of trust, instead of having a vote which is binary, he seems to be advocating for a 0 to 100 trust, and the idea that trust of the people you trust means something to you. (Let me know if I got this wrong). This is great in theory — and this was actually considered for implementation at one point. The issue isn't that it doesn't make sense but it is quite literally impossible to implement, since it makes it so that almost every trust decision made by someone on the network at some point in time affects almost all other entities, which leaves you with an almost entirely 'dirty' graph that you have to traverse in entirety and recompile. This can be done on a centralised service since there is one graph to compile and everyone submits to it. However, in Aether, what we try to do is that we try to keep the graph compilation part on the user end, both because it's a P2P network, and also because custom graphs compiled on the client end is what allows the votes to be able to modify the graph structure itself. That sort of gradual outflow of trust across a social graph making decisions on what to show or not show for every single piece of content is an intense amount of computation to do for every new modification to the trust gradient.
- TimJRobinson 6y agoThat makes sense. With the trust system described trust is only calculated for you personally rather than calculating how much everyone trusts everyone else. From the benchmarks [1] of a simple naive JavaScript version is can recalculate one persons trust in a huge network in just a few ms. With partial updates when new ratings come in it could be done even faster. 1: https://github.com/adecentralizedworld/decentralized-trust-demo/#benchmarks https://github.com/adecentralizedworld/decentralized-trust-d...
- rolleiflex 6y agoYeah — trust level is only one component of a multivariate calculus that we call graph compile. So it's very possible for the trust only to take milliseconds when it's the only thing you compile with objects that only carry trust, but Aether compiler also moves the content around too. To give you a sense of the real world results, our initial compile takes multiple minutes even with binary (0 or 1) trust, even if only a vanishingly small portion of it is actually calculating trust. If an object is made dirty, regardless of the reason, it has to be touched, loaded into memory and processed. The disk is where you it the bottleneck. If your dataset fits into memory (mind that Aether has to work with computers with 4gb of RAM) then yes the whole thing is milliseconds. But once you start to do sequential reads on what might not even be SSD, you want to avoid any sort of dirtying if you can. Gradient Trust is one of the worst offenders in that almost any change to it dirties almost the whole graph.
- the_duke 6y agoHow do you mitigate voting fraud? It would seem very easy to just create a lot of accounts to vote or trigger impeachments (if that is a thing).
- rolleiflex 6y agoWe have proof of work to rate-limit spam (of both content and signals), and there would be no reason for anyone to spam the network (for votes - for other things there are plenty of reasons) because anyone can get exactly the moderation they want by picking out their mods. Elections cannot override local selections — they exist as 'recommendations' to the local user, in the case the user has not made a selection. That said, there is still quite a bit of power in controlling the view of those who can't be bothered to make a decision, so we make it so that an election vote only counts after the user actually first posted in that community 2 weeks ago. So if there's a flood of new votes, the mods can temporarily suspend voting process. Lastly, the elections are not mandatory for all communities, so if a community is created as a 'monarchy', for the lack of a better word, the elections are not applied by default. This makes it so that there is no incentive for mods to keep 'temporary suspension due to vote flood' state indefinitely, since they can just switch to monarchy if they want to do that. Mind that in that case, the user can still make choices, or even enable elections - the only thing that would change is that the default user would not get election results applied to the default mods. But if that user wants, it can still enable elections and vote, and by enabling that it would get the election results applied — but due to his or her own explicit choice, not by default.