@@ -464,13 +464,13 @@ async def sweep_commitment_transaction(self, funding_outpoint, closing_tx, spend
464
464
if spender_tx :
465
465
# the spender might be the remote, revoked or not
466
466
htlc_sweepinfo = chan .maybe_sweep_htlcs (closing_tx , spender_tx )
467
- for prevout , htlc_sweep_info in htlc_sweepinfo .items ():
468
- htlc_tx_spender = spenders .get (prevout )
467
+ for prevout2 , htlc_sweep_info in htlc_sweepinfo .items ():
468
+ htlc_tx_spender = spenders .get (prevout2 )
469
469
if htlc_tx_spender :
470
470
keep_watching |= not self .is_deeply_mined (htlc_tx_spender )
471
471
else :
472
472
keep_watching = True
473
- await self .maybe_redeem (spenders , prevout , htlc_sweep_info , name )
473
+ await self .maybe_redeem (spenders , prevout2 , htlc_sweep_info , name )
474
474
# extract preimage
475
475
keep_watching |= not self .is_deeply_mined (spender_txid )
476
476
txin_idx = spender_tx .get_input_idx_that_spent_prevout (TxOutpoint .from_str (prevout ))
@@ -484,44 +484,12 @@ async def sweep_commitment_transaction(self, funding_outpoint, closing_tx, spend
484
484
485
485
return keep_watching
486
486
487
- def get_redeem_tx (self , spenders , prevout : str , sweep_info : 'SweepInfo' , name : str ):
488
- # check if redeem tx needs to be updated
489
- # if it is in the mempool, we need to check fee rise
490
- txid = spenders .get (prevout )
491
- old_tx = self .adb .get_transaction (txid )
492
- assert old_tx is not None or txid is None
493
- tx_depth = self .get_tx_mined_depth (txid ) if txid else None
494
- if txid and tx_depth not in [TxMinedDepth .FREE , TxMinedDepth .MEMPOOL ]:
495
- assert old_tx is not None
496
- return old_tx , None
497
- new_tx = sweep_info .gen_tx ()
498
- if new_tx is None :
499
- self .logger .info (f'{ name } could not claim output: { prevout } , dust' )
500
- assert old_tx is not None
501
- return old_tx , None
502
- if txid is None :
503
- return None , new_tx
504
- elif tx_depth == TxMinedDepth .MEMPOOL :
505
- delta = new_tx .get_fee () - self .adb .get_tx_fee (txid )
506
- if delta > 1 :
507
- self .logger .info (f'increasing fee of mempool tx { name } : { prevout } ' )
508
- return old_tx , new_tx
509
- else :
510
- assert old_tx is not None
511
- return old_tx , None
512
- elif tx_depth == TxMinedDepth .FREE :
513
- # return new tx, even if it is equal to old_tx,
514
- # because we need to test if it can be broadcast
515
- return old_tx , new_tx
516
- else :
517
- assert old_tx is not None
518
- return old_tx , None
519
487
520
488
async def maybe_redeem (self , spenders , prevout , sweep_info : 'SweepInfo' , name : str ) -> None :
521
- #old_tx, new_tx = self.get_redeem_tx(spenders, prevout, sweep_info, name)
522
- #if new_tx is None:
523
- # return
524
- prev_txid , prev_index = prevout . split ( ':' )
489
+ # early return if it is spent. rbf is handled by the wallet
490
+ prev_txid , index = prevout . split ( ':' )
491
+ if self . adb . db . get_spent_outpoint ( prev_txid , int ( index )):
492
+ return
525
493
can_broadcast = True
526
494
local_height = self .network .get_local_height ()
527
495
if sweep_info .cltv_abs :
@@ -546,7 +514,7 @@ async def maybe_redeem(self, spenders, prevout, sweep_info: 'SweepInfo', name: s
546
514
if not self .lnworker .enable_htlc_settle_onchain :
547
515
return
548
516
if can_broadcast :
549
- self .logger .info (f'we can broadcast: { name } ' )
517
+ self .logger .info (f'we can broadcast: { sweep_info . name } ' )
550
518
if sweep_info .name == 'first-stage-htlc' :
551
519
tx = sweep_info .txin
552
520
txin = tx .inputs ()[0 ]
0 commit comments