(feat): implement debug_traceCallMany#2257
Conversation
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
|
@claude review. Refer to external documentations if needed to ensure the request / response format of the call is accurate and there are no edge cases. Look for DoS vectors where someone can get bor to go out of memory via this call. |
There was a problem hiding this comment.
Pull request overview
This PR adds a new tracer RPC API method (TraceCallMany) to execute multiple eth_call-style traces over a shared, evolving simulated state, aligning behavior with Erigon’s eth_callMany/debug_traceCallMany semantics. It also introduces targeted tests to validate state persistence, block-context overrides, transaction-index base-state selection, and interaction with state-sync blocks.
Changes:
- Added
TraceCallMany,Bundle, andStateContextto trace multiple call bundles over a shared simulated state. - Added comprehensive unit tests for bundle semantics, block overrides, basefee handling for zero-gas-price calls, and error cases.
- Added a state-sync regression test ensuring base-state selection does not execute a trailing state-sync tx as a normal message.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
eth/tracers/api.go |
Implements TraceCallMany + helpers to trace multiple call bundles over shared state with block/state overrides. |
eth/tracers/api_test.go |
Adds unit tests covering core TraceCallMany semantics and error handling. |
eth/tracers/api_statesync_test.go |
Adds a state-sync-specific test validating correct base-state construction for TraceCallMany. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #2257 +/- ##
===========================================
+ Coverage 53.44% 53.48% +0.03%
===========================================
Files 896 896
Lines 159770 159959 +189
===========================================
+ Hits 85397 85561 +164
- Misses 69054 69062 +8
- Partials 5319 5336 +17
... and 24 files with indirect coverage changes
🚀 New features to boost your workflow:
|
|
@claude review. Refer to external documentations if needed to ensure the request / response format of the call is accurate and there are no edge cases. Look for DoS vectors where someone can get bor to go out of memory via this call. |
|
Govuln fail requires a go version bump. Will address in separate PR. |
|
@claude review |
There was a problem hiding this comment.
An organization admin can view or raise the cap at claude.ai/admin-settings/claude-code. The cap resets at the start of the next billing period.
Once the cap resets or is raised, reopen this pull request to trigger a review.
|
Rationale for skipping diffguard analysis - most of tracing functions aren't broken down into lot of nested functions as the over abstracting things may decrease code readability. The public facing API function ( |
|


Summary
This PR implements
debug_traceCallManyendpoint which can be used to trace multiple calls under a single rpc request by bundling them. Behaviour referenced from erigon.Executed tests