@@ -37,7 +37,7 @@ def noproof_consensus_chain(vm_class):
37
37
MiningChain ,
38
38
api .fork_at (vm_class , 0 ),
39
39
api .disable_pow_check (),
40
- api .genesis (),
40
+ api .genesis (params = dict ( gas_limit = 100000 ) ),
41
41
)
42
42
43
43
@@ -127,3 +127,53 @@ def test_validate_header_fails_on_invalid_parent(noproof_consensus_chain):
127
127
128
128
with pytest .raises (ValidationError , match = "Blocks must be numbered consecutively" ):
129
129
vm .validate_header (block2 .header .copy (block_number = 3 ), block1 .header )
130
+
131
+
132
+ def test_validate_gas_limit_almost_too_low (noproof_consensus_chain ):
133
+ block1 = noproof_consensus_chain .mine_block ()
134
+ block2 = noproof_consensus_chain .mine_block ()
135
+
136
+ barely_valid_low_gas_limit = block1 .header .gas_limit - (block1 .header .gas_limit // 1024 )
137
+ barely_valid_header = block2 .header .copy (gas_limit = barely_valid_low_gas_limit )
138
+
139
+ vm = noproof_consensus_chain .get_vm (block2 .header )
140
+
141
+ vm .validate_header (barely_valid_header , block1 .header )
142
+
143
+
144
+ def test_validate_gas_limit_too_low (noproof_consensus_chain ):
145
+ block1 = noproof_consensus_chain .mine_block ()
146
+ block2 = noproof_consensus_chain .mine_block ()
147
+
148
+ invalid_low_gas_limit = block1 .header .gas_limit - (block1 .header .gas_limit // 1024 ) - 1
149
+ invalid_header = block2 .header .copy (gas_limit = invalid_low_gas_limit )
150
+
151
+ vm = noproof_consensus_chain .get_vm (block2 .header )
152
+
153
+ with pytest .raises (ValidationError , match = "[Gg]as limit" ):
154
+ vm .validate_header (invalid_header , block1 .header )
155
+
156
+
157
+ def test_validate_gas_limit_almost_too_high (noproof_consensus_chain ):
158
+ block1 = noproof_consensus_chain .mine_block ()
159
+ block2 = noproof_consensus_chain .mine_block ()
160
+
161
+ barely_valid_high_gas_limit = block1 .header .gas_limit + (block1 .header .gas_limit // 1024 )
162
+ barely_valid_header = block2 .header .copy (gas_limit = barely_valid_high_gas_limit )
163
+
164
+ vm = noproof_consensus_chain .get_vm (block2 .header )
165
+
166
+ vm .validate_header (barely_valid_header , block1 .header )
167
+
168
+
169
+ def test_validate_gas_limit_too_high (noproof_consensus_chain ):
170
+ block1 = noproof_consensus_chain .mine_block ()
171
+ block2 = noproof_consensus_chain .mine_block ()
172
+
173
+ invalid_high_gas_limit = block1 .header .gas_limit + (block1 .header .gas_limit // 1024 ) + 1
174
+ invalid_header = block2 .header .copy (gas_limit = invalid_high_gas_limit )
175
+
176
+ vm = noproof_consensus_chain .get_vm (block2 .header )
177
+
178
+ with pytest .raises (ValidationError , match = "[Gg]as limit" ):
179
+ vm .validate_header (invalid_header , block1 .header )
0 commit comments