@@ -460,12 +460,7 @@ func (s *StateDB) updateStateObject(obj *stateObject) {
460460 }
461461 // Encode the account and update the account trie
462462 addr := obj .Address ()
463-
464- data , err := rlp .EncodeToBytes (obj )
465- if err != nil {
466- panic (fmt .Errorf ("can't encode object at %x: %v" , addr [:], err ))
467- }
468- if err = s .trie .TryUpdate (addr [:], data ); err != nil {
463+ if err := s .trie .TryUpdateAccount (addr [:], & obj .data ); err != nil {
469464 s .setError (fmt .Errorf ("updateStateObject (%x) error: %v" , addr [:], err ))
470465 }
471466
@@ -512,7 +507,7 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject {
512507 }
513508 // If no live objects are available, attempt to use snapshots
514509 var (
515- data * Account
510+ data * types. StateAccount
516511 err error
517512 )
518513 if s .snap != nil {
@@ -524,7 +519,7 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject {
524519 if acc == nil {
525520 return nil
526521 }
527- data = & Account {
522+ data = & types. StateAccount {
528523 Nonce : acc .Nonce ,
529524 Balance : acc .Balance ,
530525 CodeHash : acc .CodeHash ,
@@ -551,7 +546,7 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject {
551546 if len (enc ) == 0 {
552547 return nil
553548 }
554- data = new (Account )
549+ data = new (types. StateAccount )
555550 if err := rlp .DecodeBytes (enc , data ); err != nil {
556551 log .Error ("Failed to decode state object" , "addr" , addr , "err" , err )
557552 return nil
@@ -588,7 +583,7 @@ func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject)
588583 s .snapDestructs [prev .addrHash ] = struct {}{}
589584 }
590585 }
591- newobj = newObject (s , addr , Account {})
586+ newobj = newObject (s , addr , types. StateAccount {})
592587 if prev == nil {
593588 s .journal .append (createObjectChange {account : & addr })
594589 } else {
@@ -942,7 +937,7 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) {
942937 }
943938 // The onleaf func is called _serially_, so we can reuse the same account
944939 // for unmarshalling every time.
945- var account Account
940+ var account types. StateAccount
946941 root , accountCommitted , err := s .trie .Commit (func (_ [][]byte , _ []byte , leaf []byte , parent common.Hash ) error {
947942 if err := rlp .DecodeBytes (leaf , & account ); err != nil {
948943 return nil
0 commit comments