[#BlockValidationResult] = BlockValidationResult :mrdocs: 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. == Synopsis Declared in `<consensus/validation.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- enum class BlockValidationResult : int; ---- == Members [cols="1,4"] |=== | 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 |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#