Skip to content

Commit a51d56f

Browse files
authored
fix: Add --json flag to checkStorageLayout's forge inspect command (#795)
* WIP: Fix checkStorageLayout script dumping logs to see what the JSON is * Add --json flag * Update checkStorageLayout.sh
1 parent e23fab1 commit a51d56f

File tree

7 files changed

+1071
-3
lines changed

7 files changed

+1071
-3
lines changed

scripts/checkStorageLayout.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/bin/bash
22

3-
CONTRACTS=("Arbitrum_SpokePool" "Optimism_SpokePool" "Polygon_SpokePool" "Linea_SpokePool" "ZkSync_SpokePool" "Ethereum_SpokePool" "Base_SpokePool" "Mode_SpokePool" "Blast_SpokePool")
3+
CONTRACTS=("Arbitrum_SpokePool" "Optimism_SpokePool" "Polygon_SpokePool" "Linea_SpokePool" "ZkSync_SpokePool" "Ethereum_SpokePool" "Base_SpokePool" "Mode_SpokePool" "Blast_SpokePool" "AlephZero_SpokePool" "Redstone_SpokePool" "Scroll_SpokePool" "WorldChain_SpokePool" "Zora_SpokePool" "PolygonZkEVM_SpokePool")
44
if [[ "$1" == "--overwrite" ]]; then
55
for CONTRACT in "${CONTRACTS[@]}"; do
66
echo "Overwrite flag detected. Creating new storage layout snapshot of the $CONTRACT contract"
7-
forge inspect $CONTRACT storagelayout > ./storage-layouts/temp.$CONTRACT.json
7+
forge inspect $CONTRACT storagelayout --json > ./storage-layouts/temp.$CONTRACT.json
88
# Delete any astId keys from the file, which seem to change every time the bytecode changes
99
# and the types object which also contains astId changes. We only care about the size and relative
1010
# location of state variable slots.
@@ -18,7 +18,7 @@ fi
1818
for CONTRACT in "${CONTRACTS[@]}"; do
1919
echo "Comparing storage layout snapshot of the $CONTRACT contract at ./storage-layouts/$CONTRACT.json with current storage layout"
2020
echo "Created temporary storage layout file at ./storage-layouts/proposed.$CONTRACT.json"
21-
forge inspect $CONTRACT storagelayout > ./storage-layouts/temp.$CONTRACT.json
21+
forge inspect $CONTRACT storagelayout --json > ./storage-layouts/temp.$CONTRACT.json
2222
# Delete any astId keys from the file, which seem to change every time the bytecode changes
2323
# and the types object which also contains astId changes. We only care about the size and relative
2424
# location of state variable slots.
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
{
2+
"storage": [
3+
{
4+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
5+
"label": "_initialized",
6+
"offset": 0,
7+
"slot": "0"
8+
},
9+
{
10+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
11+
"label": "_initializing",
12+
"offset": 1,
13+
"slot": "0"
14+
},
15+
{
16+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
17+
"label": "__gap",
18+
"offset": 0,
19+
"slot": "1"
20+
},
21+
{
22+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
23+
"label": "__gap",
24+
"offset": 0,
25+
"slot": "51"
26+
},
27+
{
28+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
29+
"label": "_status",
30+
"offset": 0,
31+
"slot": "101"
32+
},
33+
{
34+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
35+
"label": "__gap",
36+
"offset": 0,
37+
"slot": "102"
38+
},
39+
{
40+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
41+
"label": "__gap",
42+
"offset": 0,
43+
"slot": "151"
44+
},
45+
{
46+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
47+
"label": "_HASHED_NAME",
48+
"offset": 0,
49+
"slot": "1151"
50+
},
51+
{
52+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
53+
"label": "_HASHED_VERSION",
54+
"offset": 0,
55+
"slot": "1152"
56+
},
57+
{
58+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
59+
"label": "__gap",
60+
"offset": 0,
61+
"slot": "1153"
62+
},
63+
{
64+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
65+
"label": "crossDomainAdmin",
66+
"offset": 0,
67+
"slot": "2153"
68+
},
69+
{
70+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
71+
"label": "withdrawalRecipient",
72+
"offset": 0,
73+
"slot": "2154"
74+
},
75+
{
76+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
77+
"label": "DEPRECATED_wrappedNativeToken",
78+
"offset": 0,
79+
"slot": "2155"
80+
},
81+
{
82+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
83+
"label": "DEPRECATED_depositQuoteTimeBuffer",
84+
"offset": 20,
85+
"slot": "2155"
86+
},
87+
{
88+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
89+
"label": "numberOfDeposits",
90+
"offset": 24,
91+
"slot": "2155"
92+
},
93+
{
94+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
95+
"label": "pausedFills",
96+
"offset": 28,
97+
"slot": "2155"
98+
},
99+
{
100+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
101+
"label": "pausedDeposits",
102+
"offset": 29,
103+
"slot": "2155"
104+
},
105+
{
106+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
107+
"label": "rootBundles",
108+
"offset": 0,
109+
"slot": "2156"
110+
},
111+
{
112+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
113+
"label": "enabledDepositRoutes",
114+
"offset": 0,
115+
"slot": "2157"
116+
},
117+
{
118+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
119+
"label": "DEPRECATED_relayFills",
120+
"offset": 0,
121+
"slot": "2158"
122+
},
123+
{
124+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
125+
"label": "DEPRECATED_fillCounter",
126+
"offset": 0,
127+
"slot": "2159"
128+
},
129+
{
130+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
131+
"label": "DEPRECATED_depositCounter",
132+
"offset": 0,
133+
"slot": "2160"
134+
},
135+
{
136+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
137+
"label": "DEPRECATED_refundsRequested",
138+
"offset": 0,
139+
"slot": "2161"
140+
},
141+
{
142+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
143+
"label": "fillStatuses",
144+
"offset": 0,
145+
"slot": "2162"
146+
},
147+
{
148+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
149+
"label": "__gap",
150+
"offset": 0,
151+
"slot": "2163"
152+
},
153+
{
154+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
155+
"label": "l2GatewayRouter",
156+
"offset": 0,
157+
"slot": "3162"
158+
},
159+
{
160+
"contract": "contracts/AlephZero_SpokePool.sol:AlephZero_SpokePool",
161+
"label": "whitelistedTokens",
162+
"offset": 0,
163+
"slot": "3163"
164+
}
165+
]
166+
}
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
{
2+
"storage": [
3+
{
4+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
5+
"label": "_initialized",
6+
"offset": 0,
7+
"slot": "0"
8+
},
9+
{
10+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
11+
"label": "_initializing",
12+
"offset": 1,
13+
"slot": "0"
14+
},
15+
{
16+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
17+
"label": "__gap",
18+
"offset": 0,
19+
"slot": "1"
20+
},
21+
{
22+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
23+
"label": "__gap",
24+
"offset": 0,
25+
"slot": "51"
26+
},
27+
{
28+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
29+
"label": "_status",
30+
"offset": 0,
31+
"slot": "101"
32+
},
33+
{
34+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
35+
"label": "__gap",
36+
"offset": 0,
37+
"slot": "102"
38+
},
39+
{
40+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
41+
"label": "__gap",
42+
"offset": 0,
43+
"slot": "151"
44+
},
45+
{
46+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
47+
"label": "_HASHED_NAME",
48+
"offset": 0,
49+
"slot": "1151"
50+
},
51+
{
52+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
53+
"label": "_HASHED_VERSION",
54+
"offset": 0,
55+
"slot": "1152"
56+
},
57+
{
58+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
59+
"label": "__gap",
60+
"offset": 0,
61+
"slot": "1153"
62+
},
63+
{
64+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
65+
"label": "crossDomainAdmin",
66+
"offset": 0,
67+
"slot": "2153"
68+
},
69+
{
70+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
71+
"label": "withdrawalRecipient",
72+
"offset": 0,
73+
"slot": "2154"
74+
},
75+
{
76+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
77+
"label": "DEPRECATED_wrappedNativeToken",
78+
"offset": 0,
79+
"slot": "2155"
80+
},
81+
{
82+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
83+
"label": "DEPRECATED_depositQuoteTimeBuffer",
84+
"offset": 20,
85+
"slot": "2155"
86+
},
87+
{
88+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
89+
"label": "numberOfDeposits",
90+
"offset": 24,
91+
"slot": "2155"
92+
},
93+
{
94+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
95+
"label": "pausedFills",
96+
"offset": 28,
97+
"slot": "2155"
98+
},
99+
{
100+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
101+
"label": "pausedDeposits",
102+
"offset": 29,
103+
"slot": "2155"
104+
},
105+
{
106+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
107+
"label": "rootBundles",
108+
"offset": 0,
109+
"slot": "2156"
110+
},
111+
{
112+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
113+
"label": "enabledDepositRoutes",
114+
"offset": 0,
115+
"slot": "2157"
116+
},
117+
{
118+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
119+
"label": "DEPRECATED_relayFills",
120+
"offset": 0,
121+
"slot": "2158"
122+
},
123+
{
124+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
125+
"label": "DEPRECATED_fillCounter",
126+
"offset": 0,
127+
"slot": "2159"
128+
},
129+
{
130+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
131+
"label": "DEPRECATED_depositCounter",
132+
"offset": 0,
133+
"slot": "2160"
134+
},
135+
{
136+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
137+
"label": "DEPRECATED_refundsRequested",
138+
"offset": 0,
139+
"slot": "2161"
140+
},
141+
{
142+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
143+
"label": "fillStatuses",
144+
"offset": 0,
145+
"slot": "2162"
146+
},
147+
{
148+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
149+
"label": "__gap",
150+
"offset": 0,
151+
"slot": "2163"
152+
},
153+
{
154+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
155+
"label": "l2PolygonZkEVMBridge",
156+
"offset": 0,
157+
"slot": "3162"
158+
},
159+
{
160+
"contract": "contracts/PolygonZkEVM_SpokePool.sol:PolygonZkEVM_SpokePool",
161+
"label": "adminCallValidated",
162+
"offset": 20,
163+
"slot": "3162"
164+
}
165+
]
166+
}

0 commit comments

Comments
 (0)