@@ -500,9 +500,6 @@ impl PackageTemplate {
500
500
pub ( crate ) fn aggregable ( & self ) -> bool {
501
501
self . aggregable
502
502
}
503
- pub ( crate ) fn feerate ( & self ) -> u64 {
504
- self . feerate_previous
505
- }
506
503
pub ( crate ) fn set_feerate ( & mut self , new_feerate : u64 ) {
507
504
self . feerate_previous = new_feerate;
508
505
}
@@ -654,6 +651,28 @@ impl PackageTemplate {
654
651
}
655
652
current_height + LOW_FREQUENCY_BUMP_INTERVAL
656
653
}
654
+ /// Returns value in satoshis to be included as package outgoing output amount and feerate with which package finalization should be done.
655
+ pub ( crate ) fn compute_package_output < F : Deref , L : Deref > ( & self , predicted_weight : usize , input_amounts : u64 , fee_estimator : & F , logger : & L ) -> Option < ( u64 , u64 ) >
656
+ where F :: Target : FeeEstimator ,
657
+ L :: Target : Logger ,
658
+ {
659
+ // If old feerate is 0, first iteration of this claim, use normal fee calculation
660
+ if self . feerate_previous != 0 {
661
+ if let Some ( ( new_fee, feerate) ) = feerate_bump ( predicted_weight, input_amounts, self . feerate_previous , fee_estimator, logger) {
662
+ // If new computed fee is superior at the whole claimable amount burn all in fees
663
+ if new_fee > input_amounts {
664
+ return Some ( ( 0 , feerate) ) ;
665
+ } else {
666
+ return Some ( ( input_amounts - new_fee, feerate) ) ;
667
+ }
668
+ }
669
+ } else {
670
+ if let Some ( ( new_fee, feerate) ) = compute_fee_from_spent_amounts ( input_amounts, predicted_weight, fee_estimator, logger) {
671
+ return Some ( ( input_amounts - new_fee, feerate) ) ;
672
+ }
673
+ }
674
+ None
675
+ }
657
676
pub ( crate ) fn build_package ( txid : Txid , vout : u32 , input_solving_data : PackageSolvingData , soonest_conf_deadline : u32 , aggregable : bool , height_original : u32 ) -> Self {
658
677
let malleability = match input_solving_data {
659
678
PackageSolvingData :: RevokedOutput ( ..) => { PackageMalleability :: Malleable } ,
@@ -805,29 +824,3 @@ fn feerate_bump<F: Deref, L: Deref>(predicted_weight: usize, input_amounts: u64,
805
824
} ;
806
825
Some ( ( new_fee, new_fee * 1000 / ( predicted_weight as u64 ) ) )
807
826
}
808
-
809
- /// Deduce a new proposed fee from the claiming transaction output value.
810
- /// If the new proposed fee is superior to the consumed outpoint's value, burn everything in miner's
811
- /// fee to deter counterparties attacker.
812
- pub ( crate ) fn compute_output_value < F : Deref , L : Deref > ( predicted_weight : usize , input_amounts : u64 , previous_feerate : u64 , fee_estimator : & F , logger : & L ) -> Option < ( u64 , u64 ) >
813
- where F :: Target : FeeEstimator ,
814
- L :: Target : Logger ,
815
- {
816
- // If old feerate is 0, first iteration of this claim, use normal fee calculation
817
- if previous_feerate != 0 {
818
- if let Some ( ( new_fee, feerate) ) = feerate_bump ( predicted_weight, input_amounts, previous_feerate, fee_estimator, logger) {
819
- // If new computed fee is superior at the whole claimable amount burn all in fees
820
- if new_fee > input_amounts {
821
- return Some ( ( 0 , feerate) ) ;
822
- } else {
823
- return Some ( ( input_amounts - new_fee, feerate) ) ;
824
- }
825
- }
826
- } else {
827
- if let Some ( ( new_fee, feerate) ) = compute_fee_from_spent_amounts ( input_amounts, predicted_weight, fee_estimator, logger) {
828
- return Some ( ( input_amounts - new_fee, feerate) ) ;
829
- }
830
- }
831
- None
832
- }
833
-
0 commit comments