Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed details for BSIP-22 specifications (vote decay) #153

Merged
merged 15 commits into from
Aug 22, 2019
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions bsip-0022.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ A [proposal for Peerplays](https://github.com/peerplays-network/pips/blob/master

## <div id="referendum-categories" /> Referendum Categories

BitShares has four categories of refereundums that core token holders may vote on: witnesses, committee members, worker proposals, and proxy delegation. Prior to this proposal, any vote within any category applies until changed or until the proxy assignment had been assigned. The removal of proxy assignment re-instates a core token holders' prior voting selection for witnesses, commitee members.
BitShares has three categories of referendums that core token holders may vote on: witnesses, committee members, and worker proposals. Prior to this proposal, any vote within any category applies until changed or until the proxy assignment had been assigned. The retraction of proxy delegation re-instates a core token holders' prior voting selection for witnesses, commitee members, and worker proposals.

This proposal shall retain the ability of every core token holder to vote on all referendum categories and the optional selection of a single proxy.
This proposal shall retain the ability of every core token holder to vote on all referendum categories and the optional delegation of a voting proxy.

Vote for three of the referendum categories shall be "decayable": witnesses, committee members, and proxy delegation. Votes for worker proposals [shall continue to be tabulated as they were prior to this proposal](#out-of-scope) because they are generally fixed in length.
Votes for two of the referendum categories shall be "decayable": witnesses, committee members. Votes for worker proposals [shall not be decayable and shall continue to be tabulated as they were prior to this proposal](#out-of-scope) because they are generally fixed in length. [Vote delegation to a proxy shall be decayable](#proxy-power) [except for votes for worker proposals](#proxied-votes-for-worker-proposals).
pmconrad marked this conversation as resolved.
Show resolved Hide resolved


## <div id="account-voting-stake" /> Voting Stake of an Account
Expand Down Expand Up @@ -87,15 +87,15 @@ A voter changes their vote for witnesses on December 31, 2019 20:00 UTC. This v

![Qualitative decay of voting power](bsip-0022/general-vote-decay.png)

The voting power of an [account's voting stake](#account-voting-stake) shall be set to full voting power whenever an account's vote is re-cast for _any_ [referendum category](#referendum-categories). The voting power shall remain at 100% for each of the referendum categories for the entire ["full-power period"](#vote-decay-parameters).
The voting power of an [account's voting stake](#account-voting-stake) shall be set to full voting power whenever an account's vote is re-cast for _any_ [referendum category](#referendum-categories) or is re-delegated to a voting proxy. The voting power shall remain at 100% for each of the referendum categories for the entire ["full-power period"](#vote-decay-parameters). _Retracting the delegation from a voting proxy without also casting a vote does not reset the voting power to 100%_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Retracting the delegation from a voting proxy without also casting a vote does not reset the voting power

Right now it is technically not possible to change/unset the voting proxy without also specifying a (possibly empty) list of votes. This could change in the future, so maybe leave this in.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that with the proposed explicit voting operation, not changing anything does reset the voting power. This is a contradiction.


After the full-power period, the voting power shall begin to decay towards zero during a "decay period" for every decayable referendum category. Decay shall occur in a stepped fashion (TODO: pending confirmation by Customminer) during the decay period. The [quantity of decay steps (n) shall be determined by the BitShares Committee](#vote-decay-parameters). There shall be (n - 1) decay periods. The duration of each stepped voting period (sub-period) shall equal the total vote decay duration divided by the number of decay periods. The voting power (P<sub>i</sub>) during decay period i shall be
After the full-power period, the voting power shall begin to decay towards zero during a "decay period" for witnesses, committee members, and proxy delegation. Decay shall occur in a stepped fashion (TODO: pending confirmation by Customminer) during the decay period. The [quantity of decay steps (n) shall be determined by the BitShares Committee](#vote-decay-parameters). There shall be (n - 1) decay periods. The duration of each stepped voting period (sub-period) shall equal the total vote decay duration divided by the number of decay periods. The voting power (P<sub>i</sub>) during decay period i shall be

P<sub>i</sub> = (n - i) &div; n = 1 - (i &div; n)

After the last decay period has expired, the voting power shall reduce to zero until either the account re-casts its votes, or the [vote decay parameters are adjusted](#vote-decay-parameters) such that the age of the account's last vote within that category possibly moves from "expired" to the the "decay age" or "full-power age".

In summary, the age of a category vote by an account will typically decay from "full-power" through "decaying" to "expired" unless and until the account re-casts its voting slate in any referendum category.
In summary, the age of a category vote by an account will typically decay from "full-power" through "decaying" to "expired" unless and until the account re-casts its voting slate in any referendum category or re-delegates a voting proxy.

---
<center>**Example of Vote Decay**</center>
Expand All @@ -117,9 +117,9 @@ A voter changes their vote for witnesses on December 31, 2019, and then does not

## <div id="separate-decay-rates" /> Separate Decay Rates

This proposal shall [decay]((#vote-decay-function)) the voting power for [each referendum category](#referendum-categories) at different rates of decay that can be [adjusted by the BitShares Committee](#adjustable-vote-decay-parameters). Consequently the voting power of an account for different referendum categories may, depending on the decay parameters, decay to zero before others.
This proposal shall [decay]((#vote-decay-function)) the voting power for [decayable referendum categories and proxy delegation](#referendum-categories) at different rates of decay that can be [adjusted by the BitShares Committee](#adjustable-vote-decay-parameters). Consequently the voting power of an account for different referendum categories may, depending on the decay parameters, decay to zero before others.

A vote in any referendum category will reset the [latest vote date](https://github.com/bitshares/bitshares-core/blob/bf7ff54d9a17aa43f4663521e371b8c0ddfc2284/libraries/chain/include/graphene/account_object.hpp#L73) which will reset the "vote decay clock" across each of the referendum categories.
A vote in any referendum category or the re-delegation to a voting proxy will reset the [latest vote date](https://github.com/bitshares/bitshares-core/blob/bf7ff54d9a17aa43f4663521e371b8c0ddfc2284/libraries/chain/include/graphene/account_object.hpp#L73) which will reset the "vote decay clock" across each of the referendum categories.

---
<center>**Example of Different Vote Decay Rates**</center>
Expand Down Expand Up @@ -152,7 +152,7 @@ The voting power since the date of last vote is shown in the table below.
|275 days|0|50|
|300 days|0|0|

The voting power for these two referendum categories will remain at 0 until the account re-casts its votes at which time it will return to 100%.
The voting power for these two referendum categories will remain at 0 until the account re-casts its votes or re-delegates a voting proxy at which time it will return to 100%.

---

Expand All @@ -165,9 +165,9 @@ A core token holder (a "delegator") may choose to delegate their voting power to

Account A has a [voting stake](#account-voting-stake) of 1000 BTS. Account B has a voting stake of 500 BTS. Account C has a voting stake 20 BTS.

Account A has selected Account C to be its voting proxy but [sufficient time has elapsed since this proxy assignment](#separate-decay-rates) such that the effective delegation has decayed to 75%.
Account A has delegated Account C to be its voting proxy but [sufficient time has elapsed since this proxy assignment](#separate-decay-rates) such that the effective delegation has decayed to 75%.

Similary, Account B has selected Account C to be its voting proxy but [sufficient time has elapsed since this proxy assignment](#separate-decay-rates) such that the effective delegation has decayed to 50%.
Similary, Account B has delegated Account C to be its voting proxy but [sufficient time has elapsed since this proxy assignment](#separate-decay-rates) such that the effective delegation has decayed to 50%.

Account C, the proxy, voted for committee members long enough ago such that his [voting power for the committee membership category has decayed](#separate-decay-rates) to 25%.

Expand Down Expand Up @@ -207,7 +207,7 @@ Votes for worker proposals by a proxy shall be tabulated with the full cumulativ

## <div id="vote-decay-parameters" /> Adjustable Vote Decay Parameters

The BitShares Committee shall be able to adjust the three voting parameters that affect vote decay calculations across the [decayable referendum categories](#referendum-categories). The three parameters within each referendum category are: full-power duration by referendum category; total decay duration by referendum category; total quantity of decay steps. There will consequently be a total of 12 parameters that can be altered by the Committee.
The BitShares Committee shall be able to adjust the three voting parameters that affect vote decay calculations across the [decayable referendum categories and proxy delegation](#referendum-categories). The three parameters within each referendum category and proxy delegation are: full-power duration by referendum category; total decay duration by referendum category; total quantity of decay steps. There will consequently be a total of 12 parameters that can be altered by the Committee.

TODO: Absolute minimum or maximum durations; absolute minimum or maximum decay steps

Expand All @@ -220,14 +220,14 @@ A reduction of either full-power duration or the decay duration could have the e
Similarly, an increase of either the full-power duration or the decay duration can increase the voting power of an account by effectively rejuvenating an account's vote from "expired" status to either "decaying" or "full-power" status, or from "decaying" to "full-power" status. A qualitative example of this can be seen in the figure if the decay parameters are changed from Settings B to Settings A.


### Changing the Decay Steps of a Referendum Category
### Changing the Decay Steps of a Referendum Category or Proxy Delegation

Changing only the quantity of decay steps can potentially change the voting power of accounts _whose voting age fall within the decay period_. The change in voting power for these accounts is a function of both the change in the quantity of decay steps, and the account's voting age.

pmconrad marked this conversation as resolved.
Show resolved Hide resolved

## <div id="initial-voting-power" /> Initial Voting Power

Vote decay will have no effect on any account prior to the activation of this proposal with a hardfork date ("activation date"). After this proposal is activated, the **effective** [latest vote date](https://github.com/bitshares/bitshares-core/blob/bf7ff54d9a17aa43f4663521e371b8c0ddfc2284/libraries/chain/include/graphene/account_object.hpp#L73) for the purpose of vote decay calculations, shall be considered to be the activation date. The activation date will effectively become the [start of the full-voting period](#vote-decay-function) for every account. All votes that exist at the time of the activation date will initially have maximum voting power across every referendum categories.
Vote decay will have no effect on any account prior to the activation of this proposal with a hardfork date ("activation date"). After this proposal is activated, the **effective** [latest vote date](https://github.com/bitshares/bitshares-core/blob/bf7ff54d9a17aa43f4663521e371b8c0ddfc2284/libraries/chain/include/graphene/account_object.hpp#L73) for the purpose of vote decay calculations, shall be considered to be the activation date. The activation date will effectively become the [start of the full-voting period](#vote-decay-function) for every account. All votes that exist at the time of the activation date will initially have maximum voting power across every referendum category and proxy delegation.

Any subsequent voting by an account will set a new latest vote date for an account that will reset the [vote decay clock](#separate-decay-rates) for that account.

Expand All @@ -237,7 +237,7 @@ Any subsequent voting by an account will set a new latest vote date for an accou
|Element|Proposal|[Peerplays GPOS](#peerplays-vote-decay)|[EOS](#eos-vote-decay)|
|-|-|-|-|
|Decay Rate|Full-power during initial period followed by stepped decrease during decay period until reaching zero power|Full-power during initial sub-period followed by stepped decrease until reaching zero power|Full-power during initial period followed by stepped increase of newer votes by other accounts|
|Effect of decay rate on referendum issues|Separate decay rates for every _decayable_ referendum category|Single decay rate shared by every referendum category|Single decay rate shared by every referendum category|
|Effect of decay rate on referendum issues|Separate decay rates for every _decayable_ referendum category and proxy delegation|Single decay rate shared by every referendum category|Single decay rate shared by every referendum category|
|Effect of decay rate on other issues|None|Decays the share of blockchain profits that are received by an account|Decays the share of payment for standby block producers|

## Software Specifications
Expand All @@ -251,7 +251,7 @@ TODO

- The effects of vote decay, especially during the decay of the [initially "grandfathered" votes](#initial-voting-power), may result in sudden changes to the elected witnesses, and committee members. This sudden change could be disruptive to those witnesses, and committee members that are suddenly voted out.

- Core token holders who select [a proxy account that fails to re-cast its own votes periodically will have their effective voting power decay over time](#proxy-power) despite re-casting their own votes for that proxy.
- Core token holders who delegate [a voting proxy who fails to re-cast his own votes periodically will have their effective voting power decay over time](#proxy-power) despite re-casting their own votes for that proxy.


# Discussion
Expand Down