Ensure that smart contracts are designed with modularity, upgradability, and separation of concerns to enable secure operations, upgrades, and maintenance. Contracts should be designed to minimize security risks related to complex upgrades, privilege transfers, and mismanagement of dependencies.
Verify that the contract is divided into modular components or contracts.
✓
✓
S1.1.A2
Ensure that upgrade mechanisms are designed to allow secure and controlled updates.
✓
✓
S1.1.A3
Check that module boundaries are clearly defined and that dependencies are managed.
✓
✓
S1.1.A4
Ensure that changes to storage variable order or types between contract versions are managed to avoid storage collisions and data corruption.
✓
✓
S1.1.A5
Verify that critical privilege transfers are conducted in a two-step process to ensure secure and reliable privilege changes.
✓
S1.1.A6
Verify that the data location of parameters and return variables is correctly handled when overriding internal and public functions to avoid generating invalid code during virtual function calls.