Skip to content

Commit 58a161c

Browse files
Feature/eng 2157 update storage checks to confirm an empty object (#871)
* Update storage checks to confirm an empty object * add namespaced storage to GasArchive and Syndicatefactory * make -C shared create-contract-bindings * update storage layout * fix lint
1 parent b52b73d commit 58a161c

30 files changed

+1476
-11201
lines changed

.github/workflows/storage-layout.yaml

Lines changed: 6 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -45,72 +45,15 @@ jobs:
4545
- name: Install Foundry dependencies
4646
run: forge install
4747

48-
- name: Validate storage layouts
48+
- name: Validate UUPS storage layouts
4949
run: |
50-
echo "🔍 Validating storage layouts for upgradeable contracts..."
50+
echo "🔍 Validating UUPS upgradeable contracts use namespaced storage..."
51+
echo ""
5152
5253
# Build contracts
5354
forge build
54-
mkdir -p .storage-layouts-current
5555
56-
# Extract current storage layouts for upgradeable contracts
57-
echo "📊 Extracting current storage layouts..."
56+
# Run storage validation script
57+
chmod +x scripts/check-uups-storage.sh
58+
./scripts/check-uups-storage.sh
5859
59-
CONTRACTS="SyndicateFactory SyndicateSequencingChain ArbChainConfig"
60-
VALIDATION_FAILED=false
61-
62-
for contract in $CONTRACTS; do
63-
echo "Extracting current layout for $contract..."
64-
65-
# Extract current storage layout
66-
forge inspect --json $contract storageLayout > .storage-layouts-current/$contract.json
67-
68-
# Check if baseline exists
69-
if [ -f .storage-layouts/$contract.json ]; then
70-
echo "Comparing $contract storage layout against baseline..."
71-
72-
if ! cmp -s .storage-layouts/$contract.json .storage-layouts-current/$contract.json; then
73-
echo "❌ STORAGE LAYOUT CHANGED: $contract"
74-
echo "This change could corrupt storage during upgrades!"
75-
echo ""
76-
echo "=== BASELINE ==="
77-
cat .storage-layouts/$contract.json
78-
echo ""
79-
echo "=== CURRENT ==="
80-
cat .storage-layouts-current/$contract.json
81-
echo ""
82-
echo "=== DIFF ==="
83-
diff .storage-layouts/$contract.json .storage-layouts-current/$contract.json || true
84-
echo ""
85-
VALIDATION_FAILED=true
86-
else
87-
echo "✅ $contract: Storage layout unchanged"
88-
fi
89-
else
90-
echo "❌ $contract: No baseline found"
91-
VALIDATION_FAILED=true
92-
fi
93-
done
94-
95-
if [ "$VALIDATION_FAILED" = true ]; then
96-
echo ""
97-
echo "❌ Storage layout validation FAILED!"
98-
echo "The above contracts have storage layout changes that could corrupt data during upgrades."
99-
echo ""
100-
echo "If these changes are intentional:"
101-
echo "1. Ensure you understand the implications"
102-
echo "2. Consider if this requires a new deployment instead of an upgrade"
103-
echo "3. Update storage layout baselines by running 'make storage-layout-update'"
104-
exit 1
105-
else
106-
echo ""
107-
echo "✅ All storage layouts are safe for upgrades!"
108-
fi
109-
110-
- name: Upload storage layouts as artifacts
111-
uses: actions/upload-artifact@v4
112-
if: always()
113-
with:
114-
name: storage-layouts-${{ github.sha }}
115-
path: synd-contracts/.storage-layouts/
116-
retention-days: 30

shared/contract-bindings/src/synd/atomic_sequencer_test.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/deploy_gas_archive.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/deploy_syndicate_factory.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/deploy_syndicate_factory_deterministic.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/gas_archive.rs

Lines changed: 303 additions & 97 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/gas_archive_test.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/gas_archive_test_helper.rs

Lines changed: 303 additions & 97 deletions
Large diffs are not rendered by default.

shared/contract-bindings/src/synd/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,6 @@ pub mod r#h04_missing_finalization_for_destination_appchain_po_c;
309309
pub mod r#reentrant_contract;
310310
pub mod r#synd_staking_test;
311311
pub mod r#syndicate_factory;
312-
pub mod r#syndicate_factory_storage_test;
313-
pub mod r#test_namespaced_storage_contract;
314312
pub mod r#syndicate_factory_test;
315313
pub mod r#syndicate_factory_upgrade_v2;
316314
pub mod r#syndicate_factory_wrapper;

shared/contract-bindings/src/synd/preview_syndicate_factory_addresses.rs

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)