Skip to content

ascendia-network/erc4337-validation

Repository files navigation

ERC4337 Validation

A library to validate the ERC-4337 rules within Foundry

This library allows you to validate:

  • Banned opcodes
  • Banned storage locations
  • Disallowed *CALLs
  • Disallowed use of EXT* opcodes
  • Disallowed use CREATE opcode

This library is in active development and is subject to breaking changes. If you spot a bug, please take out an issue and we will fix it as soon as we can.

Using the library

To use this library, simply import the Simulator and set it up as follows:

contract Example {
  using Simulator for PackedUserOperation; // or UserOperation

  function verify(PackedUserOperation memory userOp) external view {
    // Verify the ERC-4337 rules
    userOp.simulateUserOp(entryPointAddress);
  }
}

If the userOp breaks any of the rules, the function will revert with a message indicating which rule was broken.

Note that the entryPointAddress needs to be the address of the EntryPointSimulations contract of ERC-4337. For an example see the Simulator test, the Simulator test v0.6 and the relevant test bases.

Using this repo

To install the dependencies, run:

pnpm install

To build the project, run:

forge build

To run the tests, run:

forge test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published