Browse Source

add method VerifyInclusionWithRoot

Signed-off-by: p4u <pau@dabax.net>
master
p4u 3 years ago
parent
commit
6fb3b028ac
1 changed files with 6 additions and 0 deletions
  1. +6
    -0
      trie_merkle_proof.go

+ 6
- 0
trie_merkle_proof.go

@ -122,6 +122,12 @@ func (s *Trie) VerifyInclusion(ap [][]byte, key, value []byte) bool {
return bytes.Equal(s.Root, s.verifyInclusion(ap, 0, key, leafHash)) return bytes.Equal(s.Root, s.verifyInclusion(ap, 0, key, leafHash))
} }
// VerifyInclusionWithRoot verifies that key/value is included in the trie with provided root
func (s *Trie) VerifyInclusionWithRoot(root []byte, ap [][]byte, key, value []byte) bool {
leafHash := s.hash(key, value, []byte{byte(s.TrieHeight - len(ap))})
return bytes.Equal(root, s.verifyInclusion(ap, 0, key, leafHash))
}
// verifyInclusion returns the merkle root by hashing the merkle proof items // verifyInclusion returns the merkle root by hashing the merkle proof items
func (s *Trie) verifyInclusion(ap [][]byte, keyIndex int, key, leafHash []byte) []byte { func (s *Trie) verifyInclusion(ap [][]byte, keyIndex int, key, leafHash []byte) []byte {
if keyIndex == len(ap) { if keyIndex == len(ap) {

Loading…
Cancel
Save