fix: web3 rpc api returns wrong block gas limit (#782)

* Problem: web3 rpc api returns wrong block gas limit

Closes: #777

Solution:
- pass in specific block height to the query

* Apply suggestions from code review

* changelog
This commit is contained in:
yihuang 2021-11-25 19:30:03 +08:00 committed by GitHub
parent 16db5cabb5
commit 32eaec8d99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 4 deletions

View File

@ -45,6 +45,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. * (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#769](https://github.com/tharsis/ethermint/pull/769) Fix default Ethereum signer for JSON-RPC.
* (rpc) [tharsis#782](https://github.com/tharsis/ethermint/pull/782) Fix wrong block gas limit returned by JSON-RPC.
## [v0.8.0] - 2021-11-17 ## [v0.8.0] - 2021-11-17

View File

@ -429,7 +429,7 @@ func (e *EVMBackend) EthBlockFromTendermint(
validatorAddr := common.BytesToAddress(addr) validatorAddr := common.BytesToAddress(addr)
gasLimit, err := types.BlockMaxGasFromConsensusParams(ctx, e.clientCtx) gasLimit, err := types.BlockMaxGasFromConsensusParams(ctx, e.clientCtx, block.Height)
if err != nil { if err != nil {
e.logger.Error("failed to query consensus params", "error", err.Error()) e.logger.Error("failed to query consensus params", "error", err.Error())
} }

View File

@ -64,9 +64,9 @@ func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFe
} }
} }
// BlockMaxGasFromConsensusParams returns the gas limit for the latest block from the chain consensus params. // BlockMaxGasFromConsensusParams returns the gas limit for the current block from the chain consensus params.
func BlockMaxGasFromConsensusParams(ctx context.Context, clientCtx client.Context) (int64, error) { func BlockMaxGasFromConsensusParams(goCtx context.Context, clientCtx client.Context, blockHeight int64) (int64, error) {
resConsParams, err := clientCtx.Client.ConsensusParams(ctx, nil) resConsParams, err := clientCtx.Client.ConsensusParams(goCtx, &blockHeight)
if err != nil { if err != nil {
return int64(^uint32(0)), err return int64(^uint32(0)), err
} }