BEP-404:Clear Miner History when Switching Validators Set

  BEP: 404
  Title: Clear Miner History when Switching Validators Set
  Status: Candidate
  Type: Standards
  Created: 2024-07-01

BEP-404: Clear Miner History when Switching Validators Set

1. Summary

After switching the validator set on the BSC chain, the previous block production record is still used to restrict some validators from producing blocks for the first few blocks after the switch, leading to brief network instability. This BEP aims to resolve this issue.

2. Motivation

The validator set on the BSC chain switches at each epoch.

Assume the number of validators in an epoch is validatorN. To ensure the consistency of the BSC chain, it is required that the chain must have at least validatorN/2+1 validators to continue advancing the chain.

To achieve this constraint, a set called MinerHistory is defined, with a length of validatorN/2, recording the validators that produced the last validatorN/2 blocks. New block-producing validators are required to not be in MinerHistory.

This BEP aims to enhance network stability by clearing MinerHistory when the validator set switches.

3. Status

This BEP is in progress.

4. Specification

In the previous specification, when the validator set switches at each epoch, MinerHistory is not cleared, causing some validators to be unable to produce blocks normally for the first few blocks after the switch.

This BEP clarifies that MinerHistory should be cleared when switching the validator set to solve this issue.

MinerHistory map[uint64]Address

// The conditions for switching remain unchanged
if BlockNum % EpochLength == (validatorN/2) {
    MinerHistory = Address{}

5. Backwards Compatibility

There are no known backward compatibility issues.

6. License

The content is licensed under CC0

these non in turn blocks is caused by the issue mentioned in BEP-404, this PR will solve it