crytic / crytic/echidna

Fine-tune shrinking behavior

Open
#1,276 3 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Haskell
Stars
3.2k
Forks
432
Avg merge
1d 20h
Merged PRs (30d)
5

Description

### Describe the desired feature

# Description

In most cases, shrinking a transaction input is not necessary to understand why a property broke.

This is especially true when bounding the input parameters since what Echidna sees as a maximum/minimum value may differ from what the clamping algorithm considers the valid range.

In some cases, such as in external testing, addresses are often mapped to Echidna's default list of actors (`address(0x10000)`, `address(0x20000)`, `address(0x30000)`), so converting from `address(0x1fffffffe)` to `address(0xdeadbeef)` is even more pointless.

# Feature Request

This is a feature request to add additional configuration parameters to fine-tune the shrinking behavior.

Currently, as I understand it, the fuzzer tries to minimize both the number of calls that led to a broken property and each call's inputs.

By splitting the `shrinkLimit` value into `shrinkLimitCalls` and `shrinkLimitValues`, for example, we would allow developers to select which behavior they want from the fuzzer.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.