v0.15.6 — UTXO ghost-spender wedge fix (recommended upgrade) #1329
oskarszoon
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
v0.15.6 — UTXO ghost-spender wedge fix (recommended upgrade)
Released: 2026-07-23
GitHub: https://github.com/bsv-blockchain/teranode/releases/tag/v0.15.6
Container: ghcr.io/bsv-blockchain/teranode:v0.15.6
Upgrade priority
Recommended — fixes a wedge scenario where the node stops advancing on a specific block and retries it forever.
Symptom to watch for
Node stuck on a block that will not validate. Both entry points wedge:
HandleBlockDirect) retries the same block indefinitelyCheckBlockSubtreesRequest) does the sameSubtree validation logs a fatal
ProcessingErrorfromcheckCounterConflictingOnCurrentChain— the underlying error isTX_NOT_FOUNDinsideGetCounterConflictingTxHashes. The counterteranode_utxo_counter_conflicting_ghost_spends(new in v0.15.6) will increment on nodes that were affected once the fix is deployed and revisit the same slot.Root cause
A multi-input transaction whose spends partially succeed but whose record is never created leaves parent outputs with a recorded spender that does not exist (a "ghost"). A later block containing a conflicting transaction over the same slot hits the ghost during counter-conflicting resolution and cannot progress.
What changed
ProcessConflicting(fix(utxo): tolerate confirmed ghost spenders in counter-conflicting walk and heal their dangling spends #1325, closes subtreevalidation: tolerate a dangling spender ref in the counter-conflicting walk (minimal read-side unwedge) #1320)Write-side cause tracked separately in #1214.
maingets a different fix — this is a v0.15-line-only backport.Known issues
None new.
Full changelog
All reactions