diff options
author | Suhas Daftuar <sdaftuar@gmail.com> | 2020-02-07 04:30:41 -0500 |
---|---|---|
committer | Suhas Daftuar <sdaftuar@gmail.com> | 2020-07-19 02:10:42 -0400 |
commit | 4eb515574e1012bc8ea5dafc3042dcdf4c766f26 (patch) | |
tree | 831030efbac957e854bc017702ab50890025a79c /src/consensus | |
parent | 97141ca442daea8fc9c307cf81a02b38dcc28fd8 (diff) |
Make TX_WITNESS_STRIPPED its own rejection reason
Previously, TX_WITNESS_MUTATED could be returned during transaction validation
for either transactions that had a witness that was non-standard, or for
transactions that had no witness but were invalid due to segwit validation
rules.
However, for txid/wtxid-relay considerations, net_processing distinguishes the
witness stripped case separately, because it affects whether a wtxid should be
able to be added to the reject filter. It is safe to add the wtxid of a
witness-mutated transaction to the filter (as that wtxid shouldn't collide with
the txid, and hence it wouldn't interfere with transaction relay from
txid-relay peers), but it is not safe to add the wtxid (== txid) of a
witness-stripped transaction to the filter, because that would interfere with
relay of another transaction with the same txid (but different wtxid) when
relaying from txid-relay peers.
Also updates the comment explaining this logic, and explaining that we can get
rid of this complexity once there's a sufficient deployment of wtxid-relaying
peers on the network.
Diffstat (limited to 'src/consensus')
-rw-r--r-- | src/consensus/validation.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/consensus/validation.h b/src/consensus/validation.h index a79e7b9d12..337ee244d3 100644 --- a/src/consensus/validation.h +++ b/src/consensus/validation.h @@ -30,12 +30,16 @@ enum class TxValidationResult { TX_MISSING_INPUTS, //!< transaction was missing some of its inputs TX_PREMATURE_SPEND, //!< transaction spends a coinbase too early, or violates locktime/sequence locks /** - * Transaction might be missing a witness, have a witness prior to SegWit + * Transaction might have a witness prior to SegWit * activation, or witness may have been malleated (which includes * non-standard witnesses). */ TX_WITNESS_MUTATED, /** + * Transaction is missing a witness. + */ + TX_WITNESS_STRIPPED, + /** * Tx already in mempool or conflicts with a tx in the chain * (if it conflicts with another tx in mempool, we use MEMPOOL_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. |