diff --git a/eth/api.go b/eth/api.go index 052e5b7979..f68bb03e65 100644 --- a/eth/api.go +++ b/eth/api.go @@ -338,19 +338,28 @@ func (api *PrivateDebugAPI) GetBadBlocks(ctx context.Context) ([]*BadBlockArgs, type AccountRangeResult struct { Addresses []common.Address `json:"addresses"` Next common.Address `json:"next"` + Preimages []common.Hash `json:"preimages"` + NextPreimage common.Hash `json:"nextPreimage"` } func accountRange(st state.Trie, start *common.Address, maxResult int) (AccountRangeResult, error) { it := trie.NewIterator(st.NodeIterator(crypto.Keccak256(start[:]))) - result := AccountRangeResult{Addresses: []common.Address{}, Next: common.Address{}} + result := AccountRangeResult{Addresses: []common.Address{}, Next: common.Address{}, Preimages: []common.Hash{}, NextPreimage: common.Hash{}} for i := 0; i < maxResult && it.Next(); i++ { if preimage := st.GetKey(it.Key); preimage != nil { result.Addresses = append(result.Addresses, common.BytesToAddress(preimage)) + } else { + result.Preimages = append(result.Preimages, common.BytesToHash(preimage)) } } if it.Next() { - result.Next = common.BytesToAddress(st.GetKey(it.Key)) + if preimage := st.GetKey(it.Key); preimage != nil { + result.Next = common.BytesToAddress(st.GetKey(preimage)) + } else { + result.NextPreimage = common.BytesToHash(preimage) + } + } return result, nil