Author Topic: Proposal: Max Delegate Pay = Approval Rate  (Read 11846 times)

0 Members and 1 Guest are viewing this topic.

Offline theoretical


Suppose there are two possible policies (P or Q) that the network could follow at the choice of the delegates.

Suppose 40% of the network will vote for delegates who support policy P but never those who support policy Q, while 60% of network will vote for delegates who support policy Q but never policy P.

I think bytemaster's goal in proposing this change is to incentivize delegates to move from policy P to policy Q in this situation.  With the intent of creating consensus -- reaching equilibrium when all delegates support Q.  [1]

I thought at first that this would happen -- delegates would always be incentivized to move from P to Q in order to raise their max payout.  Because moving from P to Q would always increase your approval rating from 40% to 60%, regardless of how many delegates currently support P or Q.

But I thought a little more and realized this is not actually the case.  While the GUI tells the user they can vote for any number of candidates, in actuality each BTSX can only vote for up to some maximum number of delegates K (to keep bytes per transaction reasonable).  The Q supporters have 0.6 * M * K total votes, while the P supporters have 0.4 * M * K total votes, where M is the total number of BTSX in circulation.  If there are N_P delegates who support P, and N_Q delegates who support Q, the average number of votes per delegate for each faction would be:

    A_P = 0.4 * M * K / N_P
    A_Q = 0.6 * M * K / N_Q

At equilibrium we must have A_P = A_Q (otherwise delegates would switch to the other faction to increase their payout):

    0.4 / N_P = 0.6 / N_Q

Which simplifies to:

    0.4 / 0.6 = N_P / N_Q

In other words, the equilibrium actually occurs when the factional proportions of the delegates reflects the factional proportions of the population.  I think this will happen as long as the number of approvals is limited by K, which in turn is a fundamental consequence of limited bytes per transaction and large pool of delegates, which cannot be overcome without increasing bytes per transaction (increasing bandwidth and storage requirements for everyone) or decreasing the number of live delegates from 100 to K (greatly increasing centralization).

One solution to the conundrum might be to allow transactions that ignore the limit K and vote for up to a full slate of 101 delegates (or 151 if we increase the delegate count), but requiring such transactions to pay R times the normal fee, where R is equal to the size of the transaction divided by the size of a normal transaction.  Thus, K becomes a "soft limit" where exceeding K merely leads to an increase in fees, whereas AFAIK currently K is a "hard limit" (transactions which attempt to vote for more than K delegates are simply rejected).

[1] Under the simplifying assumption that delegates always set their payout to 100%, are thus actually paid proportional to their approval rating, and only care about their payout rate.  I.e. this model doesn't consider delegates who set lower payouts to gain approval, or delegates who believe in a minority opinion for ideological reasons and are willing to accept a lower payout as the price of keeping their principles (although both of those are quite plausible real behavior of real delegates; indeed, enabling the first option is the reason why the client allows delegates to set their pay rate!)
BTS- theoretical / PTS- PZxpdC8RqWsdU3pVJeobZY7JFKVPfNpy5z / BTC- 1NfGejohzoVGffAD1CnCRgo9vApjCU2viY / the delegate formerly known as drltc / Nothing said on these forums is intended to be legally binding / All opinions are my own unless otherwise noted / Take action due to my posts at your own risk

Offline liondani

  • Hero Member
  • *****
  • Posts: 3737
  • Inch by inch, play by play
    • View Profile
    • My detailed info
  • BitShares: liondani
  • GitHub: liondani
Hi can anyone explain what a Delegate is and how they work? I've been looking for an explanation and I can't find anything!

Thanks!
                    = ^  ^ =
                     ~ '   ' ~
                          ^

Simplest terms... a delegate is a miner elected by the coin holder to produce blocks.  There are only 101 of them.

Only 101 of them are active at any point of time but many more are waiting ready to start the "hard" work .... Just vote them in  ;)


Offline tajnost

  • Newbie
  • *
  • Posts: 7
    • View Profile
i can has delegate vote?
wallet_approve_delegate tajnost
 8)

Offline Fox

I think there needs to be a weighting to high reliability. Because 95% reliability is terrible, but the payout isn't much different from having 99.99% reliability (only a 5% difference), so the incentive isn't there to get high reliability. On the other hand, if you make 95% or below = 10%, and 96% = +20%, 97% = +40%, 98% = +60%, 99%=+80%, 99.9% = +100%, this should put the incentive in the right place.

Discussion earlier in this thread include expanding the delegate slate and payout beyond the current 101, perhaps to 150.  Standby delegates #102+ may not have a valid non-zero reliability rate, which may impact payout calculations offered above. 

Current approval rates for delegate #102 drop rapidly from ~6% to ~0.6% for delegate 150.  Interestingly, the sum of approval rate for this lot is ~101% or on average a 1% subsidy per active delegate to support the standby delegates.

I feel expanding the payout delegate pool beyond 101 has merit, as having a node up to date and ready to produce blocks for the network provides value if called upon. 

Witness: fox

Offline bytemaster

Hi can anyone explain what a Delegate is and how they work? I've been looking for an explanation and I can't find anything!

Thanks!
                    = ^  ^ =
                     ~ '   ' ~
                          ^

Simplest terms... a delegate is a miner elected by the coin holder to produce blocks.  There are only 101 of them.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline dankeykang

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
    • Marie's Meows
Hi can anyone explain what a Delegate is and how they work? I've been looking for an explanation and I can't find anything!

Thanks!
                    = ^  ^ =
                     ~ '   ' ~
                          ^
Bitshares X account:  mwpeace

Please checkout my cat shelter, http://mariesmeows.wix.com/alliancerescues

Offline maqifrnswa

  • Hero Member
  • *****
  • Posts: 661
    • View Profile
I think there needs to be a weighting to high reliability. Because 95% reliability is terrible, but the payout isn't much different from having 99.99% reliability (only a 5% difference), so the incentive isn't there to get high reliability. On the other hand, if you make 95% or below = 10%, and 96% = +20%, 97% = +40%, 98% = +60%, 99%=+80%, 99.9% = +100%, this should put the incentive in the right place.

I like the idea, but I still strongly believe that market should decide what delegate's pay rates should be - not arbitrary weighted scores.

For example, the market wouldn't necessarily punish a charity (or developer) delegate with 95% reliability while the market would punish a for-profit delegate with 95% reliability in a given week. In order for such a market to work, you need to allow delegate pay rate to rise and fall with market forces. Fee adjustment alone won't help since that is more of a global fix. You want the ability for individual delegates to to react to direct market forces, which would mean allowing delegates to adjust pay rates.
maintains an Ubuntu PPA: https://launchpad.net/~showard314/+archive/ubuntu/bitshares [15% delegate] wallet_account_set_approval maqifrnswa true [50% delegate] wallet_account_set_approval delegate1.maqifrnswa true

Offline kokojie

  • Sr. Member
  • ****
  • Posts: 286
    • View Profile
their pay should go up the more votes they get. 

 +5% +5% +5%


and I want to propose something CRAZY but maybe genius....

... you end up with a popularity contest but the problem is the most popular person or people might not be anything more than cult of personality. ...is popularity the only thing that matters for a delegate? ...

I agree with this.  I have seen delegate with 91% reliability with more approval than most others with better reliability and blocks produced.  Is the job to reliably produce blocks or to be a politician who is popular but doesn't do their job?  Or maybe that is the question.  What is the job?  Based on all the discussion, time and energy spent on this, you would think the whole point of BitShares is to run and vote for delegates and the other "functionality" is an aside.

so we could add reliability to the equation, something like :

Max Delegate Pay = (Approval Rate * reliability) / 100

reliability = reliability for the last x blocks (because "current" reliability should be more importand than total...)

I think there needs to be a weighting to high reliability. Because 95% reliability is terrible, but the payout isn't much different from having 99.99% reliability (only a 5% difference), so the incentive isn't there to get high reliability. On the other hand, if you make 95% or below = 10%, and 96% = +20%, 97% = +40%, 98% = +60%, 99%=+80%, 99.9% = +100%, this should put the incentive in the right place.

Offline emski

  • Hero Member
  • *****
  • Posts: 1282
    • View Profile
    • http://lnkd.in/nPbhxG
I wonder if another KPI can be included. :
1 Calculate what percentage of transactions in blocks produced by the delegates are known in advance.
2 Check how many known transactions willing to pay fee higher than min transaction fee in blocks produced by delegates are known in advance.
3 Any other transactions that should be included in the block but aren't.

For this to work a layer of control over delegates might be required. For example the following:

"Performance Control Nodes" - They act as normal nodes connected to seed nodes and/or closest delegates. They gather transactions and evaluate delegate's produced blocks in the above mentioned manner (1,2,3).

Is it possible to link several independent such nodes to each delegate and force the delegate to exchange all the information with these nodes. For example:
A delegate receives a signed transaction but before he is able to include it to a block he should transmit it to all "Performance Control Nodes".
In that case a best practice for a delegate might be to make sure that most of "Performance Control Nodes" connected to the delegate have received the transaction(s) being included into a block before producing it.

I was just curious if some delegate control mechanism is possible and if this idea makes sense.

PS: after posting I glanced over the topic... This is way off topic. Sorry for that.

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags
Delegates should be focused on getting the vote out, their pay should go up the more votes they get. 

Theory:  people not approving of a delegate shouldn't be expected to pay for that delegate so pay should be proportional.

This would significantly increase incentive for delegates to get people involved....

if it's possible to  Automatical  evaluate  delegate   by KPI?
Considering factors such as "delay","missinig block percent", "online time " ,"pay rate" ,"Approval Rate "at the same time
but with “weight percent” voted by btser?

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
I think the lotto reward can be using at  BTS-vote too,
give some reward to the one who vote for the winner
let it be beneficial to vote for the right one.

Offline yidaidaxia

  • Full Member
  • ***
  • Posts: 179
    • View Profile
I have an idea to encourage users to vote, for 101 delegate.
like LOTTO, for example, we have 101 delegate active now, they have get their votes, maybe totally 40,000,000,000 votes.
we generate a random number between 1-40,000,000,000 every 24*60*6 blocks.
we can get this lucky vote's address
then give a lucky reward  to this address, part of  the destroy fee at this day.

to increase the chance to get the reward, users need to vote more delegate, and to the right delegate.

very good idea!  but i suggest do not link the reward to the delegate , just to enlarge their possibility by voting more delegates is good enough



PTS: PmUT7H6e7Hvp9WtKtxphK8AMeRndnow2S8   /   BTC: 1KsJzs8zYppVHBp7CbyvQAYrEAWXEcNvmp   /   BTSX: yidaidaxia (暂用)
新浪微博: yidaidaxia_郝晓曦 QQ:36191175试手补天

Offline puppies

  • Hero Member
  • *****
  • Posts: 1659
    • View Profile
  • BitShares: puppies
I have an idea to encourage users to vote, for 101 delegate.
like LOTTO, for example, we have 101 delegate active now, they have get their votes, maybe totally 40,000,000,000 votes.
we generate a random number between 1-40,000,000,000 every 24*60*6 blocks.
we can get this lucky vote's address
then give a lucky reward  to this address, part of  the destroy fee at this day.

to increase the chance to get the reward, users need to vote more delegate, and to the right delegate.

A lottery that users are entered into by voting for delegates. I like it!  +5%
I like it too.  It would currently take about $3M of BTSX to elect 101 of your own delegates.  I would like to see the voting percentage increase for the security of the network. 

My concern with max delegate pay being based upon approval level is that I believe it will result in limited voter turnout.  If I own 1% of BTSX, and I feel that the network is already secure, why would I vote for current delegates with a payout rate above their approval rate?  It would be reducing my profits for no apparent gain. 
« Last Edit: August 18, 2014, 01:01:34 am by puppies »
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline Empirical1

  • Hero Member
  • *****
  • Posts: 884
    • View Profile
I have an idea to encourage users to vote, for 101 delegate.
like LOTTO, for example, we have 101 delegate active now, they have get their votes, maybe totally 40,000,000,000 votes.
we generate a random number between 1-40,000,000,000 every 24*60*6 blocks.
we can get this lucky vote's address
then give a lucky reward  to this address, part of  the destroy fee at this day.

to increase the chance to get the reward, users need to vote more delegate, and to the right delegate.

A lottery that users are entered into by voting for delegates. I like it!  +5%

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
I have an idea to encourage users to vote, for 101 delegate.
like LOTTO, for example, we have 101 delegate active now, they have get their votes, maybe totally 40,000,000,000 votes.
we generate a random number between 1-40,000,000,000 every 24*60*6 blocks.
we can get this lucky vote's address
then give a lucky reward  to this address, part of  the destroy fee at this day.

to increase the chance to get the reward, users need to vote more delegate, and to the right delegate.