HF Idea / Proposal: Witness Disapproval Feature

in #witness6 years ago (edited)

HF Idea / Proposal: Witness Disapproval Feature

image.png

HF Idea / Proposal: Witness Disapproval Feature

Hi! I'm able to post again, cool! ;-)

Some info about Witness Rank used as a sub algorithm of UA

When discussing the algorithmic mechanisms of UA, of which the "Witness Rank Initiating Trust Vector" is a sub-algorithm, some people I've spoken to have raised their concerns regarding its weight / importance. A brief reminder: in short, for example @gtg now has a 19.02% witness approval percentage, which number we use as well to initialize @gtg with "19.02% UA Trust" to pass along UA to the accounts he follows (and from there on the UA computations flow to their followings and their followings, etc.). The same is done regarding UA for all active and up-to-date witnesses. And the core reason we implemented Witness Rank this way has been "Let the People vote for the Witnesses (via witness voting), and the Witnesses vote for the People (via their followings)", as a means to create a two-way decentralized UA feedback loop.

Regarding the concerns of using Witness Rank as a UA sub-algo: valid point, I think personally (of which this post is proof of). I've also asked around why the Witness Rank mechanism inside UA raises concerns, and large and about these aspects (summarized) were mentioned:

  • disagreement with the stake of individual witnesses (not really active / engaged, bought-for witness stake, personal reasons);
  • too much SP power owned by a select few witness voters (close to impossible for newcomer witnesses to enter top20 ranks).

As a consequence, it was reasoned that (some of) those witnesses shouldn't be allowed to pass on that much "UA Trust" to the accounts they are following, and / or didn't deserve their own high UA scores & ranks. While I can certainly understand that concern, and think it's a valid concern even, the current Witness Rank status quo is what it is. It was there for quite some time already, and used for various purposes, despite the fact whether the UA algorithm uses Witness Rank or not. Witness Rank now is what it is, and whether UA should incorporate it, and if so with which weight / relevant importance, remains a subjective question.

This made me think about possible solutions for UA to still use Witness Rank as a sub-mechanism, while at the same time properly solving those concerns in a way that makes (even?) more people satiesfied & happy. One solution we (@holger80 and @scipio) have already implemented, is a UA factor that deals with inactive and not up-to-date witness nodes. (At our first implementation, that caused some sudden "UA rank jumping" when a node was disabled / re-enabled, after which we added a time-damping function to reduce the effect of only temporarily disabled nodes.) A second (possible) solution is to lower the initiating "weight factor" of WitnessRank inside UA computations. But while determining the "correct weight value" remains a subjective task, the real underlying "problem" remains the same: is the current Witness Voting Mechanism Correct and therefore Usable for an Influence Metric such as UA? (And again, this is another subjective question).

HF Idea / Proposal: Witness Disapproval Feature

The above thought process gave me another idea that might be controversial, but when implemented blockchain-wide both adds more justification to WitnessRank as a UA component, as well as solve some major issues regarding the order of WitnessRank. And that idea is to add a feature to disapprove a witness:

  • the same 30 Witness voting slots can be used as it is now;
  • each witness slot can then be used to either "approve" or "disapprove" a certain witness;
  • which adds a mechanism to express disagreement to a certain witness stake, identical to "flagging" a post which is used as a mechanism for post / comment reward disagreement;
  • such disapproval could then be expressed at the expense of "a lost approval slot";
  • which might add more Witness Rank dynamics;
  • and as a consequence add more incentives for witnesses to "do good" and also "to not do bad", with respect to the platform.

This disapproval feature is just an idea of mine; I'm curious to learn what others think of it. Please let me know what your thoughts are about it, and share your thoughts in the comments!

Thanks for your time!
@scipio

Update

While reading the comments, I had another idea to add to the disapproval idea: why not reduce the number of voting slots from 30 to, for example, 5 as well?

  • this would mean top-SP holders cannot single-handedly determine the entire top20;
  • while at the same time, being able to disapprove a witness, just 5 slots with either approve/disapprove features, making things far more dynamic
