diff options
author | Felix Lange <fjl@twurst.com> | 2015-07-06 07:19:48 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-09-23 04:53:49 +0800 |
commit | 565d9f2306d19f63be6a6e1b8fc480af8dca9617 (patch) | |
tree | 5474c7c534aaeff2b82c84346e53d899f7551555 /core/state/state_object.go | |
parent | 6b91a4abe529ea4f01771209e080b118ab847fe9 (diff) | |
download | go-tangerine-565d9f2306d19f63be6a6e1b8fc480af8dca9617.tar.gz go-tangerine-565d9f2306d19f63be6a6e1b8fc480af8dca9617.tar.zst go-tangerine-565d9f2306d19f63be6a6e1b8fc480af8dca9617.zip |
core, trie: new trie
Diffstat (limited to 'core/state/state_object.go')
-rw-r--r-- | core/state/state_object.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/core/state/state_object.go b/core/state/state_object.go index 353f2357b..251a31093 100644 --- a/core/state/state_object.go +++ b/core/state/state_object.go @@ -90,15 +90,13 @@ type StateObject struct { func NewStateObject(address common.Address, db ethdb.Database) *StateObject { object := &StateObject{db: db, address: address, balance: new(big.Int), gasPool: new(big.Int), dirty: true} - object.trie = trie.NewSecure((common.Hash{}).Bytes(), db) + object.trie, _ = trie.NewSecure(common.Hash{}, db) object.storage = make(Storage) object.gasPool = new(big.Int) - return object } func NewStateObjectFromBytes(address common.Address, data []byte, db ethdb.Database) *StateObject { - // TODO clean me up var extobject struct { Nonce uint64 Balance *big.Int @@ -107,7 +105,13 @@ func NewStateObjectFromBytes(address common.Address, data []byte, db ethdb.Datab } err := rlp.Decode(bytes.NewReader(data), &extobject) if err != nil { - fmt.Println(err) + glog.Errorf("can't decode state object %x: %v", address, err) + return nil + } + trie, err := trie.NewSecure(extobject.Root, db) + if err != nil { + // TODO: bubble this up or panic + glog.Errorf("can't create account trie with root %x: %v", extobject.Root[:], err) return nil } @@ -115,11 +119,10 @@ func NewStateObjectFromBytes(address common.Address, data []byte, db ethdb.Datab object.nonce = extobject.Nonce object.balance = extobject.Balance object.codeHash = extobject.CodeHash - object.trie = trie.NewSecure(extobject.Root[:], db) + object.trie = trie object.storage = make(map[string]common.Hash) object.gasPool = new(big.Int) object.code, _ = db.Get(extobject.CodeHash) - return object } |