Skip to content

Conversation

@elopez
Copy link
Member

@elopez elopez commented May 3, 2024

The initial set of configuration parameters was taken from https://github.com/crytic/echidna/wiki/Config

# Configuration options

<!-- To left align the tables -->
<style>table {margin: 0}</style>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is visible in the md, for some reason 🤔

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll see if there's any neater way in mdbook to apply css to just one page

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a trick there to keep the CSS out of the markdown.

| ---- | ------- | ------------ | ---------------- |
| Int | `50000` | \* | `--test-limit N` |

Number of sequences of transactions to generate during testing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these are transactions, not sequences of transactions.

| ---- | ------- | ------------ | -------------- |
| Int | `100` | \* | `--seq-len N` |

Number of transactions to generate during testing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs a better explanation: we need to explain that every N transaction, the VM is reset to the state after contract deployment. This also limits the size of each sequence in the corpus.

| ---- | ------- | ------------ | -------------- |
| Int | `null` | \* | `--timeout N` |

Campaign timeout, in seconds. By default it is not time-limited.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain how testLimit and timeout interacts.

| --------- | ----------------------------------- | ------------ | -------------- |
| [Address] | `["0x10000", "0x20000", "0x30000"]` | \* | `--sender` |

List of addresses to (randomly) use for the transactions sent during testing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain how the sender is used for normal transactions / assertions, instead of properties.

| ------- | ----------- | ------------ |
| Address | `"0x10000"` | \* |

Address of the sender of the property to test.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as previous one

| ---- | -------------------------------------- | ------------ |
| Int | `12500000` (current max gas per block) | \* |

Maximum amount of gas to consume when running function properties.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain that out of gas will cause the property to fail

| ---- | -------------------------------------- | ------------ |
| Int | `12500000` (current max gas per block) | \* |

Maximum amount of gas to consume when running random transactions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain that out of gas will NOT cause assertions to fail.

| ---- | ------- | ------------ |
| Int | `30` | 2.2.4+ |

Timeout for symbolic execution SMT solver. Only relevant if `symExec` is true.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If using z3, this timeout is not global, but per query (and this is a very important detail 😆)

| ---- | ------- | ------------ |
| Int | `1` | 2.2.4+ |

Number of SMT solvers used in symbolic execution. Only relevant if `symExec` is
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarify that there is only a single symexec worker, but we can have multiple threads to solve queries.

| ------ | ------- | ------------ | --------------- |
| String | `null` | 2.2.0+ | `--rpc-block N` |

Block number to use when fetching over RPC.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add alternative ENV variable?

| ------ | ------- | ------------ | --------------- |
| String | `null` | 2.2.0+ | `--rpc-url URL` |

URL to fetch contracts over RPC.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add alternative ENV variable?

| ---- | ------- | ------------ |
| Int | `0` | \* |

Initial Ether balance of `contractAddr`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link the tutorial on the handling of ether

@elopez elopez force-pushed the echidna-wiki-docs branch from 0e99301 to 8b36faa Compare May 14, 2024 18:55
@elopez elopez marked this pull request as ready for review May 14, 2024 18:57
@elopez elopez requested a review from montyly as a code owner May 14, 2024 18:57
@montyly montyly enabled auto-merge May 20, 2024 10:27
@montyly montyly added this pull request to the merge queue May 20, 2024
Merged via the queue into master with commit f86bbb4 May 20, 2024
@montyly montyly deleted the echidna-wiki-docs branch May 20, 2024 10:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants