Comments on EOS voting

in #eos7 years ago (edited)

About voting EOS tokens

Each EOS Member, meaning an entity with an EOS ID as a single public key and at least one EOS token, may vote.

Voting is allowed for any EOS token which is "staked", or reserved, for CPU or network bandwidth. Such staking means a 3 day lockup, during which the token may not be traded. Tokens staked for storage or RAM are not eligible to vote, and those tokens are not subject to the 3 day lockup.

Each Member may vote for up to 30 BPs. Each such vote will have a "weight" equal to the number of tokens this user has staked and which is eligible for voting. For example:

  • User A has 200 tokens. 100 are staked for CPU.
    User A votes for 2 BPs, BP1 and BP3.
    Both BP1 and BP3 thus receive 100 votes.
    No other BP receives any votes.

  • User B has 400 tokens. 100 tokens are staked for CPU and
    50 tokens are staked for network.
    User B votes for 4 BPs, BP1, BP2, BP3 and BP4.
    Each of these four BPs receives 150 votes.
    Total votes are now BP1=250, BP2=150, BP3=250, BP4=150.

  • User C has 100 tokens, and stakes them all for CPU.
    User C votes for BP1 only.
    Totals are now BP1=350, BP2=150, BP3=250, BP4=150.

  • User D has 100 tokens and nothing is staked.
    User D may not vote.

A user may un-stake his tokens at any time. When he un-stakes, his votes are removed, and a three day timer is started. At the end of the three days, the tokens are unencumbered, and may now be used for any other purpose.

