From 1d5fc7b90fc3e9050a2cf6dbe4ef687c58df9bbe Mon Sep 17 00:00:00 2001 From: D-Stacks <78099568+D-Stacks@users.noreply.github.com> Date: Tue, 10 Sep 2024 00:19:11 +0200 Subject: [PATCH] rework lock time check a bit. --- .../pipeline/body_processor/body_validation_in_context.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/consensus/src/pipeline/body_processor/body_validation_in_context.rs b/consensus/src/pipeline/body_processor/body_validation_in_context.rs index 17e1bd888c..308c5fabd0 100644 --- a/consensus/src/pipeline/body_processor/body_validation_in_context.rs +++ b/consensus/src/pipeline/body_processor/body_validation_in_context.rs @@ -26,6 +26,7 @@ impl BlockBodyProcessor { } fn check_block_transactions_in_context(self: &Arc, block: &Block) -> BlockProcessResult<()> { + // TODO: this is somewhat expensive during ibd, as it incurs cache misses. let pmt = Lazy::new(|| { let (pmt, _) = self .window_manager @@ -35,6 +36,12 @@ impl BlockBodyProcessor { }); for tx in block.transactions.iter() { + + // quick check to avoid the expensive Lazy eval (in most cases). + if tx.lock_time == 0 { + continue; + }; + if let Err(e) = self.transaction_validator.utxo_free_tx_validation(tx, block.header.daa_score, &pmt) { return Err(RuleError::TxInContextFailed(tx.id(), e)); }