Ethereum smart contract fuzzer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
echidna/CHANGELOG.md

228 lines
9.4 KiB

## TODO
## 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
5 years ago
* Switch to x.y.z versioning scheme
5 years ago
* Refactor campaign-related code (#384)
* Fixed hevm-related memory leak (#423)
5 years ago
* 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)
5 years ago
5 years ago
## 1.3.0.0
* Gaining knowledge of contract-created contract addresses (#295)
* Improved `crytic-compile` error handling when missing (#335)
5 years ago
* Support testing from arbitrary blockchain state via etheno (#333)
5 years ago
* 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)
5 years ago
## 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