[#TxValidationResult]
= TxValidationResult
:mrdocs:

A &quot;reason&quot; why a transaction was invalid, suitable for determining whether the provider of the transaction should be banned&sol;ignored&sol;disconnected&sol;etc&period;

== Synopsis

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

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

== Members

[cols="1,4"]
|===
| Name| Description
| `TX&lowbar;RESULT&lowbar;UNSET` 
| initial value&period; Tx has not yet been rejected
| `TX&lowbar;CONSENSUS` 
| invalid by consensus rules
| `TX&lowbar;INPUTS&lowbar;NOT&lowbar;STANDARD` 
| inputs (covered by txid) failed policy rules
| `TX&lowbar;NOT&lowbar;STANDARD` 
| otherwise didn&apos;t meet our local policy rules
| `TX&lowbar;MISSING&lowbar;INPUTS` 
| transaction was missing some of its inputs
| `TX&lowbar;PREMATURE&lowbar;SPEND` 
| transaction spends a coinbase too early, or violates locktime&sol;sequence locks
| `TX&lowbar;WITNESS&lowbar;MUTATED` 
| Transaction might have a witness prior to SegWit activation, or witness may have been malleated (which includes non&hyphen;standard witnesses)&period;
| `TX&lowbar;WITNESS&lowbar;STRIPPED` 
| Transaction is missing a witness&period;
| `TX&lowbar;CONFLICT` 
| Tx already in mempool or conflicts with a tx in the chain (if it conflicts with another tx in mempool, we use MEMPOOL&lowbar;POLICY as it failed to reach the RBF threshold) Currently this is only used if the transaction already exists in the mempool or on chain&period;
| `TX&lowbar;MEMPOOL&lowbar;POLICY` 
| violated mempool&apos;s fee&sol;size&sol;descendant&sol;RBF&sol;etc limits
| `TX&lowbar;NO&lowbar;MEMPOOL` 
| this node does not have a mempool so can&apos;t validate the transaction
| `TX&lowbar;RECONSIDERABLE` 
| fails some policy, but might be acceptable if submitted in a (different) package
| `TX&lowbar;UNKNOWN` 
| transaction was not validated because package failed
|===



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