Skip to content

Releases: snorfyang/moon-upgrade-guard

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 06:05
4a0bf57

MoonUpgradeGuard compares the storage layout and ABI of existing Solidity compiler artifacts before an EVM proxy upgrade. It reports deterministic diagnostics and exit codes for CI. Passing this preflight check does not prove an upgrade safe in every respect.

Changes since v0.2.0:

  • ERC-7201 detection now reads contract struct annotations in the compiler AST, avoiding false positives from unrelated ABI or metadata strings. Namespaced storage itself is still not compared.
  • Offline regression fixtures cover real OpenZeppelin ERC20Upgradeable releases: 4.9.3 to 4.9.6 remains compatible, while 4.9.3 to 5.0.0 is blocked. A real 5.0.0 AST fixture verifies explicit refusal of ERC-7201 storage.
  • Regression fixtures also cover Solidity 0.8.29 custom storage-layout bases.
  • The documentation site now has its own home page, quickstart, and bilingual hands-on tutorial.

The Linux x86_64 and macOS arm64 assets are native CLI executables. After downloading, run chmod +x <filename> before use if the executable bit was not preserved.

Known limitations:

  • The tool does not compile Solidity, inspect business logic, connect to a chain, or execute bytecode.
  • ERC-7201 namespaced storage is rejected only when a contract struct annotation is visible in the artifact AST. Its members are not compared; without an AST, this storage may be invisible to the checker.
  • EIP-1967 and other slots written through assembly are not detectable from storageLayout and are not checked.
  • Constructor ABI entries are not compared. A Hardhat single-contract artifact without storageLayout is not sufficient input.

See the README for supported inputs, commands, and further limitations.

Built and tested by this CI run.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 03:31
8311f93

MoonUpgradeGuard compares the storage layout and ABI of existing Solidity compiler artifacts before an EVM proxy upgrade. It reports deterministic diagnostics and exit codes for CI. Passing this preflight check does not prove an upgrade safe in every respect.

Changes since v0.1.0:

  • JSON findings produced by one artifact now include "input": "old" or "input": "new". Comparison findings omit the field. An abi check where both inputs lack an ABI now emits one finding for each input. This changes the JSON report contract.
  • Regression tests now cover real solc, Foundry, and Hardhat artifacts, including nested storage types and transient storage.
  • Bilingual documentation is available on GitHub Pages.

The Linux x86_64 and macOS arm64 assets are native CLI executables. After downloading, run chmod +x <filename> before use if the executable bit was not preserved.

Known limitations:

  • The tool does not compile Solidity, inspect business logic, connect to a chain, or execute bytecode.
  • ERC-7201 namespaced storage is rejected only when an erc7201 marker is present in the artifact text; its members are not compared.
  • EIP-1967 and other slots written through assembly are not detectable from storageLayout and are not checked.
  • Constructor ABI entries are not compared. A Hardhat single-contract artifact without storageLayout is not sufficient input.

See the README for supported inputs, commands, and further limitations.

Built and tested by this CI run.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 02:30
e9c8da7

MoonUpgradeGuard compares the storage layout and ABI of existing Solidity compiler artifacts before an EVM proxy upgrade. It reports deterministic diagnostics and exit codes for CI. Passing this preflight check does not prove an upgrade safe in every respect.

The Linux x86_64 and macOS arm64 assets are native CLI executables. After downloading, run chmod +x <filename> before use if the executable bit was not preserved.

Known limitations:

  • The tool does not compile Solidity, inspect business logic, connect to a chain, or execute bytecode.
  • ERC-7201 namespaced storage is rejected only when an erc7201 marker is present in the artifact text; its members are not compared.
  • EIP-1967 and other slots written through assembly are not detectable from storageLayout and are not checked.
  • Constructor ABI entries are not compared. A Hardhat single-contract artifact without storageLayout is not sufficient input.

See the README for supported inputs, commands, and further limitations.

The tag release was built by the original CI run. The current assets use the same v0.1.0 executable source, with build paths removed, and were tested in this CI run.