|
|
|
## Unreleased
|
|
|
|
|
|
|
|
* Added support for lcov coverage report
|
|
|
|
* Added a "coverageFormats" config option to choose which coverage reports to make
|
|
|
|
|
|
|
|
## 2.1.1
|
|
|
|
|
|
|
|
* Added missing space in ProcessorNotFound message (#977)
|
|
|
|
* Added measurement and log of external actions (#988)
|
|
|
|
* Avoid using cheat codes address to form fuzzing call sequences (#993)
|
|
|
|
* Implemented invariant testing from foundry (#989)
|
|
|
|
* hevm upgraded to 0.50.4 (#986)
|
|
|
|
* Cleaned and improved codebase (#990, #994, #995, #997)
|
|
|
|
* Make frequently modified fields strict (#1000)
|
|
|
|
* Force corpus evaluation (#1002)
|
|
|
|
* Text/headless UI was improved (#991, #1006, #1007, #1009)
|
|
|
|
|
|
|
|
## 2.1.0
|
|
|
|
|
|
|
|
* External contracts are now automatically fetched from Ethereum nodes during fuzzing (#927, #971)
|
|
|
|
* Added support for the FFI cheatcode (#750)
|
|
|
|
* Renamed multi-abi mode to allContracts, multi-abi still works but will be removed in future (#934)
|
|
|
|
* Fixed method filtering in multi-abi mode (#950, #954)
|
|
|
|
* Fixed config parsing for too large values (#935)
|
|
|
|
* Renamed echidna-test binary to echidna (#826)
|
|
|
|
* Added scrollbar to the UI (#915)
|
|
|
|
* Removed generation of negative seeds (#933)
|
|
|
|
* Added crash display to the UI (#944)
|
|
|
|
* Added human-friendly errors for panic codes (#965)
|
|
|
|
* Refactored code (#903, #906, #908, #924, #925, #928, #946, #956, #966, #968)
|
|
|
|
* Added limited Windows build (#943)
|
|
|
|
* Updated dependencies (#942, #948)
|
|
|
|
* Build and CI improvements (#912, #914, #917, #952, #967)
|
|
|
|
|
|
|
|
## 2.0.5
|
|
|
|
|
|
|
|
* Optimized constant generation (#898, #900)
|
|
|
|
* Fixed how address are displayed in events (#891)
|
|
|
|
* Update hevm to 0.50 (#884, #894, #896, #897, #901)
|
|
|
|
* Added saving and loading of reproducers for every test (#858)
|
|
|
|
* Added events and revert reasons for any failure in the constructor (#871)
|
|
|
|
* Fixed uninitialized sender addresses from etheno transactions (#823)
|
|
|
|
* Fixed crash when minimizing inputs during optimization tests (#837)
|
|
|
|
* Refactored code and removed useless dependencies (#856, #857, #874, #878, #895, #903)
|
|
|
|
|
|
|
|
## 2.0.4
|
|
|
|
|
|
|
|
* Added colored html for coverage output code (#816)
|
|
|
|
* Fixed crash when parsing solc versions (#835)
|
|
|
|
* Fixed long transactions and event lines in UI (#832)
|
|
|
|
* Added Homebrew installation instructions (#848)
|
|
|
|
* Moved all nix stuff to flake and use nix-bundle-exe for macOS release (#851)
|
|
|
|
* Updated codebase to GHC 9.0.2 (#846)
|
|
|
|
* Refactored code and removed useless dependencies (#854, #853, #829, #827, #828)
|
|
|
|
|
|
|
|
## 2.0.3
|
|
|
|
|
|
|
|
* Clean up Docker containers (#706)
|
|
|
|
* Avoid resetting accounts if there is a deployed contract (#795)
|
|
|
|
* Fixed decoding non-utf8 strings from slither printer (#799)
|
|
|
|
* Fixed generation and mutation of extreme signed integers (#791)
|
|
|
|
* Removed fallback from signature map when it is not defined (#772)
|
|
|
|
|
|
|
|
## 2.0.2
|
|
|
|
|
|
|
|
* Improved shrinking of dynamic arrays (#775)
|
|
|
|
* Added support for deployment of certain contracts or bytecode in specific addresses (#758)
|
|
|
|
* Fixed git attribute to support building docker containers in Windows (#773)
|
|
|
|
* Fixed crash when the EVM execution triggers more than one query (#760)
|
|
|
|
* Added support for detection and handling of ancient solc versions (#675)
|
|
|
|
* Added explicit static flag and removed pthread one from ghc options (#768)
|
|
|
|
|
|
|
|
## 2.0.1
|
|
|
|
|
|
|
|
* Optimized stateless mutators (#747)
|
|
|
|
* Expanded and improved command-line help (#741)
|
|
|
|
* Added dapptest support: compatibility mode to run foundry and dapptool fuzz tests (#733, #745)
|
|
|
|
* Generate more values closer to the maximum (#736)
|
|
|
|
* Fix TERMINFO path for Nix release builds (#731)
|
|
|
|
* Mitigate large memory consumption when replaying corpus (#725)
|
|
|
|
* Fix --shrink-limit to change shrink limit instead of test limit (#728)
|
|
|
|
* Correctly show lines with multiple types of coverage
|
|
|
|
* Restored nix support (#717, #743)
|
|
|
|
|
|
|
|
## 2.0.0
|
|
|
|
|
|
|
|
* Refactored test internal data structures and code
|
|
|
|
* Refactored unit test code and moved the related files to the `tests` directory
|
|
|
|
* Added support to show events and custom errors when a property/assertion fails
|
|
|
|
* Added support for catching assertion failure in Solidity 0.8.x
|
|
|
|
* Added two new testing mode: optimization and overflow (only in Solidity 0.8.x)
|
|
|
|
* Added optional checks for contract destruction
|
|
|
|
* Added `testMode` option and removed related flags
|
|
|
|
* Simplified contract deployer and property sender addresses to be easier to read
|
|
|
|
* Updated hevm to 0.49.0
|
|
|
|
|
|
|
|
## 1.7.3
|
|
|
|
|
|
|
|
* Removed old compilation artifacts before starting a new fuzzing campaign (#697)
|
|
|
|
* Fixed incorrect function filtering when using assertion mode (#695)
|
|
|
|
* Improved handling of negative constants (#683)
|
|
|
|
* Updated hevm to 0.48.0 (#691)
|
|
|
|
* Removed nix workaround for Slither (#680)
|
|
|
|
* Fixed source printing when some lines are not covered (#678)
|
|
|
|
|
|
|
|
## 1.7.2
|
|
|
|
|
|
|
|
* Fixed check-asserts and multi-abi cli switches (#665)
|
|
|
|
* Updated to hevm 0.4.6 (#660)
|
|
|
|
* Support for loading multiple files with compiled contracts from hardhat/brownie (#659)
|
|
|
|
|
|
|
|
## 1.7.1
|
|
|
|
|
|
|
|
* Tweaked mutators and improved test stability (#628)
|
|
|
|
* Documented known issues and limitations (#655)
|
|
|
|
* Automatically initialize addresses when used (#657)
|
|
|
|
* Improved coverage to count number of EVM frames (#624)
|
|
|
|
* Avoid mutations to generate inputs outside their expected ABI range (#650)
|
|
|
|
* Various small to run Vyper contracts (#645)
|
|
|
|
* Improved integer generation to use small values (#644)
|
|
|
|
* Added two CLI options: --corpus-dir and --check-asserts (#640)
|
|
|
|
* Refactored shrinkSeq to improve readability (#639)
|
|
|
|
* Fixed UI to fit long function calls (#635)
|
|
|
|
* Refactor coverage types and added corpus size in UI (#627)
|
|
|
|
* Fixed link to macOS binary in binaries.soliditylang.org (#629)
|
|
|
|
* Fixed default.nix to use 1.7.0 as version (#623)
|
|
|
|
* Refactored Test type (#622)
|
|
|
|
|
|
|
|
## 1.7.0
|
|
|
|
|
|
|
|
* Refactored and improved etheno support to be more useful (#615)
|
|
|
|
* Coverage filenames are not overwritten (#620)
|
|
|
|
* Refactored the mutator code (#618)
|
|
|
|
* More corpus and array mutations implemented (#372)
|
|
|
|
* Source coverage is printed after fuzzing campaign (#516)
|
|
|
|
* Nix improvements and fixes (#603, #604, #608, #612)
|
|
|
|
* Simplified slither information parsing (#543)
|
|
|
|
* Enabled use of coverage by default (#605)
|
|
|
|
* Run echidna tests in parallel (#571)
|
|
|
|
|
|
|
|
## 1.6.1
|
|
|
|
|
|
|
|
* Use a sensible default value for `block.gaslimit` (#596)
|
|
|
|
* Use metadata to detect deployed contracts (#593)
|
|
|
|
* Semver integration for improving testing with different solc versions (#594)
|
|
|
|
* Added some performance improvement in property execution (#576)
|
|
|
|
* Fixed wait bug when shrinking (#584)
|
|
|
|
* Added funwithnumber example from Sabre (#565)
|
|
|
|
* Improved function filtering to be more precise (#570)
|
|
|
|
* Small fixes in the macOS CI (#597), the README (#590) and Nix (#581)
|
|
|
|
|
|
|
|
## 1.6.0
|
|
|
|
* Slither is now a required dependency.
|
|
|
|
* Made sure that <ESC> gets mapped correctly, fixing #474 (#503)
|
|
|
|
* Fix library timestamp/block delay issue (#510)
|
|
|
|
* Make stack limit exceeded a revert (#517)
|
|
|
|
* Add some default transaction constants (#532)
|
|
|
|
* Make large constants work better with dictionaries (#523)
|
|
|
|
* Fix "flanky" corpus tests (#537)
|
|
|
|
* HEVM updated to [150dddc67b6cbad75fd4ae5a689452892f55ea26] (0.42) (#511)
|
|
|
|
* this may introduce a slight performance hit as everything is partially symbolic
|
|
|
|
* Improved shrinking and pretty printing (#518)
|
|
|
|
* Integrate slither results (#451)
|
|
|
|
* Disagreements about `MonadState` and `MonadReader` (#545, #513)
|
|
|
|
* Simplified a bunch of code (#548, #549, #513)
|
|
|
|
* Fix negative address bug (#552)
|
|
|
|
* Various Github Actions improvements (#527, #554)
|
|
|
|
* Allow to bypass EIP-170 and set up a custom max code size (#544)
|
|
|
|
|
|
|
|
## 1.5.1
|
|
|
|
|
|
|
|
* Fix timestamp and block delays having the initial timestamp/block added to them (#460, #469)
|
|
|
|
* Fix GitHub actions due to new macOS image (#468)
|
|
|
|
* Relax `package.yaml` constraints (#466)
|
|
|
|
* Fix `extcodesize` by creating contracts correctly (#453, #454, #465)
|
|
|
|
* Refactor unit tests (#457)
|
|
|
|
* Add seed to UI (#456)
|
|
|
|
* Set an initial timestamp and block number (#455)
|
|
|
|
* Better README (#450)
|
|
|
|
* Code simplifications (#448)
|
|
|
|
* Detect contract deployment failures (#447)
|
|
|
|
* DockerHub containers in addition to GitHub (#445)
|
|
|
|
* Brought back print reporting after exiting the UI (#441)
|
|
|
|
* Refactor `Tx` (#437)
|
|
|
|
|
|
|
|
## 1.5.0
|
|
|
|
|
|
|
|
* Switch to x.y.z versioning scheme
|
|
|
|
* Refactor campaign-related code (#384)
|
|
|
|
* Fixed hevm-related memory leak (#423)
|
|
|
|
* Fixed array mutation memory leak (#442)
|
|
|
|
* Benchmark mode to run without tests (#420, #409)
|
|
|
|
* Migrated to GitHub actions (#414, #402)
|
|
|
|
* Corpus mutation handling fixes (#395, #403)
|
|
|
|
* Improved JSON output and reworked UI handling to better handle interactive and non-interactive mode (#405)
|
|
|
|
* Use safe mutation parameters to favor purely random generation (#393)
|
|
|
|
* Show address in hex using "0x" (#386)
|
|
|
|
* Enable addresses shrinking (#385)
|
|
|
|
* Fixed coverage counting when a contract is deployed multiple times (#410)
|
|
|
|
* Prioritization to mutate each list of transactions from the corpus (#376, #395)
|
|
|
|
* Improved array generation using generic mutations (#357)
|
|
|
|
* Multiple coverage tracking according to the result of a transaction (#369)
|
|
|
|
* Allow to control corpus mutation constans using a configuration file (#373)
|
|
|
|
|
|
|
|
## 1.4.0.1
|
|
|
|
* HEVM updated to [af84e2ee0a0654fdaa91186384233cf1731ee7ce]
|
|
|
|
|
|
|
|
## 1.4.0.0
|
|
|
|
|
|
|
|
* Filtering functions either blacklisting or whitelisting functions to call during a fuzzing campaign (#341)
|
|
|
|
* Support to collect, save and load a corpus of transactions in JSON (#352, #353)
|
|
|
|
* Basic mutations based on collected corpus (#370)
|
|
|
|
* Use of `hlint` as Github action to verify new PR (#366)
|
|
|
|
|
|
|
|
## 1.3.0.0
|
|
|
|
|
|
|
|
* Gaining knowledge of contract-created contract addresses (#295)
|
|
|
|
* Improved `crytic-compile` error handling when missing (#335)
|
|
|
|
* Support testing from arbitrary blockchain state via etheno (#333)
|
|
|
|
* Some shrinking improvements (#336)
|
|
|
|
* UI improvements (#339)
|
|
|
|
* UI updates are now threaded separately from fuzzing campaign (#345)
|
|
|
|
* `Tx` rework to unify `Echidna.RPC` and `Transaction` (#346)
|
|
|
|
* Adjustment of testsuite parameters (#347)
|
|
|
|
* Multi-ABI support by fuzzing all known ABIs (#344)
|
|
|
|
* Fix indefinite `MVar` blocking (#350)
|
|
|
|
* AddressArrayExample (#348)
|
|
|
|
* `Tx` JSON conversions (#352)
|
|
|
|
* Smaller docker container, multi-stage build (#349)
|
|
|
|
* Gas worst case estimation (#355)
|
|
|
|
|
|
|
|
## 1.2.0.0
|
|
|
|
|
|
|
|
* Warn on unused config keys (#301)
|
|
|
|
* `default.yaml` kept up to date via CI checks (#301)
|
|
|
|
* Improved shrinking (#310)
|
|
|
|
* Solidity ABIv2 support (#284, #303, #317)
|
|
|
|
* Early termination on property falure (#323)
|
|
|
|
* Timeouts (#320)
|
|
|
|
* HEVM updated to [2cc059b49cae613025b925f0273b906e25484b68]
|
|
|
|
* Dictionary control (#312, #321)
|
|
|
|
* Gas price fuzzing (#307)
|
|
|
|
* Coverage bug fixed (#300)
|
|
|
|
* Contract creation bug fixed (#293)
|
|
|
|
* New startup message (#290)
|
|
|
|
* Add `--version` flag (#285)
|
|
|
|
* Support time/block delays (#282)
|
|
|
|
* Support `crytic` arguments (#280)
|
|
|
|
* Detect assertion failure (#276)
|
|
|
|
* Use return values as constants (#262)
|
|
|
|
* Reproducible testing with seeds (#254)
|
|
|
|
|
|
|
|
## 1.0.0.0
|
|
|
|
|
|
|
|
* Initial stable release
|
|
|
|
|
|
|
|
[2cc059b49cae613025b925f0273b906e25484b68]: https://github.com/dapphub/dapptools/tree/2cc059b49cae613025b925f0273b906e25484b68
|
|
|
|
[af84e2ee0a0654fdaa91186384233cf1731ee7ce]: https://github.com/dapphub/dapptools/tree/af84e2ee0a0654fdaa91186384233cf1731ee7ce
|
|
|
|
[150dddc67b6cbad75fd4ae5a689452892f55ea26]: https://github.com/dapphub/dapptools/tree/150dddc67b6cbad75fd4ae5a689452892f55ea26
|