feat(cast): trace and debug on local contracts #6887
Closed
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.
Motivation
Using
cast run
andcast call
to trace and debug can currently only fetch abi and source from explorers such as etherscan. In situations where no explorer is available, it would be intuitive to use the abi and source provided by the local files.Solution
As with
forge debug
- using local files is preferred over fetching data from remote explorer. Only ifetherscan_api_key
is defined, will we fetch abi and source from the explorer.Without explorer it will now compile solidity files and fetch contract bytecode from build output. To identify contract addresses it fetches on chain bytecode via RPC call. Most of the required code change happens in
handle_traces
, where the decoder and debugger is fed with the required data fetched from local files (and RPC).Unresolved issues