@@ -270,10 +270,10 @@ def test_worst_modexp(
270
270
0x01 ,
271
271
3_000 ,
272
272
[
273
- 0x38D18ACB67D25C8BB9942764B62F18E17054F66A817BD4295423ADF9ED98873E ,
274
- 27 ,
275
- 0x38D18ACB67D25C8BB9942764B62F18E17054F66A817BD4295423ADF9ED98873E ,
276
- 0x789D1DD423D25F0772D2748D60F7E4B81BB14D086EBA8E8E8EFB6DCFF8A4AE02 ,
273
+ "38D18ACB67D25C8BB9942764B62F18E17054F66A817BD4295423ADF9ED98873E" ,
274
+ "000000000000000000000000000000000000000000000000000000000000001B" ,
275
+ "38D18ACB67D25C8BB9942764B62F18E17054F66A817BD4295423ADF9ED98873E" ,
276
+ "789D1DD423D25F0772D2748D60F7E4B81BB14D086EBA8E8E8EFB6DCFF8A4AE02" ,
277
277
],
278
278
32 * 4 ,
279
279
id = "ecrecover" ,
@@ -282,58 +282,58 @@ def test_worst_modexp(
282
282
0x06 ,
283
283
150 ,
284
284
[
285
- 0x18B18ACFB4C2C30276DB5411368E7185B311DD124691610C5D3B74034E093DC9 ,
286
- 0x063C909C4720840CB5134CB9F59FA749755796819658D32EFC0D288198F37266 ,
287
- 0x07C2B7F58A84BD6145F00C9C2BC0BB1A187F20FF2C92963A88019E7C6A014EED ,
288
- 0x06614E20C147E940F2D70DA3F74C9A17DF361706A4485C742BD6788478FA17D7 ,
285
+ "18B18ACFB4C2C30276DB5411368E7185B311DD124691610C5D3B74034E093DC9" ,
286
+ "063C909C4720840CB5134CB9F59FA749755796819658D32EFC0D288198F37266" ,
287
+ "07C2B7F58A84BD6145F00C9C2BC0BB1A187F20FF2C92963A88019E7C6A014EED" ,
288
+ "06614E20C147E940F2D70DA3F74C9A17DF361706A4485C742BD6788478FA17D7" ,
289
289
],
290
290
32 * 4 ,
291
- id = "bn128add " ,
291
+ id = "bn128_add " ,
292
292
),
293
293
pytest .param (
294
294
0x07 ,
295
295
6_000 ,
296
296
[
297
- 0x1A87B0584CE92F4593D161480614F2989035225609F08058CCFA3D0F940FEBE3 ,
298
- 0x1A2F3C951F6DADCC7EE9007DFF81504B0FCD6D7CF59996EFDC33D92BF7F9F8F6 ,
299
- 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ,
297
+ "1A87B0584CE92F4593D161480614F2989035225609F08058CCFA3D0F940FEBE3" ,
298
+ "1A2F3C951F6DADCC7EE9007DFF81504B0FCD6D7CF59996EFDC33D92BF7F9F8F6" ,
299
+ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" ,
300
300
],
301
301
32 * 4 ,
302
- id = "bn128mul " ,
302
+ id = "bn128_mul " ,
303
303
),
304
304
pytest .param (
305
305
0x08 ,
306
306
45_000 + 2 * 34_000 ,
307
307
[
308
- 0x1C76476F4DEF4BB94541D57EBBA1193381FFA7AA76ADA664DD31C16024C43F59 ,
309
- 0x3034DD2920F673E204FEE2811C678745FC819B55D3E9D294E45C9B03A76AEF41 ,
310
- 0x209DD15EBFF5D46C4BD888E51A93CF99A7329636C63514396B4A452003A35BF7 ,
311
- 0x04BF11CA01483BFA8B34B43561848D28905960114C8AC04049AF4B6315A41678 ,
312
- 0x2BB8324AF6CFC93537A2AD1A445CFD0CA2A71ACD7AC41FADBF933C2A51BE344D ,
313
- 0x120A2A4CF30C1BF9845F20C6FE39E07EA2CCE61F0C9BB048165FE5E4DE877550 ,
314
- 0x111E129F1CF1097710D41C4AC70FCDFA5BA2023C6FF1CBEAC322DE49D1B6DF7C ,
315
- 0x103188585E2364128FE25C70558F1560F4F9350BAF3959E603CC91486E110936 ,
316
- 0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2 ,
317
- 0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED ,
318
- 0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B ,
319
- 0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA ,
308
+ "1C76476F4DEF4BB94541D57EBBA1193381FFA7AA76ADA664DD31C16024C43F59" ,
309
+ "3034DD2920F673E204FEE2811C678745FC819B55D3E9D294E45C9B03A76AEF41" ,
310
+ "209DD15EBFF5D46C4BD888E51A93CF99A7329636C63514396B4A452003A35BF7" ,
311
+ "04BF11CA01483BFA8B34B43561848D28905960114C8AC04049AF4B6315A41678" ,
312
+ "2BB8324AF6CFC93537A2AD1A445CFD0CA2A71ACD7AC41FADBF933C2A51BE344D" ,
313
+ "120A2A4CF30C1BF9845F20C6FE39E07EA2CCE61F0C9BB048165FE5E4DE877550" ,
314
+ "111E129F1CF1097710D41C4AC70FCDFA5BA2023C6FF1CBEAC322DE49D1B6DF7C" ,
315
+ "103188585E2364128FE25C70558F1560F4F9350BAF3959E603CC91486E110936" ,
316
+ "198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2" ,
317
+ "1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED" ,
318
+ "090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B" ,
319
+ "12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA" ,
320
320
],
321
321
32 * 12 ,
322
- id = "bn128pairing " ,
322
+ id = "bn128_pairing " ,
323
323
),
324
324
pytest .param (
325
325
0x09 ,
326
326
0xFFFF ,
327
327
[
328
- 0x0000FFFF48C9BDF267E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F ,
329
- 0x3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E13 ,
330
- 0x19CDE05B61626300000000000000000000000000000000000000000000000000 ,
331
- 0x0000000000000000000000000000000000000000000000000000000000000000 ,
332
- 0x0000000000000000000000000000000000000000000000000000000000000000 ,
333
- 0x0000000000000000000000000000000000000000000000000000000000000000 ,
334
- 0x0000000000000000000000000000000000000000000000000000000000000000 ,
335
- 0x0000000000000000000000000000000000000000000000000000000000000000 ,
336
- 0x0000000003000000000000000000000000000001000000000000000000000000 ,
328
+ "0000FFFF48C9BDF267E6096A3BA7CA8485AE67BB2BF894FE72F36E3CF1361D5F" ,
329
+ "3AF54FA5D182E6AD7F520E511F6C3E2B8C68059B6BBD41FBABD9831F79217E13" ,
330
+ "19CDE05B61626300000000000000000000000000000000000000000000000000" ,
331
+ "0000000000000000000000000000000000000000000000000000000000000000" ,
332
+ "0000000000000000000000000000000000000000000000000000000000000000" ,
333
+ "0000000000000000000000000000000000000000000000000000000000000000" ,
334
+ "0000000000000000000000000000000000000000000000000000000000000000" ,
335
+ "0000000000000000000000000000000000000000000000000000000000000000" ,
336
+ "0000000003000000000000000000000000000001000000000000000000000000" ,
337
337
],
338
338
213 ,
339
339
id = "blake2f" ,
@@ -342,16 +342,26 @@ def test_worst_modexp(
342
342
0x0A ,
343
343
50_000 ,
344
344
[
345
- 0x01E798154708FE7789429634053CBF9F99B619F9F084048927333FCE637F549B ,
346
- 0x564C0A11A0F704F4FC3E8ACFE0F8245F0AD1347B378FBF96E206DA11A5D36306 ,
347
- 0x24D25032E67A7E6A4910DF5834B8FE70E6BCFEEAC0352434196BDF4B2485D5A1 ,
348
- 0x8F59A8D2A1A625A17F3FEA0FE5EB8C896DB3764F3185481BC22F91B4AAFFCCA2 ,
349
- 0x5F26936857BC3A7C2539EA8EC3A952B7873033E038326E87ED3E1276FD140253 ,
350
- 0xFA08E9FC25FB2D9A98527FC22A2C9612FBEAFDAD446CBC7BCDBDCD780AF2C16A ,
345
+ "01E798154708FE7789429634053CBF9F99B619F9F084048927333FCE637F549B" ,
346
+ "564C0A11A0F704F4FC3E8ACFE0F8245F0AD1347B378FBF96E206DA11A5D36306" ,
347
+ "24D25032E67A7E6A4910DF5834B8FE70E6BCFEEAC0352434196BDF4B2485D5A1" ,
348
+ "8F59A8D2A1A625A17F3FEA0FE5EB8C896DB3764F3185481BC22F91B4AAFFCCA2" ,
349
+ "5F26936857BC3A7C2539EA8EC3A952B7873033E038326E87ED3E1276FD140253" ,
350
+ "FA08E9FC25FB2D9A98527FC22A2C9612FBEAFDAD446CBC7BCDBDCD780AF2C16A" ,
351
351
],
352
352
192 ,
353
353
id = "point_evaluation" ,
354
354
),
355
+ pytest .param (
356
+ 0x0B ,
357
+ 375 ,
358
+ [
359
+ "000000000000000000000000000000000572CBEA904D67468808C8EB50A9450C9721DB309128012543902D0AC358A62AE28F75BB8F1C7C42C39A8C5529BF0F4E00000000000000000000000000000000166A9D8CABC673A322FDA673779D8E3822BA3ECB8670E461F73BB9021D5FD76A" ,
360
+ "4C56D9D4CD16BD1BBA86881979749D280000000000000000000000000000000009ECE308F9D1F0131765212DECA99697B112D61F9BE9A5F1F3780A51335B3FF981747A0B2CA2179B96D2C0C9024E522400000000000000000000000000000000032B80D3A6F5B09F8A84623389C5F80C" ,
361
+ ],
362
+ 256 ,
363
+ id = "bls12_g1add" ,
364
+ ),
355
365
],
356
366
)
357
367
def test_worst_precompile_fixed_cost (
@@ -360,15 +370,24 @@ def test_worst_precompile_fixed_cost(
360
370
fork : Fork ,
361
371
gas_limit : int ,
362
372
precompile_address : Address ,
363
- precompile_gas_cost : Address ,
364
- input : list [int ],
373
+ precompile_gas_cost : int ,
374
+ input : list [str ],
365
375
length : int ,
366
376
):
367
377
"""Test running a block filled with a precompile with fixed cost."""
368
378
env = Environment (gas_limit = gas_limit )
369
379
370
- # Calldata
371
- calldata = sum ([Op .MSTORE (i * 32 , input ) for i , input in enumerate (input )])
380
+ concatenated_hex_string = "" .join (input )
381
+ concatenated_bytes = bytes .fromhex (concatenated_hex_string )
382
+
383
+ padding_length = (32 - (len (concatenated_bytes ) % 32 )) % 32
384
+ input_bytes = concatenated_bytes + b"\x00 " * padding_length
385
+
386
+ calldata = Bytecode ()
387
+ for i in range (0 , len (input_bytes ), 32 ):
388
+ chunk = input_bytes [i : i + 32 ]
389
+ value_to_store = int .from_bytes (chunk , "big" )
390
+ calldata += Op .MSTORE (i , value_to_store )
372
391
373
392
attack_block = Op .POP (Op .STATICCALL (precompile_gas_cost , precompile_address , 0 , length , 0 , 0 ))
374
393
code = code_loop_precompile_call (calldata , attack_block )
0 commit comments