Sort:  

IMHO, n*log(n) will be only meaningful when its even-point with n is much higher than single whale's voting power or just higher than several whales, such as 35,000 MVESTS (which is higher than three biggest whales MV). However, I think that this superlinear system is still perceived negatively by non-whale new users because the system is still disadvantageous against them.
Linear system is the simplest and socially acceptable than any other superlinear system. What we only need is to address self-vote, but which can also matter and can be even worse with the combination of superlinear system and concentrated stakes (e.g. whale's self-voting or sockpuppet voting)

What do you think of the idea of max(n-threshold,0). This is linear but with a shift that means pure self-voting is somewhat penalized and some number of the least-voted posts with only small (including spam) votes won't be rewarded at all (as opposed to a small amount). The latter will also reduce the volume of rewards processed by the blockchain.

One way to set threshold is as a function of voting, so for example 20% of the average votes on a currently-active post (20% might be a completely wrong number to use). That is easily computed by the blockchain.

I thought the same idea of setting a threshold and I am strongly for it.
Making threshold as a function sounds really good idea!

To be more specific the blockchain currently keeps total_reward_shares2 (total vshares for active posts) and computes payout using total_reward_fund_steem*vshares[post]/total_reward_shares2. We'd need to replace that with total_reward_shares (not squared) and add active_posts (counter).

Post payout would then be total_reward_fund_steem*max(vshares[post]-total_reward_shares/(active_posts*N),0)/total_reward_shares (N here sets the threshold; 20% would be N=5)

EDIT: unfortunately this won't work to allocate the entire reward pool at the correct rate. More refinement needed.

Great. It would reduce self-voting issue a lot while addressing fairness issue.

^ i think i like this better than n log n, though i see either as superior to the current method.

Credit goes to @anonymint who mentioned it on bitcointalk i think.

I had a somewhat similar idea but with standard deviation. That is to say, you set X standard deviations below the mean as

The potential problem i see with this is a spam poster could flood the bottom 20% with a sock puppet account (like when iloveupvotes or matrix dweller were going nuts)

Standard deviation is going to be a lot harder to calculate on the blockchain but variance would work. In my proposal it is the bottom 20% by stake votes (or equivalently reward pool), not by post count. I don't think sock puppet voting that way is effective. However, just flooding the system with empty posts will reduce the average, so you are right some further refinement on it is needed.

Standard deviation is going to be a lot harder to calculate on the blockchain but variance would work.

Really? im kind of surprised. Standard deviation is just the square root of variance. I think it could be workable with variance though

Standard deviation is just the square root of variance.

Blockchains need to produce 100% deterministic repeatable results. Most practical implementations of floating point math functions such as square root have allowable rounding error that depends on the implementation. It is possible a deterministic approximation of square root could be used, but mostly the practice in blockchain code is to just avoid anything that is floating point (Steem currently uses none afaik). Similar problems exist for the suggestion to use n^1.2 or n^1.5. n log n works well because floor(log_2) (or some variant) can be used for 'log' and that is an easy integer function.

wow you learn something new every day. not that i necessarily understand what i learned. but no square roots or decimal exponents.

Can you please explain how voting curve penalize self voting? I don't get it.

Because voting on something that no one else votes for results in a much smaller reward, both content reward and curation reward.

If you look at the universe of posts, some with consensus voting from many stakeholders and some with just self-voting, the ones with consensus voting will earn the predominant portion of the reward pool under a superlinear curve. Self voting will still earn something, but it isn't much. Under a linear system, self-voting earns proportionately a lot more.

Yeah but someone who wants to vote for himself is by definition not going to vote for anyone else so how does this curve encourage someone to change his behavior and stop upvoting himself? Still don't get it. Sorry

If you look at the universe of posts, some with consensus voting from many stakeholders and some with just self-voting, the ones with consensus voting will earn the predominant portion of the reward pool under a superlinear curve. Self voting will still earn something, but it isn't much. Under a linear system, self-voting earns proportionately a lot more.

Ok got you , so it reduces the vote. How is consensus voting calculated ? Wouldn't someone with intention to self upvote just create lots of sockpuppets to upvote too?

I don't really think this feature is useful to be honest as users who self vote themselves without consensus are very easy to spot and downvote.

Someone with a large stake could split up his account and upvote and get consensus no? Do you know the exact calculation formula?

No. Someone with a large stake doesn't need consensus. The idea at the time seems to have been that large stake users would police each other, and smaller stake users would have votes so weak that they couldnt abuse the system significantly on their own.

No. Someone with a large stake doesn't need consensus.

Not saying that. I'm talking about the n^2 curve formula, someone could just split his account and not be penalized as it will look like there is consensus voting.

nesting

Consensus is based on steem power, not the total number of accounts using it (which is part of the problem with n^2). So if i have 10K steem power and you have 30K steem power, your vote is worth 9 times more than mine, because you have more consensus. You don't have to split your account into 3 10K accounts to get the bonus its already there.

Then how does it prevent self voting? It looks like the feature just penalize every post that have a small weight but don't discourage self voting at all.

[nesting]

Yeah but someone who wants to vote for himself is by definition not going to vote for anyone else so how does this curve encourage someone to change his behavior and stop upvoting himself? Still don't get it. Sorry

Harm reduction

There is nothing inherently wrong with voting for yourself. In fact the system autovotes by default whenever you post! The idea is to minimize rewards for anyone who does this and doesn't get other votes.

[nesting]

How is consensus voting calculated ? Wouldn't someone with intention to self upvote just create lots of sockpuppets to upvote too?

It is stake weighted to splitting up stake changes nothing.

I don't really think this feature is useful to be honest as users who self vote themselves without consensus are very easy to spot and downvote.

Fair point, although as the system gets large there is a reasonable argument that no one is really going to invest in doing that enormous amount of work. Sites like Facebook pay teams of people dedicated to handling hardcore abuse (such as posting child porn). Adding self-voting reward abuse to the task makes it even more challenging. In Steem there is no incentive to do any of this downvoting work. It is somewhat viable now with 1000 posts/day but with millions or billions of posts per day who is going to do it?

WIth millions or billions of posts (and therefore millions and billions of users voting all the time) , the self upvoter wouldn't be able to have a significant impact on reward pool distribution, even with a linear model.. there would be too many other votes being cast.

With billions of users, assuming the whale population increased at the same rate as the rest of the population, i don't think even a whale of comparable size to the ones we have now would be able to make much of a difference by himself.

It is stake weighted

Someone with a large stake could split up his account and upvote and get consensus no? Do you know the exact calculation formula?

Fair point, although as the system gets large there is a reasonable argument that no one is really going to invest in doing that enormous amount of work. Sites like Facebook pay teams of people dedicated to handling hardcore abuse (such as posting child porn). Adding self-voting reward abuse to the task makes it even more challenging. In Steem there is no incentive to do any of this downvoting work. It is somewhat viable now with 1000 posts/day but with millions or billions of posts per day who is going to do it?

Lots of people run bitcoin full nodes to verify transaction, they have an incentive to do it because they have a stake in it and it's their best interest that the system is working properly because it increases the value of their investment.

One thing this debate has revealed to me... is that lots of people seem to think the best way to increase the value of their account... is by behaving in ways that earn them more STEEM rather than by behaving in ways that raise the price of STEEM.

This is exactly what I think people need to stop thinking in term of more steem but in term of raising the price of it.

Users will downvote content because it will make the value of their steem more valuable. Downvoting abuse, means more rewards for genuine content, which means more value in the platform.

It can also make it more 'fun' for there to be some posts that are making a lot compared to the size of the reward pool. Even with n^2 today, we are pretty much only getting a few $200 posts per day out of a ~$7,000 reward pool. I worry that if it were a purely linear equation, the rewards might be too flat.

n log n seems reasonable to me (though ill be honest, i had to look it up when you first mentioned it) Im trying to figure out mongoDB right now to get a full days of posts and simulate what their rewards would have been under a linear system, n log n and a couple of other possibilities (one based on standard deviation also, and a hybrid one with starts out n^2 and has decreasing superlinearity).

One of the great things about changing reward curve is that, iiuc, its already designed to be somewhat motile (kind of like the regeneration rate, its just there defined on one line). You still need a hard fork, but its as easy as something that requires a harfork can be.

Yes, agreed. If you would be able to generate some awesome data, that would be awesome!