@@ -302,10 +302,14 @@ impl PartyParams {
302
302
let this_party_fund_base_weight = ( FUND_TX_BASE_WEIGHT as f32 * fee_multiplier) as usize ;
303
303
304
304
let fund_weight_without_change = checked_add ! (
305
- this_party_fund_base_weight,
306
- inputs_weight
305
+ dbg! ( this_party_fund_base_weight) ,
306
+ dbg! ( inputs_weight)
307
307
) ?;
308
- let fund_fee_without_change = util:: tx_weight_to_fee ( fund_weight_without_change, fee_rate_per_vb) ?;
308
+ let fund_fee_without_change = if inputs_weight > 0 {
309
+ util:: tx_weight_to_fee ( fund_weight_without_change, fee_rate_per_vb) ?
310
+ } else {
311
+ 0
312
+ } ;
309
313
310
314
// Base weight (nLocktime, nVersion, funding input ...) is distributed
311
315
// among parties independently of output types
@@ -321,13 +325,11 @@ impl PartyParams {
321
325
( FeeConfig :: EvenSplit , _) => output_spk_fee,
322
326
( FeeConfig :: AllOffer , false ) | ( FeeConfig :: AllAccept , true ) => 0 ,
323
327
} ;
324
- let cet_or_refund_base_fee = util:: weight_to_fee ( this_party_cet_base_weight, fee_rate_per_vb) ?;
325
- let cet_or_refund_fee = checked_add ! ( cet_or_refund_base_fee, output_spk_fee) ?;
326
-
327
- let extra_fee = ( extra_fee as f32 * fee_multiplier) as u64 ;
328
+ let cet_or_refund_base_fee = util:: weight_to_fee ( dbg ! ( this_party_cet_base_weight) , fee_rate_per_vb) ?;
329
+ let cet_or_refund_fee = checked_add ! ( dbg!( cet_or_refund_base_fee) , dbg!( output_spk_fee) ) ?;
328
330
329
331
let required_input_funds =
330
- checked_add ! ( self . collateral, fund_fee_without_change, cet_or_refund_fee, extra_fee) ?;
332
+ checked_add ! ( self . collateral, dbg! ( fund_fee_without_change) , dbg! ( cet_or_refund_fee) , dbg! ( extra_fee) ) ?;
331
333
332
334
if self . input_amount < required_input_funds {
333
335
return Err (
@@ -375,14 +377,14 @@ impl PartyParams {
375
377
}
376
378
} ;
377
379
378
- let fund_fee = fund_fee_without_change + change_fee;
380
+ let fund_fee = dbg ! ( fund_fee_without_change) + dbg ! ( change_fee) ;
379
381
380
382
let change_output = TxOut {
381
- value : change_amount,
383
+ value : dbg ! ( change_amount) ,
382
384
script_pubkey : self . change_script_pubkey . clone ( ) ,
383
385
} ;
384
386
385
- Ok ( ( change_output, fund_fee, cet_or_refund_fee) )
387
+ Ok ( ( change_output, dbg ! ( fund_fee) , dbg ! ( cet_or_refund_fee) ) )
386
388
}
387
389
388
390
fn get_unsigned_tx_inputs_and_serial_ids ( & self , sequence : Sequence ) -> ( Vec < TxIn > , Vec < u64 > ) {
@@ -460,13 +462,22 @@ pub(crate) fn create_fund_transaction_with_fees(
460
462
) -> Result < ( Transaction , Script ) , Error > {
461
463
let total_collateral = checked_add ! ( offer_params. collateral, accept_params. collateral) ?;
462
464
463
- let ( offer_extra_fee, accept_extra_fee) = {
464
- let half = extra_fee / 2 ;
465
- let remainder = extra_fee % 2 ;
465
+ let ( offer_extra_fee, accept_extra_fee) =
466
+ match fee_config {
467
+ FeeConfig :: EvenSplit => {
468
+ let half = extra_fee / 2 ;
469
+ let remainder = extra_fee % 2 ;
466
470
467
- // The offer party has to pay an extra sat if there is a remainder.
468
- ( half + remainder, half)
469
- } ;
471
+ // The offer party has to pay an extra sat if there is a remainder.
472
+ ( half + remainder, half)
473
+ } ,
474
+ FeeConfig :: AllOffer => {
475
+ ( extra_fee, 0 )
476
+ } ,
477
+ FeeConfig :: AllAccept => {
478
+ ( 0 , extra_fee)
479
+ } ,
480
+ } ;
470
481
471
482
let ( offer_change_output, offer_fund_fee, offer_cet_fee) =
472
483
offer_params. get_change_output_and_fees ( fee_rate_per_vb, offer_extra_fee, fee_config, true ) ?;
@@ -485,7 +496,7 @@ pub(crate) fn create_fund_transaction_with_fees(
485
496
// transaction (for DLC channels) and a CET or refund transaction.
486
497
assert_eq ! (
487
498
fund_output_value,
488
- total_collateral + offer_cet_fee + accept_cet_fee + offer_extra_fee + accept_extra_fee
499
+ total_collateral + offer_cet_fee + dbg! ( accept_cet_fee) + offer_extra_fee + dbg! ( accept_extra_fee)
489
500
) ;
490
501
491
502
// The sum of the inputs provided by both parties have to cover: the fund output; all the change
0 commit comments