Transaction execution fixes

This commit is contained in:
obscuren
2014-11-12 01:36:36 +01:00
parent 9bb1ac7564
commit 60cdb1148c
12 changed files with 61 additions and 33 deletions

View File

@ -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))
}
}