aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/state/dump.go16
-rw-r--r--core/state/state_object.go2
-rw-r--r--core/state/state_test.go18
3 files changed, 27 insertions, 9 deletions
diff --git a/core/state/dump.go b/core/state/dump.go
index 8eb03e8e4..a328b0537 100644
--- a/core/state/dump.go
+++ b/core/state/dump.go
@@ -46,11 +46,19 @@ func (self *StateDB) RawDump() World {
it := self.trie.Iterator()
for it.Next() {
addr := self.trie.GetKey(it.Key)
- stateObject, _ := DecodeObject(common.BytesToAddress(addr), self.db, it.Value)
-
- account := Account{Balance: stateObject.balance.String(), Nonce: stateObject.nonce, Root: common.Bytes2Hex(stateObject.Root()), CodeHash: common.Bytes2Hex(stateObject.codeHash), Code: common.Bytes2Hex(stateObject.Code())}
- account.Storage = make(map[string]string)
+ stateObject, err := DecodeObject(common.BytesToAddress(addr), self.db, it.Value)
+ if err != nil {
+ panic(err)
+ }
+ account := Account{
+ Balance: stateObject.balance.String(),
+ Nonce: stateObject.nonce,
+ Root: common.Bytes2Hex(stateObject.Root()),
+ CodeHash: common.Bytes2Hex(stateObject.codeHash),
+ Code: common.Bytes2Hex(stateObject.Code()),
+ Storage: make(map[string]string),
+ }
storageIt := stateObject.trie.Iterator()
for storageIt.Next() {
account.Storage[common.Bytes2Hex(self.trie.GetKey(storageIt.Key))] = common.Bytes2Hex(storageIt.Value)
diff --git a/core/state/state_object.go b/core/state/state_object.go
index 326708118..769c63d42 100644
--- a/core/state/state_object.go
+++ b/core/state/state_object.go
@@ -287,7 +287,7 @@ func DecodeObject(address common.Address, db trie.Database, data []byte) (*State
}
if !bytes.Equal(ext.CodeHash, emptyCodeHash) {
if obj.code, err = db.Get(ext.CodeHash); err != nil {
- return nil, fmt.Errorf("can't find code for hash %x: %v", ext.CodeHash, err)
+ return nil, fmt.Errorf("can't get code for hash %x: %v", ext.CodeHash, err)
}
}
obj.nonce = ext.Nonce
diff --git a/core/state/state_test.go b/core/state/state_test.go
index a45eddd0d..ce86a5b76 100644
--- a/core/state/state_test.go
+++ b/core/state/state_test.go
@@ -36,7 +36,6 @@ var _ = checker.Suite(&StateSuite{})
var toAddr = common.BytesToAddress
func (s *StateSuite) TestDump(c *checker.C) {
- return
// generate a few entries
obj1 := s.state.GetOrNewStateObject(toAddr([]byte{0x01}))
obj1.AddBalance(big.NewInt(22))
@@ -48,24 +47,35 @@ func (s *StateSuite) TestDump(c *checker.C) {
// write some of them to the trie
s.state.UpdateStateObject(obj1)
s.state.UpdateStateObject(obj2)
+ s.state.Commit()
// check that dump contains the state objects that are in trie
got := string(s.state.Dump())
want := `{
- "root": "6e277ae8357d013e50f74eedb66a991f6922f93ae03714de58b3d0c5e9eee53f",
+ "root": "71edff0130dd2385947095001c73d9e28d862fc286fca2b922ca6f6f3cddfdd2",
"accounts": {
- "1468288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d": {
+ "0000000000000000000000000000000000000001": {
"balance": "22",
"nonce": 0,
"root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"codeHash": "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "code": "",
"storage": {}
},
- "a17eacbc25cda025e81db9c5c62868822c73ce097cee2a63e33a2e41268358a1": {
+ "0000000000000000000000000000000000000002": {
+ "balance": "44",
+ "nonce": 0,
+ "root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "codeHash": "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
+ "code": "",
+ "storage": {}
+ },
+ "0000000000000000000000000000000000000102": {
"balance": "0",
"nonce": 0,
"root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"codeHash": "87874902497a5bb968da31a2998d8f22e949d1ef6214bcdedd8bae24cca4b9e3",
+ "code": "03030303030303",
"storage": {}
}
}