@@ -53,13 +53,25 @@ where
5353/// (e.g. timestamp, number, prevrandao) could be used to trick contracts into
5454/// disclosing shielded storage.
5555pub fn validate_block_overrides < DB > (
56- _overrides : & BlockOverrides ,
56+ overrides : & BlockOverrides ,
5757 _db : & DB ,
5858) -> Result < BlockOverrides , OverrideError < DB :: Error > >
5959where
6060 DB : Database ,
6161{
62- Err ( OverrideError :: BlockOverrideNotPermitted )
62+ if overrides. number . is_some ( )
63+ || overrides. difficulty . is_some ( )
64+ || overrides. time . is_some ( )
65+ || overrides. gas_limit . is_some ( )
66+ || overrides. coinbase . is_some ( )
67+ || overrides. random . is_some ( )
68+ || overrides. base_fee . is_some ( )
69+ || overrides. block_hash . is_some ( )
70+ {
71+ return Err ( OverrideError :: BlockOverrideNotPermitted ) ;
72+ }
73+
74+ Ok ( overrides. clone ( ) )
6375}
6476
6577#[ cfg( test) ]
@@ -100,4 +112,12 @@ mod tests {
100112 let result = validate_block_overrides ( & overrides, & db) ;
101113 assert ! ( matches!( result, Err ( OverrideError :: BlockOverrideNotPermitted ) ) ) ;
102114 }
115+
116+ #[ test]
117+ fn empty_block_overrides_allowed ( ) {
118+ let db = CacheDB :: new ( EmptyDB :: new ( ) ) ;
119+ let overrides = BlockOverrides :: default ( ) ;
120+ let result = validate_block_overrides ( & overrides, & db) ;
121+ assert_eq ! ( result. unwrap( ) , overrides) ;
122+ }
103123}
0 commit comments