Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more technical Echidna documentation #357

Merged
merged 9 commits into from
May 20, 2024
Merged

Add more technical Echidna documentation #357

merged 9 commits into from
May 20, 2024

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
Member

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.

program-analysis/echidna/configuration.md Show resolved Hide resolved
| ---- | ------- | ------------ | ---------------- |
| Int | `50000` | \* | `--test-limit N` |

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

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
Member

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
Member

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.

program-analysis/echidna/configuration.md Show resolved Hide resolved
| --------- | ----------------------------------- | ------------ | -------------- |
| [Address] | `["0x10000", "0x20000", "0x30000"]` | \* | `--sender` |

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

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
Member

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
Member

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
Member

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
Member

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
Member

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
Member

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
Member

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
Member

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
3 checks passed
@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.

3 participants