Skip to content

feat: support for EIP-7702 in Anvil #8476

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

Merged
merged 2 commits into from
Jul 20, 2024
Merged

feat: support for EIP-7702 in Anvil #8476

merged 2 commits into from
Jul 20, 2024

Conversation

klkvr
Copy link
Member

@klkvr klkvr commented Jul 19, 2024

Builds on top of #8471

@klkvr klkvr force-pushed the klkvr/anvil-eip7702 branch 2 times, most recently from 0c25b4e to d8e6d8c Compare July 19, 2024 11:59
Base automatically changed from klkvr/debugger-eof to master July 19, 2024 14:41
@klkvr klkvr force-pushed the klkvr/anvil-eip7702 branch from d8e6d8c to 51ab4c6 Compare July 19, 2024 15:32
@mattsse mattsse enabled auto-merge (squash) July 20, 2024 07:34
@mattsse mattsse merged commit e436daa into master Jul 20, 2024
20 checks passed
@mattsse mattsse deleted the klkvr/anvil-eip7702 branch July 20, 2024 07:50
shunkakinoki added a commit to shunkakinoki/foundry that referenced this pull request Jul 21, 2024
Just realized this while going through foundry-rs#8476 (sorry, nits!
mattsse pushed a commit that referenced this pull request Jul 21, 2024
chore: 7702 active error correction

