HIP-801: Opcode tracer endpoint implementation for eth_debug_traceTransaction #6781
Labels
enhancement
Type: New feature
epic
Type: Large user story that encompasses multiple tasks
limechain
Work planned for the LimeChain team
web3
Area: Web3 API
work package
Limechain Work package
Overview of Package
Definition
Add a new REST POST endpoint in
hedera-mirror-web3
, that will allow tracing historical transactions and displaying the opcodes that were executed.Abstract
Add support for debugging historical transactions with the
opcodeLogger
tracer.Motivation
Enhancing Mirror Archive Node with debug calls would allow users to replay historical transactions and inspect and analyse them by having detailed information for the execution based on a tracer type that is specified in the request. In addition, this enhancement would improve Hedera interoperability with different ethereum tools and providers, including Remix, Hardhat, Ganache, Geth, Alchemy, etc. This task would cover having an implementation for the
opcodeLogger
tracer.Rationale
The JSON-RPC Relay will add a
debug_traceTransaction
endpoint which in turn will make a request to the Mirror Node REST API.A new
/api/v1/contracts/results/{transactionIdOrHash}/opcodes
endpoint needs to be created in order to support handling transaction tracing requests.User stories
debug_traceTransaction
calls to explore the op code traces for a historical transaction.Specification
/api/v1/contracts/results/{transactionIdOrHash}/opcodes
{transactionIdOrHash}
Backwards compatibility
We’re adding a new endpoint so no impact on backwards compatibility is expected.
Security Implications
Some outputs from tracing transactions (especially with the opcode logger tracer) can be pretty large and could have impact on the performance. This is the reason why this endpoint should not be enabled on production.
References/Dependencies
eth_call
-design doc- [shared]debug_traceTransaction
support [shared]Tasks
/api/v1/contracts/results/{transactionIdOrHash}/opcodes
endpoint #8174The text was updated successfully, but these errors were encountered: