diff options
Diffstat (limited to 'light/state.go')
-rw-r--r-- | light/state.go | 20 |
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 // |