iost-official / go-iost

Official Go implementation of the IOST blockchain
https://developers.iost.io/
GNU Lesser General Public License v3.0
565 stars 112 forks source link

Servi Node balance restriction to vote maximum #858

Open jerkyrs opened 5 years ago

jerkyrs commented 5 years ago

According to current design of PoB there is a limit of 10 times the Vote count for servi balance

https://medium.com/iost/introducing-pob-how-to-design-a-more-decentralized-consensus-bfe2ff82b485

  1. In most cases the candidate with the most Servi will become a member of the committee. To limit this, we set a rule that prevents Servi balances to be more than ten times the total amount of votes cast.

In the current situation top nodes are 150 million votes, 17th node is around 10 million and bottom nodes 2 million. Lets assume vote is 1.5 billion total, so 10x of this is 15 billion.

There are 144 rounds a day, assume no deductions at all(17th node deduction) a top node will have a server balance of 150,000,000(150 million) x 144 = 21,600,000,000 (21.6 billion) . There will be deductions during each round that are not calculated in above but within one day they are at more then 10x total votes available (equivalent servi node balance)

As a Servi node to get into round you do not need to beat number 1 just number 17, so predicting 17th spot in comparison, so for example current 17th spot is 10 million votes.

144 x 10,000,000 = 1,440,000,000 (1.4 billion) total assuming no deductions

It is very difficult to predict but on average lets assume the first node will never be deducted by more then the maximum daily accumulation of the 17th node.

In this respect the total to get into a round might very well move into the range of a couple hundred million, for arguments sake lets assume 100 million.

For a node at bottom with 2 million votes they will need to wait 50 rounds (~2-3 rounds a day) to gain 100 million, if the bottom bracket is 1 billion, they would need to wait 500 rounds (1 round every 3 days)

They payout per round is 210,000,000 / 365 / 144 / 17 = 235 IOST per Servi Node (In a round)

To make it more likely for nodes to participate the restriction should should be 1x-5x rather then 10x

jerkyrs commented 5 years ago

Further update to this is that Servi Node deduction is not the balance of 17th node it is 1/10th the Medium average of the 17 current producers.

In current version the 10x restriction does not exist, this is causing top node to run away with Servi Balance and 1/10th average is mainly determined by a single node. The 10x restriction should be re-instated with additional logic to reset producer to 0 to bring the average of deduction back down.

For example if total cast vote is 2 billion, 10x maximum would enforce Servi balance of 20 billion , if a candidate gets to 20 billion their servi balance should be reset to 0. Servi nodes who can reach the 10x restriction will easily be able to get back into rotation within a couple of rounds at most.