29 Commits
Author SHA1 Message Date
Gustavo Grieco f7881f6785 Reject fixed seeds with campaign timeouts (#1637) 2026-10-08 15:26:48 +02:00
Emilio López 0ea96cb952 Sequence generation fixes (#1620) 2026-09-04 22:32:41 +02:00
Gustavo GriecoandClaude Fable 5 f583f214b6 Allow to disable testing of view/pure function, except prefix ones in property mode (#1552)
* allow to disable testing of view/pure function, except prefix ones in property mode

* removed unused import

* test/config: fix remaining CI failures for excludeViewPure

- default.yaml: add excludeViewPure (the config test requires every option be
  listed; it was failing with 'unset options: fromList ["excludeViewPure"]')
- Tests/Integration: pin basic/excludeviewpure.sol to solc >= 0.8.0 (pragma
  ^0.8.0), so it is skipped on the <0.8 solc CI matrix instead of failing to
  compile.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

* test: prove view/pure functions are excluded, using notPresent

Addresses review feedback: excludeviewpure.sol gains a view function with
a planted assert(false), and a new assertion-mode run checks that no
assertion test is created for any view/pure function (via the previously
unused notPresent helper), so the planted assert can never fire. A control
run without excludeViewPure proves the assert IS found otherwise and pins
the test names the notPresent checks look up.

Co-Authored-By: Claude Fable 5 <[email protected]>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-20 21:12:53 +02:00
Emilio López 4092fe5104 Onchain: Sourcify support for code and source maps (#1511)
* Initial Sourcify support

* Refactor onchain support

* Clean up implementation

* Fix conformance with Sourcify

* Clean up implementation

* Reduce amount of fields requested to Sourcify

* Do not request metadata from Sourcify

* Allow disabling Sourcify and Etherscan

This adds a new config option, `disableOnchainSources`, and a new
CLI flag, `--disable-onchain-sources` that allows disabling coverage
reports for onchain contracts.
2026-01-15 22:55:57 +01:00
Gustavo Grieco 7d5b25a37a Show all events from all the transactions when a property or assertion fails (#1475)
* show all events from all the transaction when a property or assertion fails

* fixed tests and removed ECHIDNA_SAVE_TRACES
2025-10-20 11:43:05 -03:00
Emilio López d41a749b7c Revamp HTML coverage report (#1415)
* HTML coverage report improvements

This brings the coverage report improvements developed for Medusa
into Echidna.

* Fix file tree search behavior

Searching will now only open the file tree branches that contain matches.
Also clearing the search box will now properly clear the highlights and
close the file trees.

* Add timestamp to report

* Small report UI tweaks, linting

* Return to original coloring logic

* Fix hlint warnings

* Refactor report generation

* Add coverage report filtering option `coverageExcludes`

This option takes a list of globs and removes those files from
coverage reports. Example: `coverageExcludes: ["lib/**/*", "test/**/*"]`

Fixes: #1391

* Remove unused code
2025-09-23 15:31:36 -03:00
Radu Bahmata 98b0d3f97b Add independent coverage directory configuration option (#1428) 2025-08-28 20:11:43 +02:00
Emilio López 5a32a73a60 tests: fix default config to match default values in code 2025-08-20 21:15:16 -03:00
Gustavo Grieco c267104904 Reworked symbolic execution code (#1394)
* removed old solc versions, use 0.8.x only instead

* fixed harvey test

* started to fix symexec using latest hevm

* added RPC support for symbolic execution + some clean up

* better constraints for block timestamp and number

* improved and simplified symexec code

* removed useless code

* some test fixes

* increase the number of random symbolic transaction if the corpus is empty

* added comments on why we only take one method from the shuffle list when doing symbolic exploration

* allow user to select smt solver

* use slither to filter functions with assert, if any

* started adding full verification mode for stateless campaigns

* refactored tons of code

* improved code for exploration/verification

* finished implementation and get back to hevm master

* fixed issue in addBlockConstraints and upgraded hevm

* disable debug mode when using interactive mode

* corrected array size in symbolic output

* fix decoding of negative numbers

* simplified code for decoding of negative numbers

* removed initialize field from default

* use verification mode for sym-assert test

* added some basic verification tests

* make the harvey test more reliable

* simplified exploration code and added shrinking

* added new test for exploration mode (but disabled so far)

* worker related refactoring code to allow other parts of the codebase to send events

* make sure symExecTarget is used to select methods

* keccak preimage support enabled

* reduced code duplication

* added documentation

* use new types in Types/Config.hs

* removed killed-related files
2025-08-06 09:29:22 -03:00
Emilio López 0ee08865cf Drop estimateGas support
This functionality has stayed experimental, is quite unreliable
and hasn't seen much use.
2025-07-22 20:05:17 -03:00
Emilio López a23d3274de Drop Etheno support
Etheno itself has been archived for some time, and Echidna has supported
on-chain fuzzing for a couple of years now, making it unnecessary.
2025-07-22 18:34:13 -03:00
Emilio López a82bd22320 Show which project is currently being fuzzed
This adds a new configuration option, `projectName`, to allow people
to distinguish different Echidna runs from each other.

Closes: #833
2025-06-09 17:56:00 -03:00
Emilio López 55c0aafda6 lint: fix typos 2025-04-21 09:56:50 +02:00
Emilio López 740e950e76 Allow disabling Slither (#1327)
This allows explicitly disabling Slither with a new `--disable-slither` command-line flag
or `disableSlither` configuration option. A blinking, red warning will be shown in the UI
when Slither is disabled or otherwise failed, to disuade people from fuzzing without it.

Closes #1318
2024-12-03 11:24:54 +01:00
Emilio López 3b5d6d93a5 Raise default number of workers (#1288)
Now the default number of workers will be equal to the number
of cores on the system, with a minimum of 1 and a maximum of 4.
2024-07-16 14:08:19 +02:00
samalws-tob 4b9df9d1f9 minor change for symExecTimeout comments (#1285) 2024-07-05 21:41:40 +02:00
Artur Cygan 8347ad91c3 Improve max code size error message (#1269)
* Improve max code size error message

* Change codeSize default to 0xffffffff
2024-06-06 14:36:39 +02:00
Gustavo Grieco 80acdf5d74 Allow to use specific filter for direct symexec (#1251)
* Allow to use specific filter for direct symexec

* Update default.yaml
2024-05-28 19:28:48 +02:00
Emilio López 7ff9173b9f Support configuring Etherscan API key via config file (#1227)
Partially fixes #1226
2024-05-06 11:06:48 +02:00
5d55003b73 Add symbolic execution (#1216)
* Add symbolic execution

Co-authored-by: Ben Siraphob <[email protected]>
Co-authored-by: Sam Alws <[email protected]>

* Add support for concolic execution

---------

Co-authored-by: Artur Cygan <[email protected]>
Co-authored-by: Ben Siraphob <[email protected]>
2024-05-03 15:21:26 +02:00
Gustavo GriecoandArtur Cygan 988bda7c70 Deliver status information using server-sent events (#1131)
* POC of delivering status information using server-sent events

* deliver only events instead of status lines

* Stream JSON events

* Hide event server behind config

---------

Co-authored-by: Artur Cygan <[email protected]>
2024-01-12 14:14:19 +01:00
Artur Cygan 87449e9896 Multicore (#963)
* Multicore

* Try different approach for stopping workers

* Fix windows warning

* Cleanup

* Distribute corpus replay across workers

* Change jobs to workers in config and CLI

* Fix corpus chunking

* Use better chunksOf

* Fix JSON output

* Fix rebasing mistake

* Fix workers not stopping while fetching RPC

* Fix optimization tests shrinking

* Dont set Solved for optimization tests
2023-05-05 19:06:44 +02:00
Artur CyganandSam Alws e9bcf50cda Add support for lcov, as well as an option in config for choosing coverage formats (#1029)
Co-authored-by: Sam Alws <[email protected]>
2023-04-17 21:02:50 +02:00
Artur Cygan 2fea6ba8af RPC improvements (chain id, config options) (#1017)
* RPC improvements (chain id, config options)

* Fetch external contract sources for Ethereum Mainnet only
2023-04-07 14:52:01 +02:00
Artur Cygan ff312a67cc Rename multi-abi to allContracts (#934) 2023-02-22 08:57:43 +01:00
Gustavo GriecoandArtur Cygan 89cbbb4f40 Allow to use the FFI cheatcode from HEVM in Echidna (#750)
* allow ffi to be used

* added allowFFI in default.yaml

* implement a system call to perform a ffi

* allow ffi in the etheno json, if the proper flag is used

* Remove unsafePerformIO and cleanup VM creation

* FFI test

Co-authored-by: Artur Cygan <[email protected]>
2023-01-26 09:15:17 +01:00
Gustavo Grieco 59c85d45f3 Support for deployment of certain contracts in specific addresses (#758)
* initial support for deployment of certain contracts in specific addresses

* fix

* hlint fixes

* allow to deploy specific bytecode instead of contracts

* fix

* use b16 decoding for bytecodes

* fix

* fix

* added two tests to cover this new feature
2022-05-19 15:03:14 +02:00
Gustavo Grieco 426ed97b7b Update default.yaml (#742) 2022-03-22 19:49:31 +01:00
Gustavo Grieco 31034fbf8d Echidna 2.0 (#716) 2022-02-11 17:47:44 +01:00