This started off as an article. It then grew into something like a mini whitepaper. I then thought that most people would prefer to read a brief summary. So, in the end, I just wrote the summary! This is what you will find below. Remember, these are just ideas for discussion, with the best interest of the whole community.
Summary of Ideas for Future Rule Changes
The Steem blockchain is a game theoretic construct. Its rules are encoded in the rewards algorithm. There is no blockchain without rules.
The primary objective of the rules should be to maximise social benefits by maximising the sum of individual benefits.
The rules must evolve and become more complex so that each iteration of the rewards algorithm should converge towards the aim of maximal social benefits.
Humans are complex and therefore will adapt their behaviour to maximise their own personal gain - this cannot be totally eradicated from the game.
The so-called Prisoner's Dilemma is a very real phenomenon in social behaviour. Put in terms of social interactions, it states that the equilibrium point is the point at which everyone acts in their own self-interest. But such an equilibrium point is not the optimal point. However, for any one individual to change behaviour unilaterally from one of self-interest to one of optimal social interest is not in the individual's own self-interest. That is the crux of the dilemma.
Just to drive this point home: the sum of individual benefits is lower in the Nash equilibrium than it is in the optimal scenario.
The best that can be achieved, in the game theoretic sense, is to make optimal social behaviour more attractive than the sub-optimal equilibrium point. This must be encoded in the rule-set, the algorithm, and cannot be expected from mere behavioural changes because the Prisoner's Dilemma is a powerful disincentive.
Blockchains are designed to be trustless interactions meaning that the Nash equilibrium point will prevail over the optimal point unless encoded in the rule-set.
The components of a rule-set should not be looked at in isolation but rather as a whole. It is the social interactions, the feedback loops, that govern the success of the whole rule-set towards achieving the optimal social outcome. The balance between rewarding rules and punitive rules should always be to increase the likelihood of such an optimal environment.
Each iteration of the rule-set will create short-term instability until a new normality prevails. This is just the nature of complex systems. Hopefully, each iteration will increase the probability of achieving the primary objective.
Now we can look at some concrete proposals. As Hard Fork 20 (HF20) has already been planned, these could be considered for HF21 or beyond.
The reward curve should remain proportional to R, the number of rshares associated with each post or comment.
Self-voting and voting cliques cannot be eliminated. Indeed, for curators self-voting can be important in triggering votes from their followers. It is also a waste of social power to spend considerable time on negative interactions at the cost of more positive ones. Therefore, there can be a rule that voting for the same user, whether oneself or another, will decrease the power of each subsequent vote, within a limited period. For example, take the last 10 votes of a user and, if a new vote is given to a user already voted then that new vote may be worth 90% or 80% of what it would normally be. This can be scaled down to the point that further votes have even less value. I repeat, this will not stop such behaviour but will decrease the reward pool that it generates and therefore mitigates some of the effects on the whole system.
The good thing about algorithms is that they are predictable. The bad thing about algorithms is that they are predictable. Life has a lot of randomness in it. We cannot wholly predict the future and there are both good and bad surprises that happen every day. Surprises in terms of the rewards algorithm means that a small proportion of votes will see either an increase or decrease in value. This is one simple technique to, again, incrementally shift behaviour towards an optimal outcome. This will increase social interaction and encourage meaningful communication with multiple other users. This may be counter-intuitive but combined with (13) has the effect of increasing earnings through interaction rather than treating voting as a kind of mining technique. That can still be done with adjusted income expectations.
The drain on voting power should be decreased from 2% to 1%. It should also be clear in the User Interface (UI) such as Steemit what one's remaining effective voting power is so that newbies do not drain their power by accident. Voting at 100% power, the 2% drop per votes, and the 20% replenishing within 24 hours, means that each user has just 11 votes per 24 hours without losing power. Voting at 100% power and a 1% drop per vote results in 23 votes per day. If a user decreases their voting power to 50%, then the 2% and 1% drops yield 23 and 45 votes respectively. But minnows only have the voting slider within chainBB and not on Steemit. As mentioned by @aggroed (in an article by @timcliff), minnows especially are engaging less and somehow hording their power hoping for worthy content. It also increases the percentage of self-voting as there are then few votes left to distribute to others. I do not think the change to a 2% drop in power per vote has improved the primary objective and I hope this can be changed as soon as possible. There will be a drop in average earnings per vote but that just means each individual is interacting with more people.
The formula to calculate rshares must be then adjusted so that (15) does not drain the reward pool - I'm not sure why this part of the rule-set was not adjusted at HF19.
I think that is long enough for now! Your comments appreciated and please read the entirety of the article as some sections interact with other sections. I have numbered them for ease of reference and not their relative importance. Any glaring errors, please point them out and I will amend the text.
Thanks for reading!
Please leave a comment.....
Thanks for the post. Pretty technical for my taste, it felt like reading another language. But the little my small mind could grasp agrees with your proposal of a diminishing return (is that even the right term? lol) on repeated votes for one account. Sounds like a good idea to me. Reducing the voting power from 2% to 1% also sounds good to me. 100 votes worth nothing are worthless with either 2% or 1%. I rather have more interaction.
But the biggest hurdle is the UI: Even though I love the clean look of Steemit, it is rediculously simple for such a complex website. I mean at the moment posts get lost in the clutter after a few hours and are practicaly worthlesss then. That is a huge bummer and the biggest demotivatinal factor.
I am a professional content creator for ten years now. When I write a tutorial I write it to last. Maybe for years or even decades. Steemit doesn't support this thinking at all. On the contrary: For the first time in my life I ask myself how can I create an article with the least possible effort. Just because the system pressures me to do so.
Thanks. In this ecosystem, these ideas need more exposure with resteems and to convince enough witnesses to support any changes in algorithms.
Your other point is true - my articles have been getting shorter - one idea, a bit of humour and maybe a follow up link.
I use chainBB forum for nearly all my comments and voting - https://beta.chainbb.com/
It promotes comments rather than earnings. Have a look.
I already use. But recently I got the slider on here and since then use it less.
what about you make the post partially available after the payout and you have to pay whit an upvote to read the complete content of the post. even a sticky section on the profile would be awesome.Just thinking out loud but you get the idea.
Good post.
15 is not necessary though. I explained why in my post, but I'd a user wants the behavior that you described they just need to vote 20 times per day instead of 10, and keep their voting power 'recharged' at 50% instead of 100%.
I don't think a change is needed for 16. As far as I know it already works this way.
What about 13? I feel like that is the most radical thing here and the most interesting
I really liked that.
I brought it up with a few people, and the concerns that were raised were people just creating 10-20 (or however many would be needed) sock puppet accounts to get around it, or creating vote buying/trading hacks. Basically if you go after the people who are abusing the system, they will just adapt and find a new way to do it.
Glad to hear that. If it were to even be considered for the light of day it would have to have serious witness support.
I agree, abuse cannot be stopped. This is wisely noted in the whitepaper, where it's said that as long as abuse isn't rampant it's more or less okay. I feel like @rycharde 's point 13 is something that would raise the barrier to entry to serious abuse to be quite high. Managing that many accounts would take significantly more effort than always up voting yourself for example, or even just voting for your friends.
However it's not just about abuse, far from it. It's about encouraging the majority to vote outwards and to a variety of other posters. So for me it's a question of balancing the incentives around a vision of what kind of place we want to see and how to reward it.
Thanks for your comments. Yes, read your article and the mathematics is correct - I'd not considered it in that way as I myself do a lot of curation so find it useful to use the sliding scale and keep my effective power as high as i can.
So, in your opinion, is there a way of taking something like (13) and (14) forward so that they can seriously be discussed for possible implementation?
I am still looking at how to define the "success" of the overall platform so that any proposed new algorithms should, on average, improve that "success".
Thanks again.
I've tried to push for your idea, but there seems to be a lot of resistance. To start with, you'll want to try and get a few more stakeholders on board. Not sure if he will have time to discuss, but you could try hitting up @jesta on Steemit chat.
Thanks, yes have chatted to @jesta before and he's been very helpful. Haven't as yet had a response on this issue, will try the chatrooms again.
It is difficult to balance the positive and negative algorithms - sometimes they are just not symmetrical, so that trying to invert the algorithm by, say, to improve rewards for collaborative exchanges compared to small cliques runs into other problems of scaling up rewards (potentially with no ceiling) rather than scaling down self-voting/clique-voting behaviour which has a natural floor. Don't know if that is clear - so one has to sell the positive effects of what appears to be a punitive algorithm when it's aim is to encourage positive behaviour.
I like the idea to impose a penalty for repeated votes for a single user. Not sure if it's feasible at scale or not, though. I also like the idea to display remaining voting strength in the UI. Otherwise I'm neutral. I don't think the system and community have had enough time to adapt to HF19 to really know what changes are needed, and I think development priority should focus on UI improvement before blockchain rules.
Thanks, perhaps you're right about timing, but I was not active for the pre-HF19 discussions so floating ideas to see what sticks. The decrease in same-user-votes power will not really affect friends, that's important too.
What do you mean here? I think it would be possible to implement, but are you talking about knock on effects maybe and not just technical implementation?
Walking the voting graph every time a post pays out seems like a lot of computation. My gut feeling is that it might not scale to the sizes and speeds that they want to reach with steem. I could definitely be wrong though. I haven't thought it through carefully or read the code. It's just a guess.
Update: I guess you'd do this at voting time, not payout time, but the concern is the same. My gut feeling is that it would turn an O(1) operation into an O(n) operation. With the number of votes that are placed, that might slow things down too much.
No it would remain roughly O(1), the look up does not grow with the number of votes to place, it's constant size per user. The implementation would be like a FIFO queue of size N, @rycharde suggests N = 10.
steemd uses a local DB to cache information, as far as I have seen from very cursory glances. The real cost would be a fixed size increase to the cache per user. As we scale this could have a big impact of witness server resources and might be an argument against it. But then again this is the job of a witness and if it's a needed feature they (we I guess!) will have to step up.
Ah right, I forgot the post suggested tracking the last 10 votes. I was thinking of all votes within a time period. The problem then becomes - what if the person self-votes 100%, then places
-9-10 other votes at 1%? Maybe you only add the vote to the queue if the vote percentage is above a certain threshold?I think simply multiplying by the weight would be the most effective instead of using a threshold.
Perhaps you have an opinion @rycharde?
Really interesting ideas and I think it's a huge contender for dealing with the self voting problem. It's also very comprehensive because it simultaneously changes the incentive for so-called "circle jerk" behavior, which is a similar issue to self voting via other accounts (sock puppets).
Looking forward to hearing more debate on this but at present I actually think this is the best idea going for a blockchain system level solution to self voting.
💯 😎
Brainstorming: I wonder what would happen if you just discard the highest value vote and lowest value vote and calculate the post's payout based on the remaining N-2 votes (but still give curation rewards to all voters). This is how they scored kata in my son's karate tournaments.
I have used this technique in the past but it works when people are voting up and down, or giving stars out of 5. To stop gangs both upvoting and downvoting, I shaved off the top 10% and bottom 10% and calculated the average from the middle 80%. However, this algo was kept secret from users ;-)
In this case, I wonder if the loss of a genuine large upvote is too much of a price to pay.
Thanks for your thoughts.
Interesting. I'll think about this. Also really interesting that it has an investigable use already in Karate.
My first thought is that it would be effective in reducing the reward on gaming. That largest account in particular will lose its voting power on this, which would be the highest SP sock puppet account, and wouldn't seem attractive to someone trying to maximize their take, they might just get back into curation.
Second thought is that people, especially minnows, will probably bemoan the loss of that largest vote. It may make the idea seem like more elitist meddling.
Okay last one, third thought is that I wonder what the psychological effect on whales will be when they come in to gift a post with a high powered vote which now has no effect. The UIs will need to be updated, but if a new vote is the highest vote the estimated payout would not change!
Assuming the post had 2 or more other voters, the estimated payout would still change, but the new value would be based on the value from the previous highest voter, so yeah - it would be a very different experience.
Maybe there's not really much of a point in removing the lowest value vote in this context. If you remove just the highest, it might work out to be something like a second-price auction. I don't know much about them, except that they're used for digital advertising by Google and others. However, according to this link:
This doesn't sound appealing to a minnow who's biggest vote is booster, or if they are really lucky, a
Dolphin/whale who is interested in what they read/see.
Yes, voting-for-self and voting-for-the-same-other are the same thing in this proposed algorithm.
It is also an important point that such behaviour cannot be totally stopped - there are also some legitimate reasons for it - and so the algo does not try to stop it, just to reduce its effect.
Sure. To me reducing its effect is completely enough. Right now it's out of control.
I have to admit, I'm one of those minnows you mentioned, so perhaps I'm already inclined to agree with propositions from someone of greater expertise. That said, I appreciate the evident intent behind your proposed changes the rules of reaching a point of optimal benefit to all users, especially if individuals can help Steemit reach that point through choices made which also yield their maximum personal benefit. (This is how I understood your article through point 9.) Maybe I'm asking too much, but I am curious to learn: in #15, why does a decreased aversge payout imply an increased overall user engagement?
Hi, re #15, it isn't the drop in rewards but the increase in number of votes at near 100% power that is the issue. recently @timcliff wrote a good article (and he commented above too) showing that people can still vote as they please but end up operating at a lower average voting power. Strikes me as a perception problem now - we can juggle the percentage drop per vote and the rshares generated so as to produce the same overall rewards in dollars. I am ready to concede #15 if more people understand that they do not need to operate near 100% in order to be effective voters and commenters.
Re #9, yes, you're right. I expanded upon this in this recent article: https://steemit.com/steemit-help/@rycharde/predator-prey-equations-and-the-steemit-ecosystem
Thanks for your comments. upvoted comment.
thanks. This information is very interesting. I think you need lots of time to write this article.
Do you mean "free time"? I don't have much of that! :-)
Thank you Rycharde.
Although I don't understand the 'technical' details in your post - I could follow. I love the idea of UI showing the voting power details, that is required.
From encouraging the social behavior on Steemit, I have few thoughts, I am unsure how these can be accomplished from a technical view point but IF they are worthy of consideration, please consider.
Idea #1
Create some kind of button (like upvote) that users (ALL users) can use whenever someone supports them on this platform whether with constructive feedback or encouraging words or supporting them succeed on Steemit or being a coach/mentor or real world guru, all in a SUPPORTIVE SOCIAL BEHAVIOR Badge (It could also be called Supportive Steemit Behavior).
Each Steemian should be able to give out a maximum of 5 SSBs each day and should be renewed each day.
We create a grading system for SSBs that should somehow translate to their Reputation (and since reputation in turn drives other things, it should become a self-sustaining algorithm from there on!?).
It doesn't have to be too complicated then a simple 'Badge' that is available right by the side of upvote/reply space on the article as well as comments.
Idea #2
Build an algorithm that accounts for 'social media shares', outside of Steemit 'ABOUT' Steemit by the users with a weekly give-aways (we can have a bot do this automatically). These give-aways should be in VOTING POWER or REPUTATION points, not SBDs.
Everyone will sing praises of Steemit ON Steemit, it is the effort they are putting outside of Steemit to bring it in front of more and more social media users, that is what really makes a difference in the long term for Steemit as a whole (with Akasha on the horizon, this becomes a real need).
Idea #3
I have many more ideas that are NOT ground breaking but contribute little drops of 'change' to Steemit community which I will share depending on the above two are received!
Thank you for reading this long post. Appreciate your time and feedback.
Thanks for your thoughts. I think both ideas can be combined into some "social capital" index - I haven't thought it through fully but there may be a role for some non-financial interaction. Although i think people are quite good at giving thanks for genuine help - this often happens off-site in the chatroom.
I agree. I would be thrilled to contribute in a non-technical way to these initiatives! Just give me a shout!
And this social capital can be linked for on site and off site activities that contribute to overall platforms boost!
I really think this is a brilliant contribution and even if my comment gets lost in a sea of feedback here, wanted to state as much. There's a lot to read in the comments section too and I want to make my way through that, but I think what you have here is very valuable and I'd like to read more arguments for and against what you proposed.
It's a long read and technical, but necessarily so - thanks for putting all this together.
Thanks a lot for your comment. As the "expiration date" approaches, I wonder whether to make the suggested protocols easier to understand with more examples and scenarios. That won't stop people continuing to comment on this post.
Yep, I think that would be good. A couple lines explaining each so as to help us newcomers better understand. You're definitely on to something given how much commenting is going on - which is exactly what we want!
I did also write this: https://steemit.com/steemit/@rycharde/steemit-neo-and-the-architect-the-solution-to-an-anomaly
But I suspect the metaphor didn't quite work! I need to be less subtle.
Great food for thought. I like some of your suggestions. I recently wrote a post suggesting the possible splitting off of flagging into it's own flagging power from voting power. I feel this is necessary to make flagging an activity that isn't self-punishing more than it needs to be.
Yes, the fear of retaliation even though doing something to improve quality. It is almost like a "whistleblower algorithm" so that the effect can be anonymised. This then creates a scenario of false-flags as a strategy.
It may be possible to include a bar showing green for the upvotes and red for flags. Users can read the article and make a decision whether the red is justified or not. At that point the relative green/red can become a poll on agree/disagree with a post rather than an issue of quality/plagiarism/spam etc.
Thanks for raising the issue. I don't have a solution I can immediately offer, so best to let the discussion progress.
I think you are probably on to something. I don't know that there is anyway to prevent retaliation without some form of anonymizing. That's got to be the most violated rule on Reddit: "The downvote is not a disagree button."
Another point just occurred to me: this would have an impact on multiple flagging of the same accounts, so might actually work to curb staking or bullying behavior 🤓
Hadn't thought of that, but is quite a useful consequence.
Hah! Replied to your other comment but I thought it was in here! Confused! I may copy it here too. Is relevant in that the White Paper knew the problems but the current algo hasn't dealt with them.
Great information!
Hi thanks for the comment.
I see you're interested in maths, physics and cryptos - but I don't see many recent articles on the maths and physics! The Mathematics forum is slowly growing: https://beta.chainbb.com/forum/math
Nice information.
Thanks, I hope people read it.
Any thoughts?
Great post, I got knowledge from your post and very useful.
"For example, take the last 10 votes of a user and, if a new vote is given to a user already voted then that new vote may be worth 90% or 80% of what it would normally be."
Would this not defeat the upvoting of a Good poster? If I find a Great poster and upvote/share their channel because of their content it is because they are worth it.
That's fine - no change there. How does the potential new rule change that?
So is this just going at the self upvoters? Or does it affect everyone?
The aim is to create consistent rules that promote behaviour that promote growth in the platform. The rules as proposed will affect some behaviour more than others; it does not target people but behaviour.