@@ -87,71 +87,24 @@ impl From<BlockValidation> for Result<(), InvalidBlockDetails> {
87
87
}
88
88
}
89
89
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
-
141
90
#[ instrument( level = Level :: TRACE , skip_all) ]
142
91
pub fn execute < C : ValidationContext < FinalState = S > , S : From < C > > (
143
- rule_validation_executor : & mut dyn RuleValidationExecutor < C , S > ,
144
92
context : & mut C ,
145
93
protocol_params : ProtocolParameters ,
146
94
block : & MintedBlock < ' _ > ,
147
95
) -> 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, ...)
148
99
let block_validation_fns = vec ! [
149
100
header_size:: block_header_size_valid,
150
101
body_size:: block_body_size_valid,
151
102
ex_units:: block_ex_units_valid,
152
103
] ;
153
104
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
+ }
155
108
156
109
let failed_transactions = FailedTransactions :: from_block ( block) ;
157
110
0 commit comments