Skip to content

Commit

Permalink
trie: combine validation loops in VerifyRangeProof (#30823)
Browse files Browse the repository at this point in the history
Small optimization. It's guaranteed that `len(keys)` == `len(values)`,
so we can combine the checks in a single loop rather than 2 separate
loops.
  • Loading branch information
weiihann authored Nov 28, 2024
1 parent 8c1a36d commit 2406305
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions trie/proof.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,13 +486,11 @@ func VerifyRangeProof(rootHash common.Hash, firstKey []byte, keys [][]byte, valu
return false, fmt.Errorf("inconsistent proof data, keys: %d, values: %d", len(keys), len(values))
}
// Ensure the received batch is monotonic increasing and contains no deletions
for i := 0; i < len(keys)-1; i++ {
if bytes.Compare(keys[i], keys[i+1]) >= 0 {
for i := 0; i < len(keys); i++ {
if i < len(keys)-1 && bytes.Compare(keys[i], keys[i+1]) >= 0 {
return false, errors.New("range is not monotonically increasing")
}
}
for _, value := range values {
if len(value) == 0 {
if len(values[i]) == 0 {
return false, errors.New("range contains deletion")
}
}
Expand Down

0 comments on commit 2406305

Please sign in to comment.