Just want to add my 2 cents/ask if I got it right.
This I believe is the central core of BIP100, copied from the documentation:
Miners vote by encoding ‘BV’+BlockSizeRequestValue into coinbase scriptSig, e.g.
“/BV8000000/” to vote for 8M. Votes are evaluated by dropping bottom 20% and top
20%, and then the most common floor (minimum) is chosen.
(
link)
The way I understand it, it means this:
1. The 20% lowest and highest votes from miners are dropped.
2. "The most common floor is chosen" - a floor function converts decimals to integers, so a vote for 8.9 mb becomes a 8 mb vote. (Is that correct?)
3. In the case that there are equal votes for say 7mb and 8mb the lowest (minimum) floor is chosen - so 7mb.
Honestly I think that sentence is pretty unclear. What if there are floors 9, 10, 11, 12, 13 with all "one" vote each and I come in with 20-30% of mining power and vote twice for 0?
Under that definition my floor of 0 would win right?
Can someone spell it out for me?
Alternative understanding:
Block size is set to be the lowest 21 percentile vote - not safe!
I think a better implementation/description would be:
"50 percentile median of votes - done". (not average - MEDIAN)
That way if its broken, well you are already under 51% attack and need to do
something anyway.