Bugfixes to trie

This commit is contained in:
Vitalik Buterin 2013-12-31 17:29:43 -05:00
parent 0cd6ec613c
commit 2992c04169

View file

@ -120,14 +120,14 @@ class Trie():
if self.debug: print 'dcn', curnode if self.debug: print 'dcn', curnode
if len(curnode) == 2: if len(curnode) == 2:
(k2, v2) = curnode (k2, v2) = curnode
k2 = hexarraykey_to_bin(k2) k2 = bin_to_hexarraykey(k2)
if key == k2: if key == k2:
return '' return ''
elif key[:len(k2)] == k2: elif key[:len(k2)] == k2:
newhash = self.__delete_state(v2,key[len(k2):]) newhash = self.__delete_state(v2,key[len(k2):])
childnode = rlp.decode(self.db.get(newhash)) childnode = rlp.decode(self.db.get(newhash))
if len(childnode) == 2: if len(childnode) == 2:
newkey = k2 + hexarraykey_to_bin(childnode[0]) newkey = k2 + bin_to_hexarraykey(childnode[0])
newnode = [ hexarraykey_to_bin(newkey), childnode[1] ] newnode = [ hexarraykey_to_bin(newkey), childnode[1] ]
else: else:
newnode = [ curnode[0], newhash ] newnode = [ curnode[0], newhash ]
@ -148,7 +148,7 @@ class Trie():
if len(childnode) == 17: if len(childnode) == 17:
newnode2 = [ key[0], newnode[onlynode] ] newnode2 = [ key[0], newnode[onlynode] ]
elif len(childnode) == 2: elif len(childnode) == 2:
newkey = [onlynode] + hexarraykey_to_bin(childnode[0]) newkey = [onlynode] + bin_to_hexarraykey(childnode[0])
newnode2 = [ hexarraykey_to_bin(newkey), childnode[1] ] newnode2 = [ hexarraykey_to_bin(newkey), childnode[1] ]
else: else:
newnode2 = newnode newnode2 = newnode