|
|
@@ -615,14 +615,18 @@ func (api *PrivateDebugAPI) StorageRangeAt(ctx context.Context, blockHash common
|
|
|
if st == nil {
|
|
|
return StorageRangeResult{}, fmt.Errorf("account %x doesn't exist", contractAddress)
|
|
|
}
|
|
|
- return storageRangeAt(st, keyStart, maxResult), nil
|
|
|
+ return storageRangeAt(st, keyStart, maxResult)
|
|
|
}
|
|
|
|
|
|
-func storageRangeAt(st state.Trie, start []byte, maxResult int) StorageRangeResult {
|
|
|
+func storageRangeAt(st state.Trie, start []byte, maxResult int) (StorageRangeResult, error) {
|
|
|
it := trie.NewIterator(st.NodeIterator(start))
|
|
|
result := StorageRangeResult{Storage: storageMap{}}
|
|
|
for i := 0; i < maxResult && it.Next(); i++ {
|
|
|
- e := storageEntry{Value: common.BytesToHash(it.Value)}
|
|
|
+ _, content, _, err := rlp.Split(it.Value)
|
|
|
+ if err != nil {
|
|
|
+ return StorageRangeResult{}, err
|
|
|
+ }
|
|
|
+ e := storageEntry{Value: common.BytesToHash(content)}
|
|
|
if preimage := st.GetKey(it.Key); preimage != nil {
|
|
|
preimage := common.BytesToHash(preimage)
|
|
|
e.Key = &preimage
|
|
|
@@ -634,7 +638,7 @@ func storageRangeAt(st state.Trie, start []byte, maxResult int) StorageRangeResu
|
|
|
next := common.BytesToHash(it.Key)
|
|
|
result.NextKey = &next
|
|
|
}
|
|
|
- return result
|
|
|
+ return result, nil
|
|
|
}
|
|
|
|
|
|
// GetModifiedAccountsByumber returns all accounts that have changed between the
|