Commit a82b89e2 authored by obscuren's avatar obscuren

Added storage root to dump

parent c8302882
...@@ -47,7 +47,6 @@ func (self *LDBDatabase) Get(key []byte) ([]byte, error) { ...@@ -47,7 +47,6 @@ func (self *LDBDatabase) Get(key []byte) ([]byte, error) {
} }
if self.comp { if self.comp {
//fmt.Println("get", dat)
return rle.Decompress(dat) return rle.Decompress(dat)
} }
......
...@@ -10,6 +10,7 @@ import ( ...@@ -10,6 +10,7 @@ import (
type Account struct { type Account struct {
Balance string `json:"balance"` Balance string `json:"balance"`
Nonce uint64 `json:"nonce"` Nonce uint64 `json:"nonce"`
Root string `json:"root"`
CodeHash string `json:"codeHash"` CodeHash string `json:"codeHash"`
Storage map[string]string `json:"storage"` Storage map[string]string `json:"storage"`
} }
...@@ -28,7 +29,7 @@ func (self *State) Dump() []byte { ...@@ -28,7 +29,7 @@ func (self *State) Dump() []byte {
self.Trie.NewIterator().Each(func(key string, value *ethutil.Value) { self.Trie.NewIterator().Each(func(key string, value *ethutil.Value) {
stateObject := NewStateObjectFromBytes([]byte(key), value.Bytes()) stateObject := NewStateObjectFromBytes([]byte(key), value.Bytes())
account := Account{Balance: stateObject.balance.String(), Nonce: stateObject.Nonce, CodeHash: ethutil.Bytes2Hex(stateObject.codeHash)} account := Account{Balance: stateObject.balance.String(), Nonce: stateObject.Nonce, Root: ethutil.Bytes2Hex(stateObject.Root()), CodeHash: ethutil.Bytes2Hex(stateObject.codeHash)}
account.Storage = make(map[string]string) account.Storage = make(map[string]string)
stateObject.EachStorage(func(key string, value *ethutil.Value) { stateObject.EachStorage(func(key string, value *ethutil.Value) {
......
...@@ -283,6 +283,10 @@ func (self *StateObject) Object() *StateObject { ...@@ -283,6 +283,10 @@ func (self *StateObject) Object() *StateObject {
return self return self
} }
func (self *StateObject) Root() []byte {
return self.State.Trie.GetRoot()
}
// Debug stuff // Debug stuff
func (self *StateObject) CreateOutputForDiff() { func (self *StateObject) CreateOutputForDiff() {
fmt.Printf("%x %x %x %x\n", self.Address(), self.State.Root(), self.balance.Bytes(), self.Nonce) fmt.Printf("%x %x %x %x\n", self.Address(), self.State.Root(), self.balance.Bytes(), self.Nonce)
...@@ -297,6 +301,7 @@ func (self *StateObject) CreateOutputForDiff() { ...@@ -297,6 +301,7 @@ func (self *StateObject) CreateOutputForDiff() {
// State object encoding methods // State object encoding methods
func (c *StateObject) RlpEncode() []byte { func (c *StateObject) RlpEncode() []byte {
fmt.Printf("%x %x\n", c.State.Trie.Root, c.CodeHash())
return ethutil.Encode([]interface{}{c.Nonce, c.balance, c.State.Trie.Root, c.CodeHash()}) return ethutil.Encode([]interface{}{c.Nonce, c.balance, c.State.Trie.Root, c.CodeHash()})
} }
......
...@@ -178,7 +178,7 @@ func (self *Trie) setRoot(root interface{}) { ...@@ -178,7 +178,7 @@ func (self *Trie) setRoot(root interface{}) {
switch t := root.(type) { switch t := root.(type) {
case string: case string:
if t == "" { if t == "" {
root = crypto.Sha3([]byte("")) root = crypto.Sha3(ethutil.Encode(""))
} }
self.Root = root self.Root = root
case []byte: case []byte:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment