Use min(feerate,ancestor_feerate) for ancestor score
This commit is contained in:
		
							parent
							
								
									832e63ae9a
								
							
						
					
					
						commit
						8cb5d8db3d
					
				@ -15,6 +15,7 @@ pub struct AuditTransaction {
 | 
			
		||||
    pub weight: u32,
 | 
			
		||||
    pub sigop_adjusted_vsize: u32,
 | 
			
		||||
    pub sigops: u32,
 | 
			
		||||
    adjusted_fee_per_vsize: f64,
 | 
			
		||||
    pub effective_fee_per_vsize: f64,
 | 
			
		||||
    pub dependency_rate: f64,
 | 
			
		||||
    pub inputs: Vec<u32>,
 | 
			
		||||
@ -73,6 +74,18 @@ impl Ord for AuditTransaction {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[inline]
 | 
			
		||||
fn calc_fee_rate(
 | 
			
		||||
    fee: f64,
 | 
			
		||||
    vsize: u32,
 | 
			
		||||
) -> f64 {
 | 
			
		||||
    fee / (if vsize == 0 {
 | 
			
		||||
        1.0
 | 
			
		||||
    } else {
 | 
			
		||||
        f64::from(vsize)
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl AuditTransaction {
 | 
			
		||||
    pub fn from_thread_transaction(tx: &ThreadTransaction) -> Self {
 | 
			
		||||
        // rounded up to the nearest integer
 | 
			
		||||
@ -83,6 +96,7 @@ impl AuditTransaction {
 | 
			
		||||
            weight: tx.weight,
 | 
			
		||||
            sigop_adjusted_vsize,
 | 
			
		||||
            sigops: tx.sigops,
 | 
			
		||||
            adjusted_fee_per_vsize: calc_fee_rate(tx.fee, sigop_adjusted_vsize),
 | 
			
		||||
            effective_fee_per_vsize: tx.effective_fee_per_vsize,
 | 
			
		||||
            dependency_rate: f64::INFINITY,
 | 
			
		||||
            inputs: tx.inputs.clone(),
 | 
			
		||||
@ -135,12 +149,7 @@ impl AuditTransaction {
 | 
			
		||||
    /// Safety: This function must NEVER set score to NaN.
 | 
			
		||||
    #[inline]
 | 
			
		||||
    fn calc_new_score(&mut self) {
 | 
			
		||||
        self.score = (self.ancestor_fee as f64)
 | 
			
		||||
            / (if self.ancestor_sigop_adjusted_vsize == 0 {
 | 
			
		||||
                1.0
 | 
			
		||||
            } else {
 | 
			
		||||
                f64::from(self.ancestor_sigop_adjusted_vsize)
 | 
			
		||||
            });
 | 
			
		||||
        self.score = self.adjusted_fee_per_vsize.min(calc_fee_rate(self.ancestor_fee as f64, self.ancestor_sigop_adjusted_vsize));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[inline]
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user