aboutsummaryrefslogtreecommitdiffstats
path: root/light/state.go
diff options
context:
space:
mode:
Diffstat (limited to 'light/state.go')
-rw-r--r--light/state.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/light/state.go b/light/state.go
index b6cefc9b9..f19748e89 100644
--- a/light/state.go
+++ b/light/state.go
@@ -268,6 +268,26 @@ func (self *LightState) CreateStateObject(ctx context.Context, addr common.Addre
return newSo, nil
}
+// ForEachStorage calls a callback function for every key/value pair found
+// in the local storage cache. Note that unlike core/state.StateObject,
+// light.StateObject only returns cached values and doesn't download the
+// entire storage tree.
+func (self *LightState) ForEachStorage(ctx context.Context, addr common.Address, cb func(key, value common.Hash) bool) error {
+ so, err := self.GetStateObject(ctx, addr)
+ if err != nil {
+ return err
+ }
+
+ if so == nil {
+ return nil
+ }
+
+ for h, v := range so.storage {
+ cb(h, v)
+ }
+ return nil
+}
+
//
// Setting, copying of the state methods
//