Link to this headingFuzzing

Link to this headingFuzzing with Medusa

Setup:

brew install medusa cd project medusa init

Fuzzing:

>>> medusa fuzz --target-contracts "VaultV1_3" --test-limit 1000000 ⇾ Reading the configuration file at: /Users/user1/Projects/vault/medusa.json ⇾ Compiling targets with crytic-compile ⇾ Running command: /opt/homebrew/bin/crytic-compile . --export-format solc ⇾ Finished compiling targets in 2s ⇾ Using cached Slither results found at slither_results.json ⇾ Initializing corpus ⇾ Setting up test chain ⇾ Finished setting up test chain ⇾ Fuzzing with 10 workers ⇾ [NOT STARTED] Assertion Test: VaultV1_3.upgradeToAndCall(address,bytes) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.renounceRole(bytes32,address) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.grantRole(bytes32,address) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.revokeRole(bytes32,address) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.swap(bytes,uint256) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.withdrawERC20(address,uint256) ⇾ fuzz: elapsed: 0s, calls: 0 (0/sec), seq/s: 0, branches hit: 16, corpus: 0, failures: 0/0, gas/s: 0 ⇾ [NOT STARTED] Assertion Test: VaultV1_3.withdrawNative(uint256) ⇾ [NOT STARTED] Assertion Test: VaultV1_3.initialize(address,address,address) ⇾ fuzz: elapsed: 3s, calls: 255572 (85190/sec), seq/s: 850, branches hit: 207, corpus: 9, failures: 0/2551, gas/s: 2132347638 ⇾ fuzz: elapsed: 6s, calls: 512374 (85566/sec), seq/s: 855, branches hit: 207, corpus: 9, failures: 0/5118, gas/s: 2140952486 ⇾ fuzz: elapsed: 9s, calls: 767925 (85182/sec), seq/s: 852, branches hit: 207, corpus: 9, failures: 0/7676, gas/s: 2131435341 ⇾ fuzz: elapsed: 12s, calls: 1021893 (84655/sec), seq/s: 845, branches hit: 207, corpus: 9, failures: 0/10214, gas/s: 2118621205 ⇾ Transaction test limit reached, halting now... ⇾ Fuzzer stopped, test results follow below ... ⇾ [PASSED] Assertion Test: VaultV1_3.grantRole(bytes32,address) ⇾ [PASSED] Assertion Test: VaultV1_3.initialize(address,address,address) ⇾ [PASSED] Assertion Test: VaultV1_3.renounceRole(bytes32,address) ⇾ [PASSED] Assertion Test: VaultV1_3.revokeRole(bytes32,address) ⇾ [PASSED] Assertion Test: VaultV1_3.swap(bytes,uint256) ⇾ [PASSED] Assertion Test: VaultV1_3.upgradeToAndCall(address,bytes) ⇾ [PASSED] Assertion Test: VaultV1_3.withdrawERC20(address,uint256) ⇾ [PASSED] Assertion Test: VaultV1_3.withdrawNative(uint256) ⇾ Test summary: 8 test(s) passed, 0 test(s) failed ⇾ html report(s) saved to: crytic-export/coverage/coverage_report.html ⇾ lcov report(s) saved to: crytic-export/coverage/lcov.info