A "reason" why a block was invalid, suitable for determining whether the provider of the block should be banned/ignored/disconnected/etc. These are much more granular than the rejection codes, which may be more useful for some other use-cases.
Declared in <consensus/validation.h>
enum class BlockValidationResult : int;
| Name | Description |
|---|---|
BLOCK_RESULT_UNSET | initial value. Block has not yet been rejected |
BLOCK_CONSENSUS | invalid by consensus rules (excluding any below reasons) |
BLOCK_CACHED_INVALID | this block was cached as being invalid and we didn't store the reason why |
BLOCK_INVALID_HEADER | invalid proof of work or time too old |
BLOCK_MUTATED | the block's data didn't match the data committed to by the PoW |
BLOCK_MISSING_PREV | We don't have the previous block the checked one is built on |
BLOCK_INVALID_PREV | A block this one builds on is invalid |
BLOCK_TIME_FUTURE | block timestamp was > 2 hours in the future (or our clock is bad) |
BLOCK_HEADER_LOW_WORK | the block header may be on a too-little-work chain |