โ Storage Delta
Storage Delta is a tool for auditing storage layout changes during contract upgrades.
Install
Powered by Foundry.
forge install 0xPolygon/storage-deltaRun
Storage Delta analyzes the entire contract suite against any previous version.
bash lib/storage-delta/run.sh <COMMIT_OR_TAG>./storage_delta will be generated if there are findings. Open OLD and NEW files side by side for the best experience.
Detectors
| Description | |
|---|---|
| ๐ฑ | New |
| ๐ด | Problematic |
| ๐ณ๏ธ | Moved |
| ๐ | Moved & problematic |
| ๐ชฆ | Removed |
| Dirty bytes |
New
When a variable with a unique name and type is added.
uint256 a uint256 a
๐ฑ bool bProblematic
When a new variable is added, but conflicts with the existing storage.
uint256 a๐ด bool bMoved
When an existing variable is moved.
uint256 a
... ...
๐ณ๏ธ uint256 aMoved & problematic
When an existing variable is moved and conflicts with the existing storage.
uint256 a
bool b๐ bool b
๐ uint256 aRemoved
When a variable no longer exists.
uint256 a
bool b uint256 a
๐ชฆDirty bytes
When the storage is not clean.
uint256 a๐ด uint128 a
16 dirty bytesConfiguration
| Option | Values | Description |
|---|---|---|
--omit |
new |
Do not generate a report with only those findings. |
Requirements
Files should be named after the contract they hold. Example โ Example.sol
The script utilizes Node.js to run. We recommend the node version defined in the .nvmrc file.
License
โ
Licensed under either of
โ
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
โ
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
ยฉ 2023 PT Services DMCC
