Background
If we fail a broadcast, we don't do anything, and the channel just sits there. This still occupies the locked UTXOs, and also the pending channel entry in the database:
|
|
|
err = f.cfg.PublishTransaction(fundingTx, label) |
|
if err != nil { |
|
log.Errorf("Unable to broadcast funding tx %x for "+ |
|
"ChannelPoint(%v): %v", fundingTxBuf.Bytes(), |
|
completeChan.FundingOutpoint, err) |
|
|
|
// We failed to broadcast the funding transaction, but |
|
// watch the channel regardless, in case the |
|
// transaction made it to the network. We will retry |
|
// broadcast at startup. |
|
// |
|
// TODO(halseth): retry more often? Handle with CPFP? |
|
// Just delete from the DB? |
|
} |
|
} |
Steps to reproduce
Double spend a UTXO in a funding transaction.
Expected behaviour
UTXO unlocked, and pending channel cleared.
Actual behaviour
UTXOs still locked, channel shows up in lncli pendingchannels.
Background
If we fail a broadcast, we don't do anything, and the channel just sits there. This still occupies the locked UTXOs, and also the pending channel entry in the database:
lnd/funding/manager.go
Lines 2448 to 2463 in 03b26bb
Steps to reproduce
Double spend a UTXO in a funding transaction.
Expected behaviour
UTXO unlocked, and pending channel cleared.
Actual behaviour
UTXOs still locked, channel shows up in
lncli pendingchannels.