Skip to content

Commit a45baef

Browse files
committed
Revert "feat: introduce trait for block validation fn execution"
This reverts commit 3b31683. Signed-off-by: jeluard <[email protected]>
1 parent 9a97099 commit a45baef

File tree

3 files changed

+12
-72
lines changed

3 files changed

+12
-72
lines changed

crates/amaru-ledger/src/rules.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub(crate) mod tests {
130130
context::assert::{AssertPreparationContext, AssertValidationContext},
131131
rules::{
132132
self,
133-
block::{BlockValidation, DefaultRuleValidationExecutor, InvalidBlockDetails},
133+
block::{BlockValidation, InvalidBlockDetails},
134134
},
135135
tests::{fake_input, fake_output},
136136
};
@@ -176,7 +176,6 @@ pub(crate) mod tests {
176176
prepare_block(&mut ctx, &block);
177177

178178
let results = rules::block::execute(
179-
&mut DefaultRuleValidationExecutor::new(),
180179
&mut AssertValidationContext::from(ctx),
181180
ProtocolParameters::default(),
182181
&block,
@@ -203,12 +202,7 @@ pub(crate) mod tests {
203202

204203
prepare_block(&mut ctx, &block);
205204

206-
let results = rules::block::execute(
207-
&mut DefaultRuleValidationExecutor::new(),
208-
&mut AssertValidationContext::from(ctx),
209-
pp,
210-
&block,
211-
);
205+
let results = rules::block::execute(&mut AssertValidationContext::from(ctx), pp, &block);
212206

213207
assert!(matches!(
214208
results,

crates/amaru-ledger/src/rules/block.rs

Lines changed: 6 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -87,71 +87,24 @@ impl From<BlockValidation> for Result<(), InvalidBlockDetails> {
8787
}
8888
}
8989

90-
pub struct DefaultRuleValidationExecutor {}
91-
92-
impl DefaultRuleValidationExecutor {
93-
pub fn new() -> Self {
94-
DefaultRuleValidationExecutor {}
95-
}
96-
}
97-
98-
impl Default for DefaultRuleValidationExecutor {
99-
fn default() -> Self {
100-
Self::new()
101-
}
102-
}
103-
104-
/// A default implementation of the RuleValidationExecutor trait that executes all block validation fns one by one.
105-
/// If a block validation fn fails, the error is returned immediately.
106-
impl<C: ValidationContext<FinalState = S>, S: From<C>> RuleValidationExecutor<C, S>
107-
for DefaultRuleValidationExecutor
108-
{
109-
fn execute(
110-
&mut self,
111-
context: &mut C,
112-
protocol_params: &ProtocolParameters,
113-
block: &MintedBlock<'_>,
114-
block_validation_fns: &[fn(
115-
&mut C,
116-
&MintedBlock<'_>,
117-
&ProtocolParameters,
118-
) -> BlockValidation],
119-
) -> BlockValidation {
120-
for block_validation_fn in block_validation_fns {
121-
block_validation_fn(context, block, protocol_params)?;
122-
}
123-
BlockValidation::Valid
124-
}
125-
}
126-
127-
pub trait RuleValidationExecutor<C: ValidationContext<FinalState = S>, S: From<C>> {
128-
fn execute(
129-
&mut self,
130-
context: &mut C,
131-
protocol_params: &ProtocolParameters,
132-
block: &MintedBlock<'_>,
133-
block_validation_fns: &[fn(
134-
&mut C,
135-
&MintedBlock<'_>,
136-
&ProtocolParameters,
137-
) -> BlockValidation],
138-
) -> BlockValidation;
139-
}
140-
14190
#[instrument(level = Level::TRACE, skip_all)]
14291
pub fn execute<C: ValidationContext<FinalState = S>, S: From<C>>(
143-
rule_validation_executor: &mut dyn RuleValidationExecutor<C, S>,
14492
context: &mut C,
14593
protocol_params: ProtocolParameters,
14694
block: &MintedBlock<'_>,
14795
) -> BlockValidation {
96+
// Block level validations functions share the same signature.
97+
// Currently apply them one by one
98+
// TODO consider an abstract strategy pattern to apply them (e.g. in parallel, in a priority order, ...)
14899
let block_validation_fns = vec![
149100
header_size::block_header_size_valid,
150101
body_size::block_body_size_valid,
151102
ex_units::block_ex_units_valid,
152103
];
153104

154-
rule_validation_executor.execute(context, &protocol_params, block, &block_validation_fns)?;
105+
for block_validation_fn in block_validation_fns {
106+
block_validation_fn(context, block, &protocol_params)?;
107+
}
155108

156109
let failed_transactions = FailedTransactions::from_block(block);
157110

crates/amaru/src/stages/ledger.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ use amaru_kernel::{
33
};
44
use amaru_ledger::{
55
context::{self, DefaultValidationContext},
6-
rules::{
7-
self,
8-
block::{BlockValidation, DefaultRuleValidationExecutor},
9-
parse_block,
10-
},
6+
rules::{self, block::BlockValidation, parse_block},
117
state::{self, BackwardError, VolatileState},
128
store::Store,
139
BlockValidationResult, RawBlock, ValidateBlockEvent,
@@ -105,12 +101,9 @@ impl<S: Store + Send> Stage<S> {
105101

106102
let mut context = self.create_validation_context(&block)?;
107103

108-
if let BlockValidation::Invalid(err) = rules::validate_block(
109-
&mut DefaultRuleValidationExecutor::new(),
110-
&mut context,
111-
ProtocolParameters::default(),
112-
&block,
113-
) {
104+
if let BlockValidation::Invalid(err) =
105+
rules::validate_block(&mut context, ProtocolParameters::default(), &block)
106+
{
114107
return Ok(BlockValidation::Invalid(err));
115108
};
116109

0 commit comments

Comments
 (0)