nimbus-eth2
nimbus-eth2 copied to clipboard
Split `quarantine.unviable` into unviable and invalid
The unviable field in the quarantine is used to discover block histories that are known not to be worth pursuing - this can happen either because finalization permanently cuts off a branch of history or because an invalid block is observed which also makes any descendants of that block invalid.
Although the latter category is similar to an unviable fork, for scoring purposes it should be separated into its own collection and gossip scoring updated accordingly (REJECT:ing the latter while IGNORE:ing the former).
Example misclassification: https://github.com/status-im/nimbus-eth2/blob/187e1a06335e36bbc508fff38729833d154edbaa/beacon_chain/gossip_processing/gossip_validation.nim#L525