Merge bitcoindevkit/bdk#1202: fix(chain): filter coinbase tx not in best chain
991cb77b6ffix(chain): filter coinbase tx not in best chain (Wei Chen) Pull request description: ### Description Fixes #1144. Coinbase transactions cannot exist in the mempool and be unconfirmed. `TxGraph::try_get_chain_position` should always return `None` for coinbase transactions not anchored in best chain. ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing #### Bugfixes: * [ ] This pull request breaks the existing API * [x] I've added tests to reproduce the issue which are now passing * [x] I'm linking the issue being fixed by this PR ACKs for top commit: notmandatory: ACK991cb77b6fdanielabrozzoni: ACK991cb77b6fTree-SHA512: 9e06d8404708eee050c96807a876a470303f4983666c82c56c17d97c2d4b72784e75271279fd393c53a6a967a352aea1ef2762da71ac4bb58f7a0c2f05354948
This commit is contained in:
@@ -718,7 +718,14 @@ impl<A: Anchor> TxGraph<A> {
|
||||
// might be in mempool, or it might have been dropped already.
|
||||
// Let's check conflicts to find out!
|
||||
let tx = match tx_node {
|
||||
TxNodeInternal::Whole(tx) => tx,
|
||||
TxNodeInternal::Whole(tx) => {
|
||||
// A coinbase tx that is not anchored in the best chain cannot be unconfirmed and
|
||||
// should always be filtered out.
|
||||
if tx.is_coin_base() {
|
||||
return Ok(None);
|
||||
}
|
||||
tx
|
||||
}
|
||||
TxNodeInternal::Partial(_) => {
|
||||
// Partial transactions (outputs only) cannot have conflicts.
|
||||
return Ok(None);
|
||||
|
||||
Reference in New Issue
Block a user