Conversation
1 task
a48d570 to
de15f57
Compare
mattsse
approved these changes
Jun 19, 2025
asdv23
added a commit
to mantle-xyz/revm-inspectors
that referenced
this pull request
Dec 4, 2025
* chore: Remove eof trace handlers (paradigmxyz#299) closes paradigmxyz#298 * chore(`deps`): bump revm to 24.0.0 (paradigmxyz#300) Bumps Revm to 24.0.0 New releases are out: https://github.com/bluealloy/revm/releases/tag/v74 Required for foundry-rs/foundry#10557 * chore: release 0.23.0 * chore: update deny.toml and upgrade CI workflow (paradigmxyz#302) Fixes failed `deny` check: https://github.com/paradigmxyz/revm-inspectors/actions/runs/15468046255/job/43544845990?pr=301 The `deny.toml` / CI was outdated, this should fix it Inspired by: https://github.com/alloy-rs/alloy/blob/main/.github/workflows/ci.yml and https://github.com/alloy-rs/alloy/blob/main/deny.toml Core of the CI flow is unchanged, only formatted Removes unused license exceptions as shown by `cargo deny --all-features check all` If `git` exceptions are required they can be re-added in the future * chore: remove EOF leftovers (paradigmxyz#301) Closes: paradigmxyz#174 (replaces it) Follow up of paradigmxyz#299 Removes `code_section_idx` that is EOF specific, as added in paradigmxyz#169 Keeps: `record_immediate_bytes` as I think it may be useful / still used by Foundry / is more readable. Undo's missed `ExtDelegateCall` from paradigmxyz#299 : paradigmxyz#156 Ref: https://github.com/paradigmxyz/revm-inspectors/pulls?q=is%3Apr+eof+is%3Aclosed * chore: release 0.23.1 * fix: deduct call opcode gas (paradigmxyz#304) fix gas accounting for call opcodes cc @sslivkoff @rakita * chore: release 0.24.0 * chore: bump revm v26.0.0 (paradigmxyz#303) * chore: release 0.25.0 * chore: add trace_addresses helper (paradigmxyz#306) prep for foundry-rs/foundry#10596 * chore(deps): bump to revm 27, alloy 1.2 (paradigmxyz#307) Bumps Revm to 27, Alloy to 1.2 Adds: BSD-2-Clause exception, previously approved in https://github.com/paradigmxyz/reth/blob/fcf58cb5acc2825e7c046f6741e90a8c5dab7847/deny.toml#L44 * chore: release 0.26.0 * fix: record state diffs for vm tracer (paradigmxyz#308) the vmtracer needs state diffs for https://github.com/alloy-rs/alloy/blob/c808022d571aaffb97a3429a0fdba6fc06e8f7aa/crates/rpc-types-trace/src/parity.rs#L659-L660 so that we enter here: https://github.com/paradigmxyz/revm-inspectors/blob/1c0e405ad008453cded08b44a3cfa2ca611a6aa8/src/tracing/mod.rs#L502-L502 and record the `step-storage_change` https://github.com/paradigmxyz/revm-inspectors/blob/1c0e405ad008453cded08b44a3cfa2ca611a6aa8/src/tracing/mod.rs#L507-L507 * chore: release 0.26.1 * fix: use revert directly (paradigmxyz#309) * chore: release 0.26.2 * fix: record manual revert pc (paradigmxyz#310) * chore: release 0.26.3 * chore: release 0.26.4 * fix: always record revert (paradigmxyz#311) * chore: release 0.26.5 * test: add top call revert test (paradigmxyz#312) ref paradigmxyz/reth#17255 * feat: use native BigInt with compatibility layer (paradigmxyz#314) Uses Boa's native BigInt support instead of relying on the polyfill while maintaining backward compatibility. ## Changes - Add BigInt.prototype.toJSON for JSON serialization compatibility - Create global 'bigint' alias (lowercase) for backward compatibility - Update to_bigint to use the lowercase bigint alias - Keep bigint.js polyfill file for potential fallback - Add comprehensive tests validating native BigInt functionality ## Compatibility The implementation maintains full backward compatibility: - The global `bigint` (lowercase) still exists and works as before - JSON serialization is supported through the added toJSON method - All existing tests pass without modification * feat: geth_erc7562_tracers addition (paradigmxyz#316) fixes paradigmxyz#315 * feat: add erc7562 config (paradigmxyz#317) add corresponding config * perf: outline edgecov step fn (paradigmxyz#318) Minimize the impact of `fn step` for the common case of not doing anything. * perf: pre alloc struct logs (paradigmxyz#319) this vec is huge for large txs and for every step we push an entry, so we can pre-alloc this * perf: optimize push_steps_on_stack to avoid temporary allocation (paradigmxyz#320) ## Summary Optimizes the `push_steps_on_stack` method to avoid creating a temporary vector allocation. ## Changes The previous implementation would: 1. Call `call_step_stack()` which creates a temporary `Vec` 2. Reverse iterate over that vec and extend the deque The new implementation: 1. Directly extends the deque with reversed steps (without computing `call_child_id`) 2. Iterates over the inserted range in reverse to set `call_child_id` values where needed * perf: allocate some more initial capacity for CallTraceArena (paradigmxyz#323) The `vec![]` macro only allocates for the number of elements. In `CallTraceArena::default()`, it only allocates 1, so when growing it the capacity doubles starting at 1, which is pretty inefficient. * fix(geth_tracer): keccak input edge cases (paradigmxyz#328) Covering few edge cases on memory copy. * fix: allow single digit hex strings (paradigmxyz#329) ref paradigmxyz/reth#16289 we need to patch uneven js input strings, which could be digits, this now behaves like geth's tracer https://github.com/ethereum/go-ethereum/blob/355228b011ef9a85ebc0f21e7196f892038d49f0/common/bytes.go#L27-L37 https://github.com/ethereum/go-ethereum/blob/355228b011ef9a85ebc0f21e7196f892038d49f0/eth/tracers/js/goja.go#L91-L91 * chore: release 0.27.0 * chore: use hashmap default (paradigmxyz#330) need to use default here * chore: release 0.27.1 * feat: updated msrv to 1.86.0 (paradigmxyz#331) * feat: boxed the decoded field (paradigmxyz#326) fixes paradigmxyz#324 * chore: decoded cleanups * feat: reused call trace stack (paradigmxyz#325) fixes paradigmxyz#321 --------- Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de> * chore: rm log clone (paradigmxyz#333) smol thing I found while looking at paradigmxyz/reth#17629 * chore(deps): bump revm 28.0.0, msrv 1.88 required for revm (paradigmxyz#334) Bumps to revm 28, bumps msrv to 1.88 as it is required for revm * chore: release 0.28.0 * feat(js): add logic to count current opcode cost instead of cumulative (paradigmxyz#336) Currently the revm-inspectors js tracer acts differently from the geth implementation where the `getCost()` function returns the cumulative amount of cost for each step instead of the individual opcode cost. I added a simple function that will store the previous spent value and then use that in the next step to calculate the currect opcode cost. * chore: make fns private (paradigmxyz#337) * chore: release 0.28.1 * chore: add default init callframe (paradigmxyz#338) defensive prep for alloy-rs/alloy#2748 * chore: add clone to storage inspector (paradigmxyz#340) ref paradigmxyz/reth#16022 * chore: clippy defense (paradigmxyz#339) prep for alloy-rs/alloy#2730 * chore: release 0.28.2 * chore: bump to revm 29 (paradigmxyz#341) no breaking changes inside `revm-inspectors` required for foundry-rs/foundry#11416 * chore: release 0.29.0 * chore(ci): upgrade checkout to v5 (paradigmxyz#342) Maintenance update to actions/checkout@v5 to align with the current runner stack (Node 24); nothing else modified. Release notes: https://github.com/actions/checkout/releases/tag/v5.0.0 * refactor(tracing): Update op to Cow (paradigmxyz#327) Closes paradigmxyz#322. Needs alloy-rs/alloy#2730. Using `Cow::Borrowed` to avoid the allocation from `to_string()`. --------- Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de> * feat: add index to log (paradigmxyz#344) ref alloy-rs/alloy#2748 closes paradigmxyz/reth#17629 * chore: release 0.29.1 * chore: remove debug (paradigmxyz#345) Default hash builder implements Debug conditionally * chore: remove clippy.toml (paradigmxyz#346) MSRV is inferred from Cargo.toml. * fix(`ci`): feature checks failing due to `std::` use (paradigmxyz#348) Fixes: https://github.com/paradigmxyz/revm-inspectors/actions/runs/17609870312/job/50029106190?pr=347 * chore: release 0.29.2 * chore: add `SECURITY.md` (paradigmxyz#347) Currently missing from the repo * perf: box CallTraceStep::storage_change (paradigmxyz#352) Same as paradigmxyz#324, plus a few nits. Reduces the size of `CallTraceStep` from 336 to 216 bytes on 64-bit. This is a gain overall because the vast majority of steps (>=95%) do not change storage. * perf: re-use returndata buffer (paradigmxyz#351) `return_data.buffer()` is `Bytes`. Cheaply clone it instead of creating a new copy. * chore: release 0.30.0 * chore: Remove depth and contract fields from CallTraceStep (paradigmxyz#355) closes paradigmxyz#354 * perf: remove step_stack (paradigmxyz#357) This stack should always be exactly 1 element, and the context should be the same in both `step` and `step_end`. This avoids unnecessary memory bandwidth and `arena` access in case of `!record` in the very hot `step` functions. * chore: simplify CallInputExt (paradigmxyz#356) * chore: rm doc_auto_cfg (paradigmxyz#360) * Fix return data in geth traces (paradigmxyz#359) The Geth trace builder incorrectly sets the same `returnData` value for all opcode steps in a trace, using the final call output instead of the step-specific return data buffer state. ## Expected Behavior Each opcode step should display the return data buffer state at that specific point in execution. ## Actual Behavior All opcode steps show the same returnData value - the final output of the entire call. For example, in a Fibonacci contract call that returns 1, every single opcode step shows: "returnData": "0x0000000000000000000000000000000000000000000000000000000000000001" * fix(js-tracer): correctly handle `isPrecompiled` and `slice` builtins (paradigmxyz#363) Closes paradigmxyz#350 Closes paradigmxyz#349 - Fixes `isPrecompiled` built-in to work correctly. Before we were incorrectly checking `precompiles_registered` flag which caused the fn to never be injected. Added test for it as well - Adds `slice` built-in and a test for it * fix(js-tracer): more fixes (paradigmxyz#365) Ref paradigmxyz/reth#18904 Closes paradigmxyz#364 Changes js objects to be created via `JsObject::with_object_proto(ctx.intrinsics())` instead of `JsObject::default()` as suggested in boa-dev/boa#4460 (comment) thus making sure helpers like `hasOwnProperty` are accessible. Changes `JsValue -> f64` conversion to happen via `to_numeric_number` so that bigints can also be used as input values for `slice` functions * fix: dont include code in post state if disabled (paradigmxyz#366) closes paradigmxyz/reth#18942 we should not set this if code is disabled in the config * fix: respect disableCode flag in diff mode for PreStateTracer (paradigmxyz#362) The disableCode flag was not being respected in diff mode for the PreStateTracer. When disableCode was set to true, code was correctly filtered from the pre state but was still appearing in the post state. This fix ensures that when disableCode is true, the code field is set to None for both pre and post states in diff mode, matching the expected behavior from Geth. Added test coverage to verify the fix works correctly in both cases (disableCode=true and disableCode=false). Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de> * chore(deps): bump `revm` to `30.1.0` (paradigmxyz#367) Bumps revm to 30.1.0 Ref: foundry-rs/foundry#12075 * chore: release 0.31.0 * fix: use correct depth for geth traces (paradigmxyz#369) follow-up for paradigmxyz#355 * chore: release 0.31.1 * chore: guard against new tracer variants (paradigmxyz#370) prep for alloy-rs/alloy#2690 * chore: release 0.31.2 * fix: serde version --------- Co-authored-by: stevencartavia <112043913+stevencartavia@users.noreply.github.com> Co-authored-by: zerosnacks <95942363+zerosnacks@users.noreply.github.com> Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de> Co-authored-by: rakita <rakita@users.noreply.github.com> Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com> Co-authored-by: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Co-authored-by: JP <36560907+0xfourzerofour@users.noreply.github.com> Co-authored-by: witty 🪿 <131909329+0xwitty@users.noreply.github.com> Co-authored-by: Léa Narzis <78718413+lean-apple@users.noreply.github.com> Co-authored-by: PG Herveou <pgherveou@parity.io> Co-authored-by: Rakan Al-Huneiti <rakan.alhneiti@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.