Also, votes have declining weight. When the vote is made, each vote corresponds to one token, with a weight of one. The weight then continuously declines, using a half-life decay formula (https://en.wikipedia.org/wiki/Half-life) , with the half-life set to 1 year. This means that if you do nothing, after one year your votes have half the effect they initially had.

The intention behind this is to encourage voters to reconfirm their votes periodically. After one month (30 days), the vote weight is 94% of the original value. If voters reconfirm once per month, their votes will continue to have maximal effect. If they do nothing, the vote values will decline like:

DaysWeight
01.00
300.94
600.89
900.84
1200.80
1500.75
1800.71
2100.67
2400.63
2700.60
3000.57
3300.53
3600.50

EOS bootstrap voting process

On June 2, 2018, there will be ERC20 contracts representing 1B EOS tokens. A "snapshot" of these contracts is prepared and, along with a draft Constitution, forms the basis of the "Genesis Block", or first block, for an EOS chain. The chain is started by the Bootstrap (or BIOS) server, which uses its secret key to sign the Genesis Block. It then adds 21 "Appointed Block Producer" nodes. These nodes will jointly operate the blockchain until they are replaced by elected BPs. When the 21 ABPs are in place, the BIOS node shuts down.

Once the chain is running, holders of the ERC20 contracts who have previously "registered" an EOS public key associated with their Ethereum public key may access the new EOS blockchain. The user's EOS tokens are available only for voting. No user or holder of ERC20 contracts is required to register, and there is no time limit for when a user may register. It is unclear at this time whether any user who did not pre-register his EOS key association with his Ethereum public key will be able to register and vote.

When the blockchain begins operation, all 1B tokens are automatically staked, 50% each for CPU and Network, and voting for BPs may begin. When a sufficient number of votes are placed (tentatively set at 150M votes), those 21 elected BPs will replace the 21 ABPs.

Note that during this initial voting period, all tokens are staked, and can only be used for voting. No transaction or transfer of any type is allowed until after the chain is validated.

Voting is continuous. Any voter may change his votes at any time. Any voter may add more BPs at any time, up to the limit of 30 BPs.

Votes are evaluated at every round, which cycles every 252 blocks, or 126 seconds (12 blocks/BP X 0.5 second/block X 21 BPs), so roughly once per two minutes. It is possible (but highly unlikely) for the pool of 21 to change every few minutes!

Validation

Initially, there are no rewards given to BPs, and no inflation activity on the blockchain.

For the chain to be fully validated, 150M votes should be placed, amounting to 15% of the total number of EOS tokens.

Operation After Validation

Block producers are rewarded for each block they produce, and so accumulate potentially 12 block rewards every 126 seconds. The exact rate of reward, for both active, top 21 BPs and for standby, reserve BPs, has been set in EOS Dawn 4.0 at 1%, with 0.25% awarded to the 21 active BPs for blocks produced, and 0.75% awarded to all producers, active and standby, based on their percentage of votes received. To gain the award from the 0.75% pool, the BP must be eligible for at least 100 EOS/day, which implies that they have received at least 0.48% of the total BP votes. Any BP candidate with fewer votes will not receive any EOS inflation rewards.

Some Scenarios Issues

The following is just guessing about some possible ways things may go.

A group of 50-75 BPs are in the Go Live pool. 21 are randomly chosen as ABPs.

The top 21 are likely to shift wildly, especially during the first hours and days. I expect that few token holders will be able to get activated and vote their staked tokens rapidly. The mechanisms to do this are difficult, and right now require obscure programs or command line execution using the full EOS client program. Very few users will have access to the tools and methods, and fewer will be motivated to learn and perform. We suspect that those who purchased the tokens for pure speculation will move slowly on this.

Thus, the opportunity exists for small groups of pre-registered EOS token holders to take rapid initiative and dominate early voting.

My best guess is that within a day or two, the early registrants will be actively voting, and the top 10-15 BPs will be entrenched, with the next 15-20 moving in and out of the top 21.

This may happen while the chain is not yet validated, in that there are not yet the required 150M votes. During this period, there are no inflation rewards, and no tokens may be un-staked or traded in any way.

Over the next month, contract holders will trickle in, and when they vote, will tend to cause movement in the 10-21 positions.

Big movements will happen as exchanges enter, both on their own account or user proxies, and via recommendations and tools provided to their user base. We should expect that exchange with large numbers of EOS contracts in their own accounts, and those now emerging as BP candidates, will be early to introduce web tools to make voting easier for their user base, or gather proxies from their user base for voting.

There is some danger for the exchange, in that the user tokens are locked up when staked for voting, and the implications of the lockup on liquidity may not be well understood by the speculative user base. I have often heard Korean EOS contract holders ask "what's in it for me to vote? Why should I lock up my tokens to vote for free".

To the extent that some BPs have friends and supporters who are long term holders of the tokens, they may have a massive advantage in gathering votes from such friends, particularly if they are able to assist others in registering their contracts, staking their tokens, and casting votes.

Economics

The following will use a token price of $15, somewhat below the current market price. I will use EOS token values as much as possible, and convert to USD equivalent for illustration. BPs will need to convert tokens, to pay their fiat costs associated with BP operations, so the short term token value is relevant.

The top 21 block producers will share the 0.25% active BP rewards. If all are active and produce all blocks, this amounts on the first day to [1B * 0.25% / 365 / 21BP = 326 EOS/BP/day] ($4892).

A minimal standby BP, with 0.5% of the vote, will receive a portion of the vote inflation pool of 0.75%, amounting to [1B * 0.75% / 365 * 0.5% = 103 EOS/day] ($1541).

Active, top 21 BPs also receive tokens from the vote pool. A top 21 BP with 3% of the total votes would receive the 326 EOS for block production, and an additional [1B * 0.75% / 365 * 3% = 616 EOS] ($9247), for a total of 943 EOS ($14,139).

On a monthly basis, the top BP could receive [30 * 943 = 28,278 EOS] ($424k). The low end standby BP would receive [30 * 103 = 3082] EOS ($46k).

Note that there will be modest increases in the number of EOS rewarded, as the total pool increases due to the annual 5% inflation.

--

Sort:  

Perfectly explained. Much appreciated