diff --git a/backend/rust-gbt/src/audit_transaction.rs b/backend/rust-gbt/src/audit_transaction.rs index 736ae5301..e9f2655f0 100644 --- a/backend/rust-gbt/src/audit_transaction.rs +++ b/backend/rust-gbt/src/audit_transaction.rs @@ -22,9 +22,9 @@ pub struct AuditTransaction { pub relatives_set_flag: bool, pub ancestors: HashSet, pub children: HashSet, - pub ancestor_fee: u64, - pub ancestor_weight: u32, - pub ancestor_sigops: u32, + ancestor_fee: u64, + ancestor_weight: u32, + ancestor_sigops: u32, // Safety: Must be private to prevent NaN breaking Ord impl. score: f64, pub used: bool, @@ -97,6 +97,21 @@ impl AuditTransaction { self.score } + #[inline] + pub const fn ancestor_fee(&self) -> u64 { + self.ancestor_fee + } + + #[inline] + pub const fn ancestor_weight(&self) -> u32 { + self.ancestor_weight + } + + #[inline] + pub const fn ancestor_sigops(&self) -> u32 { + self.ancestor_sigops + } + /// Safety: This function must NEVER set score to NaN. #[inline] fn calc_new_score(&mut self) { diff --git a/backend/rust-gbt/src/gbt.rs b/backend/rust-gbt/src/gbt.rs index 6fc3155ee..2bf693cca 100644 --- a/backend/rust-gbt/src/gbt.rs +++ b/backend/rust-gbt/src/gbt.rs @@ -128,8 +128,8 @@ pub fn gbt(mempool: &mut ThreadTransactionsMap) -> Option { } if blocks.len() < (MAX_BLOCKS - 1) - && ((block_weight + next_tx.ancestor_weight >= BLOCK_WEIGHT_UNITS) - || (block_sigops + next_tx.ancestor_sigops > BLOCK_SIGOPS)) + && ((block_weight + next_tx.ancestor_weight() >= BLOCK_WEIGHT_UNITS) + || (block_sigops + next_tx.ancestor_sigops() > BLOCK_SIGOPS)) { // hold this package in an overflow list while we check for smaller options overflow.push(next_txid); @@ -148,7 +148,7 @@ pub fn gbt(mempool: &mut ThreadTransactionsMap) -> Option { let cluster_rate = next_tx .dependency_rate - .min(next_tx.ancestor_fee as f64 / (f64::from(next_tx.ancestor_weight) / 4.0)); + .min(next_tx.ancestor_fee() as f64 / (f64::from(next_tx.ancestor_weight()) / 4.0)); for (txid, _) in &package { cluster.push(*txid);