-
Notifications
You must be signed in to change notification settings - Fork 20.1k
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
eth/tracers: add debug_traceCallMany method #27696
Conversation
Hey your PR is looking good at a glance. I do have to inform you that we're in the process of championing a new method Would you be interested in adapting your implementation to look like |
@s1na thank you for your feedback and for sharing your work. Your implementation looks promising and the |
Hm. So we have #25743 based on https://github.com/s1na/go-ethereum/tree/trace/batch-call, and also https://github.com/s1na/go-ethereum/tree/multicall, and finally this PR. I'm a bit curious about what the technical differences in these approaches are.
I thought that was the case for all of them. |
I agree that the core feature of the three, namely the sequential execution of transactions, is consistent. The difference between |
reimplemented based on multicall, and I'll mark this PR ready once multicall is merged. |
@recursion128 Hey just want to let you know that your PR was closed. I'm not sure it was intentional since the reason stated by github is "closed by deleting the head repository" and in fact I see your profile is empty, everything is private. |
This PR introduces a new rpc method
debug_traceCallMany
which executes a series of transactions one after the other, collects the structured logs created during the execution of the EVM, and returns a number of possible traces for each transaction.The
debug_traceCallMany
enhances the tracing capabilities of our API, allowing users to trace multiple transactions in a single call. This can be particularly useful for debugging complex interactions between multiple transactions.The defining feature of
debug_traceCallMany
is its sequential execution of transactions, where each transaction is executed based on the final state of the preceding one, thereby creating a cumulative effect on the state.The primary use case for this feature is pre-execution checks in wallets. When a user wants to understand the potential asset changes from interacting with an unauthorized contract,
debug_traceCall
requires the user to approve the contract before it can estimate the user's asset changes, which introduces potential risks. However, withdebug_traceCallMany
, there's no need for the user to approve the contract to make an estimate (the user's contract approval just needs to be passed in as a preceding transaction). In fact, the pre-transaction balance change feature in Rabby Wallet is based on this method.