Closed BrainTR closed 1 year ago
Yea, we have noticed it. And we are trying to figure out a proposal to address this problem. BSC core team delivers a reference binary release and it is open source, if all validators follow the default rule, it will be ok. However, some of the rule is not written in the consensus, it does have the risk that some validators change the code and gain more reward, but not punished. It is not fair and not acceptable, but we have to make it be part of the consensus, while not rely on validator's self-discipline.
There is a PR try to eliminate the problem, make mining more fair and follow the GasPrice rule as well. You may check: https://github.com/bnb-chain/bsc/pull/1186/
If it is not fair and not acceptable, since the validators are elected by BNB holders, why not anyone propose to vote down these BAD validators or even slash them?
Slash them may not be a good solution. Although they got more rewards, they have not broken the law right now. We will work out other solution to make it more fair between validators.
Fair enough. It would be better if we can solve the problem through code. Just want to bring up that sometimes we can utilize the power of PoS, especially when some behavior is bad for the chain healthy and the code is not ready. It's also a threat to those who want to do bad things.
I have another concern is that with the bug fix, can we really stop these validators broadcast their blocks for about 1-2 seconds late to package even more transactions. In theory if a validator A broadcasts a block too late, other validators will propose blocks trying to replace the late block. Then there will be a competition and several reorgs maybe. But actually the candidate block most likely would be proposed by the 8 validators motioned above (maybe they also changed the code to propose the candidate earlier)
There are MANY things some validators are doing to increase the rewards. Reorganizing transactions to own benefit, etc.
I've noticed also some chainlink oracles are starting to expose their transactions only to Avengers and friends validators, having not competition to liquidation bots. That's the problem when you have only 21 validators, it is easy to cheat. For example, look this venus liquidation bot xD 0xd915cb4a5384b473378939e671a243c6e93a08a5
I think there is not much to do.
Normally validators adds transactions to the block which between (Block.Timestamp - 6000ms~) and (Block.Timestamp - 3000ms~). #107 #239 But some validator adds transactions to the block which between (Block.Timestamp - 6000ms~) and (Block.Timestamp - 500ms~). Because of this, some validators adds more transactions to the block than other validators and gains more reward.
I wrote a simple script and detected some of those validators:
Their APRs are higher than the others. https://www.bnbchain.org/en/staking Some validators in this list also mentioned in the following issues: #1101 #1170
I think they are using a patch something like #1151 for their custom geth.
Example Data
{BlockNumber} - {ValidatorAddress} - ...
Normal Block Flow
Abnormal Block Flow
These validators is sort of stealing transactions (and rewards) from the next validator. Is this normal and acceptable?