diff --git a/consensus/XDPoS/api.go b/consensus/XDPoS/api.go index f13b645864..420f0d7d59 100644 --- a/consensus/XDPoS/api.go +++ b/consensus/XDPoS/api.go @@ -324,9 +324,13 @@ func (api *API) GetEpochNumbersBetween(begin, end *rpc.BlockNumber) ([]uint64, e if endHeader == nil { return nil, errors.New("illegal end block number") } - if beginHeader.Number.Cmp(endHeader.Number) > 0 { + diff := new(big.Int).Sub(endHeader.Number, beginHeader.Number).Int64() + if diff < 0 { return nil, errors.New("illegal begin and end block number, begin > end") } + if diff > 50_000 { + return nil, errors.New("block range over limit of 50,000 blocks") + } epochSwitchInfos, err := api.XDPoS.GetEpochSwitchInfoBetween(api.chain, beginHeader, endHeader) if err != nil { return nil, err