SMT Voting Mana Deep Dive
Hello Steemians, I’m @vandeberg, Senior Blockchain Engineer at Steemit and today I want to share some exciting changes coming to how voting mana is handled with SMTs which are intended to further the progress we have made over the last several years to make voting on Steem more intuitive and fair to everyone. We want SMTs to be the most advanced protocol for tokenizing web applications, and it is technical changes like these, informed by our unrivaled experience with STEEM, that will help us deliver on that promise. Speaking of SMTs, be sure to check out our recent blockchain update in which we disclose an ETA for the SMT testnet and an update on Platform Independent State Files.
Voting is at the center of Steem's Proof of Brain algorithm, which we believe will be a core value proposition for developers launching SMTs, so we want to make sure that when that protocol goes live, the voting process is as streamlined as possible.
When Steem was first released each account had voting power between 0 and 100%. This system is still present in many interfaces and the nomenclature of Steem. During the calculation of rewards an account's voting power was multiplied by their Steem Power to get something we called a” reward share.” A reward share is an internal system that helps the blockchain keep track of author and curation rewards.
The problem of this approach is that the voting power percent only had a precision of two, meaning the smallest amount we could represent was 0.01%. As users consumed their voting power, the accuracy of these calculations became worse and worse and at small levels of voting power, the system was almost unusable. Furthermore, this system did not interact well with powering up/down STEEM and delegations and made it easy to exploit the rules to vote with more Steem Power than you would otherwise normally be able to.
Enter Voting Mana
In Hardfork 20 we changed the internal representation of voting power to voting mana which helped to eliminate certain Steem exploits. The basic principle is the same. The value still represents the same concept of remaining availability to vote on content, but does so in a more accurate and consistent manner. Voting mana is the intermediary value that was previously calculated by multiplying voting power and Steem Power. Voting power regeneration is now more precise, as are the consumed values that result in awarding reward shares to content. Along with this change, we were able to make the rules regarding Steem Power and delegations consistent and eliminate the exploits that previously riddled Steem.
Vote Directly with Mana
Even though we changed the internal structures of Steem to use voting mana, the vote operation itself still used a percentage weight. It is not nearly as bad for precision as the percentage voting power, but it is less than ideal for precision of votes. This is especially true when changing your vote. For example, if your max mana is 1,000,000 and you vote on a piece of content with 50% weight, you will use 10,000 mana.(A 100% vote is capped at 1/50th of your remaining mana). If you later go and change your vote to 100%, you will use 19,800 mana. If you had voted 100% instead originally the vote would have been worth 20,000. This subtlety is hidden through the use of the percent weight.
In the SMT hardfork we are adding a new vote operation that will vote directly with voting mana. The same max vote restrictions are enforced, but will make the impact of the vote clearer. This operation will be used for voting on all SMTs and allows users to vote with each SMT separately, each with different amounts of mana. This will allow you to upvote content with one SMT while downvoting it with a different SMT. Comments can specify up to 5 SMTs that can vote on them, for a total of 6 assets (5 SMTs plus STEEM).
There is one more oddity from the previous example. Did you notice it?
You changed your vote from 50% to 100% and in total used 29,800 mana when a 100% upvote first would have only used 20,000 mana! When you change a vote you lose out on any curation rewards you would have earned. We think this is harsh enough for changing a vote.
Being charged fully for both votes is unnecessarily punitive, which is why were are making the following changes to how votes are charged.
If the absolute reward shares assigned by the vote increase, you are only charged for the delta. You will still be fully charged for changing from a downvote to an upvote and vis-versa. Here are a few examples to help demonstrate how these rules will impact your voting.
If you change a vote from 75% to 100%, you consume mana of a 25% upvote.
If you change the 100% vote to 50%, you consume no mana.
If you change the 50% vote to -50%, you consume mana of a 50% downvote.
If you change the -50% vote to -100%, you consume mana of a 50% downvote.
If you change the -100% vote to -25%, you consume no mana.
If you change the -25% back to a 75% upvote, you consume mana of a 75% upvote.
We believe these changes will continue the progress we have already made over the last several years to make voting more intuitive and fair to everyone.