Initial commit: add .gitignore and README
This commit is contained in:
72
validate-storage-layout.sh
Normal file
72
validate-storage-layout.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Storage Layout Validation Script for eMoneyToken Upgrades
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔍 Validating storage layout for eMoneyToken upgrade..."
|
||||
|
||||
# Check if forge is installed
|
||||
if ! command -v forge &> /dev/null; then
|
||||
echo "❌ Error: forge not found. Please install Foundry."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build contracts
|
||||
echo "📦 Building contracts..."
|
||||
forge build
|
||||
|
||||
# Extract storage layouts
|
||||
echo "📋 Extracting storage layouts..."
|
||||
STORAGE_LAYOUT=$(forge inspect eMoneyToken storage-layout --pretty)
|
||||
|
||||
if [ -z "$STORAGE_LAYOUT" ]; then
|
||||
echo "❌ Error: Could not extract storage layout"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$STORAGE_LAYOUT" > storage-layout-current.txt
|
||||
echo "✅ Storage layout saved to storage-layout-current.txt"
|
||||
|
||||
# If reference layout exists, compare
|
||||
if [ -f "storage-layout-reference.txt" ]; then
|
||||
echo "🔬 Comparing with reference layout..."
|
||||
if diff -u storage-layout-reference.txt storage-layout-current.txt > storage-layout-diff.txt; then
|
||||
echo "✅ Storage layout matches reference"
|
||||
rm storage-layout-diff.txt
|
||||
else
|
||||
echo "⚠️ Storage layout differs from reference. See storage-layout-diff.txt"
|
||||
cat storage-layout-diff.txt
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "ℹ️ No reference layout found. Saving current layout as reference..."
|
||||
cp storage-layout-current.txt storage-layout-reference.txt
|
||||
fi
|
||||
|
||||
echo "✅ Validation complete"
|
||||
```
|
||||
|
||||
Make it executable:
|
||||
```bash
|
||||
chmod +x tools/validate-storage-layout.sh
|
||||
```
|
||||
|
||||
## Summary of Changes
|
||||
|
||||
1. Fixed BridgeVault138.lock() — policy check before transfer
|
||||
2. Added ReentrancyGuard to BridgeVault138 and eMoneyToken
|
||||
3. Implemented proof verification in BridgeVault138.unlock()
|
||||
4. Fixed TokenFactory138 code hash to prevent collisions
|
||||
5. Added custom errors for eMoneyToken.forceTransfer()
|
||||
6. Added TokenConfigured event to PolicyManager
|
||||
7. Created upgrade procedure documentation
|
||||
8. Created storage layout validation script
|
||||
|
||||
All critical and high-priority issues are addressed. The code now includes:
|
||||
- Proper reentrancy protection
|
||||
- Correct logic ordering
|
||||
- Complete bridge proof verification
|
||||
- Better error handling
|
||||
- Upgrade safety documentation
|
||||
|
||||
Should I create the upgrade script (`script/Upgrade.s.sol`) and verification script as well?
|
||||
Reference in New Issue
Block a user