|
|
@ -1,6 +1,7 @@ |
|
|
|
package ethtrie |
|
|
|
package ethtrie |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
import ( |
|
|
|
|
|
|
|
"bytes" |
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"github.com/ethereum/eth-go/ethcrypto" |
|
|
|
"github.com/ethereum/eth-go/ethcrypto" |
|
|
|
"github.com/ethereum/eth-go/ethutil" |
|
|
|
"github.com/ethereum/eth-go/ethutil" |
|
|
@ -8,6 +9,19 @@ import ( |
|
|
|
"sync" |
|
|
|
"sync" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func ParanoiaCheck(t1 *Trie) (bool, *Trie) { |
|
|
|
|
|
|
|
t2 := NewTrie(ethutil.Config.Db, "") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t1.NewIterator().Each(func(key string, v *ethutil.Value) { |
|
|
|
|
|
|
|
t2.Update(key, v.Str()) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a := ethutil.NewValue(t2.Root).Bytes() |
|
|
|
|
|
|
|
b := ethutil.NewValue(t1.Root).Bytes() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return bytes.Compare(a, b) == 0, t2 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (s *Cache) Len() int { |
|
|
|
func (s *Cache) Len() int { |
|
|
|
return len(s.nodes) |
|
|
|
return len(s.nodes) |
|
|
|
} |
|
|
|
} |
|
|
|