Pre-Proposal: Would you like to be able to vote with number?

Would you like to be able to cast votes using numbers and extract the results as an average?


  • Total voters
    57
Status
Not open for further replies.

dashly

Member
Mar 5, 2017
110
44
78
I have changed my vote from "Yes" to "No". Yes, I think voting with numbers would add a lot of value, but as pointed out by this discussion, average is flawed. Median would be the only acceptable solution for me.
 

camosoul

Grizzled Member
Sep 19, 2014
2,261
1,130
1,183
I'm going to be fair to @demo this time..

This whole "vote by number" thing is a half-measure version of the budget system I had proposed initially; which included rate and proportionality variables, among a few other features.

It's not that "vote by number" is necessarily bad. The issue is that, if not accompanied by a handful of other features, the raw "vote by numbers" concept becomes an even more obtuse instrument than what we already have.
 

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
I have changed my vote from "Yes" to "No". Yes, I think voting with numbers would add a lot of value, but as pointed out by this discussion, average is flawed. Median would be the only acceptable solution for me.
Change it back to "yes". There are three average types. The mean, the median and the mode. They are all included in the poll question.

But if you hate the mean average, I can add you a poll option that says "yes only for the median average" and go vote yes. So tell me if you want a poll option to be added.

<vote history>
Would you like to be able to cast votes using numbers and extract the results as an average?
*yes 5 vote(s) 10.4%
no 39 vote(s) 81.3%
other 4 vote(s) 8.3%
</vote history>
 

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
Look, Amazon evaluations of books is bounded (1 to 5 stars) this does not stop people from trying to manipulate the result by polarising. And they end up voting 1 and 5 stars, more than 2 and 4. You add a bound, now someone must decide what are the bounds of the vote (so more complexity), and you get people all divided between the one that are voting for the max and those that are voting for the min.
The logic decides what are the bounds. The electorate must be rational. This is the most important prerequisite. Democracy can stand only among rational beeings. You cannot have democracy with monkeys who vote randomly and irrationaly.

Said that, enough with this discussion. I am leaving this thread. You really should get the hint from what the people have been telling you. Your proposal was voted no by a huge number of people. MAYBE if you change it with the median it might get more yes. Personally I am starting to suspect you are not really interested in finding the best solution, but in just keep the discussion rolling. So I am quitting it.
The question of the poll says "average". There are 3 types of average the mean , the mode and the median. So I dont need to change anything, unless you are tottaly against the mean average. In that case ask me and I will add a poll option saying, "yes only for the median average"
 
Last edited:

dashly

Member
Mar 5, 2017
110
44
78
Change it back to "yes". There are three average types. The mean, the median and the mode. They are all included in the poll question.

But if you hate the mean average, I can add you a poll option that says "yes only for the median average" and go vote yes. So tell me if you want a poll option to be added.

<vote history>
Would you like to be able to cast votes using numbers and extract the results as an average?
*yes 5 vote(s) 10.4%
no 39 vote(s) 81.3%
other 4 vote(s) 8.3%
</vote history>
Average is usually referencing mean. Sure, add an option for median and it will get my vote. Mean and mode are both too flawed for this type of voting.
 

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
So, to summarise:
The median does not have strategic voting.
the average has strategic voting.
Iterative Strategic voting polarises the votes if you use the average but not the median.
If the system is naturally polarised, the median just gives the result to the biggest block (if two poles). In that case, sometimes it is better the average but this case is rare and then you are better off using a different form of voting.
People having multiple votes can make the result less precise.
Partially the fact of having a bigger stake makes this less a problem, but it is still a problem.
This is not a Prediction Market.
You forgot to mention a very important property of the mean average. In case of polarization, the mean average respects the minorities, the median average does not (because the median average always gives the result to the biggest block, so the median average is a selection process prone towards the tyranny of the majority).

So whichever community desires to protect its minorities, that community should select the mean average as the preferable selection process. And this is a rational decision. All of us we are individuals, and an individual is always a minority in some issues or in some other. If you want to protect yourself as an individual, then you should decide to protect the minorities also. In order to achieve this, the mean average should be decided to be the most loved selection process. The mean average works because in our universe everything we know is bounded in practice, so the mathematical hypothesis that the mean average voting will lead the votes to infinity is invalid. In practice there is always a maximum and a minimum that can be defined and thus bound the mean average and prevent infinity votes.

The median average is a human invention, it is a mathematical invention. The mean average is selected by the universe, our universe works by using the mean average. The wisdom of the universe is more powerfull than the human wisdom.
 
Last edited:

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
For the reference, I copy-paste here a scientific experiment that investigates the stability of the mean average compared to the median average whenever a number vote (on a rolling base) occurs, and some votes go off-line (then on-line) randomly. In the message I fixed some typo from the original author, and marked them with red.
I must apologise to @demo as the result ended up being nowhere as trivial as I was expecting. And I am also grateful for what I discovered.

I just run the experiment. 4000 nodes, with random values, with normal (gaussian) distribution of float, taking away 100 of them one by one. And recalculating the median and the average at each step. And then taking the standard distribution of those medians and comparing them with the standard distribution of those averages. If my prediction was correct the std(median)<std(average). Instead on 500 experiments, only 172 resulted the median more stable than the average.

So demo was right in saying the average was more stable... if people voted floats.

But then I run again the experiment taking instead of floats integers between 0 and 10. And now the median was dead fix, and the average was changing all the time. And on 500 experiments all 500 the median was fix and the average changed.

So I run it again taking integers between 0 and 100, and now 333 / 500 had the median more stable. And with integers between 0 and 1000 the result was 173/500. Just one more than with pure float. So it looks like what really makes the mean more or less stable than the median is the range in which the people vote. If people vote chosing among 10 options, then the median is more stable. If they chose among 1000 or more then the mean is more stable.

But people when they vote tend on average all to chose among the same values. At least was my experience in the graph I posted above. So I rest my case that the median would be more stable. Also with the mean average people tend to polarise because they try to influence the result (strategic voting), and then the distribution would not be normal anymore. And the effect on the mean average would be much bigger.

If you want to play with the experiment you can find it here. Something which some of you could try, for example, would be seeing how this is true if we change the distribution type.

<vote history><-- why vote history is usefull?
Would you like to be able to cast votes using numbers and extract the results as an average?
*yes 5 vote(s) 10.2%
no 38 vote(s) 77.6%
other 4 vote(s) 8.2%
yes, but only for the median average 2 vote(s) 4.1%
</vote history>
 
Last edited:

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
In bitshares they decided to have both governance and to vote the numbers.

Delegated Proof-of-Stake Consensus
A robust and flexible consensus protocol
Delegated Proof of Stake (DPOS) is the fastest, most efficient, most decentralized, and most flexible consensus model available. DPOS leverages the power of stakeholder approval voting to resolve consensus issues in a fair and democratic way. All network parameters, from fee schedules to block intervals and transaction sizes, can be tuned via elected delegates. Deterministic selection of block producers allows transactions to be confirmed in an average of just 1 second. Perhaps most importantly, the consensus protocol is designed to protect all participants against unwanted regulatory interference.
And now watch their graph in coinmarketcap.

https://coinmarketcap.com/currencies/bitshares/
 

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
@UdjinM6 who coded the votes as enumeration? The votes as enumeration first appeared in 12.1 version and they remain as that in 12.2 too. This does not facilitate someone to code the numerical voting functionality for the (non stupid) Masternodes owners to be able to use. Au contraire, this code change raises a huge obstacle (especially for amateurs like me)

To solve this I may do this:

enum vote_outcome_enum_t {
VOTE_OUTCOME_NONE = 0,
VOTE_OUTCOME_YES = 1,
VOTE_OUTCOME_NO = 2,
VOTE_OUTCOME_ABSTAIN = 3,
VOTE_OUTCOME_NUMBER =4
};

Whenever a masternode vote outcome is casted (for example) as 15 , I will add 4 to the vote, make it 19, then when calculate the result I will substract 4 and make it 15 again. Or shall I use another code structure different than the enumeration? And how this structure can support the granularity I need? Numerical voting requires real numbers, not integers.

What do you suggest? Could you fix this, could you change this vote_outcome_enum_t to another class that may in the future support numerical voting? Have a look at the old structure (before 12.1). Straightforward isnt it? It was much more easy to get a numerical vote from a masternode that way. Why did you change this structure? Do you think that the spies entered into your mind (or into Evan's mind) and made you change this specific structure , in order to prevent numerical voting?
 
Last edited:

UdjinM6

Official Dash Dev
Core Developer
Dash Core Team
May 20, 2014
3,639
3,537
1,183
@UdjinM6 who coded the votes as enumeration? The votes as enumeration first appeared in 12.1 version and they remain as that in 12.2 too. This does not facilitate someone to code the numerical voting functionality for the (non stupid) Masternodes owners to be able to use. Au contraire, this code change raises a huge obstacle (especially for amateurs like me)
...
Hint: change "blob" to "blame" in url to see (some) related commits e.g. https://github.com/dashpay/dash/blame/v0.12.2.x/src/governance-vote.h#L19
But it doesn't really matter who coded this - discuss/attack the idea, not the person. If you still need the person though - I merged it. You are welcome :)

...
To solve this I may do this:

enum vote_outcome_enum_t {
VOTE_OUTCOME_NONE = 0,
VOTE_OUTCOME_YES = 1,
VOTE_OUTCOME_NO = 2,
VOTE_OUTCOME_ABSTAIN = 3,
VOTE_OUTCOME_NUMBER =4
};

Whenever a masternode vote outcome is casted (for example) as 15 , I will add 4 to the vote, make it 19, then when calculate the result I will substract 4 and make it 15 again. Or shall I use another code structure different than the enumeration? And how this structure can support the granularity I need? Numerical voting requires real numbers, not integers.

What do you suggest? Could you fix this, could you change this vote_outcome_enum_t to another class that may in the future support numerical voting? Have a look at the old structure (before 12.1). Straightforward isnt it? It was much more easy to get a numerical vote from a masternode that way. Why did you change this structure? Do you think that the spies entered into your mind (or into Evan's mind) and made you change this specific structure , in order to prevent numerical voting?
Old nodes won't recognize new votes with "4", so it's another major update anyway and thus I'd rather go with a bit cleaner/easier to codify structure like
Code:
// Note: keep votes values in sequence from min to max (no void places)
enum vote_outcome_enum_t  {
    VOTE_OUTCOME_NONE           = -9999,
    VOTE_OUTCOME_NO_STRONG      = -2,
    VOTE_OUTCOME_NO_WEAK        = -1,
    VOTE_OUTCOME_NO             = -1,
    VOTE_OUTCOME_ABSTAIN        = 0,
    VOTE_OUTCOME_YES            = 1,
    VOTE_OUTCOME_YES_WEAK       = 1,
    VOTE_OUTCOME_YES_STRONG     = 2,
    // VOTE_OUTCOME_MIN            = VOTE_OUTCOME_NO_STRONG,
    // VOTE_OUTCOME_MAX            = VOTE_OUTCOME_YES_STRONG,
    VOTE_OUTCOME_MIN            = VOTE_OUTCOME_NO, // adjust this if NO range is extended
    VOTE_OUTCOME_MAX            = VOTE_OUTCOME_YES, // adjust this if YES range is extended
}
This is a small part of the actual code I proposed in dev channel back then. So, it would start with status quo (yes/no/abstain) and would allow a more or less smooth transition to limited num-like voting in the future. But as you can see from the discussion here on forum, there was not enough support for this kind of feature, so the code was abandoned.

PS: this has nothing to do with "12.2 testing", moved
 
  • Like
Reactions: demo

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
This is a small part of the actual code I proposed in dev channel back then. So, it would start with status quo (yes/no/abstain) and would allow a limited num-like voting in the future. But as you can see from the discussion here on forum, there was not enough support for this kind of feature, so the code was abandoned.
MNOs need to vote with bounded REAL NUMBERS. A limited num-like voting using integers is not very usefull. It does not offer the required granularity.
Do you have any other idea of a c++ structure that may be used for real numbers and at the same time be compatible with the dash code you have already written ?
 
Last edited:

UdjinM6

Official Dash Dev
Core Developer
Dash Core Team
May 20, 2014
3,639
3,537
1,183
MNOs need to vote with bounded REAL NUMBERS. A limited num-like voting using integers is not very usefull. It does not offer the required granularity.
Do you have any other idea of a c++ structure that may be used for real numbers and at the same time be compatible with the dash code you have already written ?
I don't really agree that a lot of granularity is required but anyway... you don't need another structure - int is 4 bytes, you can fit any reasonable granularity there with some additional encoding/decoding.
 

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
But as you can see from the discussion here on forum, there was not enough support for this kind of feature, so the code was abandoned.
Come on!!! You know how those things work, dont you? I will hire @amanda_b_johnson to advertise it, and then all stupid masternodes will want to vote the numbers.

Code:
// Note: keep votes values in sequence from min to max (no void places)
enum vote_outcome_enum_t  {
    VOTE_OUTCOME_NONE           = -9999,
    VOTE_OUTCOME_NO_STRONG      = -2,
    VOTE_OUTCOME_NO_WEAK        = -1,
    VOTE_OUTCOME_NO             = -1,
    VOTE_OUTCOME_ABSTAIN        = 0,
    VOTE_OUTCOME_YES            = 1,
    VOTE_OUTCOME_YES_WEAK       = 1,
    VOTE_OUTCOME_YES_STRONG     = 2,
    // VOTE_OUTCOME_MIN            = VOTE_OUTCOME_NO_STRONG,
    // VOTE_OUTCOME_MAX            = VOTE_OUTCOME_YES_STRONG,
    VOTE_OUTCOME_MIN            = VOTE_OUTCOME_NO, // adjust this if NO range is extended
    VOTE_OUTCOME_MAX            = VOTE_OUTCOME_YES, // adjust this if YES range is extended
}
This is a small part of the actual code I proposed in dev channel back then.
And where is the full code you proposed in the dev channel, back then?
Is it open source or not? Can you give me a url that points to it?
 
Last edited:

UdjinM6

Official Dash Dev
Core Developer
Dash Core Team
May 20, 2014
3,639
3,537
1,183
Come on!!! You know how those things work, dont you? I will hire @amanda_b_johnson to advertise it, and then all stupid masternodes will want to vote the numbers.




And where is the full code you proposed in the dev channel, back then?
Is it open source or not? Can you give me a url that points to it?
Here is what I have https://pastebin.com/jBmA8G5F, it's not enough for migration but it's a start for code cleanup and some basic preparations.
 
  • Like
Reactions: demo

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
Here is what I have https://pastebin.com/jBmA8G5F, it's not enough for migration but it's a start for code cleanup and some basic preparations.
I am planning to enable "vote the numbers" as a spork.
Is the number of sporks limited?
Am I allowed by the code to assign a new spork number dedicated to the "vote the numbers" functionality?
 

UdjinM6

Official Dash Dev
Core Developer
Dash Core Team
May 20, 2014
3,639
3,537
1,183
I am planning to enable "vote the numbers" as a spork.
Is the number of sporks limited?
Am I allowed by the code to assign a new spork number dedicated to the "vote the numbers" functionality?
No limits, just pick the next one (15)
 
  • Like
Reactions: demo

demo

Well-known Member
Apr 23, 2016
3,113
263
153
Dash Address
XnpT2YQaYpyh7F9twM6EtDMn1TCDCEEgNX
Off course I am not an alt account. This is my only account in this forum, I have only 2 wallets, their address is in public view, and my whole crypto fortune is 1.5 Dash and 1.6 PIVX. I have not any other crypto, neither bitcoin, nor tezos, nor lightcoin, nor monero, nor decred. Nothing. Although I knew bitcoin and cryptos since the very beginning (2008), I am crypto-poor by choice.

Here is my answer to your above allegations.
 
Last edited:

ScioMind

Member
May 28, 2014
183
73
88
Off course I am not an alt account. This is my only account in this forum, I have only 2 wallets, their address is in public view, and my whole crypto fortune is 1.5 Dash and 1.6 PIVX. I have not any other crypto, neither bitcoin, nor tezos, nor lightcoin, nor monero, nor decred. Nothing. Although I knew bitcoin and cryptos since the very beginning (2008), I am crypto-poor by choice.

Here is my answer to your above allegations.
Go ahead and read his "answer" as well as the entire thread before it. In fact, read ALL of his posts. He just said he has a very small stake in Dash, which means he has no real vested interest, and yet spend an inordinate amount of time here. But that time is spent in attempts to create discord and his own immoral policies.
 
Status
Not open for further replies.