Sort:  

Hi @scipio!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 6.212 which ranks you at #226 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 298 contributions, your post is ranked at #1. Congratulations!

Evaluation of your UA score:
  • You've built up a nice network.
  • The readers appreciate your great work!
  • Great user engagement! You rock!

Feel free to join our @steem-ua Discord server

Yay! I ranked #1!

  • yes, yes, I'm one of the two UA dudes, but the algo doesn't "know" that
  • I'm not a witness! And my UA_Account rank is "only" 226
  • my post didn't even generate in the hundreds of dollars on rewards, so that doesn't matter either
  • but my post did get quite a lot of user engagement with other high-UA account people!

^^^ and that is the trick to learn from, and get motivated by as well!
The big "take-away" to learn from this, is that if you're not a top-ranked UA account (yet), you can still be the #1 post

This is so awesome! Congrats on having a #1 post, and thanks for explaining this. I'm really trying to understand this system thoroughly, both the UA scores in the first place and then also different possible uses of them, such as the steem-ua upvoting. I'm hoping there will be an SMT that uses UA in another application. I would love to see the scores used for deciding RCs, for example.

I think maybe it could be done with the current code (or currently planned HF21 code that brings in SMTs in the first place) because STINC already put in a mechanism for allocating additional RCs by giving just the power as if someone had more SP. You don't even have to delegate SP. Just share the RCs.

So an SMT could use UA scores to decide how much additional RC power someone gets. That way the ability to contribute on the platform would be decided by the value of the person's contributions as measured by the community's reaction to them.

The trick is to give witnesses high UAs first, and then post about ... witnesses, so that they comment. :-)

I would agree with your suggestion of less witness votes per account, so that one big stakeholder cannot appoint all relevant witnesses anymore.

Another idea would be that the weight of ones witness votes doesn't depend on ones STEEM Power only but also on ones UA ... (Or on ones 'voting CSI).

upvoted for some discussion on preference.

I think the highest I have ever got is 10th for the day.

Obviously it depends on who comments so the posts that are engaging those with higher ranks will get favoured. This post has had quite a few witnesses in the conversation with comments strings as well as other pretty highly ranked UA (I would gather) which from my understanding helps push rank.

I am interested in how these things progress and evolve over time as they indicate how Dapps and interfaces could categorise the content later. As soon as an algorithm is implemented it will be imperfect but the idea is to find a good fit for the user base.

Yes, the base formulae for the @steem-ua curation rounds is as follows:

Step 1:

UA_Vote = x * UA_Account + y * UA_Post + z * UA_Comment

where

UA_Post = sum(VS * UA_Voter)

Step 2:
All posts UA_Vote scores in the same curation round / window are than compared relative to eachother, and then those relative scores are voted on percentage-wise.

So indeed, it depends on who comments / engages on a post, which is in this case quite some high-UA accounts (not just witnesses though!)

And arguably, favoring high-UA commenters makes sense:

  • let's for example take @blocktrades as a commenter on this post. @blocktrades is a top witness, but also a high-SP account and runs a crypto OTC (?) conversion trade service that doesn't require registration to be able to use it;
  • when I joined steem(it) at that time all exchanges were closed to newcomers and I had no account there, so my only way to buy BTC was via @blocktrades . So for me, @blocktrades "saved me";
  • probably a lot of other people feel the same way!
  • which justifies the high UA-rank of @blocktrades , because UA is an influence metric. If it weren't for their service, I would have probably left or at least not (so) active. But because of @blocktrades I stayed. That makes @blocktrades very influential, for me at least, and probably to a lot of people.
  • very influential people get bombarded with interactions, opportunities, they need to be very selective;
  • so if and when a very influential person (having a high-UA rank) feels the need to comment, then the post is arguably important and interesting enough to engage with.

