Skip to main content

Meta-tool to test a contract with various configs, using Echidna processes ("parade" is the proper name for a group of echidna)

Project description

This is an experimental script that uses configuration variance and a common corpus to try to throughly test a smart contract (or multiple contracts) with the Echidna smart-contract fuzzer (https://github.com/crytic/echidna).

It runs Echidna instances in parallel, and uses two basic ideas derived from my research:

In particular, after an initial run to generate low-hanging-fruit easy pickings in terms of coverage, future runs will consist of a number of parallel runs (determined by an –ncores argument or however many cores Python thinks you have) where each run randomly omits some functions (if you have a list already, it’s respected and added to), and the sequence length and search strategy are also varied.

Usage is almost like Echidna; in fact if you just use the same arguments as to Echidna, it’ll probably work. E.g.,

` > echidna-parade contract.sol --config config.yaml --contract TEST `

will likely do something reasonable. By default “generations” of testing are 5 minutes in length, and the testing runs for an hour.


Try out the example in the ‘examples’ directory. Compare:

` > echidna-test justlen.sol --config config.yaml --contract TEST `

vs. what you can get with some knowledge of which functions not to omit from tests, and the same 120 seconds of testing with fast swarm generations:

` echidna-parade justlen.sol --config config.yaml --contract TEST --timeout 120 --gen_time 30 --ncores 8 --always "TEST.turn_on_length_checking()" "TEST.push_1()" "TEST.plus5()" "TEST.test_long_64()" "TEST.test_long_128()" `

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

echidna_parade-0.1.2-py3-none-any.whl (8.7 kB view hashes)

Uploaded Python 3

echidna_parade-0.1.2-py2-none-any.whl (8.7 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page