add method VerifyInclusionWithRoot

Signed-off-by: p4u <pau@dabax.net>
This commit is contained in:
p4u
2021-03-22 11:01:59 +01:00
parent 40ddcbf3f2
commit 6fb3b028ac

View File

@@ -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))
}
// 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
func (s *Trie) verifyInclusion(ap [][]byte, keyIndex int, key, leafHash []byte) []byte {
if keyIndex == len(ap) {