Will it mean that big stakeholder will have even a bigger impact on who is in the top 20 witness list? As it is now, witness votes take SP of the voter. If we take the biggest holders of SP and that their votes help top witnesses to back their position, they could just vote for top 20 and vote against the following 10 and make it thus difficult for them to collect enough votes to reach top positions.

Did I miss something in this proposal?

Thx for sharing your thoughts! Valid point! If you missed anything, I don't know of course. And I'm also not claiming this idea / proposal to be "complete".
I shared / posted it, to express an idea of mine to add more "dynamics" to witness voting & ranks. I'm happy to learn which features are missing in the idea...

Even if you think it sucks: ideas are always good, right?

Firstly, I think there should be a way to tag a non-approval for a witness but at this point I think it would be more beneficial to remove the ability for 30 votes for witnesses considering there is only a top 20.

Having 10 votes instead means that no one account can choose order across all and it makes it much harder to collude. It also means that small accounts have more chance to pool their resources and have an actual effect on the witnesses rather than pumpkin/freedom controlling it.

Reducing the amount of votes able to be cast is a very simple solution to get a better understanding of the community position on witnesses.

... i think. :)

Thx for your comment @tarazkp!
BTW, I had already updated my post to suggest reducing 30 slots to 5, and add a disagreement feature! ;-)
Which number of voting slots do you think would be optimal? 5? 7? 10? 101?

7 is not a bad number perhaps as it is essentially 1/3. it means significant control but not enough to have 50% majority and far enough from a super majority.

I would personally also consider spreading the rewards at a higher level to the 20-40 slots. I am not sure what the spread is now but if 75% went to top20 and 25% distributed on it might incentivise differently. Have to think more on that one though.

7 is not a bad number perhaps as it is essentially 1/3. it means significant control but not enough to have 50% majority and far enough from a super majority.

Very smart!!!

I lthink that s an interesting idea. At first this sounds great, especially after the grand return of Mr Autofellatio, but as many pointed out, it just solves a problem by creating new ones:

  • It could make the witnesses vulnerable
  • Big stakeholders could approve 20 and disapprove the following 10
  • Witness wars

I like better the possibility of a decaying vote. Yes, maybe some users will create bots to automatically vote again for the same witness, but if they do so, it means they remain engaged with them. Fine.
But it solves one major problem : without decay, the witness votes from dead accounts will be here forever. If for any reason, @freedom was unable to log into his account, the top 20 would be written in stone with the current implementation.
Whether the vote should completeley disappear or use a half-life model is another discussion.

Good thoughts there @scipio, especially the one about having less witness votes then there are consensus witnesses.
I agree with what a few ppl before me already mentioned, having the possibility to disapprove (also stake based) will not make the big change (if any).
But having less witness votes, especially something far less than 20, will for sure create some movement because then the owners of the big stakes can not decide by themselves any longer who is a consensus witness and who is not. Which is in my opinion a very good thing, because it will decentralize the whole topic a lot.
Keep the ideas coming @scipio ! :)
Kind regards
Jan

I am on the fence for this one.

There are merits to the idea, as it would allow more impact of witness votes if one disagrees with one specific witness for example.

But this can be used as an attack vector on the chain, when a bad actor can vote out witnesses, they might have it easier to aquire a supermajority of consensus witnesses.

I think this will be a great feature in hard fork times where voters can downvote witnesses adopting/not adopting a fork.

But my thoughts on the matter are not that well fleshed out, so I don't want to say too much about it :)

Still very interesting to learn about the possible attack vector you mentioned! Thanks for sharing!
And as I do understand and respect you stating your thoughts currently not being too well fleshed-out (neither are mine, just an idea of mine to see what other aspects would be concerned), what could be an effective counter-measure to circumvent the attack vector? Any ideas?

Has that been computed to be possible even with the current SP distribution? Wouldn't that require a 51% (more than 50%) SP-owned by (a group of) individuals, where that group is "small"? And if it is, then why doesn't it happen already right now? Even without witness disapproval being implemented, wouldn't it now already be possible to form SP alliances and acquire a super-majority?

