diff --git a/core/state/statedb.go b/core/state/statedb.go index 085f2379fb..8cd076bc77 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -750,8 +750,10 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { if metrics.EnabledExpensive { defer func(start time.Time) { s.AccountCommits += time.Since(start) }(time.Now()) } + // The onleaf func is called _serially_, so we can reuse the same account + // for unmarshalling every time. + var account Account return s.trie.Commit(func(leaf []byte, parent common.Hash) error { - var account Account if err := rlp.DecodeBytes(leaf, &account); err != nil { return nil }