• 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
Name
Last commit
Last update
..
.testdata Loading commit data...
deploy-config Loading commit data...
deploy-config-periphery Loading commit data...
deployments Loading commit data...
invariant-docs Loading commit data...
lib Loading commit data...
scripts Loading commit data...
snapshots Loading commit data...
src Loading commit data...
test Loading commit data...
.gas-snapshot Loading commit data...
.gitignore Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
STYLE_GUIDE.md Loading commit data...
VERSIONING.md Loading commit data...
foundry.toml Loading commit data...
justfile Loading commit data...
safe.json Loading commit data...
semver-lock.json Loading commit data...
slither.config.json Loading commit data...
slither.db.json Loading commit data...