Skip to content

Commit 4546872

Browse files
tests: port legacy modexp test
1 parent b195935 commit 4546872

File tree

4 files changed

+185
-2
lines changed

4 files changed

+185
-2
lines changed

tests/byzantium/eip198_modexp_precompile/helpers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ def from_bytes(cls, input_data: Bytes | str) -> "ModExpInput":
7373

7474
modulus = input_data[current_index : current_index + modulus_length]
7575

76+
modulus = modulus.ljust(min(1024, modulus_length), b"\x00")
77+
7678
return cls(base=base, exponent=exponent, modulus=modulus)
7779

7880

tests/osaka/eip7883_modexp_gas_increase/helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ class Vector(BaseModel):
2525
)
2626
modexp_expected: Bytes = Field(..., alias="Expected")
2727
name: str = Field(..., alias="Name")
28-
gas_old: int | None = Field(..., alias="GasOld")
29-
gas_new: int | None = Field(..., alias="GasNew")
28+
gas_old: int | None = Field(default=None, alias="GasOld")
29+
gas_new: int | None = Field(default=None, alias="GasNew")
3030

3131
model_config = ConfigDict(alias_generator=to_pascal)
3232

tests/osaka/eip7883_modexp_gas_increase/test_modexp_thresholds.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,25 @@ def test_vectors_from_file(
4444
)
4545

4646

47+
@pytest.mark.parametrize(
48+
"modexp_input,modexp_expected,gas_old,gas_new",
49+
vectors_from_file("legacy.json"),
50+
ids=lambda v: v.name,
51+
)
52+
def test_vectors_from_legacy_tests(
53+
state_test: StateTestFiller,
54+
pre: Alloc,
55+
tx: Transaction,
56+
post: Dict,
57+
):
58+
"""Test ModExp gas cost using the test vectors from legacy tests."""
59+
state_test(
60+
pre=pre,
61+
tx=tx,
62+
post=post,
63+
)
64+
65+
4766
def create_modexp_input(
4867
bsize: int, esize: int, msize: int, e_data: str = "", m_data: str = "", b_data: str = ""
4968
) -> bytes:
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
[
2+
{
3+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002003fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2efffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
4+
"Expected": "0000000000000000000000000000000000000000000000000000000000000001",
5+
"Name": "legacy-case-0"
6+
},
7+
{
8+
"Input": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2efffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
9+
"Expected": "0000000000000000000000000000000000000000000000000000000000000000",
10+
"Name": "legacy-case-1"
11+
},
12+
{
13+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002003ffff800000000000000000000000000000000000000000000000000000000000000007",
14+
"Expected": "3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab",
15+
"Name": "legacy-case-3"
16+
},
17+
{
18+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002003ffff80",
19+
"Expected": "3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab",
20+
"Name": "legacy-case-4"
21+
},
22+
{
23+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002003",
24+
"Expected": "0000000000000000000000000000000000000000000000000000000000000000",
25+
"Name": "legacy-case-5"
26+
},
27+
{
28+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020038000000000000000000000000000000000000000000000000000000000000000",
29+
"Expected": "0000000000000000000000000000000000000000000000000000000000000001",
30+
"Name": "legacy-case-6"
31+
},
32+
{
33+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000080",
34+
"Expected": "0000000000000000000000000000000000000000000000000000000000000001",
35+
"Name": "legacy-case-7"
36+
},
37+
{
38+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000",
39+
"Expected": "0000000000000000000000000000000000000000000000000000000000000000",
40+
"Name": "legacy-case-8"
41+
},
42+
{
43+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000101",
44+
"Expected": "",
45+
"Name": "legacy-case-9"
46+
},
47+
{
48+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000304",
49+
"Expected": "00",
50+
"Name": "legacy-case-10"
51+
},
52+
{
53+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001020004",
54+
"Expected": "01",
55+
"Name": "legacy-case-11"
56+
},
57+
{
58+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001020300",
59+
"Expected": "00",
60+
"Name": "legacy-case-12"
61+
},
62+
{
63+
"Input": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010304",
64+
"Expected": "00",
65+
"Name": "legacy-case-13"
66+
},
67+
{
68+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010204",
69+
"Expected": "01",
70+
"Name": "legacy-case-14"
71+
},
72+
{
73+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000203",
74+
"Expected": "",
75+
"Name": "legacy-case-15"
76+
},
77+
{
78+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000202030006",
79+
"Expected": "0200",
80+
"Name": "legacy-case-16"
81+
},
82+
{
83+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001020306",
84+
"Expected": "02",
85+
"Name": "legacy-case-17"
86+
},
87+
{
88+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002020300",
89+
"Expected": "0000",
90+
"Name": "legacy-case-18"
91+
},
92+
{
93+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000202030000",
94+
"Expected": "0000",
95+
"Name": "legacy-case-19"
96+
},
97+
{
98+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020203",
99+
"Expected": "0000",
100+
"Name": "legacy-case-20"
101+
},
102+
{
103+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002023003",
104+
"Expected": "0000",
105+
"Name": "legacy-case-21"
106+
},
107+
{
108+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020230",
109+
"Expected": "0000",
110+
"Name": "legacy-case-22"
111+
},
112+
{
113+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000202",
114+
"Expected": "0000",
115+
"Name": "legacy-case-23"
116+
},
117+
{
118+
"Input": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002",
119+
"Expected": "0000",
120+
"Name": "legacy-case-24"
121+
},
122+
{
123+
"Input": "000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001001001010010",
124+
"Expected": "01",
125+
"Name": "legacy-case-25"
126+
},
127+
{
128+
"Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000064",
129+
"Expected": "01",
130+
"Name": "legacy-case-26"
131+
},
132+
{
133+
"Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030006",
134+
"Expected": "0200",
135+
"Name": "legacy-case-27"
136+
},
137+
{
138+
"Input": "000000000000000000000000000000000000000000000000000000000000002100000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010035ee4e488f45e64d2f07becd54646357381d32f30b74c299a8c25d5202c04938ef6c4764a04f10fc908b78c4486886000f6d290251a79681a83b950c7e5c373510",
139+
"Expected": "01",
140+
"Name": "legacy-case-31"
141+
},
142+
{
143+
"Input": "0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000cd935b43e42204fcbfb734a6e27735e8e90204fcc1fd2727bb040f9eecb",
144+
"Expected": "010000000000000000000000",
145+
"Name": "legacy-case-32"
146+
},
147+
{
148+
"Input": "0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060846813a8d2d451387340fa0597c6545ae63",
149+
"Expected": "010000000000",
150+
"Name": "legacy-case-33"
151+
},
152+
{
153+
"Input": "0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000d02534f82b1013f20d9c7d18d62cd95674d2e013f20d9c7d18d62cd95674d2f",
154+
"Expected": "01000000000000000000000000",
155+
"Name": "legacy-case-34"
156+
},
157+
{
158+
"Input": "0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d",
159+
"Expected": "000000010000000000000000000000000000",
160+
"Name": "legacy-case-35"
161+
}
162+
]

0 commit comments

Comments
 (0)