forked from cerc-io/plugeth
trie: test for edgecase in VerifyRangeProof (#24257)
* trie/proof: edge case for VerifyRangeProof * more consistency with other tests in the file * trie: fix test todo Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
parent
eef7a33135
commit
2dfa4bcf6c
@ -1067,3 +1067,36 @@ func nonRandomTrie(n int) (*Trie, map[string]*kv) {
|
|||||||
}
|
}
|
||||||
return trie, vals
|
return trie, vals
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRangeProofKeysWithSharedPrefix(t *testing.T) {
|
||||||
|
keys := [][]byte{
|
||||||
|
common.Hex2Bytes("aa10000000000000000000000000000000000000000000000000000000000000"),
|
||||||
|
common.Hex2Bytes("aa20000000000000000000000000000000000000000000000000000000000000"),
|
||||||
|
}
|
||||||
|
vals := [][]byte{
|
||||||
|
common.Hex2Bytes("02"),
|
||||||
|
common.Hex2Bytes("03"),
|
||||||
|
}
|
||||||
|
trie := new(Trie)
|
||||||
|
for i, key := range keys {
|
||||||
|
trie.Update(key, vals[i])
|
||||||
|
}
|
||||||
|
root := trie.Hash()
|
||||||
|
proof := memorydb.New()
|
||||||
|
start := common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000000")
|
||||||
|
end := common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
|
||||||
|
if err := trie.Prove(start, 0, proof); err != nil {
|
||||||
|
t.Fatalf("failed to prove start: %v", err)
|
||||||
|
}
|
||||||
|
if err := trie.Prove(end, 0, proof); err != nil {
|
||||||
|
t.Fatalf("failed to prove end: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
more, err := VerifyRangeProof(root, start, end, keys, vals, proof)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to verify range proof: %v", err)
|
||||||
|
}
|
||||||
|
if more != false {
|
||||||
|
t.Error("expected more to be false")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user