Skip to content

[help wanted] MeridianVaultERC4626 invariant + fuzz tests (share price monotonicity) #31

@abhicris

Description

@abhicris

Context

contracts/MeridianVaultERC4626.sol is an ERC-4626 vault wrapper used by on-chain strategies. ERC-4626 share-price monotonicity + rounding direction are the top sources of vault exploits (e.g. Cream, Euler inflation attack). We have no Foundry invariants.

Scope

Files to touch:

  • test/invariants/VaultInvariants.t.sol (new).
  • Handler + invariants:
    • sharePrice is non-decreasing under deposits/withdraws (no donate-inflation).
    • previewDeposit(x) <= deposit(x) (rounding in favor of vault).
    • totalAssets() >= sum(convertToAssets(balanceOf(user))) for tracked users.
  • Include an inflation-attack scenario as a separate unit test asserting it's mitigated.

Acceptance criteria

  • Invariants pass on current implementation.
  • Temporarily breaking rounding direction causes the invariant to fail (documented in PR).
  • Runs in CI.

Estimated effort

L — ERC-4626 invariants are a known hard problem; ~2 days.

kcolbchain / Abhishek Krishna

Metadata

Metadata

Assignees

No one assigned

    Labels

    foundryFoundry tests / forgehelp wantedExtra attention is neededsoliditySolidity / EVMtestsTest coverage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions