Validation result for a transaction evaluated by MemPoolAccept (single or package). Here are the expected fields and properties of a result depending on its ResultType, applicable to results returned from package evaluation:+---------------------------+----------------+-------------------+------------------+----------------+-------------------+| Field or property | VALID | INVALID | MEMPOOL_ENTRY | DIFFERENT_WITNESS || | |--------------------------------------| | || | | TX_RECONSIDERABLE | Other | | |+---------------------------+----------------+-------------------+------------------+----------------+-------------------+| txid in mempool? | yes | no | no* | yes | yes || wtxid in mempool? | yes | no | no* | yes | no || m_state | yes, IsValid() | yes, IsInvalid() | yes, IsInvalid() | yes, IsValid() | yes, IsValid() || m_vsize | yes | no | no | yes | no || m_base_fees | yes | no | no | yes | no || m_effective_feerate | yes | yes | no | no | no || m_wtxids_fee_calculations | yes | yes | no | no | no || m_other_wtxid | no | no | no | no | yes |+---------------------------+----------------+-------------------+------------------+----------------+-------------------+ (*) Individual transaction acceptance doesn't return MEMPOOL_ENTRY and DIFFERENT_WITNESS. It returns INVALID, with the errors txn-already-in-mempool and txn-same-nonwitness-data-in-mempool respectively. In those cases, the txid or wtxid may be in the mempool for a TX_CONFLICT.
Declared in <validation.h>
struct MempoolAcceptResult;
| Name | Description |
|---|---|
ResultType | Used to indicate the results of mempool validation. |
| Name | Description |
|---|---|
Failure | Build a result for a transaction that failed validation. |
FeeFailure | Build a result for a fee-related validation failure. |
MempoolTx | Build a result for a transaction that was already present in the mempool. |
MempoolTxDifferentWitness | Build a result for a transaction rejected because a same-txid, different-witness transaction is already in the mempool. |
Success | Build a result for a transaction that was successfully accepted into the mempool. |
| Name | Description |
|---|---|
m_base_fees | Raw base fees in satoshis. |
m_effective_feerate | The feerate at which this transaction was considered. This includes any fee delta added using prioritisetransaction (i.e. modified fees). If this transaction was submitted as a package, this is the package feerate, which may also include its descendants and/or ancestors (see m_wtxids_fee_calculations below). |
m_other_wtxid | The wtxid of the transaction in the mempool which has the same txid but different witness. |
m_replaced_transactions | Mempool transactions replaced by the tx. |
m_result_type | Result type. Present in all MempoolAcceptResults. |
m_state | Contains information about why the transaction failed. |
m_vsize | Virtual size as used by the mempool, calculated using serialized size and sigops. |
m_wtxids_fee_calculations | Contains the wtxids of the transactions used for fee-related checks. Includes this transaction's wtxid and may include others if this transaction was validated as part of a package. This is not necessarily equivalent to the list of transactions passed to ProcessNewPackage(). Only present when m_result_type = ResultType::VALID. |
| Name | Description |
|---|---|
AcceptToMemoryPool | Try to add a transaction to the mempool. This is an internal function and is exposed only for testing. Client code should use ChainstateManager::ProcessTransaction() |