1. 18 Sep, 2024 22 commits
    • yukionfire's avatar
    • smartcontracts's avatar
      maint: add interfaces for L2 bridge/messaging contracts (#11859) · 7db0f6af
      smartcontracts authored
      First PR for adding interfaces for L2 contracts. Adds interfaces
      for all of the bridging and message passing contracts.
      7db0f6af
    • smartcontracts's avatar
      fix: multiple fuzz flakes (#11981) · ae37e024
      smartcontracts authored
      Fixes a couple of fuzz flakes that were found when fuzzing
      heavily.
      ae37e024
    • Hamdi Allam's avatar
      update op-e2e setup (#11857) · 68b52398
      Hamdi Allam authored
      68b52398
    • rickck11's avatar
      correct the comment (#11971) · 924896be
      rickck11 authored
      924896be
    • smartcontracts's avatar
      ci: misc cleanups and simplifications (#11968) · d9fe07c9
      smartcontracts authored
      Cleanups in a few places, removing unused jobs, etc.
      d9fe07c9
    • smartcontracts's avatar
      ci: simplify contracts bedrock tests job (#11966) · 7a10c318
      smartcontracts authored
      Simplifies the contracts-bedrock-tests job so that it takes more
      parameters but makes the test command unified. Also replaces the
      complex script for checking for modified fuzz tests and simply
      heavily fuzzes all tests within any test files that have changed.
      7a10c318
    • protolambda's avatar
      c40dfed2
    • smartcontracts's avatar
      ci: fix config error in cannon tests (#11969) · b6e9a614
      smartcontracts authored
      Fixes a configuration error in the scheduled-cannon-full-tests
      job.
      b6e9a614
    • smartcontracts's avatar
      ci: clean up golang job definitions (#11967) · ab240150
      smartcontracts authored
      Cleans up a number of golang job definitions. One PR for now
      just so I can see this all work.
      ab240150
    • smartcontracts's avatar
      ci: simplify contract build job inputs (#11965) · 86a74bcc
      smartcontracts authored
      Simplifies the inputs to contracts-bedrock-build so that it
      takes a single skip_pattern command instead of allowing the user
      to specify any build command.
      86a74bcc
    • smartcontracts's avatar
      ci: job to check contracts build warnings (#11962) · c186b488
      smartcontracts authored
      Adds a new compiler job to check for contract build warnings.
      Other existing build jobs don't compile the entire set of contracts
      and we do want to be able to check for warnings across the board.
      c186b488
    • teddy's avatar
      test: invariant tests for OptimismSuperchainERC20 (#11776) · 9de48fc2
      teddy authored
      * chore: configure medusa with basic supERC20 self-bridging (#19)
      
      - used --foundry-compile-all to ensure the test contract under
        `test/properties` is compiled (otherwise it is not compiled and medusa
        crashes when it can't find it's compiled representation)
      - set src,test,script to test/properties/medusa to not waste time
        compiling contracts that are not required for the medusa campaign
      - used an atomic bridge, which doesnt allow for testing of several of
        the proposed invariants
      
      fix: delete dead code
      test: give the fuzzer a head start
      docs: fix properties order
      test: document & implement assertions 22, 23  and 24
      fix: fixes from self-review
      test: guide the fuzzer a little bit less
        previously: initial mint, bound on transfer amount: 146625 calls in 200s
        now: no initial mint, no bound on transfer amount: 176835 calls in 200s
        it doesn't seem to slow the fuzzer down
      fix: fixes after lovely feedback by disco
      docs: merge both documents and categorized properties by their milestone
      fix: fixes from parti's review
      fix: feedback from disco
      fix: feedback from doc
      refactor: separate state transitions from pure properties
      docs: update tested properties
      refactor: move all assertions into properties contract
      fix: move function without assertions back into handler
      test: only use assertion mode
      fix: improve justfile recipie for medusa
      
      * feat: halmos symbolic tests (#21)
      
      * feat: introduce OptimismSuperchainERC20
      
      * fix: contract fixes
      
      * feat: add snapshots and semver
      
      * test: add supports interface tests
      
      * test: add invariant test
      
      * feat: add parameters to the RelayERC20 event
      
      * fix: typo
      
      * fix: from param description
      
      * fix: event signature and interface pragma
      
      * feat: add initializer
      
      * feat: use unstructured storage and OZ v5
      
      * feat: update superchain erc20 interfaces
      
      * fix: adapt storage to ERC7201
      
      * test: add initializable OZ v5 test
      
      * fix: invariant docs
      
      * fix: ERC165 implementation
      
      * test: improve superc20 invariant (#11)
      
      * fix: gas snapshot
      
      * chore: configure medusa with basic supERC20 self-bridging
      
      - used --foundry-compile-all to ensure the test contract under
        `test/properties` is compiled (otherwise it is not compiled and medusa
        crashes when it can't find it's compiled representation)
      - set src,test,script to test/properties/medusa to not waste time
        compiling contracts that are not required for the medusa campaign
      - used an atomic bridge, which doesnt allow for testing of several of
        the proposed invariants
      
      * fix: delete dead code
      
      * test: give the fuzzer a head start
      
      * feat: create suite for sybolic tests with halmos
      
      * test: setup and 3 properties with symbolic tests
      
      * chore: remove todo comment
      
      * docs: fix properties order
      
      * test: document & implement assertions 22, 23  and 24
      
      * fix: fixes from self-review
      
      * test: guide the fuzzer a little bit less
      
      previously: initial mint, bound on transfer amount: 146625 calls in 200s
      now: no initial mint, no bound on transfer amount: 176835 calls in 200s
      
      it doesn't seem to slow the fuzzer down
      
      * feat: add property for burn
      
      * refactor: remove symbolic address on mint property
      
      * refactor: order the tests based on the property id
      
      * feat: checkpoint
      
      * chore: set xdomain sender on failing test
      
      * chore: enhance mocks
      
      * Revert "Merge branch 'chore/setup-medusa' into feat/halmos-symbolic-tests"
      
      This reverts commit 945d6b6ad265ea5e3790d7ac9c5bf4d6586eb533, reversing
      changes made to 5dcb3a89252e9e8fa9b54ba9012e714f7cc96395.
      
      * refactor: remove symbolic addresses to make all of the test work
      
      * chore: remove console logs
      
      * feat: add properties file
      
      * chore: polish
      
      * refactor: enhance test on property 7 using direct try catch (now works)
      
      * fix: review comments
      
      * refactor: add symbolic addresses on test functions
      
      * feat: create halmos toml
      
      * chore: polish test contract and mock
      
      * chore: update property
      
      * refactor: move symbolic folder into properties one
      
      * feat: create advanced tests helper contract
      
      * refactor: enhance tests using symbolic addresses instead of concrete ones
      
      * chore: remove 0 property natspec
      
      * feat: add halmos profile and just script
      
      * chore: rename symbolic folder to halmos
      
      * feat: add halmos commands to justfile
      
      * chore: reorder assertions on one test
      
      * refactor: complete test property seven
      
      * chore: mark properties as completed
      
      * chore: add halmos-cheatcodes dependency
      
      * chore: rename advancedtest->halmosbase
      
      * chore: minimize mocked messenger
      
      * chore: delete empty halmos file
      
      * chore: revert changes to medusa.json
      
      * docs: update changes to PROPERTIES.md from base branch
      
      * test: sendERC20 destination fix
      
      * chore: natspec fixes
      
      ---------
      Co-authored-by: default avataragusduha <agusnduha@gmail.com>
      Co-authored-by: default avatar0xng <ng@defi.sucks>
      Co-authored-by: default avatarteddy <teddy@defi.sucks>
      
      * test: remaining protocol properties (#26)
      
      * test: cross-user fuzzed bridges + actor setup
      
      * test: fuzz properties 8 and 9
      
      * test: properties 7 and 25
      
      * fix: implement doc's feedback
      
      * test: superc20 tob properties (#27)
      
      * chore: add crytic/properties dependency
      
      * test: extend protocol properties so it also covers ToB erc20 properties
      
      * chore: small linter fixes
      
      * docs: update property list
      
      * test: handlers for remaining superc20 state transitions
      
      * fix: disable ToB properties we are not using and guide the fuzzer a bit more
      
      * fix: disable another ToB property not implemented by solady
      
      * chore: remove zero-initializations
      
      * fix: feedback from disco
      
      * chore: separate fuzz campaign tests in guided vs unguided
      
      * test: dont revert on successful unguided relay
      
      * test: add fuzzed calls to burn and mint
      
      * docs: document the separation of fuzz test functions
      
      * chore: move the properties file to its own directory
      
      * chore: consistently use fuzz_ and property_ + camelcase
      
      * chore: fix typo
      
      * chore: camelcase for handlers as well
      
      * fix: revert change that broke halmos campaign compile :D
      
      * test: fuzz non atomic bridging (#31)
      
      * test: changed mocked messenger ABI for message sending but kept assertions the same
      
      * docs: add new properties 26&27
      
      * test: queue cross-chain messages and test related properties
      
      * test: relay random messages from queue and check associated invariants
      
      * chore: rename bridge->senderc20 method for consistency with relayerc20
      
      * test: not-yet-deployed supertokens can get funds sent to them
      
      * chore: medusa runs forever by default
      
      doable since it also handles SIGINTs gracefully
      
      * chore: document the reason behind relay zero and send zero inconsistencies
      
      * fix: feedback from doc
      
      * fix: walk around possible medusa issue
      
      I'm getting an 'unknown opcode 0x4e' in ProtocolAtomic constructor when
      calling the MockL2ToL2CrossDomainMessenger for the first time
      
      * test: unguided handler for sendERC20
      
      * fix: feedback from disco
      
      * chore: remove halmos testsuite
      
      * chore: foundry migration (#40)
      
      * chore: track assertion failures
      
      this is so foundry's invariant contract can check that an assertion
      returned false in the handler, while still allowing `fail_on_revert =
      false` so we can still take full advantage of medusa's fuzzer & coverage
      reports
      
      * fix: explicitly skip duplicate supertoken deployments
      
      * chore: remove duplicated PROPERTIES.md file
      
      * chore: expose data to foundry's external invariant checker
      
      * test: run medusa fuzzing campaign from within foundry
      
      * fix: eagerly check for duplicate deployments
      
      * fix: feedback from doc
      
      * chore: shoehorn medusa campaign into foundry dir structure
      
      * chore: remove PROPERTIES.md file
      
      * chore: delete medusa config
      
      * docs: limited support for subdirectories in test/invariant
      
      * chore: rename contracts to be more sneaky about medusa
      
      * docs: rewrite invariant docs in a way compliant with autogen scripts
      
      * chore: fixes from rebase
      
      * fix: cleanup superc20 invariants (#46)
      
      * chore: revert modifications from medusa campaign
      
      * docs: extra docs on why ForTest contract is required
      
      * doc: add list of all supertoken properties
      
      * chore: run forge fmt
      
      * ci: allow for testfiles to be deleted
      
      * fix: run doc autogen script after rebase
      
      ---------
      Co-authored-by: default avatarDisco <131301107+0xDiscotech@users.noreply.github.com>
      Co-authored-by: default avataragusduha <agusnduha@gmail.com>
      Co-authored-by: default avatar0xng <ng@defi.sucks>
      9de48fc2
    • smartcontracts's avatar
      ci: bump semgrep-scan to xlarge (#11948) · 518b050b
      smartcontracts authored
      We're still having resource issues with a large image. Going to
      bump this to xlarge to see if that will fix it.
      518b050b
    • smartcontracts's avatar
      fix: move IERC20Solady into vendor folder (#11945) · e15f6843
      smartcontracts authored
      An additional "dependency" folder was added in a recent PR, this
      is the same purpose as the "vendor" folder so the interface added
      in that PR can simply be moved to the "vendor" folder instead.
      e15f6843
    • smartcontracts's avatar
      ci: run slow Cannon test once per day (#11947) · a7fac3b7
      smartcontracts authored
      Updates CI to run the (very) slow Cannon go-lint-and-test suite
      once per day instead of running it on merge since it adds at least
      5 minutes to CI.
      a7fac3b7
    • Maurelian's avatar
      feat: Add ASR proxy to OPStackManager (#11952) · 9179225d
      Maurelian authored
      * feat: Add ASR proxy to OPStackManager
      
      * feat: Add AnchorStateRegistry blueprint
      9179225d
    • clabby's avatar
      fix: Remove `--l2-chain-id` default (#11951) · 668c3fba
      clabby authored
      668c3fba
    • Maurelian's avatar
      8312d611
    • Matt Solomon's avatar
      OPSM: DeployOPChain assertions (#11943) · 290dde27
      Matt Solomon authored
      * chore: add BaseDeployIO for the deploy input and output contracts
      
      * test: add assertions to DeployOPChain
      
      * chore: semver lock
      
      * pr feedback
      290dde27
    • Matthew Slipper's avatar
      Add L2 genesis generation support to `op-deployer` (#11938) · 110a31db
      Matthew Slipper authored
      Adds support for generating L2 genesis files to `op-deployer. The L2 initialization config is generated by merging in overrides as specified in the intent into a default config with sane values. The outputted genesis file is stored in the stage as a GZIP-compressed, base64-encoded string.
      110a31db
    • dependabot[bot]'s avatar
      dependabot(gomod): bump github.com/prometheus/client_golang (#11946) · f78ed7ba
      dependabot[bot] authored
      Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.20.3 to 1.20.4.
      - [Release notes](https://github.com/prometheus/client_golang/releases)
      - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
      - [Commits](https://github.com/prometheus/client_golang/compare/v1.20.3...v1.20.4)
      
      ---
      updated-dependencies:
      - dependency-name: github.com/prometheus/client_golang
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      Signed-off-by: default avatardependabot[bot] <support@github.com>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      f78ed7ba
  2. 17 Sep, 2024 18 commits