[#BlockValidationResult]
= BlockValidationResult
:mrdocs:

A &quot;reason&quot; why a block was invalid, suitable for determining whether the provider of the block should be banned&sol;ignored&sol;disconnected&sol;etc&period; These are much more granular than the rejection codes, which may be more useful for some other use&hyphen;cases&period;

== Synopsis

Declared in `&lt;consensus&sol;validation&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
enum class BlockValidationResult : int;
----

== Members

[cols="1,4"]
|===
| Name| Description
| `BLOCK&lowbar;RESULT&lowbar;UNSET` 
| initial value&period; Block has not yet been rejected
| `BLOCK&lowbar;CONSENSUS` 
| invalid by consensus rules (excluding any below reasons)
| `BLOCK&lowbar;CACHED&lowbar;INVALID` 
| this block was cached as being invalid and we didn&apos;t store the reason why
| `BLOCK&lowbar;INVALID&lowbar;HEADER` 
| invalid proof of work or time too old
| `BLOCK&lowbar;MUTATED` 
| the block&apos;s data didn&apos;t match the data committed to by the PoW
| `BLOCK&lowbar;MISSING&lowbar;PREV` 
| We don&apos;t have the previous block the checked one is built on
| `BLOCK&lowbar;INVALID&lowbar;PREV` 
| A block this one builds on is invalid
| `BLOCK&lowbar;TIME&lowbar;FUTURE` 
| block timestamp was &gt; 2 hours in the future (or our clock is bad)
| `BLOCK&lowbar;HEADER&lowbar;LOW&lowbar;WORK` 
| the block header may be on a too&hyphen;little&hyphen;work chain
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
