fix: eth_feeHistory
reward values cannot be nil (#970)
* eth_feeHistory reward values cannot be nil * removed reward when rewardPercentiles is not specified * fix lint * refactor and fix typos * add changelog Co-authored-by: Freddy Caceres <freddy.caceres@crypto.com>
This commit is contained in:
parent
40d5eff9fa
commit
caa1c5a6c6
@ -40,7 +40,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* (evm) [\#529](https://github.com/tharsis/ethermint/issues/529) support return value on trace tx response.
|
* (evm) [\#529](https://github.com/tharsis/ethermint/issues/529) Add support return value on trace tx response.
|
||||||
|
* (rpc) [#970] (https://github.com/tharsis/ethermint/pull/970) Fix unexpected nil reward values on `eth_feeHistory` response
|
||||||
|
|
||||||
## Improvements
|
## Improvements
|
||||||
|
|
||||||
|
@ -115,6 +115,7 @@ func (e *EVMBackend) processBlock(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FeeHistory returns data relevant for fee estimation based on the specified range of blocks.
|
||||||
func (e *EVMBackend) FeeHistory(
|
func (e *EVMBackend) FeeHistory(
|
||||||
userBlockCount rpc.DecimalOrHex, // number blocks to fetch, maximum is 100
|
userBlockCount rpc.DecimalOrHex, // number blocks to fetch, maximum is 100
|
||||||
lastBlock rpc.BlockNumber, // the block to start search , to oldest
|
lastBlock rpc.BlockNumber, // the block to start search , to oldest
|
||||||
@ -145,13 +146,16 @@ func (e *EVMBackend) FeeHistory(
|
|||||||
|
|
||||||
// prepare space
|
// prepare space
|
||||||
reward := make([][]*hexutil.Big, blockCount)
|
reward := make([][]*hexutil.Big, blockCount)
|
||||||
rewardcount := len(rewardPercentiles)
|
rewardCount := len(rewardPercentiles)
|
||||||
for i := 0; i < int(blockCount); i++ {
|
for i := 0; i < int(blockCount); i++ {
|
||||||
reward[i] = make([]*hexutil.Big, rewardcount)
|
reward[i] = make([]*hexutil.Big, rewardCount)
|
||||||
}
|
}
|
||||||
thisBaseFee := make([]*hexutil.Big, blockCount)
|
thisBaseFee := make([]*hexutil.Big, blockCount)
|
||||||
thisGasUsedRatio := make([]float64, blockCount)
|
thisGasUsedRatio := make([]float64, blockCount)
|
||||||
|
|
||||||
|
// rewards should only be calculated if reward percentiles were included
|
||||||
|
calculateRewards := rewardCount != 0
|
||||||
|
|
||||||
// fetch block
|
// fetch block
|
||||||
for blockID := blockStart; blockID < blockEnd; blockID++ {
|
for blockID := blockStart; blockID < blockEnd; blockID++ {
|
||||||
index := int32(blockID - blockStart)
|
index := int32(blockID - blockStart)
|
||||||
@ -174,25 +178,34 @@ func (e *EVMBackend) FeeHistory(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
onefeehistory := rpctypes.OneFeeHistory{}
|
oneFeeHistory := rpctypes.OneFeeHistory{}
|
||||||
err = e.processBlock(tendermintblock, ðBlock, rewardPercentiles, tendermintBlockResult, &onefeehistory)
|
err = e.processBlock(tendermintblock, ðBlock, rewardPercentiles, tendermintBlockResult, &oneFeeHistory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy
|
// copy
|
||||||
thisBaseFee[index] = (*hexutil.Big)(onefeehistory.BaseFee)
|
thisBaseFee[index] = (*hexutil.Big)(oneFeeHistory.BaseFee)
|
||||||
thisGasUsedRatio[index] = onefeehistory.GasUsedRatio
|
thisGasUsedRatio[index] = oneFeeHistory.GasUsedRatio
|
||||||
for j := 0; j < rewardcount; j++ {
|
if calculateRewards {
|
||||||
reward[index][j] = (*hexutil.Big)(onefeehistory.Reward[j])
|
for j := 0; j < rewardCount; j++ {
|
||||||
|
reward[index][j] = (*hexutil.Big)(oneFeeHistory.Reward[j])
|
||||||
|
if reward[index][j] == nil {
|
||||||
|
reward[index][j] = (*hexutil.Big)(big.NewInt(0))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
feeHistory := rpctypes.FeeHistoryResult{
|
feeHistory := rpctypes.FeeHistoryResult{
|
||||||
OldestBlock: oldestBlock,
|
OldestBlock: oldestBlock,
|
||||||
Reward: reward,
|
|
||||||
BaseFee: thisBaseFee,
|
BaseFee: thisBaseFee,
|
||||||
GasUsedRatio: thisGasUsedRatio,
|
GasUsedRatio: thisGasUsedRatio,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if calculateRewards {
|
||||||
|
feeHistory.Reward = reward
|
||||||
|
}
|
||||||
|
|
||||||
return &feeHistory, nil
|
return &feeHistory, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user