(This used to be a longer post, but it got eaten by a goat at submission time, so second time I'll try making it shorter and faster.)

The idea is obviously inspired as an alternative to the now-dismissed limits based on SCP and CCPs, and it goes like this: every user has a web of trust, on which other users go up/down the chain based on the upvoats/downvoats they receive by said user. Trust manifests in the form of a higher weight given to contributions and up/downvoats from the users.

EXAMPLE: assume that the weight is given by the ratio between up/downvoats given to total up/downvoats given. User A has given 20 upvoats totally, 10 of which to contributions from user B. B weights +50% for A. User B has given 100 upvoats, 10 of which to user C. C weights +10% for B. By network effect, C weights +5% for A. User B writes a post that has 23 total raw score, including an upvoat from C. User A sees the post with 23.55 total score.

Benefits of this mechanism:

- it encourages contributions (only way to move up/down in the web of trust);
- it reduces the impact of vote-only sock puppet accounts;
- it reduces the impact of brigading over the longer term.

Issues:

- most important, computational/storage cost; even though the web of trust is typically rather sparse, there's still the potential for 10^12 combinations needed to store it for 1M users;
- brigading effect still visible to newcomers/logged-out users; this might require a ‘global’ web of trust built from the individual users'.

Non-issue:

- circlejerking shouldn't be more of an issue than it is now, and its effects will still be limited to the circlejerkers.

This is obviously just a quick draft, but I'm throwing it here because I'm sure Voat collectively can improve it faster than I can on my own.

EDIT #1: here's a mathematical formulation of the proposal, hoping it will make things clearer.

Call V the matrix where V(i,j) is the (normalized) number of ups/downs user i has given to user j (i is the row index, j is the column index). Call W the matrix where W(i, j) is the weight user i gives to contributions by user j.

V(i,j) is known, and has 0 on the diagonal. The diagonal elements of W(i,j) are 1, and the off-diagonal elements are the unknown weights we want to want to compute.

The weights should satisfy the relation that W(i,j) = sum W(i,k)*V(k,j) (i.e. the sum of the opinions of user j by all users k, corrected by the weight the opinion of user k has for user i). The right-hand side is just W.V, but keep in mind this only holds for the *off-diagonal* elements. The definition of W is thus the solution of the fixed-point equation

```
W = W.V + (I - diag(W.V))
```

where `I`

is the identity matrix of the correct rank and `diag()`

is a function that returns the matrix diagonal (in practice, what the expression in parenthesis is doing is to replace the diagonal of W.V with the diagonal of the identity matrix, to give 1). I'm currently looking for a simpler expression that wouldn't require sophisticated algebra packages to quickly find a solution.

## Sort: Top

[–] ttyy 0 points 3 points 3 points (+3|-0) ago

I don't think you come across users all the often more than a few times for this to be useful. I think it would be really cool to see how many time you upvoated a person though.

[–] bilog78 [S] 0 points 2 points 2 points (+2|-0) ago

(WTF, now it ate my reply without even giving me the goat?)

The network effect

shouldbe able to compensate for that, as like-minded people are likely to upvoat each other, if not directly, at least in a criss-cross fashion. Of course, how much useful it would be largely depends on the weighting function used. Individual vs total upvoats given is just an example. One could consider also a fixed extra % for each upvoat given, or any number of other possible functions.[–] nicky_haflinger 0 points 2 points 2 points (+2|-0) ago

It definitely will in large node networks random graphs become connected amazingly quickly. This would essentially PageRank voats on an individual basis. Storage could be mitigated by limiting effects to top positive/negative as some function of total user base. Not much more that a few hundred gigs of data even after complete world signup.

[–] kevdude 0 points 2 points 2 points (+2|-0) ago

LMAO at "giving me the goat". That should really be a thing on this site. Like a phrase we use for shit, you know?

ie "Hey don't give me the fucking goat! You know what I meant!"

[–] Seansean 0 points 1 points 1 points (+1|-0) ago

I enjoyed this so much have a downvoat with my 5 ccp. Jk just seems like everyone is getting worked up over nothing .

[–] bilog78 [S] 0 points 4 points 4 points (+4|-0) ago

Well, there are legitimate worries about the possible abuses of the simple up/downvoating system without any form of checks and balances, and it just happens that, this web of trust thing is something I've been thinking about for a while, actually (

ahembefore Voat even existedahem), so I thought this was a good opportunity to try and give it a go.[–] Seansean 0 points 1 points 1 points (+1|-0) ago

I do agree with you, just giving u a hard time. Maybe a laugh. I know this is a huge problem with other sites.

[–] weezkitty 1 points 1 points 2 points (+2|-1) ago

It seems really complicated and hard to understand. It would probably be similarly difficult to code.

A quick tip: If you get a "verifying your bits" message when you hit submit, you can usually recover it by pressing back. At least on firefox

[–] bilog78 [S] 0 points 1 points 1 points (+1|-0) ago

Wow. And this is actually the simple version (the complex one weights other users based on

commonup/downvoats). Is there some aspects that you find particularly hard to follow? Maybe I can explain it better.It would actually be relatively straightforward (it's very simple to express in mathematical terms, and for the little I know about the structure of the database, all data is already there).

The problem is, I realized it too late (I had switched to another tab right after pressing submit, and when I got back it had already irrecoverably lost the post 8-/)

[–] something_went_wrong 0 points 1 points 1 points (+1|-0) ago (edited ago)

I'm a little confused too. Maybe it doesn't matter for calculations, but some voting numbers might be missing. Missing voating patterns for user C, and also not sure if user B ever gave any voats to user A or were those 90 upvoats given to any other use

exceptA. Here's what I gather - top header row for the user giving a voat, and rows for each person they gave votes to:edit: or better yet, how would this below random voating history play out when B's post is 23 real points, C already upvoated it, and A is now viewing the post?[–] EIMR 0 points 0 points 0 points (+0|-0) ago

It is certainly interesting, though I do think that circlejerks would be even worse. However, I don't think that this should be official. It would be better if it was an independent plugin or application.

[–] bilog78 [S] 0 points 0 points 0 points (+0|-0) ago

But mostly to those within the circlejerks themselves. Say that you come across a post or comment that is obviously circlejerky. You downvoat it (as circlejerks aren't exactly contributing to the conversation, typically), and that single downvoat weights down all contributions from the circlejerkers (for you). So I think in the longer run it would smooth out the circlejerk effect from outside the circlejerk.

Even assuming the Voat API gives access to all the information (which I don't think it does, actually) it'd need to make too many queries and compute too much stuff to be practical if not implemented in Voat itself.

[–] EIMR 0 points 0 points 0 points (+0|-0) ago

I'm not so sure, it would also bring down all contributions with the same opinion, as circlejerkers vote each other, though it may smooth out as you say.