Just realized this while going through #8476 (sorry, nits!
Jrigada added a commit to matter-labs/foundry-zksync that referenced this pull request Aug 14, 2024
* feat(fuzz) - add test progress (#7914)

* feat(forge) - add test progress

* Code cleanup

* Invariant progress bar cleanup

* Display number of threads and shrink run counter

* Add progress for regular fuzz tests too

* Cleanup code, use rayon collect

* Changes after review. Cleanup

* Fix clippy

* chore: update lockfile

* chore: propagate fmt parser errors (#8109)

* chore: add test for #2851 (#8112)

chore: add test for 2851

* fix: bypass block gas limit if disabled (#8111)

* feat: Add block id to cast (#8074)

* add blockId to cast

* Update opts.rs

* Update main.rs

* Update main.rs

* update

* tests

---------

Co-authored-by: DaniPopes <[email protected]>

* fix(invariant): exclude default addresses from senders (#8118)

* fix(invariant): exclude default addresses from senders

* Changes after review: use array instead vec

* chore(deps): weekly `cargo update` (#8120)

Updating git repository `https://github.com/bluealloy/revm.git`
    Updating git repository `https://github.com/alloy-rs/alloy`
    Updating git repository `https://github.com/paradigmxyz/revm-inspectors`
     Locking 37 packages to latest compatible versions
    Updating alloy-dyn-abi v0.7.4 -> v0.7.5
    Updating alloy-json-abi v0.7.4 -> v0.7.5
    Updating alloy-primitives v0.7.4 -> v0.7.5
    Updating alloy-sol-macro v0.7.4 -> v0.7.5
    Updating alloy-sol-macro-expander v0.7.4 -> v0.7.5
    Updating alloy-sol-macro-input v0.7.4 -> v0.7.5
    Updating alloy-sol-type-parser v0.7.4 -> v0.7.5
    Updating alloy-sol-types v0.7.4 -> v0.7.5
    Updating anstyle-query v1.0.3 -> v1.1.0
    Updating aws-config v1.5.0 -> v1.5.1
    Updating aws-sdk-kms v1.29.0 -> v1.30.0
    Updating aws-sdk-sso v1.27.0 -> v1.29.0
    Updating aws-sdk-ssooidc v1.28.0 -> v1.30.0
    Updating aws-sdk-sts v1.28.0 -> v1.29.0
    Updating aws-smithy-runtime v1.5.4 -> v1.5.5
    Updating aws-smithy-runtime-api v1.6.1 -> v1.6.2
    Updating aws-types v1.3.0 -> v1.3.1
    Updating cc v1.0.98 -> v1.0.99
    Updating clap v4.5.4 -> v4.5.6
    Updating clap_builder v4.5.2 -> v4.5.6
    Updating clap_complete v4.5.2 -> v4.5.5
    Updating clap_complete_fig v4.5.0 -> v4.5.1
    Updating clap_derive v4.5.4 -> v4.5.5
    Updating clap_lex v0.7.0 -> v0.7.1
    Updating evmole v0.3.3 -> v0.3.4
    Removing heck v0.4.1
    Updating hyper v0.14.28 -> v0.14.29 (latest: v1.3.1)
    Updating proc-macro2 v1.0.84 -> v1.0.85
    Updating ruint v1.12.1 -> v1.12.3
    Updating ruint-macro v1.2.0 -> v1.2.1
    Updating strum_macros v0.26.3 -> v0.26.4
    Updating syn-solidity v0.7.4 -> v0.7.5
    Updating toml v0.8.13 -> v0.8.14
    Updating toml_edit v0.22.13 -> v0.22.14
    Updating unicode-width v0.1.12 -> v0.1.13
    Updating utf8parse v0.2.1 -> v0.2.2
    Updating webpki-roots v0.26.1 -> v0.26.2
    Updating winnow v0.6.9 -> v0.6.13
note: pass `--verbose` to see 154 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* Support WalletOpts in `cast wallet derive-private-key` command (#8119)

* Support WalletOpts in `cast wallet derive-private-key` command

* rename cast wallet `derive-private-key` to `private-key`

* fix formatting

* Add aliases

* verbose flag

* tests

* Make output format more consistent with other subcommands

* hide legacy aliases

* derivation path

---------

Co-authored-by: poma <[email protected]>

* Feat: add solc & evm version to anvil readme (#7945)

* Update README.md

* add forge

* feat: add too many warnings error variant (#8125)

* feat: add too many warnings error variant

* docs: add to readme

* fix(forge): preserve state of persisted accounts on rollFork(tx) / transact (#8129)

* fix(forge): preserve state of persisted accounts on rollFork to tx / transact

* Changes after review: cleaner way to check if account persistent

* chore: add roll fork invariant test with handler state (#8130)

* fix(forge): needs a aws-kms feature to allow for continued support of the --aws flag (#8131)

* fix(release): build forge and cast with aws support on release (#8132)

* fix(release): build forge and cast with aws support on release

* fix(release): add support for aws-kms features for docker and releases

* bump compilers (#8126)

* fix(forge): fix the bug where source code incorrectly overlaps during debugging (#8134)

* fix: remove hardcoded retries (#8141)

* chore(deps): Bump alloy 14ed25d (#8128)

* chore: bump alloy 14ed25d

* Format files

* format: Remove unnecessary trailing comma updates

* Fix to update only alloy in Cargo.lock

* common: Enable eth feature for allot-rpc-types

* Enable eth feature for alloy-rpc-types

* bump alloy

* new retry changes

---------

Co-authored-by: Matthias Seitz <[email protected]>

* perf: don't unnecessarily create CheatsConfig (#8143)

* chore: improve test timings and cleanup (#8144)

* chore(evm): clean up executor methods some more (#8104)

* chore(evm): clean up executor methods some more

* fix: rename _committing to transact_, further clarify the separation

* chore: simplify is_success further

* chore: don't clone executor in unit tests

* Allow to specify entropy when generating new mnemonic with cast (#8145)

* Allow to specify entropy when generating new mnemonic with cast

* change print color to yellow, a standard warning color

---------

Co-authored-by: poma <[email protected]>

* fix: Soldeer: Fixed the url bug, it should be optional (#8155)

* Fixed the url bug, it should be optional

* added serde skip serializing

* feat: display source name in debugger (#8154)

* feat: display source name in debugger

* fmt

* clippy

* refactor

* feat(build): add option to build specific dir (#8149)

* feat(build): add option to build specific dir

* Changes after review:
- use source_files_iter helper, build single files and child dirs as well
- rename arg to paths, use 0.. pos arg

* Changes after review: reuse MultiCompilerLanguage::FILE_EXTENSIONS

* migrate(`forge-bind`): to alloy (#7919)

* migrate(forge-bind): to alloy - boilerplate and `SolMacroGen` type

* tokens to `SolInput`

* use SolInputKind

* update alloy-core deps version and use expand

* write cargo.toml

* alloy: write_to_module

* use `tokens_for_sol` from lib

* write to single_file

* nit

* nit

* add sol attr

* nits

* add alloy `Filter` and reuse get_json_files

* fix: throw err instead of panic!

* nits

* check cargo toml

* check existing alloy bindings

* clippy nits

* fmt

* doc nits

* clean up and nits

* extract `sol_macro_gen` to separate crate

* can specify alloy version

* nit

* warning nit

* clippy nit

* nit

Co-authored-by: DaniPopes <[email protected]>

* pretty fmt before writing

* nit: format!

* populate bytecode attr

* clippy

* nit

Co-authored-by: Matthias Seitz <[email protected]>

* fmt nits

* clippy

* parse path to `SolInput` directly

* fix: artifact duplication

* dedup faster

* add sol attributes

* fix: alloy dep

* clippy

* clippy nits

---------

Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* chore: add known error codes (#8166)

add known error codes

* fix: enable cache when `--build-info` is enabled (#8164)

fix: enable cache when --build-info is enabled

* fix(forge-bind): alloy deps and file consistency check (#8167)

* fix(forge): alloy deps in bind

* nit: braces

Co-authored-by: DaniPopes <[email protected]>

* fix(bind): file consistency check

* chore: unknown lints

---------

Co-authored-by: DaniPopes <[email protected]>

* perf: slightly improve inspector stack (#8169)

* feat(invariant): introduce `afterInvariant` function (#8106)

* feat(invariant): introduce tearDown function

* Add Tests

* Fix tests

* tearDown -> afterInvariant refactor

* Group has_invariants with tmp_tracing

* fix(forge-bind): allow attrs and mod single_file imports (#8171)

* fix(forge-bind): allow attrs and mod single_file imports

* fmt nit

* allow rustdoc::all

* fix: file consistenct check

* fix clippy

* chore(deps): weekly `cargo update` (#8172)

* chore(deps): weekly `cargo update`

    Updating git repository `https://github.com/bluealloy/revm.git`
    Updating git repository `https://github.com/alloy-rs/alloy`
    Updating git repository `https://github.com/paradigmxyz/revm-inspectors`
     Locking 45 packages to latest compatible versions
    Updating alloy-chains v0.1.18 -> v0.1.20
    Updating aws-runtime v1.2.2 -> v1.2.3
    Updating aws-sigv4 v1.2.1 -> v1.2.2
    Updating aws-smithy-runtime-api v1.6.2 -> v1.7.0
    Updating aws-smithy-types v1.1.10 -> v1.2.0
    Updating clap v4.5.6 -> v4.5.7
    Updating clap_builder v4.5.6 -> v4.5.7
    Updating derive_more v0.99.17 -> v0.99.18
    Updating fs4 v0.8.3 -> v0.8.4
    Updating http-body-util v0.1.1 -> v0.1.2
    Updating httparse v1.8.0 -> v1.9.3
      Adding icu_collections v1.5.0
      Adding icu_locid v1.5.0
      Adding icu_locid_transform v1.5.0
      Adding icu_locid_transform_data v1.5.0
      Adding icu_normalizer v1.5.0
      Adding icu_normalizer_data v1.5.0
      Adding icu_properties v1.5.0
      Adding icu_properties_data v1.5.0
      Adding icu_provider v1.5.0
      Adding icu_provider_macros v1.5.0
    Updating idna v0.5.0 -> v1.0.0
    Updating interprocess v2.1.1 -> v2.2.0
      Adding litemap v0.7.3
    Updating memchr v2.7.2 -> v2.7.4
    Updating redox_syscall v0.5.1 -> v0.5.2
    Updating regex v1.10.4 -> v1.10.5
    Updating regex-automata v0.4.6 -> v0.4.7
    Updating regex-lite v0.1.5 -> v0.1.6
    Updating regex-syntax v0.8.3 -> v0.8.4
    Updating rustls v0.23.9 -> v0.23.10
      Adding stable_deref_trait v1.2.0
      Adding synstructure v0.13.1
      Adding tinystr v0.7.6
    Removing unicode-bidi v0.3.15
    Updating url v2.5.0 -> v2.5.1
      Adding utf16_iter v1.0.5
      Adding utf8_iter v1.0.4
      Adding write16 v1.0.0
      Adding writeable v0.5.5
      Adding yoke v0.7.4
      Adding yoke-derive v0.7.4
      Adding zerofrom v0.1.4
      Adding zerofrom-derive v0.1.4
      Adding zerovec v0.10.2
      Adding zerovec-derive v0.10.2
note: pass `--verbose` to see 158 unchanged dependencies behind latest

* allow unicode

---------

Co-authored-by: mattsse <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump alloy, revm (#8177)

* chore(deps): bump alloy, revm

* doctests

* feat: debug_getRawTransaction RPC endpoint (#8162)

* feat: debug_getRawTransaction rpc endpoint

* clippy happy

* conflicts resolved

* chore: tests + refactor

* fix

* fix(invariant): weight invariant selectors by number of selectors (#8176)

* fix(invariant): weight invariant selectors by number of selectors

- Consolidate FuzzRunIdentifiedContracts logic
- add function to flatten contracts function in order to be used by strategy
- test

* Changes after review: cleanup

* perf: reduce clones in fuzzed_functions (#8178)

* bump compilers (#8153)

* [do not merge] patch compilers

* fix import

* fix doc

* update patch

* rm patch

* fix: make `paths` a positional argument (#8158)

* fix: move paths to BuildArgs

* tests

* dirs -> paths

* chore(deps): pin alloy 0.1.1 (#8182)

* chore(deps): pin alloy 0.1.1

* bump revm and apply patch

* perf: new-type TargetedContracts (#8180)

* feat: cast etherscan-source --flatten (#8159)

* fix(anvil): block dumps (#8160)

* implemented latest_block dump/load

* update to dump/load all blocks instead of only latest

* refactored state loading into storage.rs, and added load-dump cycle test

* fix clippy errors for anvil

* remove SerializableHeader and use Header (now serializable)

* clippy happy

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat(invariant): add excludeSelectors() filter (#8185)

* feat(invariant): add excludeSelectors() filter

* Apply suggestions from code review

Co-authored-by: DaniPopes <[email protected]>

* Review changes: shorter err message

---------

Co-authored-by: DaniPopes <[email protected]>

* fix(cheatcodes): use `call.bytecode_address` in mockCalls (#8184)

* fix(cheatcodes): handle delegatecalls in vm.mockCalls using `bytecode_address`

* add: repro test

* nit: forge fmt

* chore: remove rU256 alias (#8188)

* pick a random value for prevrandao for each block (#8187)

Co-authored-by: Pawel Peregud <[email protected]>

* chore: fix patches (#8189)

* perf: optimize load_contracts (#8190)

* chore(deps): move more deps to workspace (#8192)

* feat(cast): ux upgrade cast block returning block time in readable format.  (#8195)

* feat(cast): support readable time for cast block

* fix: remove `time`

* Update crates/common/src/fmt/ui.rs

* fmt

---------

Co-authored-by: fenghaojiang <[email protected]>
Co-authored-by: DaniPopes <[email protected]>

* chore: fix flaky invariant tests (#8199)

* feat(anvil): switch to `alloy` types (#8186)

* update to use anvil rpc types

Co-authored-by: moricho <[email protected]>

* remove redundant types

* use Index from Alloy

* update rev

* switch to use alloy-rpc-types-anvil patch

* use Index from `alloy_rpc_types_eth` instead of duplicate implementation in `alloy_rpc_types_anvil`

* use Index from rpc_types

* move namespaced imports of rpc-types-* to rpc-types metacrate

* make sure to enable "eth" namespace because default features are not enabled

---------

Co-authored-by: moricho <[email protected]>

* fix(verify-bytecode): use strong equality `==`,  not `.starts_with` (#8200)

* fix: `--isolate` fixes and daily CI job (#8194)

* feat: add daily CI job for `--isolate` feature

* fix tests

* wip

* fix tests

* wip

* wip

* fix

* update group name for nextest

* perf(cheatcodes): outline cold paths in inspector step (#8197)

* test: unflake an anvil test (#8204)

* chore: fix docstring and add tests for random cheats (#8202)

* fix(invariant): show labels when failure replay (#8201)

* chore(deps): bump alloy to `0.1.2`, remove patch (#8205)

* remove patch, update to `0.1.2`, marking `0.1.*` for flexibility

* revert `0.1.*`, pin to `0.1.2`

* perf: optimize inspector stack dispatching (#8206)

* chore: consolidate TestResult logic (#8208)

* chore: consolidate TestResult logic

* Update crates/forge/src/result.rs

Co-authored-by: DaniPopes <[email protected]>

* Changes after review: pass by value

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: remove TestResult.to_owned (#8210)

* feat: add --no-request-size-limit option to anvil (#8209)

* feat: add --no-request-size-limit option to anvil

* chore: flip logic, fmt, improve cli help

* nit

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: fix more clippy (#8211)

* chore: fix more clippy

* chore: missing lints.workspace

* docs

* fix: update bytecode matching for coverage (#8214)

* fix: update bytecode matching for coverage

* clippy

* chore: factor out common code

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: enable redundant-lifetimes lint (#8212)

* fix: correct the hyperlinks related to JSON-RPC. (#8215)

* Correct the hyperlinks related to JSON-RPC.

* chore: revert testdata changes

---------

Co-authored-by: DaniPopes <[email protected]>

* fix: Re-edited to delete the language choose (#8218)

Re-edited to delete the language choose

* ci: pin vyper to 0.3 (#8219)

* chore(deps): bump revm 10.0, un-git revm-inspectors (#8220)

* fix: use delay tick behaviour (#8221)

* ci: remove crate docs redirection

* fix: breaking change in revm-inspectors

* ci: enable index page for crate docs

* chore(evm): use u64 for gas limit (#8226)

* docs: update Backend and MultiFork docs (#8229)

* chore(deps): weekly `cargo update` (#8230)

Locking 9 packages to latest compatible versions
    Updating alloy-chains v0.1.21 -> v0.1.22
    Updating aws-types v1.3.1 -> v1.3.2
    Updating clap_complete v4.5.5 -> v4.5.6
    Updating displaydoc v0.2.4 -> v0.2.5
    Updating lazy_static v1.4.0 -> v1.5.0
    Updating proc-macro2 v1.0.85 -> v1.0.86
    Updating proptest v1.4.0 -> v1.5.0
    Removing spin v0.5.2
    Updating subtle v2.5.0 -> v2.6.0
    Updating syn v2.0.66 -> v2.0.67
note: pass `--verbose` to see 160 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* feat(evm): collect logs from execution result (#8231)

* chore(evm): make Executor fields private (#8233)

* feat: improve test function classification (#8235)

* chore: tweak tracing spans and events (#8237)

* chore: tweak profiles, rename debug-fast to profiling, remove local (#8238)

* chore: cleanup invariant test code (#8236)

* chore: cleanup invariant test code

* Changes after review, RefCell invariant test data struct

* fix: use tx.into_signed directly (#8243)

* fix: overflow in randomUint (#8239)

* fix: use inclusive check for logs range fetch in fork (#8245)

* feat: extract ABIs and formatting code into separate crates (#8240)

* feat: extract ABIs and formatting code into separate crates

* reorder

* features

* hex

* doctests

* feat: add feature to enable tracy (#8247)

* chore: clean up ds-test failure related code (#8244)

* feat: add feature to enable tracy

* perf: add more early returns in is_success logic

* try

* readd snapshot check

* update

* com

* docs

* clean

* chore: remove extra checks

* fix

* fix(invariant): do not continue test runs if invariant fails (#8253)

* fix(invariant): exit early if invariant fails in initial state (#8252)

* Fix: Check empty input bytecode in `find_by_deployed_code_exact`    (#8257)

* fix: find by deployed code extract

* chore: add unit test

* chore: minor refactor

* refactor: reduce code duplication for assertion cheats and introduce `legacy_assertions` flag (#8251)

* wip

* refactor: reduce code duplication for assertion cheatcodes + legacy_assertions config option

* fix

* fix

* feat: `CheatcodesExecutor` + `vm.deployCode` (#8181)

* wip

* wip

* wip

* clean up

* fix vm.transact traces

* clean up

* clippy

* cargo cheats

* review fixes

* clippy

* tests

* clippy

* cargo cheats

* const -> static

* fmt

* clippy

* fix doc

* chore: fmt

* fix: doc

* fix: doc

* increase depth for failing test

* review fixes

* reduce diff

* rename

* call_with_executor

* chore: keep dbext methods with auto_impl attribute

---------

Co-authored-by: DaniPopes <[email protected]>

* refactor: use `revm-inspectors` traces for debugger (#8249)

* move calldata to DebugNode

* refactor: use tracer from inspectors for debugger

* fix: rm hex

* clippy

* bump inspectors

* newline

* docs

* fix

* fmt

* feat(coverage): exit early if tests failed (#8268)

* feat(invariant): collect coverage during runs (#8265)

* fix(invariant): collect coverage during runs

* Collect coverage only if in forge coverage execution

* Do not check exec context

* chore: remove an unnecessary debug log (#8270)

* fix: correctly adjust depth when calling cheatcodes with `--isolate` (#8273)

fix: correctly adjust depth when calling cheatcodes with --isolate

* fix: `trace_debugTransaction` is inconsistent with geth's responses for tracer 'callTracer' (#6884)

* fix: add CallTracer in anvil

* fix: extra if let

* try impl geth_trace

* fix: return empty for non supported tracers

* fix: types import

* fix: rustfmt

* fix

* fix: type

* fix: change to return Result

* fix: clippy

* fix: match

* fix: merge

* chore: simplify

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: reduce verbosity for ext tests (#8275)

* feat(forge): prettify `ir` and `irOptimized` inspect outputs (#8272)

* feat(anvil): fork from transaction hash (#8228)

* add --fork-transaction-hash

* reinstate with_fork_block_number()

* move forkchoice to config module and add comments

* partially get txn replay implemented

* unexpected tx hash test

* Reinstate with_fork_block_number()

* fix miner poll logic

* get full block

* rm todos

* fix miner poll logic

* rpc to typed conversion

* initial tests pass

* move forkchoice struct

* try_from

* fin tests

* rename replays and rm unwrap

* choice to block num usage

* lint

* none on constructor

* break out miner constructor

* add derive fn

* single line w force txns

* chore: touchups

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore: make clippy happy (#8286)

* Update prune-prereleases.js to keep 30 nightlies around (#8282)

* fix: vm rpc encoding (#8288)

* fix: vm rpc encoding

* fix test

* convert fixedbytes to bytes

* forge fmt

* take size from fixed bytes

* convert addr to bytes

* feat: implement EOF methods in Inspector trait (#8123)

* feat: implement EOF methods in Inspector trait

* create and eofcreate refactored

* create_end and eofcreate_end refactored

* log_debug_fn

* move allow_cheatcodes_fn from CreateParams to create_common arg

* pass caller value

* fix tests that require modified CreateInputs.caller to be propagated

* use FnMut bounds for closures and remove dyn aliases

* fix end_common

* fix tests

* log_debug_fn uses CreateScheme instead of full input

* introduce CommonCreateInput trait

* introduce CommonEndInput trait

* recover referecens to ecx.inner

* end_common -> create_end_common and docs

* move legacy/EOF traits and types to inspector::utils

* updates for latest revm

* add missing inspector::utils mod def

* fix build

* fix(cheatcodes): fallback to string if invalid 0x hex (#8290)

* test: update snekmate rev (#8295)

* test: update snekmate rev

* chore: bump vyper

* feat: `legacy_assertions` config option (#8263)

* apply_full

* feat: legacy_assertions flag

* forge fmt

* fix test

* fix docs

* fix: test

* legacy_assertions -> assertions_revert

* legacy_assertions

* fix: enable legacy assertions for legacy ext tests

* update README

* feat: reduce default gas limit to ~1B (#8274)

* feat: reduce default gas limit to ~1B

* com

* chore(cast): improve vanity help (#8296)

* chore: use is_zero directly (#8297)

* fix: forkchoice match checks (#8299)

* perf: borrow output when building test runner (#8294)

* chore: borrow output when building test runner

* chore: strip always

* chore: lenient stripping

* fix

* fix: don't actually strip always

* chore(deps): bump foundry-compilers (#8291)

* chore(deps): bump foundry-compilers

* bumpies

* chore: update fixtures after forge-std release (#8302)

* chore: update fixtures after forge-std release

* fix

* chore(deps): bump revm-inspectors (#8300)

* chore(deps): bump revm-inspectors

* fix

* fix2

* inline

* fix3

* docs(cast): improve vanity help naming (#8306)

* chore(deps): weekly `cargo update` (#8303)

Locking 44 packages to latest compatible versions
    Updating alloy-chains v0.1.22 -> v0.1.23
    Updating alloy-consensus v0.1.2 -> v0.1.3
    Updating alloy-contract v0.1.2 -> v0.1.3
    Updating alloy-eips v0.1.2 -> v0.1.3
    Updating alloy-genesis v0.1.2 -> v0.1.3
    Updating alloy-json-rpc v0.1.2 -> v0.1.3
    Updating alloy-network v0.1.2 -> v0.1.3
    Updating alloy-provider v0.1.2 -> v0.1.3
    Updating alloy-pubsub v0.1.2 -> v0.1.3
    Updating alloy-rlp v0.3.5 -> v0.3.7
    Updating alloy-rlp-derive v0.3.5 -> v0.3.7
    Updating alloy-rpc-client v0.1.2 -> v0.1.3
    Updating alloy-rpc-types v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-anvil v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-engine v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-eth v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-trace v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-txpool v0.1.2 -> v0.1.3
    Updating alloy-serde v0.1.2 -> v0.1.3
    Updating alloy-signer v0.1.2 -> v0.1.3
    Updating alloy-signer-aws v0.1.2 -> v0.1.3
    Updating alloy-signer-gcp v0.1.2 -> v0.1.3
    Updating alloy-signer-ledger v0.1.2 -> v0.1.3
    Updating alloy-signer-local v0.1.2 -> v0.1.3
    Updating alloy-signer-trezor v0.1.2 -> v0.1.3
    Updating alloy-transport v0.1.2 -> v0.1.3
    Updating alloy-transport-http v0.1.2 -> v0.1.3
    Updating alloy-transport-ipc v0.1.2 -> v0.1.3
    Updating alloy-transport-ws v0.1.2 -> v0.1.3
    Updating bitflags v2.5.0 -> v2.6.0
    Updating cc v1.0.100 -> v1.0.102
    Updating clap v4.5.7 -> v4.5.8
    Updating clap_builder v4.5.7 -> v4.5.8
    Updating clap_complete v4.5.6 -> v4.5.7
    Updating clap_derive v4.5.5 -> v4.5.8
    Updating either v1.12.0 -> v1.13.0
    Updating evmole v0.3.4 -> v0.3.6
    Updating log v0.4.21 -> v0.4.22
    Updating mime_guess v2.0.4 -> v2.0.5
    Updating num-bigint v0.4.5 -> v0.4.6
    Updating serde_json v1.0.117 -> v1.0.118
    Updating subtle v2.6.0 -> v2.6.1
    Updating tinyvec v1.6.0 -> v1.6.1
    Updating uuid v1.9.0 -> v1.9.1
note: pass `--verbose` to see 166 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* fix: suppress compile reporting for forge flatten (#8313)

* perf: only instantiate Vyper when necessary (#8307)

* chore: pin forge-std in tests + CI job to bump it (#8308)

* chore: update dev shell flake (#8314)

Updated to latest Rust toolchain version (v1.79). The rust overlay
doesn't use `flake-utils` anymore. Switched to solc 0.8.23 since that's
the default for the tests. Moved around the deps to be more in line with
recommendations (`buildInputs` for things that get linked and
`nativeBuildInputs` for what's needed during compilation only,
`packages` for things that are not needed at compile time).

* fix: set next block timestamp as late as possible (#8311)

* feat(cheatcodes): add rpc with url overload (#8316)

* chore(verify-bytecode: refactor code for preventing code duplications (#8292)

* fix: find by deployed code extract

* chore: add unit test

* chore: minor refactor

* feat: minor refactor

* feat: remove unused imports

* feat: remove unused imports

* test: fix unit test

* fix: check whether tx is tx creation

* Updating soldeer to version 0.2.16 (#8320)

* chore: tweak profiles once more (#8317)

* fix: only force include txs on first ready poll (#8325)

* chore: include tx in setup output (#8324)

* feat(coverage): add option to ignore directories and files from coverage report (#8321)

* feat: add option to ignore directories from coverage report

* add docs, rename no-coverage-path to ignore-coverage-path

* cargo fmt

* small refactor

* revert formatting changes

* revert formatting

* path_pattern_ignore_coverage -> coverage_pattern_inverse

* use regex instead of glob

* re-enable ignoring of sources after report

* fix formatting

* add basic filter test

* remove redundant Path cast

* use HashMap::retain

* greatly simplify, remove CoverageFilter

* move constants out of filter map

---------

Co-authored-by: dimazhornyk <[email protected]>
Co-authored-by: Dima Zhornyk <[email protected]>

* feat(anvil): more flexible configuration `LogCollector` (#8328)

* wip

* separate console.log events under node::console

* rename

* fix

* fix: clippy + docs

* chore(template): update script template to deploy `Counter` contract (#8330)

update script template to deploy Counter contract

* chore(evm): extract create2 deployer deployer constant (#8331)

* chore: increase tx timeout (#8333)

* `foundry-fork-db` integration (#8329)

* initial commit

* [wip] use alloy-fork-db

* fix: tests

* foundry-fork-db

* fmt

* fix: deny.toml

* feat: better dropped tx check (#8335)

* feat: better dropped tx check

* review fixes

* chore(tests): bump forge-std version (#8336)

* fix(anvil): anvil_setLoggingEnabled should correctly enabled / disable logging (#8327)

* fix anvil_setLoggingEnabled

* fix fmt issues

* Soldeer release v0.2.17 (#8344)

* Soldeer release v0.2.17

* solved failing test

* feat(forge): option to replay last test run failures only (#8338)

* feat(forge): option to replay last test run failures

* Changes after review: rename option to --rerun
Small change in the way test match is extracted

* feat(cheatcodes): add vm.setBlockhash (#8258)

* intitial

* add set_blockhash method to DatabaseExt trait

* cargo cheats

* remove additional ;

* update to Evm group

* remove err handling

* adjust signature and add implementation for cheatcode

* lint

* update

* fix test

* fmt

* refactor based on reviews

* update docs for setBlockhash

* empty

* Update crates/forge/tests/it/invariant.rs

Co-authored-by: Matthias Seitz <[email protected]>

* add docs

* cargo cheats

---------

Co-authored-by: Matthias Seitz <[email protected]>

* fix: order of personal sign (#8350)

* Fixes dependency version format error (#8353)

* Soldeer release v0.2.17

* solved failing test

* Fixing the config error if the dependency is a string and not a map

* Adding untagged

* fixing fmt

* Adding a bit of documentation

* chore: regenerate HardhatConsole and patches (#8357)

chore: regenerate HardhatConsole

* test: use known contracts when decoding traces (#8358)

* ci: add required checks to merge (#8359)

* chore: add some additional etherscan api keys (#8360)

* chore: `threads` and `show_progress` per profile config (#8341)

* chore: allow max threads and show progress set per profile

* Changes after review: max_threads to threads/jobs

* Use short -j for jobs instead json

* Update crates/config/README.md

Co-authored-by: DaniPopes <[email protected]>

* Use usize for number of threads

---------

Co-authored-by: DaniPopes <[email protected]>

* test: relax unix time test once again (#8362)

* fix(cheatcodes): overflow in randomNumber w/range (#8361)

* fix: flaky assertion test (#8363)

* docs: fix doc lint (#8364)

* docs: fix doc lint

* escape quote

* feat(traces): use `TraceWriter`, delegating the formatting of the print trace to `revm-inspectors` (#8224)

* change to fork

* update fork

* add mutability to extend call traces, add decoder.decode

* clippy fixes

* extend_trace -> extend_traces

* update to latest rev

* add docs

* remove redundant clone

* clean up

* ignore ts_get_internal_operations_contract_selfdestruct_london for now as it is not supported by revm-inspector, uses &mut and only pass into the trace extender what is necessary

* fix clippy

* fix: otterscan selfdestruct

* bump revm-inspectors

* split decode_trace_arena and render_trace_arena

* revert unnecessary LogData -> CallLog change

* convert render_trace_arena to sync

* Update crates/forge/bin/cmd/test/mod.rs

Co-authored-by: DaniPopes <[email protected]>

* move clone to inside should_include

* fix clippy

* unify DecodedCallTrace and DecodedCallLog<'a> into DecodedItem<'a>

* fix clippy

* clone

* rm

* unify

* chore: simplify precompiles

---------

Co-authored-by: DaniPopes <[email protected]>

* feat(anvil): use Alloy otterscan types (#8318)

* deprecate src/eth/otterscan/types.rs

* fmt

* Revert "fmt"

This reverts commit bf1969f19c9009710eb5e08b26f3ae9f2070b3eb.

* (less) fmt

* requested changes

* CallType into String

* clippy + comment

---------

Co-authored-by: drun <[email protected]>
Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* test: add test for pk parsing (#8366)

* docs: add note about evm_version (#8369)

* test: ignore 502 in can_clone_keep_directory_structure (#8372)

* fix: join paths when passing args to forge build (#8371)

* fix: join paths when passing args to forge build

* fmt

---------

Co-authored-by: Matthias Seitz <[email protected]>

* fix: set both tx input fields (#8373)

* chore(deps): weekly `cargo update` (#8381)

Locking 43 packages to latest compatible versions
    Updating aws-config v1.5.1 -> v1.5.4
    Updating aws-runtime v1.3.0 -> v1.3.1
    Updating aws-sdk-kms v1.30.0 -> v1.35.0
    Updating aws-sdk-sso v1.29.0 -> v1.34.0
    Updating aws-sdk-ssooidc v1.30.0 -> v1.35.0
    Updating aws-sdk-sts v1.29.0 -> v1.34.0
    Updating aws-sigv4 v1.2.2 -> v1.2.3
    Updating aws-smithy-http v0.60.8 -> v0.60.9
    Updating aws-smithy-runtime v1.5.5 -> v1.6.1
    Updating aws-smithy-runtime-api v1.7.0 -> v1.7.1
    Updating aws-types v1.3.2 -> v1.3.3
    Updating castaway v0.2.2 -> v0.2.3
    Updating cc v1.0.102 -> v1.0.104
    Updating gcloud-sdk v0.24.7 -> v0.24.8
    Updating hyper v1.3.1 -> v1.4.0
    Updating hyper-util v0.1.5 -> v0.1.6
    Updating oorandom v11.1.3 -> v11.1.4
    Updating pest v2.7.10 -> v2.7.11
    Updating pest_derive v2.7.10 -> v2.7.11
    Updating pest_generator v2.7.10 -> v2.7.11
    Updating pest_meta v2.7.10 -> v2.7.11
    Updating revm-inspectors v0.3.0 -> v0.3.1
    Updating rustls-native-certs v0.7.0 -> v0.7.1
    Updating rustls-webpki v0.102.4 -> v0.102.5
    Updating scc v2.1.1 -> v2.1.2
    Updating serde v1.0.203 -> v1.0.204
    Updating serde_derive v1.0.203 -> v1.0.204
    Updating serde_json v1.0.118 -> v1.0.120
    Updating stability v0.2.0 -> v0.2.1
    Updating syn v2.0.68 -> v2.0.69
    Updating tinyvec v1.6.1 -> v1.7.0
    Updating windows-targets v0.52.5 -> v0.52.6
    Updating windows_aarch64_gnullvm v0.52.5 -> v0.52.6
    Updating windows_aarch64_msvc v0.52.5 -> v0.52.6
    Updating windows_i686_gnu v0.52.5 -> v0.52.6
    Updating windows_i686_gnullvm v0.52.5 -> v0.52.6
    Updating windows_i686_msvc v0.52.5 -> v0.52.6
    Updating windows_x86_64_gnu v0.52.5 -> v0.52.6
    Updating windows_x86_64_gnullvm v0.52.5 -> v0.52.6
    Updating windows_x86_64_msvc v0.52.5 -> v0.52.6
    Updating zerocopy v0.7.34 -> v0.7.35
    Updating zerocopy-derive v0.7.34 -> v0.7.35
    Updating zstd-sys v2.0.11+zstd.1.5.6 -> v2.0.12+zstd.1.5.6
note: pass `--verbose` to see 161 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* chore: don't build OpenChain client if offline (#8390)

* feat(invariant): exclude precompiles from senders (#8367)

* fix(invariant): exclude precompiles from senders

* More robust shrink test, use same test contract / bytecode

* chore(anvil): fix install cmd in README (#8393)

fix install cmd

Signed-off-by: Sally MacFarlane <[email protected]>

* chore: fix clippy (#8394)

* fuzz console log & test cases (#8387)

* fuze console log & test cases

test fuzz console.log

* rename to show_fuzz_logs

rename to show_fuzz_logs

* add logs field in FuzzTestData

add logs field in FuzzTestData

add logs field in FuzzTestData

* rename to show_logs

* removed `decoded_logs` in FuzzTestResult & refactored some code

fmt

* fmt

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore: decode test logs only once and if needed (#8396)

* feat: contract-level inline configs (#8388)

* feat: contract-level inline configs

* clippy

* Fix solang parser

* fixes

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): cargo update (#8397)

* chore(deps): cargo update

     Locking 45 packages to latest compatible versions
    Updating alloy-consensus v0.1.3 -> v0.1.4
    Updating alloy-contract v0.1.3 -> v0.1.4
    Updating alloy-dyn-abi v0.7.6 -> v0.7.7
    Updating alloy-eips v0.1.3 -> v0.1.4
    Updating alloy-genesis v0.1.3 -> v0.1.4
    Updating alloy-json-abi v0.7.6 -> v0.7.7
    Updating alloy-json-rpc v0.1.3 -> v0.1.4
    Updating alloy-network v0.1.3 -> v0.1.4
    Updating alloy-primitives v0.7.6 -> v0.7.7
    Updating alloy-provider v0.1.3 -> v0.1.4
    Updating alloy-pubsub v0.1.3 -> v0.1.4
    Updating alloy-rpc-client v0.1.3 -> v0.1.4
    Updating alloy-rpc-types v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-anvil v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-engine v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-eth v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-trace v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-txpool v0.1.3 -> v0.1.4
    Updating alloy-serde v0.1.3 -> v0.1.4
    Updating alloy-signer v0.1.3 -> v0.1.4
    Updating alloy-signer-aws v0.1.3 -> v0.1.4
    Updating alloy-signer-gcp v0.1.3 -> v0.1.4
    Updating alloy-signer-ledger v0.1.3 -> v0.1.4
    Updating alloy-signer-local v0.1.3 -> v0.1.4
    Updating alloy-signer-trezor v0.1.3 -> v0.1.4
    Updating alloy-sol-macro v0.7.6 -> v0.7.7
    Updating alloy-sol-macro-expander v0.7.6 -> v0.7.7
    Updating alloy-sol-macro-input v0.7.6 -> v0.7.7
    Updating alloy-sol-type-parser v0.7.6 -> v0.7.7
    Updating alloy-sol-types v0.7.6 -> v0.7.7
    Updating alloy-transport v0.1.3 -> v0.1.4
    Updating alloy-transport-http v0.1.3 -> v0.1.4
    Updating alloy-transport-ipc v0.1.3 -> v0.1.4
    Updating alloy-transport-ws v0.1.3 -> v0.1.4
    Updating async-trait v0.1.80 -> v0.1.81
    Updating cc v1.0.104 -> v1.1.0
    Updating clap v4.5.8 -> v4.5.9
    Updating clap_builder v4.5.8 -> v4.5.9
    Updating rustls v0.23.10 -> v0.23.11
    Updating syn v2.0.69 -> v2.0.70
    Updating syn-solidity v0.7.6 -> v0.7.7
    Updating tinyvec v1.7.0 -> v1.8.0
    Updating toml_edit v0.22.14 -> v0.22.15
    Updating unicode-truncate v1.0.0 -> v1.1.0
    Updating uuid v1.9.1 -> v1.10.0

* updates

* chore: update deny to lessen spam

* refactor(common): use alloy retry layer (#8368)

* use alloy retry layer in RetryProvider

* nits

* rm built-in retry layer

* rm `timeout_retry`

* bump alloy

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump watchexec to 4 (#7864)

* chore(deps): bump watchexec to 4

* feat: implement the test spawn hook

* chore: lockfile

* chore: update

* doc

* chore: ignore gix CVEs in deny.toml

* chore: clippy

* feat(anvil): add callTracer support for debug_traceCall (#8375)

* apply state/block overrides and add callTracer support

* remove state/block override logic

* pass default config to TracingInspector

* fix comments

* add integration tests

* refactor handler

* add comments

* fix clippy

* update test to check for address

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump alloy-core (#8401)

* docs: remove mention of install location of `solc` in favor of detailed explanation in Foundry Book (#8403)

remove mention of install location, moving to https://book.getfoundry.sh/faq#im-getting-solc-errors

* refactor(tests): add snapbox (#8406)

* refactor(tests): add snapbox

* update some cast tests

* fix

* use str

* rm fixtures

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat: more flexible JSON parsing (#8345)

* support struct parsing

* wip

* support eip712 strings

* feat: "vm.parseJsonType"

* chore: docs

* clippy

* serialize

* forge bind-json

* make lib internal

* fixes

* fix docs

* rm redundant filter

* clippy

* generate more helpers

* add test

* typo

* refactor a bit

* fmt

* config section

* add out arg

* rm cfg(ignore)

* increase depth for failing test

* move proptest to workspace

* use write

* review fixes

* fix tests

* use GlobMatcher in config

* fix tests

* fmt

* fix(verify-etherscan): continue verification even if errors occur (#8407)

* fix(verify-etherscan): continue verification even if errors occur

* Apply suggestion

Co-authored-by: Matthias Seitz <[email protected]>

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat: identify internal function invocations in traces (#8222)

* fix: small debugger updates

* [wip] feat: identify internal function invocations in traces

* fmt

* doc

* correctly enable tracing

* correctly enable tracing

* collect contract definition locs

* feat: print traces in format of Contract::function

* wip

* refactor

* clippy

* fix doc

* track input/output values

* clippy

* clean up

* TraceMode

* small fixes

* add doc

* clippy

* safer decofing from stack and memory

* use Into<Option<TraceMode>>

* TraceMode::None

* fmt

* review fixes

* --decode-internal for single fn

* use Vec

* TraceMode builder

* optional --decode-internal and tests

* update doc

* InternalTraceMode

* fix(coverage): treat assert/require as lines instead branch (#8413)

* fix(coverage): treat assert/require as lines instead branch

* Changes after review: use snapbox assertion

* More cov tests ported

* Nicer pattern match

* fix(cast): correctly handle legacy chains (#8420)

fix: correctly handle legacy chains

* fix(evm): always decode EVM reverts (#8419)

* fix(coverage): lcov avoid double reporting for line hit (#8400)

* fix(anvil): return correct data for queries at forked block (#8428)

* add test

* fix

* rm unused

* fix(coverage): proper branch handling for if statement (#8414)

* fix(coverage): proper instruction mapping for first branch

* Add tests

* fix: correctly apply genesis (#8431)

* Add test

* fix: correctly apply genesis during fork reset

* fix(coverage): require should be branch (#8433)

* chore(deps): weekly `cargo update` (#8437)

Locking 17 packages to latest compatible versions
    Updating aws-sdk-kms v1.35.0 -> v1.36.0
    Updating aws-sdk-sso v1.34.0 -> v1.35.0
    Updating aws-sdk-ssooidc v1.35.0 -> v1.36.0
    Updating aws-sdk-sts v1.34.0 -> v1.35.0
    Updating aws-smithy-runtime v1.6.1 -> v1.6.2
    Updating bytes v1.6.0 -> v1.6.1
    Updating cc v1.1.0 -> v1.1.2
    Updating clap_complete v4.5.7 -> v4.5.8
    Updating http-body v1.0.0 -> v1.0.1
      Adding prost v0.13.1
      Adding prost-derive v0.13.1
      Adding prost-types v0.13.1
    Updating secret-vault-value v0.3.8 -> v0.3.9
    Updating snapbox v0.6.11 -> v0.6.13
    Updating syn v2.0.70 -> v2.0.71
    Updating thiserror v1.0.61 -> v1.0.62
    Updating thiserror-impl v1.0.61 -> v1.0.62
note: pass `--verbose` to see 147 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* fix(anvil): return correct values for `eth_feeHistory` (#8436)

* add test

* fix(anvil): return correct last block data in feeHistory

* feat(template): improve workflow template (#8439)

Co-authored-by: Matthias Seitz <[email protected]>

* fix(coverage): add coverage only for function call kind (#8440)

fix(coverage): count covearge only for function call kind

* fix: vm dumpState consistent ordering  (#8445)

* use btree map to enforce ordering

* rm unused import

* feat(cheatcodes): add event expecter which supports anonymous events (#8429)

feat(cheatcodes): add event expecter which supports anonymous events with no indexed topics

* feat(coverage): report try-catch coverage (#8448)

* Updated the soldeer version to 0.2.18 and added extra CLI tests (#8441)

* Updated the soldeer version to 0.2.18 and added extra CLI tests

* Forgot to push the root files

* solving fmt

* Updated git handling to match the rust way

* fix(verify-bytecode): json print message with correct verification type (#8402)

* fix(verify-bytecode): json print message with correct verification type

* replace `input` of creation tx with local creation code before runtime match.

* feat: support absolute paths when matching paths (#7362)

* added support for absolute paths when running forge test --match-path (#7350)

* Changed how canonicalize() is called

Co-authored-by: Arsenii Kulikov <[email protected]>

* optimize

* upgrade tests to use snapbox

* Update test_cmd.rs

---------

Co-authored-by: Arsenii Kulikov <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: zerosnacks <[email protected]>

* feat(cast): improve to/from rlp (#8454)

* anvil/eth: Use the raw `v` signature value instead of `bool` (#7918)

* anvil/eth: Use the raw `v` signature value instead of `bool`

Instead of converting the boolean corresponding to the y parity byte to
a u64/U256, use the raw `v` value for the `v` field when available.

* anvil/eth: Use proper Parity signature in impersonate

The correct `v` value must be used when using a dummy signature,
depending on the transaction type (the Legacy transactions being the
ones needing a special case).

* anvil/eth: Use proper signature for creating txs

This fixes wrong hash being computed for transactions.

---------

Co-authored-by: zerosnacks <[email protected]>

* feat(EOF): enable EOF inspector (#8305)

* feat(EOF): enable EOF inspector

* fmt nightly

* bump inspectors

* update revm

* fix test

* rm compilers patch

* bump alloy and revm (#8460)

* bump alloy and revm

* fix test

* rm patch

* update lock

---------

Co-authored-by: Arsenii Kulikov <[email protected]>

* perf(invariant): do not include reverts in counterexample (#8459)

* feat(anvil): add mined transactions to state dump (#8411)

* fix(fork): preserve block number and timestamp when changing fork (#8466)

* fix(fork): preserve block number and timestamp when changing fork

* Minor test update, could have been failing if forks created at different blocks

* feat(coverage): Add support for remaining Yul types (#8461)

* feat(coverage): Add support for remaining Yul types

* Add YulFunctionDefinition support

* feat(anvil): add `trace_filter` endpoint (#8458)

* begin api

* add trace filter param

* filtering over blocks

* add filtered traces

* use trace block

* begin filtering on trace actions

* finish trace filtering

* filter by all trace actions

* begin adding trace to eth API

* begin tests

* block bound working

* default block ranges working

* filtering by address

* use latest block

* test passing

* test passing

* fix test

* add comments

* small comment change

* fix typo

* add sanity check for block range

* add after and count

* feat: better EOF/Prague support (#8471)

* wip

* [wip] better EOF support

* clippy

* fix tests

* fix tests

* bump block-explorers

* bump inspectors

* fix offsets for ext*calls

* fix: cargo deny (#8479)

* feat: ethGetAccount (#8477)

* feat: ethGetAccount

* adding await

* feat: support for EIP-7702 in Anvil (#8476)

feat: EIP-7702 support in Anvil

Co-authored-by: Matthias Seitz <[email protected]>

* fix(cast): mktx: add missing --path argument for blob txs (#8483)

Co-authored-by: Matthias Seitz <[email protected]>

* fix(cheatcodes): reset interpreter gas to the value of gas spent (#8481)

* fix(cheatcodes): do not record gas changes if exec frame not started

* Fix

* Fmt

* Use gas.spent(), enable repro test

* chore(deps): weekly `cargo update` (#8486)

Locking 19 packages to latest compatible versions
    Updating cc v1.1.2 -> v1.1.6
    Updating openssl v0.10.64 -> v0.10.65
    Updating openssl-sys v0.9.102 -> v0.9.103
    Updating portable-atomic v1.6.0 -> v1.7.0
    Updating redox_syscall v0.5.2 -> v0.5.3
    Updating scc v2.1.2 -> v2.1.4
    Updating sdd v0.2.0 -> v1.7.0
    Updating security-framework v2.11.0 -> v2.11.1
    Updating security-framework-sys v2.11.0 -> v2.11.1
    Updating thiserror v1.0.62 -> v1.0.63
    Updating thiserror-impl v1.0.62 -> v1.0.63
    Updating tokio v1.38.0 -> v1.38.1
    Updating toml v0.8.14 -> v0.8.15
    Updating toml_edit v0.22.15 -> v0.22.16
    Updating tracing-tracy v0.11.0 -> v0.11.1
    Updating tracy-client v0.17.0 -> v0.17.1
    Updating tracy-client-sys v0.22.2 -> v0.23.0
    Updating winnow v0.6.13 -> v0.6.14
    Updating zip v2.1.3 -> v2.1.5
note: pass `--verbose` to see 144 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* chore: 7702 error type correction (#8487)

chore: 7702 active error correction

Just realized this while going through https://github.com/foundry-rs/foundry/pull/8476 (sorry, nits!

* feat: `cast decode-eof` & `forge inspect <contract> eof` (#8478)

* feat: cast decode-eof & forge inspect <contract> eof

* add docs

* clippy

* fix tests

* review fixes

* fix: disable block gas limit for call --trace (#8496)

* use parameter configuration

* revert circuit_sequencer_api version bump

* Added zk specific things back, fix imports and move things back to common

* use backend error instead of database error

* use ecx inner in non zk context

* fix compilation errors

* forge fmt

* Fix failing tests and remove console log logic to avoid duplicating logs

* remove tracing to avoid failure in CI

* add back ConsoleLogParser

* update cargo lock

* use ansiterm instead

* use test_opts when creating multi runner

* Update foundry-compilers

* remove duplicated cheatcode inspector from stack

* use factory deps to retrieeve bytecodes in inspect

* bring back logs in inspector

* clippy

* Update HARDHAT_CONSOLE_ADDRESS import

* Revert "use factory deps to retrieeve bytecodes in inspect"

This reverts commit 5e2ba9af51180e10cd07f587f58c8af66ccf2c0e.

* delete backend and use forked crate

* cargo fmt

* add new fork to allow git

---------

Signed-off-by: Sally MacFarlane <[email protected]>
Co-authored-by: grandizzy <[email protected]>
Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: tesseract <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mattsse <[email protected]>
Co-authored-by: poma <[email protected]>
Co-authored-by: poma <[email protected]>
Co-authored-by: Swanny <[email protected]>
Co-authored-by: Arsenii Kulikov <[email protected]>
Co-authored-by: Zhuo Zhang <[email protected]>
Co-authored-by: morito <[email protected]>
Co-authored-by: m4rio <[email protected]>
Co-authored-by: Yash Atreya <[email protected]>
Co-authored-by: Ayene <[email protected]>
Co-authored-by: sodamntired <[email protected]>
Co-authored-by: Samuel Laferriere <[email protected]>
Co-authored-by: Paul Peregud <[email protected]>
Co-authored-by: Pawel Peregud <[email protected]>
Co-authored-by: funnybird <[email protected]>
Co-authored-by: fenghaojiang <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: Matt Solomon <[email protected]>
Co-authored-by: Frontier <[email protected]>
Co-authored-by: aganisgash <[email protected]>
Co-authored-by: HuyHuynh <[email protected]>
Co-authored-by: Qiwei Yang <[email protected]>
Co-authored-by: Serge Radinovich <[email protected]>
Co-authored-by: Federico Gimenez <[email protected]>
Co-authored-by: Valentin B <[email protected]>
Co-authored-by: dimazhornyk <[email protected]>
Co-authored-by: Dima Zhornyk <[email protected]>
Co-authored-by: James Kim <[email protected]>
Co-authored-by: Tuan Tran <[email protected]>
Co-authored-by: Federico Magnani <[email protected]>
Co-authored-by: drun <[email protected]>
Co-authored-by: Sally MacFarlane <[email protected]>
Co-authored-by: Azleal <[email protected]>
Co-authored-by: StackOverflowExcept1on <[email protected]>
Co-authored-by: EdwardJES <[email protected]>
Co-authored-by: lightclient <[email protected]>
Co-authored-by: matthewliu10 <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: Nicolas Gotchac <[email protected]>
Co-authored-by: rakita <[email protected]>
Co-authored-by: Danilo Tuler <[email protected]>
Co-authored-by: Luca Provini <[email protected]>
Co-authored-by: Ryan Schneider <[email protected]>
Co-authored-by: Shun Kakinoki <[email protected]>
Co-authored-by: Jrigada <[email protected]>
Co-authored-by: Nisheeth Barthwal <[email protected]>
Co-authored-by: elfedy <[email protected]>
Karrq pushed a commit to matter-labs/foundry-zksync that referenced this pull request Aug 14, 2024
* feat(fuzz) - add test progress (#7914)

* feat(forge) - add test progress

* Code cleanup

* Invariant progress bar cleanup

* Display number of threads and shrink run counter

* Add progress for regular fuzz tests too

* Cleanup code, use rayon collect

* Changes after review. Cleanup

* Fix clippy

* chore: update lockfile

* chore: propagate fmt parser errors (#8109)

* chore: add test for #2851 (#8112)

chore: add test for 2851

* fix: bypass block gas limit if disabled (#8111)

* feat: Add block id to cast (#8074)

* add blockId to cast

* Update opts.rs

* Update main.rs

* Update main.rs

* update

* tests

---------

Co-authored-by: DaniPopes <[email protected]>

* fix(invariant): exclude default addresses from senders (#8118)

* fix(invariant): exclude default addresses from senders

* Changes after review: use array instead vec

* chore(deps): weekly `cargo update` (#8120)

Updating git repository `https://github.com/bluealloy/revm.git`
    Updating git repository `https://github.com/alloy-rs/alloy`
    Updating git repository `https://github.com/paradigmxyz/revm-inspectors`
     Locking 37 packages to latest compatible versions
    Updating alloy-dyn-abi v0.7.4 -> v0.7.5
    Updating alloy-json-abi v0.7.4 -> v0.7.5
    Updating alloy-primitives v0.7.4 -> v0.7.5
    Updating alloy-sol-macro v0.7.4 -> v0.7.5
    Updating alloy-sol-macro-expander v0.7.4 -> v0.7.5
    Updating alloy-sol-macro-input v0.7.4 -> v0.7.5
    Updating alloy-sol-type-parser v0.7.4 -> v0.7.5
    Updating alloy-sol-types v0.7.4 -> v0.7.5
    Updating anstyle-query v1.0.3 -> v1.1.0
    Updating aws-config v1.5.0 -> v1.5.1
    Updating aws-sdk-kms v1.29.0 -> v1.30.0
    Updating aws-sdk-sso v1.27.0 -> v1.29.0
    Updating aws-sdk-ssooidc v1.28.0 -> v1.30.0
    Updating aws-sdk-sts v1.28.0 -> v1.29.0
    Updating aws-smithy-runtime v1.5.4 -> v1.5.5
    Updating aws-smithy-runtime-api v1.6.1 -> v1.6.2
    Updating aws-types v1.3.0 -> v1.3.1
    Updating cc v1.0.98 -> v1.0.99
    Updating clap v4.5.4 -> v4.5.6
    Updating clap_builder v4.5.2 -> v4.5.6
    Updating clap_complete v4.5.2 -> v4.5.5
    Updating clap_complete_fig v4.5.0 -> v4.5.1
    Updating clap_derive v4.5.4 -> v4.5.5
    Updating clap_lex v0.7.0 -> v0.7.1
    Updating evmole v0.3.3 -> v0.3.4
    Removing heck v0.4.1
    Updating hyper v0.14.28 -> v0.14.29 (latest: v1.3.1)
    Updating proc-macro2 v1.0.84 -> v1.0.85
    Updating ruint v1.12.1 -> v1.12.3
    Updating ruint-macro v1.2.0 -> v1.2.1
    Updating strum_macros v0.26.3 -> v0.26.4
    Updating syn-solidity v0.7.4 -> v0.7.5
    Updating toml v0.8.13 -> v0.8.14
    Updating toml_edit v0.22.13 -> v0.22.14
    Updating unicode-width v0.1.12 -> v0.1.13
    Updating utf8parse v0.2.1 -> v0.2.2
    Updating webpki-roots v0.26.1 -> v0.26.2
    Updating winnow v0.6.9 -> v0.6.13
note: pass `--verbose` to see 154 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* Support WalletOpts in `cast wallet derive-private-key` command (#8119)

* Support WalletOpts in `cast wallet derive-private-key` command

* rename cast wallet `derive-private-key` to `private-key`

* fix formatting

* Add aliases

* verbose flag

* tests

* Make output format more consistent with other subcommands

* hide legacy aliases

* derivation path

---------

Co-authored-by: poma <[email protected]>

* Feat: add solc & evm version to anvil readme (#7945)

* Update README.md

* add forge

* feat: add too many warnings error variant (#8125)

* feat: add too many warnings error variant

* docs: add to readme

* fix(forge): preserve state of persisted accounts on rollFork(tx) / transact (#8129)

* fix(forge): preserve state of persisted accounts on rollFork to tx / transact

* Changes after review: cleaner way to check if account persistent

* chore: add roll fork invariant test with handler state (#8130)

* fix(forge): needs a aws-kms feature to allow for continued support of the --aws flag (#8131)

* fix(release): build forge and cast with aws support on release (#8132)

* fix(release): build forge and cast with aws support on release

* fix(release): add support for aws-kms features for docker and releases

* bump compilers (#8126)

* fix(forge): fix the bug where source code incorrectly overlaps during debugging (#8134)

* fix: remove hardcoded retries (#8141)

* chore(deps): Bump alloy 14ed25d (#8128)

* chore: bump alloy 14ed25d

* Format files

* format: Remove unnecessary trailing comma updates

* Fix to update only alloy in Cargo.lock

* common: Enable eth feature for allot-rpc-types

* Enable eth feature for alloy-rpc-types

* bump alloy

* new retry changes

---------

Co-authored-by: Matthias Seitz <[email protected]>

* perf: don't unnecessarily create CheatsConfig (#8143)

* chore: improve test timings and cleanup (#8144)

* chore(evm): clean up executor methods some more (#8104)

* chore(evm): clean up executor methods some more

* fix: rename _committing to transact_, further clarify the separation

* chore: simplify is_success further

* chore: don't clone executor in unit tests

* Allow to specify entropy when generating new mnemonic with cast (#8145)

* Allow to specify entropy when generating new mnemonic with cast

* change print color to yellow, a standard warning color

---------

Co-authored-by: poma <[email protected]>

* fix: Soldeer: Fixed the url bug, it should be optional (#8155)

* Fixed the url bug, it should be optional

* added serde skip serializing

* feat: display source name in debugger (#8154)

* feat: display source name in debugger

* fmt

* clippy

* refactor

* feat(build): add option to build specific dir (#8149)

* feat(build): add option to build specific dir

* Changes after review:
- use source_files_iter helper, build single files and child dirs as well
- rename arg to paths, use 0.. pos arg

* Changes after review: reuse MultiCompilerLanguage::FILE_EXTENSIONS

* migrate(`forge-bind`): to alloy (#7919)

* migrate(forge-bind): to alloy - boilerplate and `SolMacroGen` type

* tokens to `SolInput`

* use SolInputKind

* update alloy-core deps version and use expand

* write cargo.toml

* alloy: write_to_module

* use `tokens_for_sol` from lib

* write to single_file

* nit

* nit

* add sol attr

* nits

* add alloy `Filter` and reuse get_json_files

* fix: throw err instead of panic!

* nits

* check cargo toml

* check existing alloy bindings

* clippy nits

* fmt

* doc nits

* clean up and nits

* extract `sol_macro_gen` to separate crate

* can specify alloy version

* nit

* warning nit

* clippy nit

* nit

Co-authored-by: DaniPopes <[email protected]>

* pretty fmt before writing

* nit: format!

* populate bytecode attr

* clippy

* nit

Co-authored-by: Matthias Seitz <[email protected]>

* fmt nits

* clippy

* parse path to `SolInput` directly

* fix: artifact duplication

* dedup faster

* add sol attributes

* fix: alloy dep

* clippy

* clippy nits

---------

Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* chore: add known error codes (#8166)

add known error codes

* fix: enable cache when `--build-info` is enabled (#8164)

fix: enable cache when --build-info is enabled

* fix(forge-bind): alloy deps and file consistency check (#8167)

* fix(forge): alloy deps in bind

* nit: braces

Co-authored-by: DaniPopes <[email protected]>

* fix(bind): file consistency check

* chore: unknown lints

---------

Co-authored-by: DaniPopes <[email protected]>

* perf: slightly improve inspector stack (#8169)

* feat(invariant): introduce `afterInvariant` function (#8106)

* feat(invariant): introduce tearDown function

* Add Tests

* Fix tests

* tearDown -> afterInvariant refactor

* Group has_invariants with tmp_tracing

* fix(forge-bind): allow attrs and mod single_file imports (#8171)

* fix(forge-bind): allow attrs and mod single_file imports

* fmt nit

* allow rustdoc::all

* fix: file consistenct check

* fix clippy

* chore(deps): weekly `cargo update` (#8172)

* chore(deps): weekly `cargo update`

    Updating git repository `https://github.com/bluealloy/revm.git`
    Updating git repository `https://github.com/alloy-rs/alloy`
    Updating git repository `https://github.com/paradigmxyz/revm-inspectors`
     Locking 45 packages to latest compatible versions
    Updating alloy-chains v0.1.18 -> v0.1.20
    Updating aws-runtime v1.2.2 -> v1.2.3
    Updating aws-sigv4 v1.2.1 -> v1.2.2
    Updating aws-smithy-runtime-api v1.6.2 -> v1.7.0
    Updating aws-smithy-types v1.1.10 -> v1.2.0
    Updating clap v4.5.6 -> v4.5.7
    Updating clap_builder v4.5.6 -> v4.5.7
    Updating derive_more v0.99.17 -> v0.99.18
    Updating fs4 v0.8.3 -> v0.8.4
    Updating http-body-util v0.1.1 -> v0.1.2
    Updating httparse v1.8.0 -> v1.9.3
      Adding icu_collections v1.5.0
      Adding icu_locid v1.5.0
      Adding icu_locid_transform v1.5.0
      Adding icu_locid_transform_data v1.5.0
      Adding icu_normalizer v1.5.0
      Adding icu_normalizer_data v1.5.0
      Adding icu_properties v1.5.0
      Adding icu_properties_data v1.5.0
      Adding icu_provider v1.5.0
      Adding icu_provider_macros v1.5.0
    Updating idna v0.5.0 -> v1.0.0
    Updating interprocess v2.1.1 -> v2.2.0
      Adding litemap v0.7.3
    Updating memchr v2.7.2 -> v2.7.4
    Updating redox_syscall v0.5.1 -> v0.5.2
    Updating regex v1.10.4 -> v1.10.5
    Updating regex-automata v0.4.6 -> v0.4.7
    Updating regex-lite v0.1.5 -> v0.1.6
    Updating regex-syntax v0.8.3 -> v0.8.4
    Updating rustls v0.23.9 -> v0.23.10
      Adding stable_deref_trait v1.2.0
      Adding synstructure v0.13.1
      Adding tinystr v0.7.6
    Removing unicode-bidi v0.3.15
    Updating url v2.5.0 -> v2.5.1
      Adding utf16_iter v1.0.5
      Adding utf8_iter v1.0.4
      Adding write16 v1.0.0
      Adding writeable v0.5.5
      Adding yoke v0.7.4
      Adding yoke-derive v0.7.4
      Adding zerofrom v0.1.4
      Adding zerofrom-derive v0.1.4
      Adding zerovec v0.10.2
      Adding zerovec-derive v0.10.2
note: pass `--verbose` to see 158 unchanged dependencies behind latest

* allow unicode

---------

Co-authored-by: mattsse <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump alloy, revm (#8177)

* chore(deps): bump alloy, revm

* doctests

* feat: debug_getRawTransaction RPC endpoint (#8162)

* feat: debug_getRawTransaction rpc endpoint

* clippy happy

* conflicts resolved

* chore: tests + refactor

* fix

* fix(invariant): weight invariant selectors by number of selectors (#8176)

* fix(invariant): weight invariant selectors by number of selectors

- Consolidate FuzzRunIdentifiedContracts logic
- add function to flatten contracts function in order to be used by strategy
- test

* Changes after review: cleanup

* perf: reduce clones in fuzzed_functions (#8178)

* bump compilers (#8153)

* [do not merge] patch compilers

* fix import

* fix doc

* update patch

* rm patch

* fix: make `paths` a positional argument (#8158)

* fix: move paths to BuildArgs

* tests

* dirs -> paths

* chore(deps): pin alloy 0.1.1 (#8182)

* chore(deps): pin alloy 0.1.1

* bump revm and apply patch

* perf: new-type TargetedContracts (#8180)

* feat: cast etherscan-source --flatten (#8159)

* fix(anvil): block dumps (#8160)

* implemented latest_block dump/load

* update to dump/load all blocks instead of only latest

* refactored state loading into storage.rs, and added load-dump cycle test

* fix clippy errors for anvil

* remove SerializableHeader and use Header (now serializable)

* clippy happy

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat(invariant): add excludeSelectors() filter (#8185)

* feat(invariant): add excludeSelectors() filter

* Apply suggestions from code review

Co-authored-by: DaniPopes <[email protected]>

* Review changes: shorter err message

---------

Co-authored-by: DaniPopes <[email protected]>

* fix(cheatcodes): use `call.bytecode_address` in mockCalls (#8184)

* fix(cheatcodes): handle delegatecalls in vm.mockCalls using `bytecode_address`

* add: repro test

* nit: forge fmt

* chore: remove rU256 alias (#8188)

* pick a random value for prevrandao for each block (#8187)

Co-authored-by: Pawel Peregud <[email protected]>

* chore: fix patches (#8189)

* perf: optimize load_contracts (#8190)

* chore(deps): move more deps to workspace (#8192)

* feat(cast): ux upgrade cast block returning block time in readable format.  (#8195)

* feat(cast): support readable time for cast block

* fix: remove `time`

* Update crates/common/src/fmt/ui.rs

* fmt

---------

Co-authored-by: fenghaojiang <[email protected]>
Co-authored-by: DaniPopes <[email protected]>

* chore: fix flaky invariant tests (#8199)

* feat(anvil): switch to `alloy` types (#8186)

* update to use anvil rpc types

Co-authored-by: moricho <[email protected]>

* remove redundant types

* use Index from Alloy

* update rev

* switch to use alloy-rpc-types-anvil patch

* use Index from `alloy_rpc_types_eth` instead of duplicate implementation in `alloy_rpc_types_anvil`

* use Index from rpc_types

* move namespaced imports of rpc-types-* to rpc-types metacrate

* make sure to enable "eth" namespace because default features are not enabled

---------

Co-authored-by: moricho <[email protected]>

* fix(verify-bytecode): use strong equality `==`,  not `.starts_with` (#8200)

* fix: `--isolate` fixes and daily CI job (#8194)

* feat: add daily CI job for `--isolate` feature

* fix tests

* wip

* fix tests

* wip

* wip

* fix

* update group name for nextest

* perf(cheatcodes): outline cold paths in inspector step (#8197)

* test: unflake an anvil test (#8204)

* chore: fix docstring and add tests for random cheats (#8202)

* fix(invariant): show labels when failure replay (#8201)

* chore(deps): bump alloy to `0.1.2`, remove patch (#8205)

* remove patch, update to `0.1.2`, marking `0.1.*` for flexibility

* revert `0.1.*`, pin to `0.1.2`

* perf: optimize inspector stack dispatching (#8206)

* chore: consolidate TestResult logic (#8208)

* chore: consolidate TestResult logic

* Update crates/forge/src/result.rs

Co-authored-by: DaniPopes <[email protected]>

* Changes after review: pass by value

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: remove TestResult.to_owned (#8210)

* feat: add --no-request-size-limit option to anvil (#8209)

* feat: add --no-request-size-limit option to anvil

* chore: flip logic, fmt, improve cli help

* nit

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: fix more clippy (#8211)

* chore: fix more clippy

* chore: missing lints.workspace

* docs

* fix: update bytecode matching for coverage (#8214)

* fix: update bytecode matching for coverage

* clippy

* chore: factor out common code

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: enable redundant-lifetimes lint (#8212)

* fix: correct the hyperlinks related to JSON-RPC. (#8215)

* Correct the hyperlinks related to JSON-RPC.

* chore: revert testdata changes

---------

Co-authored-by: DaniPopes <[email protected]>

* fix: Re-edited to delete the language choose (#8218)

Re-edited to delete the language choose

* ci: pin vyper to 0.3 (#8219)

* chore(deps): bump revm 10.0, un-git revm-inspectors (#8220)

* fix: use delay tick behaviour (#8221)

* ci: remove crate docs redirection

* fix: breaking change in revm-inspectors

* ci: enable index page for crate docs

* chore(evm): use u64 for gas limit (#8226)

* docs: update Backend and MultiFork docs (#8229)

* chore(deps): weekly `cargo update` (#8230)

Locking 9 packages to latest compatible versions
    Updating alloy-chains v0.1.21 -> v0.1.22
    Updating aws-types v1.3.1 -> v1.3.2
    Updating clap_complete v4.5.5 -> v4.5.6
    Updating displaydoc v0.2.4 -> v0.2.5
    Updating lazy_static v1.4.0 -> v1.5.0
    Updating proc-macro2 v1.0.85 -> v1.0.86
    Updating proptest v1.4.0 -> v1.5.0
    Removing spin v0.5.2
    Updating subtle v2.5.0 -> v2.6.0
    Updating syn v2.0.66 -> v2.0.67
note: pass `--verbose` to see 160 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* feat(evm): collect logs from execution result (#8231)

* chore(evm): make Executor fields private (#8233)

* feat: improve test function classification (#8235)

* chore: tweak tracing spans and events (#8237)

* chore: tweak profiles, rename debug-fast to profiling, remove local (#8238)

* chore: cleanup invariant test code (#8236)

* chore: cleanup invariant test code

* Changes after review, RefCell invariant test data struct

* fix: use tx.into_signed directly (#8243)

* fix: overflow in randomUint (#8239)

* fix: use inclusive check for logs range fetch in fork (#8245)

* feat: extract ABIs and formatting code into separate crates (#8240)

* feat: extract ABIs and formatting code into separate crates

* reorder

* features

* hex

* doctests

* feat: add feature to enable tracy (#8247)

* chore: clean up ds-test failure related code (#8244)

* feat: add feature to enable tracy

* perf: add more early returns in is_success logic

* try

* readd snapshot check

* update

* com

* docs

* clean

* chore: remove extra checks

* fix

* fix(invariant): do not continue test runs if invariant fails (#8253)

* fix(invariant): exit early if invariant fails in initial state (#8252)

* Fix: Check empty input bytecode in `find_by_deployed_code_exact`    (#8257)

* fix: find by deployed code extract

* chore: add unit test

* chore: minor refactor

* refactor: reduce code duplication for assertion cheats and introduce `legacy_assertions` flag (#8251)

* wip

* refactor: reduce code duplication for assertion cheatcodes + legacy_assertions config option

* fix

* fix

* feat: `CheatcodesExecutor` + `vm.deployCode` (#8181)

* wip

* wip

* wip

* clean up

* fix vm.transact traces

* clean up

* clippy

* cargo cheats

* review fixes

* clippy

* tests

* clippy

* cargo cheats

* const -> static

* fmt

* clippy

* fix doc

* chore: fmt

* fix: doc

* fix: doc

* increase depth for failing test

* review fixes

* reduce diff

* rename

* call_with_executor

* chore: keep dbext methods with auto_impl attribute

---------

Co-authored-by: DaniPopes <[email protected]>

* refactor: use `revm-inspectors` traces for debugger (#8249)

* move calldata to DebugNode

* refactor: use tracer from inspectors for debugger

* fix: rm hex

* clippy

* bump inspectors

* newline

* docs

* fix

* fmt

* feat(coverage): exit early if tests failed (#8268)

* feat(invariant): collect coverage during runs (#8265)

* fix(invariant): collect coverage during runs

* Collect coverage only if in forge coverage execution

* Do not check exec context

* chore: remove an unnecessary debug log (#8270)

* fix: correctly adjust depth when calling cheatcodes with `--isolate` (#8273)

fix: correctly adjust depth when calling cheatcodes with --isolate

* fix: `trace_debugTransaction` is inconsistent with geth's responses for tracer 'callTracer' (#6884)

* fix: add CallTracer in anvil

* fix: extra if let

* try impl geth_trace

* fix: return empty for non supported tracers

* fix: types import

* fix: rustfmt

* fix

* fix: type

* fix: change to return Result

* fix: clippy

* fix: match

* fix: merge

* chore: simplify

---------

Co-authored-by: DaniPopes <[email protected]>

* chore: reduce verbosity for ext tests (#8275)

* feat(forge): prettify `ir` and `irOptimized` inspect outputs (#8272)

* feat(anvil): fork from transaction hash (#8228)

* add --fork-transaction-hash

* reinstate with_fork_block_number()

* move forkchoice to config module and add comments

* partially get txn replay implemented

* unexpected tx hash test

* Reinstate with_fork_block_number()

* fix miner poll logic

* get full block

* rm todos

* fix miner poll logic

* rpc to typed conversion

* initial tests pass

* move forkchoice struct

* try_from

* fin tests

* rename replays and rm unwrap

* choice to block num usage

* lint

* none on constructor

* break out miner constructor

* add derive fn

* single line w force txns

* chore: touchups

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore: make clippy happy (#8286)

* Update prune-prereleases.js to keep 30 nightlies around (#8282)

* fix: vm rpc encoding (#8288)

* fix: vm rpc encoding

* fix test

* convert fixedbytes to bytes

* forge fmt

* take size from fixed bytes

* convert addr to bytes

* feat: implement EOF methods in Inspector trait (#8123)

* feat: implement EOF methods in Inspector trait

* create and eofcreate refactored

* create_end and eofcreate_end refactored

* log_debug_fn

* move allow_cheatcodes_fn from CreateParams to create_common arg

* pass caller value

* fix tests that require modified CreateInputs.caller to be propagated

* use FnMut bounds for closures and remove dyn aliases

* fix end_common

* fix tests

* log_debug_fn uses CreateScheme instead of full input

* introduce CommonCreateInput trait

* introduce CommonEndInput trait

* recover referecens to ecx.inner

* end_common -> create_end_common and docs

* move legacy/EOF traits and types to inspector::utils

* updates for latest revm

* add missing inspector::utils mod def

* fix build

* fix(cheatcodes): fallback to string if invalid 0x hex (#8290)

* test: update snekmate rev (#8295)

* test: update snekmate rev

* chore: bump vyper

* feat: `legacy_assertions` config option (#8263)

* apply_full

* feat: legacy_assertions flag

* forge fmt

* fix test

* fix docs

* fix: test

* legacy_assertions -> assertions_revert

* legacy_assertions

* fix: enable legacy assertions for legacy ext tests

* update README

* feat: reduce default gas limit to ~1B (#8274)

* feat: reduce default gas limit to ~1B

* com

* chore(cast): improve vanity help (#8296)

* chore: use is_zero directly (#8297)

* fix: forkchoice match checks (#8299)

* perf: borrow output when building test runner (#8294)

* chore: borrow output when building test runner

* chore: strip always

* chore: lenient stripping

* fix

* fix: don't actually strip always

* chore(deps): bump foundry-compilers (#8291)

* chore(deps): bump foundry-compilers

* bumpies

* chore: update fixtures after forge-std release (#8302)

* chore: update fixtures after forge-std release

* fix

* chore(deps): bump revm-inspectors (#8300)

* chore(deps): bump revm-inspectors

* fix

* fix2

* inline

* fix3

* docs(cast): improve vanity help naming (#8306)

* chore(deps): weekly `cargo update` (#8303)

Locking 44 packages to latest compatible versions
    Updating alloy-chains v0.1.22 -> v0.1.23
    Updating alloy-consensus v0.1.2 -> v0.1.3
    Updating alloy-contract v0.1.2 -> v0.1.3
    Updating alloy-eips v0.1.2 -> v0.1.3
    Updating alloy-genesis v0.1.2 -> v0.1.3
    Updating alloy-json-rpc v0.1.2 -> v0.1.3
    Updating alloy-network v0.1.2 -> v0.1.3
    Updating alloy-provider v0.1.2 -> v0.1.3
    Updating alloy-pubsub v0.1.2 -> v0.1.3
    Updating alloy-rlp v0.3.5 -> v0.3.7
    Updating alloy-rlp-derive v0.3.5 -> v0.3.7
    Updating alloy-rpc-client v0.1.2 -> v0.1.3
    Updating alloy-rpc-types v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-anvil v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-engine v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-eth v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-trace v0.1.2 -> v0.1.3
    Updating alloy-rpc-types-txpool v0.1.2 -> v0.1.3
    Updating alloy-serde v0.1.2 -> v0.1.3
    Updating alloy-signer v0.1.2 -> v0.1.3
    Updating alloy-signer-aws v0.1.2 -> v0.1.3
    Updating alloy-signer-gcp v0.1.2 -> v0.1.3
    Updating alloy-signer-ledger v0.1.2 -> v0.1.3
    Updating alloy-signer-local v0.1.2 -> v0.1.3
    Updating alloy-signer-trezor v0.1.2 -> v0.1.3
    Updating alloy-transport v0.1.2 -> v0.1.3
    Updating alloy-transport-http v0.1.2 -> v0.1.3
    Updating alloy-transport-ipc v0.1.2 -> v0.1.3
    Updating alloy-transport-ws v0.1.2 -> v0.1.3
    Updating bitflags v2.5.0 -> v2.6.0
    Updating cc v1.0.100 -> v1.0.102
    Updating clap v4.5.7 -> v4.5.8
    Updating clap_builder v4.5.7 -> v4.5.8
    Updating clap_complete v4.5.6 -> v4.5.7
    Updating clap_derive v4.5.5 -> v4.5.8
    Updating either v1.12.0 -> v1.13.0
    Updating evmole v0.3.4 -> v0.3.6
    Updating log v0.4.21 -> v0.4.22
    Updating mime_guess v2.0.4 -> v2.0.5
    Updating num-bigint v0.4.5 -> v0.4.6
    Updating serde_json v1.0.117 -> v1.0.118
    Updating subtle v2.6.0 -> v2.6.1
    Updating tinyvec v1.6.0 -> v1.6.1
    Updating uuid v1.9.0 -> v1.9.1
note: pass `--verbose` to see 166 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* fix: suppress compile reporting for forge flatten (#8313)

* perf: only instantiate Vyper when necessary (#8307)

* chore: pin forge-std in tests + CI job to bump it (#8308)

* chore: update dev shell flake (#8314)

Updated to latest Rust toolchain version (v1.79). The rust overlay
doesn't use `flake-utils` anymore. Switched to solc 0.8.23 since that's
the default for the tests. Moved around the deps to be more in line with
recommendations (`buildInputs` for things that get linked and
`nativeBuildInputs` for what's needed during compilation only,
`packages` for things that are not needed at compile time).

* fix: set next block timestamp as late as possible (#8311)

* feat(cheatcodes): add rpc with url overload (#8316)

* chore(verify-bytecode: refactor code for preventing code duplications (#8292)

* fix: find by deployed code extract

* chore: add unit test

* chore: minor refactor

* feat: minor refactor

* feat: remove unused imports

* feat: remove unused imports

* test: fix unit test

* fix: check whether tx is tx creation

* Updating soldeer to version 0.2.16 (#8320)

* chore: tweak profiles once more (#8317)

* fix: only force include txs on first ready poll (#8325)

* chore: include tx in setup output (#8324)

* feat(coverage): add option to ignore directories and files from coverage report (#8321)

* feat: add option to ignore directories from coverage report

* add docs, rename no-coverage-path to ignore-coverage-path

* cargo fmt

* small refactor

* revert formatting changes

* revert formatting

* path_pattern_ignore_coverage -> coverage_pattern_inverse

* use regex instead of glob

* re-enable ignoring of sources after report

* fix formatting

* add basic filter test

* remove redundant Path cast

* use HashMap::retain

* greatly simplify, remove CoverageFilter

* move constants out of filter map

---------

Co-authored-by: dimazhornyk <[email protected]>
Co-authored-by: Dima Zhornyk <[email protected]>

* feat(anvil): more flexible configuration `LogCollector` (#8328)

* wip

* separate console.log events under node::console

* rename

* fix

* fix: clippy + docs

* chore(template): update script template to deploy `Counter` contract (#8330)

update script template to deploy Counter contract

* chore(evm): extract create2 deployer deployer constant (#8331)

* chore: increase tx timeout (#8333)

* `foundry-fork-db` integration (#8329)

* initial commit

* [wip] use alloy-fork-db

* fix: tests

* foundry-fork-db

* fmt

* fix: deny.toml

* feat: better dropped tx check (#8335)

* feat: better dropped tx check

* review fixes

* chore(tests): bump forge-std version (#8336)

* fix(anvil): anvil_setLoggingEnabled should correctly enabled / disable logging (#8327)

* fix anvil_setLoggingEnabled

* fix fmt issues

* Soldeer release v0.2.17 (#8344)

* Soldeer release v0.2.17

* solved failing test

* feat(forge): option to replay last test run failures only (#8338)

* feat(forge): option to replay last test run failures

* Changes after review: rename option to --rerun
Small change in the way test match is extracted

* feat(cheatcodes): add vm.setBlockhash (#8258)

* intitial

* add set_blockhash method to DatabaseExt trait

* cargo cheats

* remove additional ;

* update to Evm group

* remove err handling

* adjust signature and add implementation for cheatcode

* lint

* update

* fix test

* fmt

* refactor based on reviews

* update docs for setBlockhash

* empty

* Update crates/forge/tests/it/invariant.rs

Co-authored-by: Matthias Seitz <[email protected]>

* add docs

* cargo cheats

---------

Co-authored-by: Matthias Seitz <[email protected]>

* fix: order of personal sign (#8350)

* Fixes dependency version format error (#8353)

* Soldeer release v0.2.17

* solved failing test

* Fixing the config error if the dependency is a string and not a map

* Adding untagged

* fixing fmt

* Adding a bit of documentation

* chore: regenerate HardhatConsole and patches (#8357)

chore: regenerate HardhatConsole

* test: use known contracts when decoding traces (#8358)

* ci: add required checks to merge (#8359)

* chore: add some additional etherscan api keys (#8360)

* chore: `threads` and `show_progress` per profile config (#8341)

* chore: allow max threads and show progress set per profile

* Changes after review: max_threads to threads/jobs

* Use short -j for jobs instead json

* Update crates/config/README.md

Co-authored-by: DaniPopes <[email protected]>

* Use usize for number of threads

---------

Co-authored-by: DaniPopes <[email protected]>

* test: relax unix time test once again (#8362)

* fix(cheatcodes): overflow in randomNumber w/range (#8361)

* fix: flaky assertion test (#8363)

* docs: fix doc lint (#8364)

* docs: fix doc lint

* escape quote

* feat(traces): use `TraceWriter`, delegating the formatting of the print trace to `revm-inspectors` (#8224)

* change to fork

* update fork

* add mutability to extend call traces, add decoder.decode

* clippy fixes

* extend_trace -> extend_traces

* update to latest rev

* add docs

* remove redundant clone

* clean up

* ignore ts_get_internal_operations_contract_selfdestruct_london for now as it is not supported by revm-inspector, uses &mut and only pass into the trace extender what is necessary

* fix clippy

* fix: otterscan selfdestruct

* bump revm-inspectors

* split decode_trace_arena and render_trace_arena

* revert unnecessary LogData -> CallLog change

* convert render_trace_arena to sync

* Update crates/forge/bin/cmd/test/mod.rs

Co-authored-by: DaniPopes <[email protected]>

* move clone to inside should_include

* fix clippy

* unify DecodedCallTrace and DecodedCallLog<'a> into DecodedItem<'a>

* fix clippy

* clone

* rm

* unify

* chore: simplify precompiles

---------

Co-authored-by: DaniPopes <[email protected]>

* feat(anvil): use Alloy otterscan types (#8318)

* deprecate src/eth/otterscan/types.rs

* fmt

* Revert "fmt"

This reverts commit bf1969f19c9009710eb5e08b26f3ae9f2070b3eb.

* (less) fmt

* requested changes

* CallType into String

* clippy + comment

---------

Co-authored-by: drun <[email protected]>
Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* test: add test for pk parsing (#8366)

* docs: add note about evm_version (#8369)

* test: ignore 502 in can_clone_keep_directory_structure (#8372)

* fix: join paths when passing args to forge build (#8371)

* fix: join paths when passing args to forge build

* fmt

---------

Co-authored-by: Matthias Seitz <[email protected]>

* fix: set both tx input fields (#8373)

* chore(deps): weekly `cargo update` (#8381)

Locking 43 packages to latest compatible versions
    Updating aws-config v1.5.1 -> v1.5.4
    Updating aws-runtime v1.3.0 -> v1.3.1
    Updating aws-sdk-kms v1.30.0 -> v1.35.0
    Updating aws-sdk-sso v1.29.0 -> v1.34.0
    Updating aws-sdk-ssooidc v1.30.0 -> v1.35.0
    Updating aws-sdk-sts v1.29.0 -> v1.34.0
    Updating aws-sigv4 v1.2.2 -> v1.2.3
    Updating aws-smithy-http v0.60.8 -> v0.60.9
    Updating aws-smithy-runtime v1.5.5 -> v1.6.1
    Updating aws-smithy-runtime-api v1.7.0 -> v1.7.1
    Updating aws-types v1.3.2 -> v1.3.3
    Updating castaway v0.2.2 -> v0.2.3
    Updating cc v1.0.102 -> v1.0.104
    Updating gcloud-sdk v0.24.7 -> v0.24.8
    Updating hyper v1.3.1 -> v1.4.0
    Updating hyper-util v0.1.5 -> v0.1.6
    Updating oorandom v11.1.3 -> v11.1.4
    Updating pest v2.7.10 -> v2.7.11
    Updating pest_derive v2.7.10 -> v2.7.11
    Updating pest_generator v2.7.10 -> v2.7.11
    Updating pest_meta v2.7.10 -> v2.7.11
    Updating revm-inspectors v0.3.0 -> v0.3.1
    Updating rustls-native-certs v0.7.0 -> v0.7.1
    Updating rustls-webpki v0.102.4 -> v0.102.5
    Updating scc v2.1.1 -> v2.1.2
    Updating serde v1.0.203 -> v1.0.204
    Updating serde_derive v1.0.203 -> v1.0.204
    Updating serde_json v1.0.118 -> v1.0.120
    Updating stability v0.2.0 -> v0.2.1
    Updating syn v2.0.68 -> v2.0.69
    Updating tinyvec v1.6.1 -> v1.7.0
    Updating windows-targets v0.52.5 -> v0.52.6
    Updating windows_aarch64_gnullvm v0.52.5 -> v0.52.6
    Updating windows_aarch64_msvc v0.52.5 -> v0.52.6
    Updating windows_i686_gnu v0.52.5 -> v0.52.6
    Updating windows_i686_gnullvm v0.52.5 -> v0.52.6
    Updating windows_i686_msvc v0.52.5 -> v0.52.6
    Updating windows_x86_64_gnu v0.52.5 -> v0.52.6
    Updating windows_x86_64_gnullvm v0.52.5 -> v0.52.6
    Updating windows_x86_64_msvc v0.52.5 -> v0.52.6
    Updating zerocopy v0.7.34 -> v0.7.35
    Updating zerocopy-derive v0.7.34 -> v0.7.35
    Updating zstd-sys v2.0.11+zstd.1.5.6 -> v2.0.12+zstd.1.5.6
note: pass `--verbose` to see 161 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* chore: don't build OpenChain client if offline (#8390)

* feat(invariant): exclude precompiles from senders (#8367)

* fix(invariant): exclude precompiles from senders

* More robust shrink test, use same test contract / bytecode

* chore(anvil): fix install cmd in README (#8393)

fix install cmd

Signed-off-by: Sally MacFarlane <[email protected]>

* chore: fix clippy (#8394)

* fuzz console log & test cases (#8387)

* fuze console log & test cases

test fuzz console.log

* rename to show_fuzz_logs

rename to show_fuzz_logs

* add logs field in FuzzTestData

add logs field in FuzzTestData

add logs field in FuzzTestData

* rename to show_logs

* removed `decoded_logs` in FuzzTestResult & refactored some code

fmt

* fmt

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore: decode test logs only once and if needed (#8396)

* feat: contract-level inline configs (#8388)

* feat: contract-level inline configs

* clippy

* Fix solang parser

* fixes

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): cargo update (#8397)

* chore(deps): cargo update

     Locking 45 packages to latest compatible versions
    Updating alloy-consensus v0.1.3 -> v0.1.4
    Updating alloy-contract v0.1.3 -> v0.1.4
    Updating alloy-dyn-abi v0.7.6 -> v0.7.7
    Updating alloy-eips v0.1.3 -> v0.1.4
    Updating alloy-genesis v0.1.3 -> v0.1.4
    Updating alloy-json-abi v0.7.6 -> v0.7.7
    Updating alloy-json-rpc v0.1.3 -> v0.1.4
    Updating alloy-network v0.1.3 -> v0.1.4
    Updating alloy-primitives v0.7.6 -> v0.7.7
    Updating alloy-provider v0.1.3 -> v0.1.4
    Updating alloy-pubsub v0.1.3 -> v0.1.4
    Updating alloy-rpc-client v0.1.3 -> v0.1.4
    Updating alloy-rpc-types v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-anvil v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-engine v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-eth v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-trace v0.1.3 -> v0.1.4
    Updating alloy-rpc-types-txpool v0.1.3 -> v0.1.4
    Updating alloy-serde v0.1.3 -> v0.1.4
    Updating alloy-signer v0.1.3 -> v0.1.4
    Updating alloy-signer-aws v0.1.3 -> v0.1.4
    Updating alloy-signer-gcp v0.1.3 -> v0.1.4
    Updating alloy-signer-ledger v0.1.3 -> v0.1.4
    Updating alloy-signer-local v0.1.3 -> v0.1.4
    Updating alloy-signer-trezor v0.1.3 -> v0.1.4
    Updating alloy-sol-macro v0.7.6 -> v0.7.7
    Updating alloy-sol-macro-expander v0.7.6 -> v0.7.7
    Updating alloy-sol-macro-input v0.7.6 -> v0.7.7
    Updating alloy-sol-type-parser v0.7.6 -> v0.7.7
    Updating alloy-sol-types v0.7.6 -> v0.7.7
    Updating alloy-transport v0.1.3 -> v0.1.4
    Updating alloy-transport-http v0.1.3 -> v0.1.4
    Updating alloy-transport-ipc v0.1.3 -> v0.1.4
    Updating alloy-transport-ws v0.1.3 -> v0.1.4
    Updating async-trait v0.1.80 -> v0.1.81
    Updating cc v1.0.104 -> v1.1.0
    Updating clap v4.5.8 -> v4.5.9
    Updating clap_builder v4.5.8 -> v4.5.9
    Updating rustls v0.23.10 -> v0.23.11
    Updating syn v2.0.69 -> v2.0.70
    Updating syn-solidity v0.7.6 -> v0.7.7
    Updating tinyvec v1.7.0 -> v1.8.0
    Updating toml_edit v0.22.14 -> v0.22.15
    Updating unicode-truncate v1.0.0 -> v1.1.0
    Updating uuid v1.9.1 -> v1.10.0

* updates

* chore: update deny to lessen spam

* refactor(common): use alloy retry layer (#8368)

* use alloy retry layer in RetryProvider

* nits

* rm built-in retry layer

* rm `timeout_retry`

* bump alloy

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump watchexec to 4 (#7864)

* chore(deps): bump watchexec to 4

* feat: implement the test spawn hook

* chore: lockfile

* chore: update

* doc

* chore: ignore gix CVEs in deny.toml

* chore: clippy

* feat(anvil): add callTracer support for debug_traceCall (#8375)

* apply state/block overrides and add callTracer support

* remove state/block override logic

* pass default config to TracingInspector

* fix comments

* add integration tests

* refactor handler

* add comments

* fix clippy

* update test to check for address

---------

Co-authored-by: Matthias Seitz <[email protected]>

* chore(deps): bump alloy-core (#8401)

* docs: remove mention of install location of `solc` in favor of detailed explanation in Foundry Book (#8403)

remove mention of install location, moving to https://book.getfoundry.sh/faq#im-getting-solc-errors

* refactor(tests): add snapbox (#8406)

* refactor(tests): add snapbox

* update some cast tests

* fix

* use str

* rm fixtures

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat: more flexible JSON parsing (#8345)

* support struct parsing

* wip

* support eip712 strings

* feat: "vm.parseJsonType"

* chore: docs

* clippy

* serialize

* forge bind-json

* make lib internal

* fixes

* fix docs

* rm redundant filter

* clippy

* generate more helpers

* add test

* typo

* refactor a bit

* fmt

* config section

* add out arg

* rm cfg(ignore)

* increase depth for failing test

* move proptest to workspace

* use write

* review fixes

* fix tests

* use GlobMatcher in config

* fix tests

* fmt

* fix(verify-etherscan): continue verification even if errors occur (#8407)

* fix(verify-etherscan): continue verification even if errors occur

* Apply suggestion

Co-authored-by: Matthias Seitz <[email protected]>

---------

Co-authored-by: Matthias Seitz <[email protected]>

* feat: identify internal function invocations in traces (#8222)

* fix: small debugger updates

* [wip] feat: identify internal function invocations in traces

* fmt

* doc

* correctly enable tracing

* correctly enable tracing

* collect contract definition locs

* feat: print traces in format of Contract::function

* wip

* refactor

* clippy

* fix doc

* track input/output values

* clippy

* clean up

* TraceMode

* small fixes

* add doc

* clippy

* safer decofing from stack and memory

* use Into<Option<TraceMode>>

* TraceMode::None

* fmt

* review fixes

* --decode-internal for single fn

* use Vec

* TraceMode builder

* optional --decode-internal and tests

* update doc

* InternalTraceMode

* fix(coverage): treat assert/require as lines instead branch (#8413)

* fix(coverage): treat assert/require as lines instead branch

* Changes after review: use snapbox assertion

* More cov tests ported

* Nicer pattern match

* fix(cast): correctly handle legacy chains (#8420)

fix: correctly handle legacy chains

* fix(evm): always decode EVM reverts (#8419)

* fix(coverage): lcov avoid double reporting for line hit (#8400)

* fix(anvil): return correct data for queries at forked block (#8428)

* add test

* fix

* rm unused

* fix(coverage): proper branch handling for if statement (#8414)

* fix(coverage): proper instruction mapping for first branch

* Add tests

* fix: correctly apply genesis (#8431)

* Add test

* fix: correctly apply genesis during fork reset

* fix(coverage): require should be branch (#8433)

* chore(deps): weekly `cargo update` (#8437)

Locking 17 packages to latest compatible versions
    Updating aws-sdk-kms v1.35.0 -> v1.36.0
    Updating aws-sdk-sso v1.34.0 -> v1.35.0
    Updating aws-sdk-ssooidc v1.35.0 -> v1.36.0
    Updating aws-sdk-sts v1.34.0 -> v1.35.0
    Updating aws-smithy-runtime v1.6.1 -> v1.6.2
    Updating bytes v1.6.0 -> v1.6.1
    Updating cc v1.1.0 -> v1.1.2
    Updating clap_complete v4.5.7 -> v4.5.8
    Updating http-body v1.0.0 -> v1.0.1
      Adding prost v0.13.1
      Adding prost-derive v0.13.1
      Adding prost-types v0.13.1
    Updating secret-vault-value v0.3.8 -> v0.3.9
    Updating snapbox v0.6.11 -> v0.6.13
    Updating syn v2.0.70 -> v2.0.71
    Updating thiserror v1.0.61 -> v1.0.62
    Updating thiserror-impl v1.0.61 -> v1.0.62
note: pass `--verbose` to see 147 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* fix(anvil): return correct values for `eth_feeHistory` (#8436)

* add test

* fix(anvil): return correct last block data in feeHistory

* feat(template): improve workflow template (#8439)

Co-authored-by: Matthias Seitz <[email protected]>

* fix(coverage): add coverage only for function call kind (#8440)

fix(coverage): count covearge only for function call kind

* fix: vm dumpState consistent ordering  (#8445)

* use btree map to enforce ordering

* rm unused import

* feat(cheatcodes): add event expecter which supports anonymous events (#8429)

feat(cheatcodes): add event expecter which supports anonymous events with no indexed topics

* feat(coverage): report try-catch coverage (#8448)

* Updated the soldeer version to 0.2.18 and added extra CLI tests (#8441)

* Updated the soldeer version to 0.2.18 and added extra CLI tests

* Forgot to push the root files

* solving fmt

* Updated git handling to match the rust way

* fix(verify-bytecode): json print message with correct verification type (#8402)

* fix(verify-bytecode): json print message with correct verification type

* replace `input` of creation tx with local creation code before runtime match.

* feat: support absolute paths when matching paths (#7362)

* added support for absolute paths when running forge test --match-path (#7350)

* Changed how canonicalize() is called

Co-authored-by: Arsenii Kulikov <[email protected]>

* optimize

* upgrade tests to use snapbox

* Update test_cmd.rs

---------

Co-authored-by: Arsenii Kulikov <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: zerosnacks <[email protected]>

* feat(cast): improve to/from rlp (#8454)

* anvil/eth: Use the raw `v` signature value instead of `bool` (#7918)

* anvil/eth: Use the raw `v` signature value instead of `bool`

Instead of converting the boolean corresponding to the y parity byte to
a u64/U256, use the raw `v` value for the `v` field when available.

* anvil/eth: Use proper Parity signature in impersonate

The correct `v` value must be used when using a dummy signature,
depending on the transaction type (the Legacy transactions being the
ones needing a special case).

* anvil/eth: Use proper signature for creating txs

This fixes wrong hash being computed for transactions.

---------

Co-authored-by: zerosnacks <[email protected]>

* feat(EOF): enable EOF inspector (#8305)

* feat(EOF): enable EOF inspector

* fmt nightly

* bump inspectors

* update revm

* fix test

* rm compilers patch

* bump alloy and revm (#8460)

* bump alloy and revm

* fix test

* rm patch

* update lock

---------

Co-authored-by: Arsenii Kulikov <[email protected]>

* perf(invariant): do not include reverts in counterexample (#8459)

* feat(anvil): add mined transactions to state dump (#8411)

* fix(fork): preserve block number and timestamp when changing fork (#8466)

* fix(fork): preserve block number and timestamp when changing fork

* Minor test update, could have been failing if forks created at different blocks

* feat(coverage): Add support for remaining Yul types (#8461)

* feat(coverage): Add support for remaining Yul types

* Add YulFunctionDefinition support

* feat(anvil): add `trace_filter` endpoint (#8458)

* begin api

* add trace filter param

* filtering over blocks

* add filtered traces

* use trace block

* begin filtering on trace actions

* finish trace filtering

* filter by all trace actions

* begin adding trace to eth API

* begin tests

* block bound working

* default block ranges working

* filtering by address

* use latest block

* test passing

* test passing

* fix test

* add comments

* small comment change

* fix typo

* add sanity check for block range

* add after and count

* feat: better EOF/Prague support (#8471)

* wip

* [wip] better EOF support

* clippy

* fix tests

* fix tests

* bump block-explorers

* bump inspectors

* fix offsets for ext*calls

* fix: cargo deny (#8479)

* feat: ethGetAccount (#8477)

* feat: ethGetAccount

* adding await

* feat: support for EIP-7702 in Anvil (#8476)

feat: EIP-7702 support in Anvil

Co-authored-by: Matthias Seitz <[email protected]>

* fix(cast): mktx: add missing --path argument for blob txs (#8483)

Co-authored-by: Matthias Seitz <[email protected]>

* fix(cheatcodes): reset interpreter gas to the value of gas spent (#8481)

* fix(cheatcodes): do not record gas changes if exec frame not started

* Fix

* Fmt

* Use gas.spent(), enable repro test

* chore(deps): weekly `cargo update` (#8486)

Locking 19 packages to latest compatible versions
    Updating cc v1.1.2 -> v1.1.6
    Updating openssl v0.10.64 -> v0.10.65
    Updating openssl-sys v0.9.102 -> v0.9.103
    Updating portable-atomic v1.6.0 -> v1.7.0
    Updating redox_syscall v0.5.2 -> v0.5.3
    Updating scc v2.1.2 -> v2.1.4
    Updating sdd v0.2.0 -> v1.7.0
    Updating security-framework v2.11.0 -> v2.11.1
    Updating security-framework-sys v2.11.0 -> v2.11.1
    Updating thiserror v1.0.62 -> v1.0.63
    Updating thiserror-impl v1.0.62 -> v1.0.63
    Updating tokio v1.38.0 -> v1.38.1
    Updating toml v0.8.14 -> v0.8.15
    Updating toml_edit v0.22.15 -> v0.22.16
    Updating tracing-tracy v0.11.0 -> v0.11.1
    Updating tracy-client v0.17.0 -> v0.17.1
    Updating tracy-client-sys v0.22.2 -> v0.23.0
    Updating winnow v0.6.13 -> v0.6.14
    Updating zip v2.1.3 -> v2.1.5
note: pass `--verbose` to see 144 unchanged dependencies behind latest

Co-authored-by: mattsse <[email protected]>

* chore: 7702 error type correction (#8487)

chore: 7702 active error correction

Just realized this while going through https://github.com/foundry-rs/foundry/pull/8476 (sorry, nits!

* feat: `cast decode-eof` & `forge inspect <contract> eof` (#8478)

* feat: cast decode-eof & forge inspect <contract> eof

* add docs

* clippy

* fix tests

* review fixes

* fix: disable block gas limit for call --trace (#8496)

* use parameter configuration

* revert circuit_sequencer_api version bump

* Added zk specific things back, fix imports and move things back to common

* use backend error instead of database error

* use ecx inner in non zk context

* fix compilation errors

* forge fmt

* Fix failing tests and remove console log logic to avoid duplicating logs

* remove tracing to avoid failure in CI

* add back ConsoleLogParser

* update cargo lock

* use ansiterm instead

* use test_opts when creating multi runner

* Update foundry-compilers

* remove duplicated cheatcode inspector from stack

* use factory deps to retrieeve bytecodes in inspect

* bring back logs in inspector

* clippy

* Update HARDHAT_CONSOLE_ADDRESS import

* Revert "use factory deps to retrieeve bytecodes in inspect"

This reverts commit 5e2ba9af51180e10cd07f587f58c8af66ccf2c0e.

* delete backend and use forked crate

* cargo fmt

* add new fork to allow git

---------

Signed-off-by: Sally MacFarlane <[email protected]>
Co-authored-by: grandizzy <[email protected]>
Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: tesseract <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mattsse <[email protected]>
Co-authored-by: poma <[email protected]>
Co-authored-by: poma <[email protected]>
Co-authored-by: Swanny <[email protected]>
Co-authored-by: Arsenii Kulikov <[email protected]>
Co-authored-by: Zhuo Zhang <[email protected]>
Co-authored-by: morito <[email protected]>
Co-authored-by: m4rio <[email protected]>
Co-authored-by: Yash Atreya <[email protected]>
Co-authored-by: Ayene <[email protected]>
Co-authored-by: sodamntired <[email protected]>
Co-authored-by: Samuel Laferriere <[email protected]>
Co-authored-by: Paul Peregud <[email protected]>
Co-authored-by: Pawel Peregud <[email protected]>
Co-authored-by: funnybird <[email protected]>
Co-authored-by: fenghaojiang <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: Matt Solomon <[email protected]>
Co-authored-by: Frontier <[email protected]>
Co-authored-by: aganisgash <[email protected]>
Co-authored-by: HuyHuynh <[email protected]>
Co-authored-by: Qiwei Yang <[email protected]>
Co-authored-by: Serge Radinovich <[email protected]>
Co-authored-by: Federico Gimenez <[email protected]>
Co-authored-by: Valentin B <[email protected]>
Co-authored-by: dimazhornyk <[email protected]>
Co-authored-by: Dima Zhornyk <[email protected]>
Co-authored-by: James Kim <[email protected]>
Co-authored-by: Tuan Tran <[email protected]>
Co-authored-by: Federico Magnani <[email protected]>
Co-authored-by: drun <[email protected]>
Co-authored-by: Sally MacFarlane <[email protected]>
Co-authored-by: Azleal <[email protected]>
Co-authored-by: StackOverflowExcept1on <[email protected]>
Co-authored-by: EdwardJES <[email protected]>
Co-authored-by: lightclient <[email protected]>
Co-authored-by: matthewliu10 <[email protected]>
Co-authored-by: zerosnacks <[email protected]>
Co-authored-by: Nicolas Gotchac <[email protected]>
Co-authored-by: rakita <[email protected]>
Co-authored-by: Danilo Tuler <[email protected]>
Co-authored-by: Luca Provini <[email protected]>
Co-authored-by: Ryan Schneider <[email protected]>
Co-authored-by: Shun Kakinoki <[email protected]>
Co-authored-by: Jrigada <[email protected]>
Co-authored-by: Nisheeth Barthwal <[email protected]>
Co-authored-by: elfedy <[email protected]>
@yash-atreya yash-atreya mentioned this pull request Sep 9, 2024
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.

2 participants