BitShares Forum

Main => General Discussion => Topic started by: jakub on November 09, 2014, 09:54:13 pm

Title: How is delegate voting implemented in the GUI?
Post by: jakub on November 09, 2014, 09:54:13 pm
I would like to fully understand how the voting mechanism is implemented in the Bitshares GUI.

1. In the GUI in the "Delegates" section there are two tabs: "All Delegates" and "My Votes" and my question refers to the second tab: What are my votes? How do I add/remove delegates from the list in "My Votes" tab?

2. In the GUI in every account I have the "Vote" tab and there is a table below which in my case is empty. What do I need to do to populate this table?

3. In the console, when I run "wallet_account_vote_summary" I get "No votes found". What do I need to do to make "wallet_account_vote_summary" return a non-empty result? Also, "wallet_check_vote_proportion" returns only zeros - What do I need to do to get non-zeros?

(I've asked similar questions in the "Stupid questions" thread but got no answer.
https://bitsharestalk.org/index.php?topic=8390.msg146422#msg146422)
Title: Re: How is delegate voting implemented in the GUI?
Post by: xeroc on November 10, 2014, 08:12:07 am
1. In the GUI in the "Delegates" section there are two tabs: "All Delegates" and
"My Votes" and my question refers to the second tab: What are my votes? How do I
add/remove delegates from the list in "My Votes" tab?
You votes are the "thumbs ups" of delegates .. you can thumb up at the list of
delegates ..

http://wiki.bitshares.org/index.php/DPOS/ApprovalVoting

2. In the GUI in every account I have the "Vote" tab and there is a table below
which in my case is empty. What do I need to do to populate this table?
You upvote some delegates (thumbs up)

3. In the console, when I run "wallet_account_vote_summary" I get "No votes
found". What do I need to do to make "wallet_account_vote_summary" return a
non-empty result? Also, "wallet_check_vote_proportion" returns only zeros - What
do I need to do to get non-zeros?
:) you can guess the answer already 8)
in the CLI you can upvote with the command "approve <delegatename>"

(I've asked similar questions in the "Stupid questions" thread but got no answer.
https://bitsharestalk.org/index.php?topic=8390.msg146422#msg146422)
Sometimes things get burried over there :(
Title: Re: How is delegate voting implemented in the GUI?
Post by: jakub on November 10, 2014, 01:43:35 pm

First fo all, thank you xeroc for an attempt to clarify this issue. I appreciate it.

I have a general understanding of DPOS but I find the GUI implementation of delegate voting quite obscure. I would appreciate help on this subject as after all delegate voting is a major feature of DPOS (and Bitshares) so I think it should be clear to everyone.
For me it is not (and I am not a beginner).

I'm running the latest version 0.4.23.1 on Windows 7.

1. In the GUI in the "Delegates" section there are two tabs: "All Delegates" and
"My Votes" and my question refers to the second tab: What are my votes? How do I
add/remove delegates from the list in "My Votes" tab?
You votes are the "thumbs ups" of delegates .. you can thumb up at the list of
delegates ..

Let me know if I'm guessing it right:
Once I thumb up a delegate in the "All Delegates" tab he lands in the "My Votes" list and he stays there even if later on I remove my approval for him (by thumbing him down or neutral). Thus "My Votes" list is a history of my approvals/disapprovals and not necessarily a list of currently approved delegates.
Is that how it is supposed to work?


2. In the GUI in every account I have the "Vote" tab and there is a table below
which in my case is empty. What do I need to do to populate this table?
You upvote some delegates (thumbs up)
But why is this upvoting happening on an account level? Does it mean I can have different upvoting structure for each of my accounts?
Also, your answer still does not explain why this list is empty (even though I have thumbed up some of the delegates) and what needs to be done to have it populated.


3. In the console, when I run "wallet_account_vote_summary" I get "No votes found". What do I need to do to make "wallet_account_vote_summary" return a non-empty result? Also, "wallet_check_vote_proportion" returns only zeros - What do I need to do to get non-zeros?
:) you can guess the answer already 8)
in the CLI you can upvote with the command "approve <delegatename>"

Nope, I still cannot guess this one.
I maintain my question: what needs to be done to make "wallet_account_vote_summary" and  "wallet_check_vote_proportion" return a non-empty result.
As I said before, I have approved 4 or 5 of the delegates (by thumbing them up) but these API calls still return empty results. Clearly I am missing something.
Title: Re: How is delegate voting implemented in the GUI?
Post by: xeroc on November 10, 2014, 02:48:08 pm
Once I thumb up a delegate in the "All Delegates" tab he lands in the "My Votes"
list and he stays there even if later on I remove my approval for him (by
thumbing him down or neutral). Thus "My Votes" list is a history of my
approvals/disapprovals and not necessarily a list of currently approved
delegates.
Is that how it is supposed to work?
Hm, not completely sure but from my understanding the "My Votes" shows your
"actively" voting stake.
In DPOS you can only vote with your BTS(X). if you have 100BTS you can increase
the approval counter for EACH delegate you upvote by 100BTS. But to do so you
need to make a transaction of the 100 BTS.

Every transaction that you perform .. votes with the amount of BTS in that
transaction for some delegates (all, random subset, recommended, .. see wiki)

Once you have made a transaction, your stake becomes "actively voting". And IIRC
the "my Votes" shows exactly those active stakes.

But why is this upvoting happening on an account level? Does it mean I can have
different upvoting structure for each of my accounts?
As each account holds different balances (in BTS) .. your votes may differ. But
your approvals of delegates does not differe from account to account.

Also, your answer still does not explain why this list is empty (even though I have thumbed up some of the delegates) and what needs to be done to have it populated.
To make them active you can either transfer all your BTS back to yourself or
press the "vote" button which would do the same self transfer automatically.

I maintain my question: what needs to be done to make "wallet_account_vote_summary" and  "wallet_check_vote_proportion" return a non-empty result.
As I said before, I have approved 4 or 5 of the delegates (by thumbing them up) but these API calls still return empty results. Clearly I am missing something.
Voting is done ON-CHAIN. so you need to publish your votes and this is done by
transactions that are stored in the blockchain. just thumbs up is not enough.
Click the "vote now" button or send some funds back to you and you will see some
actively voting stake then.
Title: Re: How is delegate voting implemented in the GUI?
Post by: jakub on November 10, 2014, 10:35:03 pm
Thank you xeroc, now it's beginning to make sense.

The crucial thing I was missing is that I need to transfer all my BTS back to myself to apply the change in my delegate voting.

Hopefully the future version of the GUI will be more comprehensive (maybe some kind of wizard guiding the user through the process). As it is now there is no chance a newcomer could have figured this out on their own.
Title: Re: How is delegate voting implemented in the GUI?
Post by: jakub on November 11, 2014, 09:50:47 pm
I have one more question - this time regarding the voting slates.

I understand the concept as it is described here:
http://wiki.bitshares.org/index.php/DPOS/ApprovalVoting
(in the section "Vote as Delegates Recommended")

And I know we have an API call to publish a slate: "wallet_publish_slate". So anyone can publish a slate if they pay the fee for it.

Now, if I choose the voting method as "Vote as Delegates Recommended" then whose recommendation (i.e. slate) do I support?
I am guessing that by selecting "Vote as Delegates Recommended" I now vote for the slates that have been published by the delegates which I have upvoted? Is this correct?
Title: Re: How is delegate voting implemented in the GUI?
Post by: xeroc on November 12, 2014, 07:31:47 am
Now, if I choose the voting method as "Vote as Delegates Recommended" then whose recommendation (i.e. slate) do I support?
I am guessing that by selecting "Vote as Delegates Recommended" I now vote for the slates that have been published by the delegates which I have upvoted? Is this correct?
Yup .. the slates of all delegates you upvoted are combined ... from this set, your individual downvoted delegates are substracted (they will never get a single vote from you - no matter what delegates recommend)
Title: Re: How is delegate voting implemented in the GUI?
Post by: jakub on November 12, 2014, 12:18:37 pm
Thank you again, xeroc.

Maybe we should update the bitshares wiki in this subject. As far as I know the information in the wiki does not cover the details we discussed here and these are pretty important details.

I can try to do write an amendment for the wiki if nobody else volunteers.
What do you think?
Title: Re: How is delegate voting implemented in the GUI?
Post by: xeroc on November 12, 2014, 12:19:50 pm
I can try to do write an amendment for the wiki if nobody else volunteers.
What do you think?
Would be awesome if you could help out here .. don't have the time atm .. +5%
Title: Re: How is delegate voting implemented in the GUI?
Post by: mint chocolate chip on November 16, 2014, 02:47:14 am
I would like to be able to click on "Pay Rate" and have the client filter the list of delegates by their respective pay rates so it is easier to identify - and vote for - delegates who want to contribute > 3%.