@@ -8,9 +8,9 @@ use crate::{
88 } ,
99 database:: {
1010 interface:: {
11- db_cancel_transaction , db_emer_transaction, db_signed_emer_txs, db_signed_unemer_txs ,
12- db_unvault_emer_transaction , db_unvault_transaction , db_vault_by_deposit , db_vaults ,
13- db_vaults_with_txids_in_period,
11+ db_cancel_transaction_by_txid , db_emer_transaction, db_signed_emer_txs,
12+ db_signed_unemer_txs , db_unvault_emer_transaction , db_unvault_transaction ,
13+ db_vault_by_deposit , db_vaults , db_vaults_with_txids_in_period,
1414 } ,
1515 schema:: DbVault ,
1616 DatabaseError ,
@@ -25,7 +25,7 @@ use revault_tx::{
2525 Transaction as BitcoinTransaction , Txid ,
2626 } ,
2727 miniscript:: DescriptorTrait ,
28- transactions:: RevaultTransaction ,
28+ transactions:: { transaction_chain_manager , RevaultTransaction } ,
2929} ;
3030
3131use std:: {
@@ -161,10 +161,23 @@ pub fn presigned_txs(
161161 . expect ( "Database must be available" ) ?
162162 . psbt
163163 . assert_unvault ( ) ;
164- let cancel = db_cancel_transaction ( db_path, db_vault. id )
165- . expect ( "Database must be available" ) ?
166- . psbt
167- . assert_cancel ( ) ;
164+ let ( _, cancel_batch) = transaction_chain_manager (
165+ db_vault. deposit_outpoint ,
166+ db_vault. amount ,
167+ & revaultd. deposit_descriptor ,
168+ & revaultd. unvault_descriptor ,
169+ & revaultd. cpfp_descriptor ,
170+ db_vault. derivation_index ,
171+ & revaultd. secp_ctx ,
172+ )
173+ . expect ( "We wouldn't have put a vault with an invalid chain in DB" ) ;
174+ let mut cancel = cancel_batch. all_feerates ( ) ;
175+ for cancel_tx in cancel. iter_mut ( ) {
176+ * cancel_tx = db_cancel_transaction_by_txid ( db_path, & cancel_tx. txid ( ) )
177+ . expect ( "Database must always be available" ) ?
178+ . psbt
179+ . assert_cancel ( ) ;
180+ }
168181
169182 let mut emergency = None ;
170183 let mut unvault_emergency = None ;
0 commit comments