|
18 | 18 | package state
|
19 | 19 |
|
20 | 20 | import (
|
21 |
| - "bytes" |
22 | 21 | "errors"
|
23 | 22 | "fmt"
|
24 | 23 | "maps"
|
@@ -898,32 +897,15 @@ func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash {
|
898 | 897 | // later time.
|
899 | 898 | workers.SetLimit(1)
|
900 | 899 | }
|
901 |
| - if s.deterministic { |
902 |
| - addressesToUpdate := make([]common.Address, 0, len(s.mutations)) |
903 |
| - for addr := range s.mutations { |
904 |
| - addressesToUpdate = append(addressesToUpdate, addr) |
905 |
| - } |
906 |
| - sort.Slice(addressesToUpdate, func(i, j int) bool { return bytes.Compare(addressesToUpdate[i][:], addressesToUpdate[j][:]) < 0 }) |
907 |
| - for _, addr := range addressesToUpdate { |
908 |
| - if obj := s.mutations[addr]; !obj.applied && !obj.isDelete() { |
909 |
| - obj := s.stateObjects[addr] // closure for the task runner below |
910 |
| - workers.Go(func() error { |
911 |
| - obj.updateRoot() |
912 |
| - return nil |
913 |
| - }) |
914 |
| - } |
915 |
| - } |
916 |
| - } else { |
917 |
| - for addr, op := range s.mutations { |
918 |
| - if op.applied || op.isDelete() { |
919 |
| - continue |
920 |
| - } |
921 |
| - obj := s.stateObjects[addr] // closure for the task runner below |
922 |
| - workers.Go(func() error { |
923 |
| - obj.updateRoot() |
924 |
| - return nil |
925 |
| - }) |
| 900 | + for addr, op := range s.mutations { |
| 901 | + if op.applied || op.isDelete() { |
| 902 | + continue |
926 | 903 | }
|
| 904 | + obj := s.stateObjects[addr] // closure for the task runner below |
| 905 | + workers.Go(func() error { |
| 906 | + obj.updateRoot() |
| 907 | + return nil |
| 908 | + }) |
927 | 909 | }
|
928 | 910 | workers.Wait()
|
929 | 911 | s.StorageUpdates += time.Since(start)
|
@@ -968,6 +950,9 @@ func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash {
|
968 | 950 | }
|
969 | 951 | usedAddrs = append(usedAddrs, common.CopyBytes(addr[:])) // Copy needed for closure
|
970 | 952 | }
|
| 953 | + if s.deterministic { |
| 954 | + sort.Slice(deletedAddrs, func(i, j int) bool { return deletedAddrs[i].Cmp(deletedAddrs[j]) < 0 }) |
| 955 | + } |
971 | 956 | for _, deletedAddr := range deletedAddrs {
|
972 | 957 | s.deleteStateObject(deletedAddr)
|
973 | 958 | s.AccountDeleted += 1
|
|
0 commit comments