Skip to content

[contracts] foundry.toml missing evm_version=paris on feat/25-foundry-fork-tests — fork tests compile wrong bytecode #263

@obchain

Description

@obchain

Refs #53

File: contracts/foundry.toml (feat/25-foundry-fork-tests branch)

Problem:
foundry.toml on this branch has no evm_version key under [profile.default]. Solc 0.8.24 defaults to the Shanghai EVM target and emits PUSH0 (0x5f) opcodes. BSC does not support PUSH0 — it runs a pre-Shanghai EVM. Every CharonLiquidator deployed via new CharonLiquidator(...) inside CharonLiquidatorFork.t.sol produces Shanghai bytecode.

The fork test suite passes because Foundry's in-process EVM (revm) accepts PUSH0. But the compiled artifact tested here is NOT the artifact that would deploy to BSC mainnet. The entire fork test suite is validating code that would fail on the real target chain.

PRD clause: CLAUDE.md — evm_version=paris required for BSC (open issues #114/#118/#203). Solidity test files confirmed to inherit this gap in PR #38 review.

Impact: Every 'pass' in this suite is a false signal. The bytecode under test diverges from production BSC deployment. An evm_version fix after merge may reveal latent compilation differences that break currently-passing fork tests.

Fix:
Add to contracts/foundry.toml [profile.default]:
evm_version = "paris"

This must land before any fork test result is treated as meaningful validation.

Prior art: Same finding raised in PR #36 (#114), PR #37 (#118), PR #38, PR #45 (#203).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions