The Steem downvote pool explained

in #steem2 years ago

steemd-screenshot.png screenshot

A separate Steem downvote pool was introduced with HF21 end of August 2019. While most are in the meantime familiar with the two "percentage bars" on steemd (screenshot above) or the up/down switch on steemworld, there seems to be still some confusion on how things work under the hood:

In this post, I'll try to cover the following points:

  • How many "free downvotes" do we have?
  • What defines the "value" of the flag?
  • What happens after depleting all downvote mana?


Voting power and downvote power are typically shown as percentages. This has historic reasons, but the actual Steem implementation calculates with voting mana and downvote mana pools in the background. The maximum amount of mana one can have depends on the SP (actually the VESTS). Upvoting and downvoting takes mana from one or both of those pools (more on this later). The current and maximum mana values for each pool are shown in light grey under the percentage bars on the steemd screenshot above.

How many "free downvotes" do we have

The downvote mana pool has quarter the size of the upvote mana pool and a 100% flag takes as much from the downvote pool as a 100% upvote takes from the upvote pool. This means that a flag relatively takes 4 times the percentage value of downvote power than the same upvote:

  • A 100% upvote at 100% upvote power takes around 2% of voting power
  • A 100% downvote at 100% downvote power takes around 8% of downvote power

Both mana pools are refilled with the same rate: A full refill takes 5 days. As a result, we continuously get the mana to do

  • 1x 100% upvote every 2.4h or 10x 100% upvotes per day
  • 1x 100% downvote every 9.6h or 2.5x 100% downvotes per day

What defines the "value" of the flag?

The value of an upvote (in rshares) is defined by the SteemPower (actually the VESTs) an account has, the voting percent and the current fill state of the upvote mana bar (read: voting power percentage). Before HF21 and before the separate downvote pool existed, the value of a flag was calculated in exactly the same way, only the result was negative due to a negative vote percentage.

With the separate downvote pool, things changed slightly:

  • if you have more downvote power than voting power, the current mana state (read: voting percentage) of the downvote pool is used to calculate the flag value.
  • if you have more voting power than downvote power, the current mana state of the upvote pool is used to calculate the flag value.

Independently of which voting power percentage is used for the value of the flag, the "consumed" mana is deducted from the downvote pool first. For example:

  • 100% VP, 100% DP - 100% flag => 100% VP, 92% DP
  • 100% VP, 92% DP - 100% flag => 100% VP, 86% DP, etc...

Note that all flags in the example above would have the same value despite the DP decreasing. This is because VP>DP in this example, so VP at 100% is used to calculate the flag value.

What happens after depleting all downvote mana?

So you've been on a flagging streak and your downvote mana nears 0. What happens now is that the downvote pool covers whatever is left in the pool and the rest is covered by the upvote pool. For example:

  • 100% VP, 4% DP - 100% flag => 99% VP, 0% DP (Note: the flag would take 8% of the DP, but there are only 4%. The remaining value is taken from the upvote pool, which is 4 times larger: -1% on the upvote pool to cover the rest)

  • going on from there is like before HF21: 99% VP, 0% DP - 100% flag => 97% VP, 0% DP, etc...

Side notes

An intended side effect of the connection between VESTs and the mana pools is that you cannot delegate VESTs/SP that you already "spent" via votes. You need to have the amount of mana corresponding to the number of VESTs/SP you want to delegate in the mana pools. Those are deducted from your mana pool when you delegate them out. This applies to both pools, also the downvote pool. If you deplete the downvote pool to zero, you can't delegate anymore. When trying, steem refuses with an error message like this

Assert Exception:available_downvote_shares >= op.vesting_shares: 
Account crokkon does not have enough downvote mana to delegate. 
required: {"amount":"99025570234","precision":6,"nai":"@@000000037"} 
available: {"amount":"64725695999","precision":6,"nai":"@@000000037"}

For those interested in the implementation: The vote value calculation logic is part of the hf20_vote_evaluator() function here:

Still having questions? Leave a comment, I'll try to answer...


Technical stuff, I'm almost with you :)

So the 2.5 DV's is more of a guide, and if downvoting daily it's best not to stray too far below?

The cool thing is that always the maximum of the two voting bars is taken into account when the flag value is calculated. So you can send out the 2.5 "full-power" flags per day even if your VP is low. On the other hand, if your VP is high, you can fully drain your downvote power all at once with all flags the same value and then pause flagging for a couple of days. So lot's of options for various use cases.

Seems that steemit inc didn't fully explain this, or maybe i forget. Thanks for the details :)

Pretty great analysis and this is the right inside needed to understand the effects of down votes. Better content should be created from now on and original work and that really adds values will be rewarded from now on.

From the last paragraph I understood that downvote can be delegated. Is it possible to rent a downvote?

No, I think you misunderstood. SP is tightly coupled with the upvote and downvote mana. This means that you can only delegate SP to others that you haven't used/spent to vote. If you buy/get a delegation from others, your upvote and downvote mana increases as well. It's not directly possible to delegate or rent a downvote. If you want your downvote mana to be "used", you could join a flag trail. If you believe you found a post/comment that deserves a flag but haven't the SP to handle it yourself, you could try to reach out other more powerful curators, the @steemflagrewards team or steemcleaners (depending on type).

Thanks for the reply. I don't use Downvote. I'm addicted to Google translator and I seem to miss something in translation.

You post has been manually curated by BDvoter Team! To know more about us please visit our website or join our Discord.

BDvoter Team

@tipu curate

Hi, @crockon I have been found you hehe I though @stmdev is a no one account but I follow your trail I saw you haha thank god I found a friend a Dolphin all I know @stmdev is a regular user like me but I was wrong. Nice meeting you @crockon thank you and have a nice day!.

haha, yes, @stmdev is my toy account for tests, scripts, whatever, and if you're posting on palnet there's a good chance that you get a small vote from that acc :D

I love it haha thank you so much @crokkon. Yes! I always use palnet hope we can make good vibes there I am happy to have you, my friend.

 2 years ago Reveal Comment