Transaction execution fixes
This commit is contained in:
32
trie/trie.go
32
trie/trie.go
@ -16,10 +16,7 @@ func ParanoiaCheck(t1 *Trie) (bool, *Trie) {
|
||||
t2.Update(key, v.Str())
|
||||
})
|
||||
|
||||
a := ethutil.NewValue(t2.Root).Bytes()
|
||||
b := ethutil.NewValue(t1.Root).Bytes()
|
||||
|
||||
return bytes.Compare(a, b) == 0, t2
|
||||
return bytes.Compare(t2.GetRoot(), t1.GetRoot()) == 0, t2
|
||||
}
|
||||
|
||||
func (s *Cache) Len() int {
|
||||
@ -97,7 +94,7 @@ func (cache *Cache) Get(key []byte) *ethutil.Value {
|
||||
}
|
||||
}()
|
||||
// Create caching node
|
||||
cache.nodes[string(key)] = NewNode(key, value, false)
|
||||
cache.nodes[string(key)] = NewNode(key, value, true)
|
||||
|
||||
return value
|
||||
}
|
||||
@ -177,10 +174,12 @@ func New(db ethutil.Database, Root interface{}) *Trie {
|
||||
func (self *Trie) setRoot(root interface{}) {
|
||||
switch t := root.(type) {
|
||||
case string:
|
||||
if t == "" {
|
||||
root = crypto.Sha3(ethutil.Encode(""))
|
||||
}
|
||||
self.Root = root
|
||||
/*
|
||||
if t == "" {
|
||||
root = crypto.Sha3(ethutil.Encode(""))
|
||||
}
|
||||
*/
|
||||
self.Root = []byte(t)
|
||||
case []byte:
|
||||
self.Root = root
|
||||
default:
|
||||
@ -223,13 +222,20 @@ func (t *Trie) Delete(key string) {
|
||||
}
|
||||
|
||||
func (self *Trie) GetRoot() []byte {
|
||||
switch self.Root.(type) {
|
||||
switch t := self.Root.(type) {
|
||||
case string:
|
||||
return []byte(self.Root.(string))
|
||||
if t == "" {
|
||||
return crypto.Sha3(ethutil.Encode(""))
|
||||
}
|
||||
return []byte(t)
|
||||
case []byte:
|
||||
return self.Root.([]byte)
|
||||
if len(t) == 0 {
|
||||
return crypto.Sha3(ethutil.Encode(""))
|
||||
}
|
||||
|
||||
return t
|
||||
default:
|
||||
panic(fmt.Sprintf("invalid root type %T", self.Root))
|
||||
panic(fmt.Sprintf("invalid root type %T (%v)", self.Root, self.Root))
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user