You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 4, 2024. It is now read-only.
ETH transaction failed at Cosmos layer (ante handler) should be ignored
Actual behavior: [What actually happened]
An zero value trace object is returned at the index of the failed tx
Additional info: [Include gist of relevant config, logs, etc.]
In the process of investigating the solution, I noticed there maybe one more issue that may result in an inevitable behaviour difference on debug_traceBlock* with Ethereum. But further confirmation is needed.
While the failed ETH Tx can be easily filtered in the RPC backend, there's another issue from here. In the current block-related RPCs, it is using the filter TxSuccessOrExceedsBlockGasLimit (https://github.com/evmos/ethermint/blob/main/rpc/backend/blocks.go#L261), that means there are two types of ETH txs returned
Tx executed on EVM (regardless of EVM execution result)
Tx exceeded block gas limit
For 1/, it is fine and there will be a trace;
For 2/, it is ok to return in most RPC because the ETH Tx can be found from Tendermint RPCs, just need to make sure we return a failed status in calls like eth_getTransactionReceipt. But I think it will not have trace because it is not executed in the EVM. However, I am struggling to reproduce a test case so I am unable to verify the behaviour here.
The text was updated successfully, but these errors were encountered:
System info: [Include Ethermint commit, operating system name, and other relevant details]
Steps to reproduce:
ethermint/app/ante/eth.go
Line 310 in fcdc625
debug_traceBlockByNumber
ordebug_traceBlockByHash
on this blockExpected behavior: [What you expected to happen]
Actual behavior: [What actually happened]
Additional info: [Include gist of relevant config, logs, etc.]
In the process of investigating the solution, I noticed there maybe one more issue that may result in an inevitable behaviour difference on
debug_traceBlock*
with Ethereum. But further confirmation is needed.While the failed ETH Tx can be easily filtered in the RPC backend, there's another issue from here. In the current block-related RPCs, it is using the filter
TxSuccessOrExceedsBlockGasLimit
(https://github.com/evmos/ethermint/blob/main/rpc/backend/blocks.go#L261), that means there are two types of ETH txs returnedFor 1/, it is fine and there will be a trace;
For 2/, it is ok to return in most RPC because the ETH Tx can be found from Tendermint RPCs, just need to make sure we return a failed status in calls like
eth_getTransactionReceipt
. But I think it will not have trace because it is not executed in the EVM. However, I am struggling to reproduce a test case so I am unable to verify the behaviour here.The text was updated successfully, but these errors were encountered: