Skip to content

0xPolygon/storage-delta

Repository files navigation

⟁ Storage Delta

Storage Delta is a tool for auditing storage layout changes during contract upgrades.

Demo

Install

Powered by Foundry.

forge install 0xPolygon/storage-delta

Run

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 b

Problematic

When a new variable is added, but conflicts with the existing storage.

    uint256 a
🏴  bool b

Moved

When an existing variable is moved.

    uint256 a
    ...
    ...
🏳️  uint256 a

Moved & problematic

When an existing variable is moved and conflicts with the existing storage.

    uint256 a
    bool b
🏁  bool b
🏁  uint256 a

Removed

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 bytes

Configuration

Option Values Description
--omit new Do not generate a report with only those findings.

Requirements

Files should be named after the contract they hold. ExampleExample.sol

The script utilizes Node.js to run. We recommend the node version defined in the .nvmrc file.

License

​ Licensed under either of ​

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