From 8de099ae753b2ea427a0f43abbd04019c5f76ddf Mon Sep 17 00:00:00 2001 From: obscuren Date: Wed, 2 Jul 2014 17:47:18 +0200 Subject: [PATCH] Added paranoia check --- ethtrie/trie.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ethtrie/trie.go b/ethtrie/trie.go index 194c98006..38c78e7f4 100644 --- a/ethtrie/trie.go +++ b/ethtrie/trie.go @@ -1,6 +1,7 @@ package ethtrie import ( + "bytes" "fmt" "github.com/ethereum/eth-go/ethcrypto" "github.com/ethereum/eth-go/ethutil" @@ -8,6 +9,19 @@ import ( "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 { return len(s.nodes) }