If I recall correctly the idea was that a government could seize some witnesses and downvote all others to gain control over the network.

But on the other hand this would allows stakeholders to do the same in case they get to know one witness was seized.

Another question: suppose indeed some witness node(s) would be seized by another entity. Then that's still not the same thing as taking control over the controlling account. In other words, in case a node would be seized, the controlling account can still communicate / post about it, to let others know to unvote / disapprove for that specific witness. Or in other words: adding the ability to disapprove a witness, would conversely combat the exploitation of seized nodes.

True?

The idea would be to seize the node and add something to the witness software that changes consensus in one way or another. This might not be noticed by the witness at first. In this case we expect the attacker to be competent enough to hinder said witness from noticing/disclosing the situation. Say putting them in jail.

Ahhh! But that is not my idea!
My idea is to keep the current "limited witness slots" but add to it a feature to either approve or disapprove a witness. Ergo "downvoting all others" would be impossible, or do I misinterpret your explanation?

We are talking about an attack on the top 20/30 witnesses, the rest does not matter much for this attack. So basically if they seize 10 and downvote the other 20 they can control more.

hmm... but downvoting 20 others with enough power would then allow another group of 20 to rise to the top? Or am I completely misunderstanding?

Like I said, not yet fleshed out :) Maybe others can chime in to explore if this can be used as an attack

In reality, such an attack would not be likely to be carried out by a government or other large group because they already have enough money to just buy their way into the top 20 anyway ;)
However, the idea of downvoting accounts while also being able to upvote accounts would certainly be a less noticeable way to takeover the system, since the downvoting and witness account running could be spread over numerous accounts, making it hard to track and co-relate the actions to one another.

I do think there is some merit to reducing the number of witness votes though, maybe 9 is a good idea, so that the same SP cannot be used to affect more than 50% of the witnesses.

I like this concept. If you can approve a witness you should also be able to disapprove or show displeasure
This gives witnesses, as you said, incentive to be prominent, to do good rather than fade into the background.
Some of the best witnesses are not in the top 20 and a couple that are in the top 20 probably shouldn't be at this point as they seem to be coasting on votes from long ago.

I would go even further and propose that witness votes expire. This would also have the benefit of cleaning up or regaining the votes from the no longer witness crowd and would clean up the rankings as well.
Perhaps a 6 month limit on a vote, then it expires unless you reapprove

I would go even further and propose that witness votes expire.

Also interesting idea as well, I think! On the other hand, remember them botties ;-)
It would be doable to auto-revote witnesses, periodically, without ever actually doing anything manually....

I'm sure some smart dev could incorporate a captcha like feature to get around such a minimal impedence
LOL

Let the Cat and Mouse Games continue! ;-)

LOL I'm not a dev or programmer at all (I just play one on the internet LOL)
This gives me the luxury of being able to throw out any idea without worrying about now realistic or feasible it is in reality.
You have to make it reality, I just have to use my imagination
LOL

But seriously, it would be great if there were ways to accomplish these kinds of tasks. Not everything will be feasible from a programming standpoint, time investment vs reward standpoint, etc.

Just food for thought down the road if it ever becomes a project you wanted to tackle :)

I like the concept but just like flags, some will get disapproved for personal reasons. But the idea is definitely worth paying attention too. I also think education of what a witness is is also important these days. And how to vote for one needs to be noob friendly

Posted using Partiko iOS

Fair points! Thx for sharing!

absolutely. I find it hard to use all my witness votes for good witnesses, but I would very quickly find at least ten witnesses to downvote :)

Haha! Well, interesting aspect you are mentioning here as well!
How about reducing the amount of witness voting slots? I updated my post to propose - for example - 5 instead of 30.

What do you think? What should be the optimal number of slots?

Very interesting!

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.034
BTC 66408.70
ETH 3225.39
USDT 1.00
SBD 4.17