Skip to content

Commit 2f97840

Browse files
authored
test(osaka): add edge case test vectors for EIP-7883 MODEXP gas calculation (#1993)
* osaka: Add tests to existing 7883 test vector to cover corner cases * fix input formatting, expected output and gas
1 parent 87771b0 commit 2f97840

File tree

1 file changed

+113
-1
lines changed

1 file changed

+113
-1
lines changed

tests/osaka/eip7883_modexp_gas_increase/vectors.json

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,5 +208,117 @@
208208
"Name": "marcin-3-balanced",
209209
"GasOld": 1360,
210210
"GasNew": 4080
211+
},
212+
{
213+
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020fd10e29482419533334ff25031f487f1fc0d2d179acc9e2cb7719f4e95f71e430000000000000000000000000000000000000000000000000000000000000000b5d3354acc9731339fb0e64d666aa79675619ea5f5b66b70c5e92640568c51c6",
214+
"Expected": "0000000000000000000000000000000000000000000000000000000000000001",
215+
"Name": "zero-exponent-32bytes",
216+
"GasOld": 200,
217+
"GasNew": 500
218+
},
219+
{
220+
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000208d74b1229cc36912165d7ed62334d5ce0683ad12dbade86cdbd705f46693d6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008f70e8f94c5ad28ed971e258ea3854ebf57131ae4c842e5cafe1c70db8272caf",
221+
"Expected": "0000000000000000000000000000000000000000000000000000000000000001",
222+
"Name": "zero-exponent-64bytes",
223+
"GasOld": 1365,
224+
"GasNew": 8192
225+
},
226+
{
227+
"Input": "0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000309a06db9abffebe2e2b14531c3b729b4c9f74a890a1b86e4e8ee728507536b4d20dd5982acdfd508a8c4549fd0622e6266d59d0ad387eaa9163aeb746c8a37aed45f17f97015c19a1e086c28caa1d0a499bb63b3e0d4e1cff87319d07e3195581",
228+
"Expected": "348b4411d0bf6337d3061169eca6114b54c5c22adbc453834b11e16fc54c73d9c7f34047b0585ab6a11609104235dd91",
229+
"Name": "unequal-base-mod-lengths",
230+
"GasOld": 3060,
231+
"GasNew": 18360
232+
},
233+
{
234+
"Input": "00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000702c06a45e159cb4c7741ec7533282f",
235+
"Expected": "291e7f48fc3b41",
236+
"Name": "word-boundary-7bytes",
237+
"GasOld": 200,
238+
"GasNew": 500
239+
},
240+
{
241+
"Input": "000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000009c38b617604d927dd7ecadecd1b21bdb6022001",
242+
"Expected": "c63e1e2b3d44e3dedf",
243+
"Name": "word-boundary-9bytes",
244+
"GasOld": 200,
245+
"GasNew": 500
246+
},
247+
{
248+
"Input": "000000000000000000000000000000000000000000000000000000000000001f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000021425057b404526baca2d46d743728f0a9d2f5ec451e8c5691448e7815a83c2becd8153b299c4e0a3341c06ead40d6a9c989be6e08f11479f09412293da072e793d3470e7620e29e0445590c8d7659ed58b69ec6e9dfa4c1fc15c4654a91f398fd",
249+
"Expected": "5b2936884b205b7f53cef1d677b23e435564ddc25d8601b1a93c822f8b5a657e6b",
250+
"Name": "32byte-boundary-31-32-33",
251+
"GasOld": 2125,
252+
"GasNew": 12750
253+
},
254+
{
255+
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000204d459c333fe2e1ac503a3659b33931c9193190863d27df62003adf014222d472b32aad8de34175ecfe566893f02ae529bc6285c4b4722107f5342f29cfe9fdfe151b6c13559b559685d1eb88a452b457e0f91e6879fe8e3faf52c1cc0cea8bda134318d8e5779c9fb294ec35adc1c9af69d1fc2d091cfbdb3d39a31822b4446ecb02b8e3ae81b97ca7651d50a7c4f09f",
256+
"Expected": "28daf00293ae1dabe2a1a3caefc6fe0f1581bae146c0ad0d7f9650f7c4faf0f0",
257+
"Name": "large-exponent-80bytes",
258+
"GasOld": 3408,
259+
"GasNew": 16368
260+
},
261+
{
262+
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000206ea6c150792130fbfb05b72aacba79157f9b86e05c975cb1585e68fb663801da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff148f0b9e252c56e138f8c65a832ebca75241a386a918c14f466fb84a22f8b771",
263+
"Expected": "08d8fab720b60be2e3af8437e15e467c625cd8704c2382449e7a50437355c6be",
264+
"Name": "large-exponent-128bytes-lsb",
265+
"GasOld": 4096,
266+
"GasNew": 24576
267+
},
268+
{
269+
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000111d87c",
270+
"Expected": "65",
271+
"Name": "minimal-1byte-all",
272+
"GasOld": 200,
273+
"GasNew": 500
274+
},
275+
{
276+
"Input": "00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004071ec16921dffa0fb375c10cad75c7f4a750fd9562208d5d4d47ac008bafca749f7d9291e15b3515643deecc89abe8f4da3a388bff32cfac6cf53128409376bb998af5c2279288e00890b4e04d043ff8d8ddf14ce4b96ecc8ba20a352fb39fbaa4fb870e26b2e4492efcdc6854b8ccf92a307b7cb6afef227a3d238280d7214368f",
277+
"Expected": "2529b7fe039758e47401e0bb63feab7155d7345437e24fad6f6fb4a7fe6670ded943ba45fed2473921f1e7b6f04212413195b4aa38ac56cd7f9ed037bec0d586",
278+
"Name": "64byte-base-1byte-exp",
279+
"GasOld": 200,
280+
"GasNew": 896
281+
},
282+
{
283+
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000020bfdcc8e5f778ddba5192ab872af34da969f048590a5d4eb7ae02c005de33d5c90000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000000000000000000000cf0d1b6669e951fa915414d3da69a8c9d25c35b641c0067dd7b9ace41c7e9053",
284+
"Expected": "7d059d490060260b9f2722e928155843abe4845078a0669bcbfc7675a10ebc87",
285+
"Name": "exponent-72bytes-msb-at-33",
286+
"GasOld": 1706,
287+
"GasNew": 10240
288+
},
289+
{
290+
"Input": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000660bfd6246b7f481d4a9955bb2bd9ee970e21063193ae484c413aea066fc949d",
291+
"Expected": "",
292+
"Name": "zero-length-base-mod",
293+
"GasOld": 200,
294+
"GasNew": 4064
295+
},
296+
{
297+
"Input": "000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100e6c494fcb8039d05cc2133c7aa6ef221e1f27633e99a022941d84fa0bbe764b01ac4d2c86e2fc1f8d59368bd3a0c279f562cedb4b5621ede72f7cb4acd5e3878225427a80c932f22958aaa902ba4d39d4d9ef9609da7f5c9cdc788871d85f2498237741e96d864be6f055c883054274e97e28a137578c1ed1cf5e4eb5a1a549c97315b3fed5e9dfbc9a8ceee6b125eb182667abb5ed57c336bd55c04c002e0b184ef337466696c8cab404f4aa2170c9907e2be22e118720e47856e6115294912f8ca46769892cc4d0df67ffcc5e723a9a8798fe4c504d756f58f7cb6800414006431168ce6c2f86ec70d51ad73947c42834ce176770de3134099f1b51aacebb2f9b95c74aeee4ee9cbaeb6cbc8dd7fb90f178ba9b7ae19ad5599db229b868ed0432e8ed31b556a22197b23a39e93fba545efef6de3f11b9d537e082e273c64a5344622ddfd96cd27a874c44bb96f2be16d683284fa083339937e6429706375dff7c393abcd26e67cddbf8aa43ceb092dd12d0e4c472e4479697d6184ff4dde6e65a19ace7d712c186ffaf8dd3ca3052cd5725b37ed5147331a66608a114f642d6173bd58a8cb28c6b7a8e90b976ca83bd8fc83bba936b4cf0e82d192f66d3c526bf390d5dcd5b1e3a139867e43e01a6e67394b33419acb8a4bab77081a2ce91bcd65bc5bad08de86862670cae78ec2064c09371aa6a477a948950020b145d3e4230b81bd7d96be5869b335afc3cc4b3197aff99f9441090fb050c925003f39ce7c227f5038cda2a37cd9e856435058fb2edbdf34ad9137e71913522a5858023833729dbe7ae1e1b445f01f749599b7827fabf0f4c2e92c60c6f870d827cc154d7cc9c95bf6b2eef4a21b1caef80b425bfd1f21cb30836dba58fb34a75aaecf03acd14c74d600df979673421dcd3f122e4b348a944983b51a83e61ea50dbd7f188df94b97340b949b196cf226264254215bbb53f25ad584c70855579f3fb8f705297bf6a68e2cadc32eb3933b6bb6e4e3efaa6e518a2b7426eb56c4744060bb8c9be50c8213966c0227e9507d74be224673bfe56c44856d9361d681a645812538",
298+
"Expected": "20000c5a76d926aa5a60f13bab4c8c232de4ad42c4d09f01b04ac0beccbea8a24939911b065f62800527fdcfbb0ee843c2bf5e8d02c5141cb173fbb607b3f3845085c1c3f0f301c72cc8d7db666555ba628ee33694bceb859c1e1953995d85474c069e26f849365c833f2b97b3274a0fdd4bc21cbfc4d00b202afed29aa192e03aa635651087404cf8370f16fd355804da06a22716b09f7a94a39f98126237882b01a13d7de25b5a0196d620a1269b240ac908ab125276e7ed4038d63b1812820a71a867f8280d193ca9f13f012893015ae92d9677778000247828526383550c13ba9f3be4b9ca2a5d9ecdc77c6047fcb1bd11a995f3296becf16f67dcf77a60",
299+
"Name": "256byte-all-params",
300+
"GasOld": 698709,
301+
"GasNew": 7862272
302+
},
303+
{
304+
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000021000000000000000000000000000000000000000000000000000000000000002014fadab683b091c9cbde019f7a0bdc68a433530323e969b1b258d622c620f84900000000000000000000000000000000000000000000000000000000000000ffffa99f6f95feb7ac53b4ff1bfed874e4f0855076c182570be582a570356f70e930",
305+
"Expected": "5ae98cd73052457257f43b007755e469d1867fbafa6abfd1db32fd8f0851c3d9",
306+
"Name": "33byte-exponent-last-2bytes-ff",
307+
"GasOld": 200,
308+
"GasNew": 500
309+
},
310+
{
311+
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000203fdb9a1dfe54fd10fe2793c41f01be9cdfb3d7ed8c252b441207212bc7c05ee600000000000000000000000000000000000000000000000000000000000000006bd85245a361e3ecd601fa587bc62be2b605cebacc1a1042efba2f80dfe66ed94d529957835bd5f953006f7760cdb6b98157a6ea8cca39fdb5cd7e4fbb5b3c20",
312+
"Expected": "17c21dbded148914b96f2f554df601ae737e5f98ca0fd3f0b84141be20888220",
313+
"Name": "exponent-with-leading-zeros",
314+
"GasOld": 1365,
315+
"GasNew": 8192
316+
},
317+
{
318+
"Input": "00000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002134f975ffeb77c28b5c561b98cb0cba5bb73a9c179e70be3a6ba7dcac9a0369ae4d25957a159e10f428d2a88aad5bea4332ddecd2ed4d2347c958870a8a20ced5a8be2a6057d92c114c29f3c5b4e8add0cd12ac795dc02fe71483c21c797c9c099c38",
319+
"Expected": "3b62ede56212bdf5c8f67a4e10a7786cf5ea6aeae81cfa3069c7c0d0b9a88a7c81",
320+
"Name": "33byte-base-32byte-exp-33byte-mod",
321+
"GasOld": 2108,
322+
"GasNew": 12650
211323
}
212-
]
324+
]

0 commit comments

Comments
 (0)