<p>No it's not, or at least not at any point in time.</p>
<p>There are both invariant and time-dependent rules for the mempool to accept a specific transaction.</p>
<p>The <code>testmempoolaccept</code> command will check your transaction against the former (policy and consensus rules), but there is nothing you could realistically do to check the latter.</p>
<p>As an example of a time-dependent rule, you could have a software checking pre-signed transactions paying 253sat/kW of feerate against <code>testmempoolaccept</code>.<br />
Valid transactions would pass the check, nonetheless they would not broadcast if the mempool minimum feerate is &gt; 253sat/kW at the time of broadcast.</p>

CC BY-SA 4.0
2020-08-20T10:14:57.700Z
Yeah, fair enough. I was thinking more on non-transitory checks about the tx correctness, such as not double-spent, standard (ruling out fess),... I'm less concerned about transitory rejections.
sr_gi
CC BY-SA 4.0
2020-08-20T09:02:35.453Z
2020-08-20T09:02:35.453Z
Antoine Poinsot
<p>Is there any rejection rule that <code>testmempoolaccept</code> will not check, or is it safe to assume that if it passes <code>testmempoolaccept</code> validation it will be at least broadcast?</p>
<p>Mostly concerned about complex reasons, such as <code>too-long-mempool-chain</code>.</p>

<bitcoin-core><json-rpc><bitcoin-cli><mempool><testmempoolaccept>
Does testmempoolaccept check all possible rejection rules?
sr_gi
# Does testmempoolaccept check all possible rejection rules?

(Asked by: username_0 on 2020-08-19)

Is there any rejection rule that `testmempoolaccept` will not check, or is it safe to assume that if it passes `testmempoolaccept` validation it will be at least broadcast?

Mostly concerned about complex reasons, such as `too-long-mempool-chain`.

**Tags:** bitcoin-core, json-rpc, bitcoin-cli, mempool, testmempoolaccept


---

## 1 answers

### Answer by username_1 on 2020-08-20. Score: 3 | Accepted answer

No it's not, or at least not at any point in time.

There are both invariant and time-dependent rules for the mempool to accept a specific transaction.

The `testmempoolaccept` command will check your transaction against the former (policy and consensus rules), but there is nothing you could realistically do to check the latter.

As an example of a time-dependent rule, you could have a software checking pre-signed transactions paying 253sat/kW of feerate against `testmempoolaccept`.  
Valid transactions would pass the check, nonetheless they would not broadcast if the mempool minimum feerate is > 253sat/kW at the time of broadcast.

> **Comments:**
> **username_0**: Yeah, fair enough. I was thinking more on non-transitory checks about the tx correctness, such as not double-spent, standard (ruling out fess),... I'm less concerned about transitory rejections.  

---

