From 969390908aec35ccfa7849c79c6afdc1dac89216 Mon Sep 17 00:00:00 2001 From: Freddy Caceres Date: Wed, 24 Nov 2021 20:39:40 -0500 Subject: [PATCH 1/3] filter block txs by block result --- rpc/ethereum/backend/backend.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/rpc/ethereum/backend/backend.go b/rpc/ethereum/backend/backend.go index ca2da3d991..5f5f6c5ea5 100644 --- a/rpc/ethereum/backend/backend.go +++ b/rpc/ethereum/backend/backend.go @@ -359,6 +359,13 @@ func (e *EVMBackend) EthBlockFromTendermint( return nil, err } + resBlockResult, err := e.clientCtx.Client.BlockResults(e.ctx, &block.Height) + if err != nil { + return nil, err + } + + txResults := resBlockResult.TxsResults + for i, txBz := range block.Txs { tx, err := e.clientCtx.TxConfig.TxDecoder()(txBz) if err != nil { @@ -374,10 +381,9 @@ func (e *EVMBackend) EthBlockFromTendermint( tx := ethMsg.AsTransaction() - // check tx exists on EVM and it has the correct block height - ethTx, err := e.GetTxByEthHash(tx.Hash()) - if err != nil || ethTx.Height != block.Height { - e.logger.Debug("failed to query eth tx", "hash", tx.Hash().Hex()) + // check tx exists on EVM by cross checking with blockResults + if txResults[i].Code == 0 { + e.logger.Debug("invalid tx result code", "hash", tx.Hash().Hex()) continue } @@ -434,15 +440,9 @@ func (e *EVMBackend) EthBlockFromTendermint( e.logger.Error("failed to query consensus params", "error", err.Error()) } - resBlockResult, err := e.clientCtx.Client.BlockResults(e.ctx, &block.Height) - if err != nil { - e.logger.Debug("EthBlockFromTendermint block result not found", "height", block.Height, "error", err.Error()) - return nil, err - } - gasUsed := uint64(0) - for _, txsResult := range resBlockResult.TxsResults { + for _, txsResult := range txResults { gasUsed += uint64(txsResult.GetGasUsed()) } From b388f5d4257ecef9237c47fe42f1fdcc1ddc6d76 Mon Sep 17 00:00:00 2001 From: Freddy Caceres Date: Wed, 24 Nov 2021 20:54:17 -0500 Subject: [PATCH 2/3] filter block txs by block result --- rpc/ethereum/backend/backend.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpc/ethereum/backend/backend.go b/rpc/ethereum/backend/backend.go index 5f5f6c5ea5..a1c39afa16 100644 --- a/rpc/ethereum/backend/backend.go +++ b/rpc/ethereum/backend/backend.go @@ -359,7 +359,7 @@ func (e *EVMBackend) EthBlockFromTendermint( return nil, err } - resBlockResult, err := e.clientCtx.Client.BlockResults(e.ctx, &block.Height) + resBlockResult, err := e.clientCtx.Client.BlockResults(ctx, &block.Height) if err != nil { return nil, err } @@ -382,7 +382,7 @@ func (e *EVMBackend) EthBlockFromTendermint( tx := ethMsg.AsTransaction() // check tx exists on EVM by cross checking with blockResults - if txResults[i].Code == 0 { + if txResults[i].Code != 0 { e.logger.Debug("invalid tx result code", "hash", tx.Hash().Hex()) continue } From 3edc00e6e11baf6c6dc7515d32551d45b857858d Mon Sep 17 00:00:00 2001 From: Freddy Caceres Date: Fri, 26 Nov 2021 12:45:48 -0500 Subject: [PATCH 3/3] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3442be0948..94aad1dc7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (feemarket) [tharsis#770](https://github.com/tharsis/ethermint/pull/770) Enable fee market (EIP1559) by default. * (rpc) [tharsis#769](https://github.com/tharsis/ethermint/pull/769) Fix default Ethereum signer for JSON-RPC. +* (rpc) [tharsis#781](https://github.com/tharsis/ethermint/pull/781) Fix get block invalid transactions filter. ## [v0.8.0] - 2021-11-17