Initial commit: add .gitignore and README
This commit is contained in:
49
.gitignore
vendored
Normal file
49
.gitignore
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
# Dependencies
|
||||
node_modules/
|
||||
.pnpm-store/
|
||||
vendor/
|
||||
|
||||
# Package manager lock files (optional: uncomment to ignore)
|
||||
# package-lock.json
|
||||
# yarn.lock
|
||||
|
||||
# Environment and secrets
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
*.env.backup
|
||||
.env.backup.*
|
||||
|
||||
# Logs and temp
|
||||
*.log
|
||||
logs/
|
||||
*.tmp
|
||||
*.temp
|
||||
*.tmp.*
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# Build / output
|
||||
dist/
|
||||
build/
|
||||
.next/
|
||||
out/
|
||||
*.pyc
|
||||
__pycache__/
|
||||
.eggs/
|
||||
*.egg-info/
|
||||
.coverage
|
||||
htmlcov/
|
||||
|
||||
# Optional
|
||||
.reports/
|
||||
reports/
|
||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# tools
|
||||
|
||||
Project under `/home/intlc/projects/tools`.
|
||||
|
||||
## Overview
|
||||
|
||||
(Add project description and setup instructions here.)
|
||||
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