✨ Add opt-in storage layout compatibility guard for UUPS #1500
+80
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Adds an optional storage layout compatibility check mechanism for UUPS upgrades to prevent storage collision vulnerabilities.
Changes
StorageLayoutMismatch()error toUUPSUpgradeable.sol_checkStorageLayout(address newImplementation)virtual hook (empty by default for backwards compatibility)MockUUPSImplementation.solusing version hash comparisonUsage Pattern
Implementations can override
_checkStorageLayoutto enforce storage compatibility:Design Decisions
Addresses the storage layout safety concern raised in the original UUPS test demo.
Closes #1489
Checklist
Ensure you completed all of the steps below before submitting your pull request:
forge fmt?forge test?