forked from cerc-io/laconicd-deprecated
rpc, evm: debug_traceTransaction endpoint (#506)
* fix typo * Added tracers package to debug API * Add GetTransactionByHash function to backend package * first version * traceTransaction first version * clean PR * revert debug changes * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * remove unnecesary panic * remove internal debug api * trace transaction javascript tracer * add support for custom logConfig * added comment * traceTransactions tests * fix linter * remove unused * add comments to traceConfig * update dependencies * updated endpoints md * Apply suggestions from code review * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
co-authored by
Federico Kunze Küllmer
parent
6794daf014
commit
c7554e96aa
@@ -130,7 +130,7 @@ Check the JSON-RPC methods supported on Ethermint. {synopsis}
|
||||
| `debug_traceBlockFromFile` | Debug | | | |
|
||||
| `debug_standardTraceBlockToFile` | Debug | | | |
|
||||
| `debug_standardTraceBadBlockToFile` | Debug | | | |
|
||||
| `debug_traceTransaction` | Debug | | | |
|
||||
| [`debug_traceTransaction`](#debug-tracetransaction) | Debug | ✔ | | |
|
||||
| `debug_verbosity` | Debug | | | |
|
||||
| `debug_vmodule` | Debug | | | |
|
||||
| `debug_writeBlockProfile` | Debug | ✔ | | |
|
||||
@@ -989,6 +989,25 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"personal_ecRecover","params":["0
|
||||
{"jsonrpc":"2.0","id":1,"result":"0x3b7252d007059ffc82d16d022da3cbf9992d2f70"}
|
||||
```
|
||||
|
||||
## Debug Methods
|
||||
|
||||
### `debug_traceTransaction`
|
||||
|
||||
The `traceTransaction` debugging method will attempt to run the transaction in the exact same manner as it was executed on the network. It will replay any transaction that may have been executed prior to this one before it will finally attempt to execute the transaction that corresponds to the given hash.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- Trace Config
|
||||
|
||||
```json
|
||||
// Request
|
||||
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0xddecdb13226339681372b44e01df0fbc0f446fca6f834b2de5ecb1e569022ec8", {"tracer": "{data: [], fault: function(log) {}, step: function(log) { if(log.op.toString() == \"CALL\") this.data.push(log.stack.peek(0)); }, result: function() { return this.data; }}"}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
|
||||
|
||||
//Result
|
||||
["68410", "51470"]
|
||||
```
|
||||
|
||||
|
||||
## Miner Methods
|
||||
|
||||
### `miner_getHashrate`
|
||||
|
||||
@@ -12,8 +12,10 @@
|
||||
- [AccessTuple](#ethermint.evm.v1.AccessTuple)
|
||||
- [ChainConfig](#ethermint.evm.v1.ChainConfig)
|
||||
- [Log](#ethermint.evm.v1.Log)
|
||||
- [LogConfig](#ethermint.evm.v1.LogConfig)
|
||||
- [Params](#ethermint.evm.v1.Params)
|
||||
- [State](#ethermint.evm.v1.State)
|
||||
- [TraceConfig](#ethermint.evm.v1.TraceConfig)
|
||||
- [TransactionLogs](#ethermint.evm.v1.TransactionLogs)
|
||||
- [TxResult](#ethermint.evm.v1.TxResult)
|
||||
|
||||
@@ -53,6 +55,8 @@
|
||||
- [QueryStaticCallResponse](#ethermint.evm.v1.QueryStaticCallResponse)
|
||||
- [QueryStorageRequest](#ethermint.evm.v1.QueryStorageRequest)
|
||||
- [QueryStorageResponse](#ethermint.evm.v1.QueryStorageResponse)
|
||||
- [QueryTraceTxRequest](#ethermint.evm.v1.QueryTraceTxRequest)
|
||||
- [QueryTraceTxResponse](#ethermint.evm.v1.QueryTraceTxResponse)
|
||||
- [QueryTxLogsRequest](#ethermint.evm.v1.QueryTxLogsRequest)
|
||||
- [QueryTxLogsResponse](#ethermint.evm.v1.QueryTxLogsResponse)
|
||||
- [QueryValidatorAccountRequest](#ethermint.evm.v1.QueryValidatorAccountRequest)
|
||||
@@ -213,6 +217,27 @@ the node.
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.LogConfig"></a>
|
||||
|
||||
### LogConfig
|
||||
LogConfig are the configuration options for structured logger the EVM
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| `disable_memory` | [bool](#bool) | | disable memory capture |
|
||||
| `disable_stack` | [bool](#bool) | | disable stack capture |
|
||||
| `disable_storage` | [bool](#bool) | | disable storage capture |
|
||||
| `disable_return_data` | [bool](#bool) | | disable return data capture |
|
||||
| `debug` | [bool](#bool) | | print output during capture end |
|
||||
| `limit` | [int32](#int32) | | maximum length of output, but zero means unlimited |
|
||||
| `overrides` | [ChainConfig](#ethermint.evm.v1.ChainConfig) | | Chain overrides, can be used to execute a trace using future fork rules |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.Params"></a>
|
||||
|
||||
### Params
|
||||
@@ -248,6 +273,24 @@ State represents a single Storage key value pair item.
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.TraceConfig"></a>
|
||||
|
||||
### TraceConfig
|
||||
TraceConfig holds extra parameters to trace functions.
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| `tracer` | [string](#string) | | custom javascript tracer |
|
||||
| `timeout` | [string](#string) | | overrides the default timeout of 5 seconds for JavaScript-based tracing calls |
|
||||
| `reexec` | [uint64](#uint64) | | number of blocks the tracer is willing to go back |
|
||||
| `log_config` | [LogConfig](#ethermint.evm.v1.LogConfig) | | configuration options for structured logger the EVM |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.TransactionLogs"></a>
|
||||
|
||||
### TransactionLogs
|
||||
@@ -823,6 +866,38 @@ method.
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.QueryTraceTxRequest"></a>
|
||||
|
||||
### QueryTraceTxRequest
|
||||
QueryTraceTxRequest defines TraceTx request
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| `msg` | [MsgEthereumTx](#ethermint.evm.v1.MsgEthereumTx) | | msgEthereumTx for the requested transaction |
|
||||
| `tx_index` | [uint32](#uint32) | | transaction index |
|
||||
| `trace_config` | [TraceConfig](#ethermint.evm.v1.TraceConfig) | | TraceConfig holds extra parameters to trace functions. |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.QueryTraceTxResponse"></a>
|
||||
|
||||
### QueryTraceTxResponse
|
||||
QueryTraceTxResponse defines TraceTx response
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| `data` | [bytes](#bytes) | | response serialized in bytes |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="ethermint.evm.v1.QueryTxLogsRequest"></a>
|
||||
|
||||
### QueryTxLogsRequest
|
||||
@@ -912,6 +987,7 @@ Query defines the gRPC querier service.
|
||||
| `Params` | [QueryParamsRequest](#ethermint.evm.v1.QueryParamsRequest) | [QueryParamsResponse](#ethermint.evm.v1.QueryParamsResponse) | Params queries the parameters of x/evm module. | GET|/ethermint/evm/v1/params|
|
||||
| `EthCall` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [MsgEthereumTxResponse](#ethermint.evm.v1.MsgEthereumTxResponse) | EthCall implements the `eth_call` rpc api | GET|/ethermint/evm/v1/eth_call|
|
||||
| `EstimateGas` | [EthCallRequest](#ethermint.evm.v1.EthCallRequest) | [EstimateGasResponse](#ethermint.evm.v1.EstimateGasResponse) | EstimateGas implements the `eth_estimateGas` rpc api | GET|/ethermint/evm/v1/estimate_gas|
|
||||
| `TraceTx` | [QueryTraceTxRequest](#ethermint.evm.v1.QueryTraceTxRequest) | [QueryTraceTxResponse](#ethermint.evm.v1.QueryTraceTxResponse) | TraceTx implements the `debug_traceTransaction` rpc api | GET|/ethermint/evm/v1/trace_tx|
|
||||
|
||||
<!-- end services -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user