Testing the new BU voting system

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
yes, it's not very relevant unless someone wants to count them, so long as that "bin" can be counted if someone wanted to count it, I think that's good enough.
[doublepost=1490655397][/doublepost]How does one vote? what I imagine one does is sign a bitcoin address with one of the following lines:

accept
reject
abstain
$U*spoil&$!# (if it were a drop down I like the term "other")

adding one of the above text and paste the signature into a field on the voting page. And if it's a match it can be submitted as a vote. (thinking about it, it would be good to have a submit popup to confirm you vote to prevent mistakes.

what happens if you try vote twice?is the old vote overwritten or if both are recorded how do you determine which to count.
[doublepost=1490655781,1490654927][/doublepost]another concern just popped into my mind. I was thinking how I could automate and streamline this pressers for myself.

I could have a text file with a signature for accept, reject, abstain.

that signature would be very insecure a text file on my phone. I or anyone who had access to that text file could cut and past to vote - someone could go on voting on my behalf after I've passed away, even if my private key is secure.

you've probable solved this - each signed string of text would need a unique identifier like the BUIPxNo.

so I would need to sign text that looked like this for eg:

Code:
BUIP0001
accept
 
Last edited:
  • Like
Reactions: freetrader

solex

Moderator
Staff member
Aug 22, 2015
1,558
4,693
@awemany
If you are still on holiday, please ignore this until you get back :)

Code:
quorum_reached = (accepts+rejects+abstains) >= 0.5 * Nmemb
accepted = accepts>rejects and quorum_reached
quorum is also reached if >=25% turnout and accepts>=rejects*3
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
Hey guys,

ok, back to work on this.

yes, it's not very relevant unless someone wants to count them, so long as that "bin" can be counted if someone wanted to count it, I think that's good enough.
[doublepost=1490655397][/doublepost]How does one vote? what I imagine one does is sign a bitcoin address with one of the following lines:

accept
reject
abstain
$U*spoil&$!# (if it were a drop down I like the term "other")
Yes, but of course you sign more than that, such as a SHA256 of the proposal, to make it unique.

You suggested making explanation links / info boxes for the stuff, so I'll look into that on this topic as well. My README was meant to be a starter for this, but I admit it was written in a haste.

what happens if you try vote twice?is the old vote overwritten or if both are recorded how do you determine which to count.
Excellent question. Answer: A second vote on a new member or proposal by the same is not accepted by the web service. So the first vote will stand.

[doublepost=1490655781,1490654927][/doublepost]another concern just popped into my mind. I was thinking how I could automate and streamline this pressers for myself.

I could have a text file with a signature for accept, reject, abstain.

that signature would be very insecure a text file on my phone. I or anyone who had access to that text file could cut and past to vote - someone could go on voting on my behalf after I've passed away, even if my private key is secure.

you've probable solved this - each signed string of text would need a unique identifier like the BUIPxNo.

so I would need to sign text that looked like this for eg:

Code:
BUIP0001
accept
A mass vote action? Yes, you're invited to do a pull request for that :D I think and hope we won't have any massive amount of BUIPs and member votes soon, so this feature (though certainly desirable!) is low priority for now. In any case, yes, you could also write your own script off-line to create a set of actions that you then wget-upload to the webservice.

@awemany
If you are still on holiday, please ignore this until you get back :)

Code:
quorum_reached = (accepts+rejects+abstains) >= 0.5 * Nmemb
accepted = accepts>rejects and quorum_reached
quorum is also reached if >=25% turnout and accepts>=rejects*3
Thanks. So:

quorum_type1 = (accepts+rejects+abstains) >= 0.5 * Nmemb
quorum_type2 = (accepts+rejects+abstains) >= 0.25 * Nmemb and accepts >= rejects * 3
quorum_reached = quorum_type1 or quorum_type2
accepted = accepts>rejects and quorum_reached

Is that correct? Is there any rounding to be done on 0.5 * Nmemb or 0.25 * Nmemb or is it correct as-is?


@AdrianX: Am I right to not count 'spoil' votes at all here, also not for quorum?
 

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
I don't fully understand how the mechanics work, but if it's not a hassle it would be nice to count spoiled votes. A spoiled vote reflects voter participation and allows one to differentiate between "abstains" which equates to I don't know enough or have a preference where as "spoil" equates to participation with the expression that I don't accept the choices I have been give.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
@AdrianX: I see. My bad - writing it like above, I certainly can count and summarize them separately. I am rather wondering whether they count towards the quorum or the results of the vote in any way - which they do not, correct?

Which would be different from 'abstain' votes, as those as far I know do count towards the quorum.
 
  • Like
Reactions: AdrianX

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
@awemany all good questions the answers I feel would be more definitive with more discussion.

here is another requirement that just popped up on the radar.

https://www.bitcoinunlimited.info/articles said:
Non-publicly identified members may have restricted voting or other restrictions as determined by subsequent BUIPs - this measure may be needed to restrict duplicate accounts.
so I think we'll need a flag - for public proven public identities and anonymous avatar identities.

https://www.bitcoinunlimited.info/articles said:
The Proposer may choose to extend this 2 week period as long as desired.
this is also relevant, in that BUIP voting dates can be extended by the Proposer - so the system would have to accommodate this feature too.

___

My opinions are not strongly held, that's implying more discussion on the Articles of Federation would be required to come to an agreed behavior.

Looking at the Article it is my understanding that voter participation is necessary to maintain your membership however it's not necessary that one vote on issue one is not concerned about.

Quorum as defined in the articles of federation. This definition sets tone for voting.
Article 2: Confederation IV. said:
A BUIP is adopted if accepted by a majority of voters (51%) with at least 50% of members voting OR a 75% super-majority of voters with at least 25% of members voting, unless otherwise indicated in this document (BUIPs that change these articles or remove officers).
I already see potential problems. In my mind it is important to grow the membership to get more diversity in opinions, however this could propose a problem for technical BUIP's where less than 25% of voting members participate because they don't have full comprehension of the issue being voted on. While I like the idea of the super majority when there is less than a 50% voter participation. If we have thousands of members I can imagine a super majority being difficult to attain, or 51% being difficult to attain if most voters abstain. (I'm not proposing a BUIP, just trying to understand the ramifications of the rules as they are now - they are probably good, i just don't know, possibly if it was to change there may be some statistics that could avoid the use of magic numbers like 25% /75%)

@AdrianX: Am I right to not count 'spoil' votes at all here, also not for quorum?
The spoiled vote acts a bit like a filibuster, I'd say it is interesting only if a vote is not accepted.

TL;DR It should count towards quorum in the "abstains" category that's how I would interpret it under Article 2: Confederation, IV. There is also an argument that it is shouldn't count as @Bagatell was suggesting, if it is not counted as an abstains it should be counted towards a voters participation record that is required for a member to keep his membership active.
[doublepost=1493143124,1493142378][/doublepost]if I was to express the idea of a spoiled vote as a function that would yield an outcome maybe it could be:

Code:
quorum_type1 = (accepts+rejects+abstains) >= 0.5*(Nmemb+spoil)
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
Short progress update/ChangeLog on user-visible changes so far (in github):

- a couple minor fixes, more tests, debugging, ..

- implement 'spoil' voting answer as per @AdrianX' suggestion

- action_string is now a multi_line text box

- action_string is only filled if the rest of the fields are filled (as per @Norway's suggestion)

- the whole system has been reformatted / re-CSSed to fit into the new website layout

- action string is auto-copied into clipboard upon clicking onto it (as per @solex' suggestion)

- radio buttons instead of free text form field for selecting vote answers

- more explanatory text has been added to the templates. This is likely lacking still, as the dev (me) likely doesn't see all the things that need to be explained properly. This is as per @AdrianX' suggestion. If you want to extend this, it should be easy enough, as this would very likely just touch the *.html templates and no code.

- allow multiple people or official BU roles to be 'votemaster'

Unfortunately, I forgot to pay the instance in time and now they terminated it. I guess who wants to test before I set it up somewhere public for 'public beta' (i.e. live) can download the code and test locally. For those interested, if there's any problems with setting up my system for public testing, please send me a PM here or contact me on slack when I am around.
 

awemany

Well-Known Member
Aug 19, 2015
1,387
5,054
More changes:

- further fixes and tests
- Add action to delete objects, such as stale proposals (process is not very streamlined yet, however should be good enough for now)
- List member applications on member lists
 

lunar

Well-Known Member
Aug 28, 2015
1,001
4,290
Well my first vote here went well, no problems signing or following how everything worked. Good job @awemany, smooth process.

I found having to sign for every vote and new member, a little time consuming, would it be possible to collate all the various votes and just have to sign once at the end of the process?
 

freetrader

Moderator
Staff member
Dec 16, 2015
2,806
6,088
Yes, same wish here: that one could maybe put some vote action strings into a "shopping cart" and then sign them all at once.

Other feature wishes (for the future):
  • overview of a voting session (all proposals tabulated with their tallied votes (accept/reject/...)
  • overview of personal votes in the session (i.e. quick check of how one has voted and what is still outstanding)
  • that the meta info could actually show what the proposal is about. I don't like having to d/l and open a PDF everytime I forget what the number means...
 
  • Like
Reactions: lunar and solex

Mengerian

Moderator
Staff member
Aug 29, 2015
536
2,597
Another suggestion: It would be nice it you could enter a member name, and see which proposals they have voted on.

The reason I want this, is because I voted in about half a few days ago, and now I have forgotten which ones are left for me to vote on.
[doublepost=1496431487,1496430667][/doublepost]Also, I think it's important that the message that the member signs to vote on BUIPs contains a human-readable identification of what they are voting on (for example BUIP055). This would help in being able to audit votes easily, and give voters confidence they are signing their vote for the correct issue.

The member election voting string seems to do this in a good way, but the BUIP votes do not.
 
  • Like
Reactions: solex and AdrianX

torusJKL

Active Member
Nov 30, 2016
497
1,156
I have voted today on multiple BUIPs and new members without any issue.
Well done!

Here are some things that would be great to see in future version.
(some have already been mentioned but I'm listing them as a +1)

- bulk voting (multiple BUIPs and multiple members)
- list of all already casted votes per user (and a list of BUIPs/members not yet voted for)
- The name of the BUIP and a link to its text on the cast ballot page
- the name of the BUIP in the action string in a human readable format
- an overview of all current proposals and their casts
- the possibility to remove or change a vote

Edit: 2 more points added
 
Last edited:
  • Like
Reactions: solex