Yet Another "Proof-of-Worth" Post

in #steem7 years ago

After some more discussion and considering some of the pros and cons of the two models I proposed in my last "Proof-of-Worth" post, I have thought about ways to find a vote verification scheme ("Proof-of-Worth") that addresses some of the problems the last two did not. This post will detail another form of "Proof-of-Worth" that is flexible to these concerns.

For those you have no idea what I'm talking about, I highly recommend you read the previous post which has some helpful examples included.


fantasy-2701633_640.jpg


Consider the following example: A malicious whale that understands how "Proof-of-Worth" works and divides his account into 10 smaller ones. His $200 vote is now worth $20 smaller votes. He then is able to vote on posts and comments how he pleases as the smaller votes are easier to verify and he maintains the values of his votes for the most part. Let's call him Sneaky Sal.

n% Proof of Worth

With simple proof-of-worth and extended proof-of-worth, these algorithms detected outliers and removed them. Sneaky Sal here is attempting to mask his votes by making them smaller and closer to other votes for that post. In order to prevent this from occurring we introduce another "Proof-of-Worth" alternative.

n% Proof-of-Worth: Sort the list of votes in ascending order. In order to receive the full rewards from any vote, the sum of n% of the smaller votes starting with the smallest must be greater to or equal to the largest vote. In the case where the vote is larger than this sum, the value will be reduced to the sum. This applies to the largest vote in the simple case and to the upper 50% of votes in the extended case with penalties applied after calculation.

The two algorithms described in the previous case were 100% "Proof-of-Worth" algorithms. Here we make that value variable in order to flexibly determine how strict of vote verification we want. Higher percentages are less strict and lower percentages are more strict. In our case, we will look at 50% Extended Proof-of-Worth. In the case where there is an odd number of votes, we round down (17 proceeding votes = 8 validator votes).

A post already has 100 minnow votes with each vote being 1 cent. Sneaky Sal knows that with Extended Proof of Worth, he will only lose the value of one of his votes, but the other 10 are preserved. This seems like a reasonable cost to upvote one of his favorite whale pals. In normal extended "Proof-of-Worth" all the proceeding votes are used to validate the next one. Thus, the first $20 vote will be penalized but that vote will verify all remaining votes. In this case, a post normally worth $201 is now worth $182. Had Sneaky Sal only had one vote, it would be worth $2.

But now we look at the smaller 50% of the votes rather than all of them when validating the votes. In this case, all of the minnow votes are fully validated, but Sneaky Sal's votes are never validated by himself. Thus, he loses a majority of each of his votes. His first vote is reduced to 50 cents and his last vote is reduced to 54 cents. The post is now worth $6.20 rather than $182 from ordinary extended proof of worth.

But what about comments? What's stopping Sneaky Sal from simply upvoting a comment with his ten votes? None of the aforementioned methods seem to handle this abuse very well. But when n is less than 100, we discover a very interesting property of "Proof-of-Worth" that may or may not be desirable.

Flag By Upvote

In 50% Extended Proof of Worth, any user can simply cast a small upvote in favor of Sneaky Sal and then reduce his rewards due to lack of validation from the population. Let's say the community finds Sneaky Sal out and want to punish him. Some users can flag Sneaky Sal while others simply upvote Sneaky Sal in order for the validation to work on smaller up votes.

Thus, we have a community based solution to reward farming that allows users to profit off their curation in times where there is simply disagreement with the rewards.

If we have ten minnows with a 5 cent upvote each, then Sneaky Sal's self upvoting is reduced from $20 votes to around 25 cent votes. This becomes easier to flag and eliminate abuse.

But some may argue that such flagging by upvoting is a flaw. I find it to be a rather interesting quirk that helps to eliminate the threat of division attacks where a user simply funnels the money into other accounts in order to validate one's self.

But ultimately potential other problems crop up when we take this very strict position on vote validation and such positions may be undesirable. Just imagine all unintentional "flagging" by upvote. So, I'm kind of dismissing this whole idea, but I thought it was worth the time to consider a different idea. But now to a more compelling idea.

Proof-of-Worth via Validation Sets

All solutions to this point, Sneaky Sal has ways of being sneaky enough to get around. Although the last one provides a potential community solution to Sneaky Sal, it also comes with loaded with potential undesirable consequences. This last proposal sneaks to remedy the idea by creating a validation set and then using the validation set to validate all votes a post or comment may have.

Validation Set: First, we get a subset of the votes that is used to validate the full set of votes. Once we have the subset of votes, we subtract the smallest vote in the set from every other vote in set. These new values now compose the validation set.

While it may appear that earlier iterations of Proof-of-Worth had validation sets, we never took into account subtracting the smallest vote from all of the other votes. The reason for this will be clear in a moment. For the following examples, we will build our validation set by selecting values at or less than the vote average.

In the cases where the validation set is one or zero, the value of the validation sum is zero and the rewards are not paid out. There are cases where this remains undesirable. Thus, it is recommended that a validation coefficient be added as a very small number. We add this to the sum of the validation set and get our new validation amount. This is to avoid minnows that get very little votes from not receiving rewards.

So, let's look at an example provided in the last post. There are seven voters with vote values of $1, $1, $3, $5, $80, $100, and $120. The total value is $310 before validating votes. The average is around $45. So $1, $1, $3, $5 make up our validation set. We subtract the lowest value, we get $0, $0, $2, $4. Thus our validation sum is $6. For any values above $6, they get reduced to $6. Thus, the total rewards given by this post are reduced to $28.

But what about Sneaky Sal? He votes for himself in secret using his 10 $20 upvotes. Well, his valuation sum is $0 plus the validation coefficient. Now instead of nice size upvotes, he receives minnow upvotes instead and the reward pool remains mostly intact. But let's say Sneaky Sal is smarter and tries to optimize the sum of 10 upvotes by distributing the cash around. He sets one vote to nearly zero, and one vote to be a little bit bigger than the sum of his other 8 votes. Through this method he makes around $112.50 through voting abuse. This number is significantly smaller than the potential $200 he got through alternative methods. Which makes it easier to flag and resolve.

One may argue that Sneaky Sal could continue to subdivide the number of accounts in order to maximize his rewards and hide any outliers. But such action would ultimately begin costing Sneaky Sal as his influence would be more divided, time and money would be spent on alternate accounts, and his votes would be less effective as votes are expected to be downshifted in HF20. Thus, we shouldn't expect anybody to infinitely divide their power.

Other variations of building validation sets include random selection, using the median, or using a preset number of the smallest votes. The reason I used the average was just to provide an example of the power of validation sets to validate and perform "Proof-of-Worth" on the votes.

Anyways, thanks again for reading. As always free feel to leave a thoughtful comment on the post and I will be sure to give a response to it. I'm still a little unsure about which of the four algorithms is my favorite and am curious to get your input as well. Have a great day or evening.

Sources:

Image

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 59538.61
ETH 2658.79
USDT 1.00
SBD 2.45