I think this relates to #27463, fyi @instagibbs
Working on a clear reproduction script for regtest, but here are some preliminary notes and signet examples:
The script (network-less) is 51024e73
. It decode
s to different addresses for mainnet, testnets (including signets) and regtest:
bc1pfeessrawgf
- mainnettb1pfees9rn5nz
- testnets (incl. signets)bcrt1pfeesnyr2tx
- regtest
This LN Anchor address is important because such transactions were noticed on signet. See examples of leftover outputs which were spent:
- 67da00b7e55c249ed338618bf7caea128365c2a35c77da5abb379e8574e537a5
- 571be0fd823de6bd1c3bc9a7349297aacc7ce73bd99638b53e381aa1651f570c
These outputs can be seen as still available on current master (6ca6f3b37b99) on signet network. Just import following read-only descriptor wallet:
0#!/bin/sh
1### start a fresh signet daemon, moving old signet datadir
2#bitcoin-cli -signet stop
3#test -d ~/.bitcoin/signet-old || mv ~/.bitcoin/signet ~/.bitcoin/signet-old
4#mkdir -p ~/bitcoin/signet/wallets
5bitcoind -signet -daemon 2>/dev/null
6
7### adjust or enhance lines above and see also your bitcoin.conf
8
9until bitcoin-cli -signet echo hello 2>/dev/null | grep -q .
10do
11 sleep 1
12done
13
14cd ~/.bitcoin/signet/wallets
15test -d lnanchor && cd lnanchor || {
16 bitcoin-cli -signet createwallet lnanchor true true
17 bitcoin-cli -signet -rpcwallet=lnanchor \
18 importdescriptors '[{"desc":"addr(tb1pfees9rn5nz)#8njps4hg","timestamp":"now"}]'
19}
20ph=$(bitcoin-cli -signet getblockchaininfo | grep pruneheight | tr -cd '[0-9]')
21bitcoin-cli -signet loadwallet lnanchor
22bitcoin-cli -signet -rpcwallet=lnanchor rescanblockchain $ph
23
24list() {
25 bitcoin-cli -signet -rpcwallet=lnanchor \
26 listunspent ${1:-0} \
27 | grep -w -e txid -e vout -e amount -e confirmations -e safe \
28 | tr -d ' ,"' \
29 | cut -d: -f2 \
30 | paste -d " " - - - - - \
31 | sort -nk4
32}
33
34while true; do LC_ALL=C date -u; list; sleep 1; done
The script works both on an already-synced signet and a newly-syncing (uncomment lines in the top) one. Soon something like the following output may be seen and feel free to press ^C
then:
0...
1Thu Aug 28 15:16:09 UTC 2025
2a7b388a8f48350f92f8987d45409723bf329519816eba808de59ad6ebe974628 2 0.00000000 127 true
3571be0fd823de6bd1c3bc9a7349297aacc7ce73bd99638b53e381aa1651f570c 2 0.00000000 128 true
406df913b8fb0fc39dac875d1b5c4cc948499ed6e3dca6d2867afc59435e66a6f 2 0.00000000 129 true
5e5cf85120935082b14889674d5c4ed66d8bfce3b8e9c0eebc9d4dea079de01d9 1 0.00000000 131 true
66faa9ecf8b2c0afd657a32f50d5d93d91d33a578bd8fdd2ef4d960dea2a1bfb7 2 0.00000000 221 true
785518747043d2bf36418f6262b6a8d35593bf8d2419250448f8cb5cbeab0d5d0 2 0.00000000 251 true
824e532f648b951376f2cef53b8c07d1e0b1fd0652a257a62968988f31c4aca26 2 0.00000000 269 true
9851248a635cb25d00dd39665636a3208c7252f059cfa418d43bf55535c283a5b 1 0.00000000 272 true
10a69bdd445aa6f82798c745792268cad4cbb2c2dd2e7a32809ee94bce51c26de5 2 0.00000000 273 true
1182779ab667f82ec42f4a7c561da5fab7952e32bf7215ba6d19a2e4fe22ab44a6 1 0.00000000 579 true
12e67aebeb09f64b1fec0177bc1b1edf336f8a31df7f264a3d83db2c2b1ebd7bb7 2 0.00000000 602 true
1367da00b7e55c249ed338618bf7caea128365c2a35c77da5abb379e8574e537a5 2 0.00000000 673 true
146acce19b0418360f9e0c1650d2267fad6761dd0e98a2da23739b62ebfaa5cb00 2 0.00000000 675 true
15ea0522ba8f4ada4d3770f0d81c212bb0f7da25235e2b8b57c04e90c96b5b598c 2 0.00000000 691 true
16d24a3e60de8ccf95fc4dfa1d6efc9c5f77100d058d1fceccba40d6a54d1a02f2 1 0.00000000 738 true
170378f0bc23d0cdbc7afe01dbfe77e4b925fa2c426a75509590ccd9f970ca288f 2 0.00000000 817 true
1819b091d8653165fda6ac25f231b6afdaba3a35a4199fa39952ae63de16c08f04 2 0.00000000 818 true
19bcb0311b7d3e78f636319ebb483e36cde5162545b7fc94df7cd4185112d7d712 2 0.00000000 832 true
2013e541ef82d52ca1010b09990f28230cfd57ab54cccd7e7fbf427a05d66d515f 1 0.00000000 833 true
2130f1fcc25b066c63f01b3b0588448bc285713d12c320d0505ac38a2aa96aaa8f 1 0.00000000 834 true
Let’s take the first transaction (…4628) and its follow-up which spends the zero output. The latter can not be traced from the former on mempool.space other than checking the LN Anchor address.
I would expect the zero output to be cleared in the descriptor wallet no matter if the spending transaction has anything to do with the first transaction in a package other than the zero output itself.