Skip to content

Commit 5ef07eb

Browse files
committed
Fix gas tests
Closes #3078 commit-id:5e47ad12 # Conflicts: # crates/forge/tests/integration/gas.rs # Conflicts: # crates/forge/tests/integration/gas.rs
1 parent 94149fd commit 5ef07eb

File tree

1 file changed

+54
-53
lines changed
  • crates/forge/tests/integration

1 file changed

+54
-53
lines changed

crates/forge/tests/integration/gas.rs

Lines changed: 54 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -946,18 +946,18 @@ fn events_cost_cairo_steps() {
946946
let result = run_test_case(&test, ForgeTrackedResource::CairoSteps);
947947

948948
assert_passed(&result);
949-
// todo(3078): verify gas required be event keys and data
950-
// 156 range_check_builtin ~= 7
951-
// 6 gas for 50 event values
952-
// ~13 gas for 50 event keys
953-
// 0 l1_gas + 0 l1_data_gas + (7 + 6 + ~13) * (100 / 0.0025) l2 gas
949+
// 105 range_check_builtin = 105 * 0.04 = 4.2 = ~5
950+
// 768_000 gas for 50 events
951+
// 512_000 = 10_240 * 50 (gas from 50 event keys)
952+
// 256_000 = 5120 * 50 (gas from 50 event data)
953+
// 0 l1_gas + 0 l1_data_gas + ((5) * (100 / 0.0025) + 768_000) l2 gas
954954
assert_gas(
955955
&result,
956956
"events_cost",
957957
GasVector {
958958
l1_gas: GasAmount(0),
959959
l1_data_gas: GasAmount(0),
960-
l2_gas: GasAmount(1_048_000),
960+
l2_gas: GasAmount(968_000),
961961
},
962962
);
963963
}
@@ -992,18 +992,19 @@ fn events_contract_cost_cairo_steps() {
992992

993993
let result = run_test_case(&test, ForgeTrackedResource::CairoSteps);
994994
assert_passed(&result);
995-
// 4119 * 0.0025 = 10.2975 ~ 11 = gas cost of steps
995+
// (3970 steps + 14 memory holes) * 0.0025 = 9.96 ~ 10 = gas cost of steps
996996
// 96 = gas cost of onchain data (deploy cost)
997-
// 6 gas for 50 event values
998-
// ~13 gas for 50 event keys
999-
// 0 l1_gas + 96 l1_data_gas + (11 + 6 + ~13) * (100 / 0.0025) l2 gas
997+
// 768_000 gas for 50 events
998+
// 512_000 = 10_240 * 50 (gas from 50 event keys)
999+
// 256_000 = 5120 * 50 (gas from 50 event data)
1000+
// 0 l1_gas + 96 l1_data_gas + ((10) * (100 / 0.0025) + 768_000) l2 gas
10001001
assert_gas(
10011002
&result,
10021003
"event_emission_cost",
10031004
GasVector {
10041005
l1_gas: GasAmount(0),
10051006
l1_data_gas: GasAmount(96),
1006-
l2_gas: GasAmount(1_208_000),
1007+
l2_gas: GasAmount(1_168_000),
10071008
},
10081009
);
10091010
}
@@ -1174,15 +1175,15 @@ fn declare_cost_is_omitted_sierra_gas() {
11741175
let result = run_test_case(&test, ForgeTrackedResource::SierraGas);
11751176

11761177
assert_passed(&result);
1177-
// 25710 = reported consumed sierra gas
1178-
// 0 l1_gas + 0 l1_data_gas + 25710 l2 gas
1178+
// 18780 = reported consumed sierra gas
1179+
// 0 l1_gas + 0 l1_data_gas + 18780 l2 gas
11791180
assert_gas(
11801181
&result,
11811182
"declare_cost_is_omitted",
11821183
GasVector {
11831184
l1_gas: GasAmount(0),
11841185
l1_data_gas: GasAmount(0),
1185-
l2_gas: GasAmount(25710),
1186+
l2_gas: GasAmount(18780),
11861187
},
11871188
);
11881189
}
@@ -1222,15 +1223,15 @@ fn deploy_syscall_cost_sierra_gas() {
12221223
// -> 1 deploy syscall costs 1132 cairo steps, 7 pedersen and 18 range check builtins
12231224
// -> 1 calldata element costs 8 cairo steps and 1 pedersen
12241225
// -> 1 pedersen costs 4050, 1 range check costs 70
1225-
// 476044 = reported consumed sierra gas
1226-
// 0 l1_gas + 96 l1_data_gas + (20000 + 147660 + 476044) l2 gas
1226+
// 444424 = reported consumed sierra gas
1227+
// 0 l1_gas + 96 l1_data_gas + (20000 + 147660 + 444424) l2 gas
12271228
assert_gas(
12281229
&result,
12291230
"deploy_syscall_cost",
12301231
GasVector {
12311232
l1_gas: GasAmount(0),
12321233
l1_data_gas: GasAmount(96),
1233-
l2_gas: GasAmount(643_704),
1234+
l2_gas: GasAmount(612_084),
12341235
},
12351236
);
12361237
}
@@ -1262,15 +1263,15 @@ fn snforge_std_deploy_cost_sierra_gas() {
12621263
// 96 = gas cost of onchain data (see `deploy_syscall_cost_sierra_gas` test)
12631264
// 20000 = cost of 2 keccak syscall (see `deploy_syscall_cost_sierra_gas` test)
12641265
// 147660 = cost of 1 deploy syscall (see `deploy_syscall_cost_sierra_gas` test)
1265-
// 495894 = reported consumed sierra gas
1266-
// 0 l1_gas + 96 l1_data_gas + (20000 + 147660 + 495894) l2 gas
1266+
// 458074 = reported consumed sierra gas
1267+
// 0 l1_gas + 96 l1_data_gas + (20000 + 147660 + 458074) l2 gas
12671268
assert_gas(
12681269
&result,
12691270
"deploy_cost",
12701271
GasVector {
12711272
l1_gas: GasAmount(0),
12721273
l1_data_gas: GasAmount(96),
1273-
l2_gas: GasAmount(663_554),
1274+
l2_gas: GasAmount(625_734),
12741275
},
12751276
);
12761277
}
@@ -1291,15 +1292,15 @@ fn keccak_cost_sierra_gas() {
12911292
assert_passed(&result);
12921293
// 10000 = cost of 1 keccak syscall (1 * 100 * 100)
12931294
// -> 1 keccak syscall costs 100 cairo steps
1294-
// 55670 = reported consumed sierra gas
1295-
// 0 l1_gas + 0 l1_data_gas + (10000 + 55670) l2 gas
1295+
// 44290 = reported consumed sierra gas
1296+
// 0 l1_gas + 0 l1_data_gas + (10000 + 44290) l2 gas
12961297
assert_gas(
12971298
&result,
12981299
"keccak_cost",
12991300
GasVector {
13001301
l1_gas: GasAmount(0),
13011302
l1_data_gas: GasAmount(0),
1302-
l2_gas: GasAmount(65670),
1303+
l2_gas: GasAmount(54290),
13031304
},
13041305
);
13051306
}
@@ -1340,15 +1341,15 @@ fn contract_keccak_cost_sierra_gas() {
13401341
// 87650 = cost of 1 call contract syscall (because 1 * 866 * 100 + 15 * 70)
13411342
// -> 1 call contract syscall costs 866 cairo steps and 15 range check builtins
13421343
// -> 1 range check costs 70
1343-
// 1168655 = reported consumed sierra gas
1344-
// 0 l1_gas + 96 l1_data_gas + (142810 + 50000 + 87650 + 1168655) l2 gas
1344+
// 1099755 = reported consumed sierra gas
1345+
// 0 l1_gas + 96 l1_data_gas + (142810 + 50000 + 87650 + 1099755) l2 gas
13451346
assert_gas(
13461347
&result,
13471348
"contract_keccak_cost",
13481349
GasVector {
13491350
l1_gas: GasAmount(0),
13501351
l1_data_gas: GasAmount(96),
1351-
l2_gas: GasAmount(1_449_115),
1352+
l2_gas: GasAmount(1_380_215),
13521353
},
13531354
);
13541355
}
@@ -1385,15 +1386,15 @@ fn contract_range_check_cost_sierra_gas() {
13851386
// 96 = gas cost of onchain data (see `deploy_syscall_cost_sierra_gas` test)
13861387
// 142810 = cost of 1 deploy syscall (see `deploy_syscall_cost_sierra_gas` test)
13871388
// 87650 = cost of 1 call contract syscall (see `contract_keccak_cost_sierra_gas` test)
1388-
// 139690 = reported consumed sierra gas
1389-
// 0 l1_gas + 96 l1_data_gas + (142810 + 87650 + 139690) l2 gas
1389+
// 109140 = reported consumed sierra gas
1390+
// 0 l1_gas + 96 l1_data_gas + (142810 + 87650 + 109140) l2 gas
13901391
assert_gas(
13911392
&result,
13921393
"contract_range_check_cost",
13931394
GasVector {
13941395
l1_gas: GasAmount(0),
13951396
l1_data_gas: GasAmount(96),
1396-
l2_gas: GasAmount(370_150),
1397+
l2_gas: GasAmount(339_600),
13971398
},
13981399
);
13991400
}
@@ -1436,15 +1437,15 @@ fn storage_write_cost_sierra_gas() {
14361437
// -> 1 storage write syscall costs 93 cairo steps and 1 range check builtin
14371438
// -> 1 range check costs 70
14381439
// -> the minimum total cost is `syscall_base_gas_cost`, which is pre-charged by the compiler (atm it is 100 * 100)
1439-
// 62030 = reported consumed sierra gas
1440-
// 0 l1_gas + (96 + 64 + 32) l1_data_gas + (142810 + 87650 + 10000 + 62030) l2 gas
1440+
// 40080 = reported consumed sierra gas
1441+
// 0 l1_gas + (96 + 64 + 32) l1_data_gas + (142810 + 87650 + 10000 + 40080) l2 gas
14411442
assert_gas(
14421443
&result,
14431444
"storage_write_cost",
14441445
GasVector {
14451446
l1_gas: GasAmount(0),
14461447
l1_data_gas: GasAmount(192),
1447-
l2_gas: GasAmount(302_490),
1448+
l2_gas: GasAmount(280_540),
14481449
},
14491450
);
14501451
}
@@ -1494,15 +1495,15 @@ fn multiple_storage_writes_cost_sierra_gas() {
14941495
// -> 1 storage write syscall costs 93 cairo steps and 1 range check builtin
14951496
// -> 1 range check costs 70
14961497
// -> the minimum total cost is `syscall_base_gas_cost`, which is pre-charged by the compiler (atm it is 100 * 100)
1497-
// 73240 = reported consumed sierra gas
1498-
// 0 l1_gas + (64 + 64 + 32 + 32) l1_data_gas + (142810 + 175300 + 20000 + 73240) l2 gas
1498+
// 45980 = reported consumed sierra gas
1499+
// 0 l1_gas + (64 + 64 + 32 + 32) l1_data_gas + (142810 + 175300 + 20000 + 45980) l2 gas
14991500
assert_gas(
15001501
&result,
15011502
"multiple_storage_writes_cost",
15021503
GasVector {
15031504
l1_gas: GasAmount(0),
15041505
l1_data_gas: GasAmount(192),
1505-
l2_gas: GasAmount(411_350),
1506+
l2_gas: GasAmount(384_090),
15061507
},
15071508
);
15081509
}
@@ -1544,15 +1545,15 @@ fn l1_message_cost_sierra_gas() {
15441545
// 14170 = cost of 1 SendMessageToL1 syscall (because 1 * 141 * 100 + 1 * 70 )
15451546
// -> 1 storage write syscall costs 141 cairo steps and 1 range check builtin
15461547
// -> 1 range check costs 70
1547-
// 60890 = reported consumed sierra gas
1548-
// 29524 l1_gas + 96 l1_data_gas + (142810 + 87650 + 14170 + 60890) l2 gas
1548+
// 39440 = reported consumed sierra gas
1549+
// 29524 l1_gas + 96 l1_data_gas + (142810 + 87650 + 14170 + 39440) l2 gas
15491550
assert_gas(
15501551
&result,
15511552
"l1_message_cost",
15521553
GasVector {
15531554
l1_gas: GasAmount(29524),
15541555
l1_data_gas: GasAmount(96),
1555-
l2_gas: GasAmount(305_520),
1556+
l2_gas: GasAmount(284_070),
15561557
},
15571558
);
15581559
}
@@ -1608,15 +1609,15 @@ fn l1_message_cost_for_proxy_sierra_gas() {
16081609
// -> 1 pedersen costs 4050, 1 range check costs 70
16091610
// 175300 = cost of 2 call contract syscalls (see `multiple_storage_writes_cost_sierra_gas` test)
16101611
// 14170 = cost of 1 SendMessageToL1 syscall (see `l1_message_cost_sierra_gas` test)
1611-
// 112890 = reported consumed sierra gas
1612-
// 29524 l1_gas + (128 + 64) l1_data_gas + (285620 + 175300 + 14170 + 112890) l2 gas
1612+
// 71260 = reported consumed sierra gas
1613+
// 29524 l1_gas + (128 + 64) l1_data_gas + (285620 + 175300 + 14170 + 71260) l2 gas
16131614
assert_gas(
16141615
&result,
16151616
"l1_message_cost_for_proxy",
16161617
GasVector {
16171618
l1_gas: GasAmount(29524),
16181619
l1_data_gas: GasAmount(192),
1619-
l2_gas: GasAmount(587_980),
1620+
l2_gas: GasAmount(546_350),
16201621
},
16211622
);
16221623
}
@@ -1654,15 +1655,15 @@ fn events_cost_sierra_gas() {
16541655
// -> 1 emit event syscall costs 61 cairo steps and 1 range check builtin
16551656
// -> 1 range check costs 70
16561657
// -> the minimum total cost is `syscall_base_gas_cost`, which is pre-charged by the compiler (atm it is 100 * 100)
1657-
// 188920 = reported consumed sierra gas
1658-
// 0 l1_gas + 0 l1_data_gas + (512000 + 256000 + 10000 + 188920) l2 gas
1658+
// 167550 = reported consumed sierra gas
1659+
// 0 l1_gas + 0 l1_data_gas + (512000 + 256000 + 10000 + 167550) l2 gas
16591660
assert_gas(
16601661
&result,
16611662
"events_cost",
16621663
GasVector {
16631664
l1_gas: GasAmount(0),
16641665
l1_data_gas: GasAmount(0),
1665-
l2_gas: GasAmount(966_920),
1666+
l2_gas: GasAmount(945_550),
16661667
},
16671668
);
16681669
}
@@ -1700,15 +1701,15 @@ fn events_contract_cost_sierra_gas() {
17001701
// 10000 = cost of 1 emit event syscall (see `events_cost_sierra_gas` test)
17011702
// 142810 = cost of 1 deploy syscall (see `deploy_syscall_cost_sierra_gas` test)
17021703
// 87650 = cost of 1 call contract syscall (see `contract_keccak_cost_sierra_gas` test)
1703-
// 240270 = reported consumed sierra gas
1704-
// 0 l1_gas + 96 l1_data_gas + (512000 + 256000 + 10000 + 142810 + 87650 + 240270) l2 gas
1704+
// 199820 = reported consumed sierra gas
1705+
// 0 l1_gas + 96 l1_data_gas + (512000 + 256000 + 10000 + 142810 + 87650 + 199820) l2 gas
17051706
assert_gas(
17061707
&result,
17071708
"event_emission_cost",
17081709
GasVector {
17091710
l1_gas: GasAmount(0),
17101711
l1_data_gas: GasAmount(96),
1711-
l2_gas: GasAmount(1_248_730),
1712+
l2_gas: GasAmount(1_208_280),
17121713
},
17131714
);
17141715
}
@@ -1769,15 +1770,15 @@ fn nested_call_cost_sierra_gas() {
17691770
// 10000 = cost of 1 emit event syscall (see `events_cost_sierra_gas` test)
17701771
// 142810 = cost of 1 deploy syscall (see `deploy_syscall_cost_sierra_gas` test)
17711772
// 87650 = cost of 1 call contract syscall (see `contract_keccak_cost_sierra_gas` test)
1772-
// 663192 = reported consumed sierra gas
1773-
// 0 l1_gas + 288 l1_data_gas + (512000 + 256000 + 10000 + 3 * 142810 + 2 * 87650 + 663192) l2 gas
1773+
// 569922 = reported consumed sierra gas
1774+
// 0 l1_gas + 288 l1_data_gas + (512000 + 256000 + 10000 + 3 * 142810 + 2 * 87650 + 569922) l2 gas
17741775
assert_gas(
17751776
&result,
17761777
"test_call_other_contract",
17771778
GasVector {
17781779
l1_gas: GasAmount(0),
17791780
l1_data_gas: GasAmount(288),
1780-
l2_gas: GasAmount(2_044_922),
1781+
l2_gas: GasAmount(1_951_652),
17811782
},
17821783
);
17831784
}
@@ -1840,15 +1841,15 @@ fn nested_call_cost_in_forked_contract_sierra_gas() {
18401841
// 10000 = cost of 1 emit event syscall (see `events_cost_sierra_gas` test)
18411842
// 142810 = cost of 1 deploy syscall (see `deploy_syscall_cost_sierra_gas` test)
18421843
// 87650 = cost of 1 call contract syscall (see `contract_keccak_cost_sierra_gas` test)
1843-
// 620462 = reported consumed sierra gas
1844-
// 0 l1_gas + 192 l1_data_gas + (512000 + 256000 + 10000 + 2 * 142810 + 2 * 87650 + 620462) l2 gas
1844+
// 560592 = reported consumed sierra gas
1845+
// 0 l1_gas + 192 l1_data_gas + (512000 + 256000 + 10000 + 2 * 142810 + 2 * 87650 + 560592) l2 gas
18451846
assert_gas(
18461847
&result,
18471848
"test_call_other_contract_fork",
18481849
GasVector {
18491850
l1_gas: GasAmount(0),
18501851
l1_data_gas: GasAmount(192),
1851-
l2_gas: GasAmount(1_859_382),
1852+
l2_gas: GasAmount(1_799_512),
18521853
},
18531854
);
18541855
}

0 commit comments

Comments
 (0)