From 6fb3b028ac718d2a0248175bd0443c7bf8b68702 Mon Sep 17 00:00:00 2001 From: p4u Date: Mon, 22 Mar 2021 11:01:59 +0100 Subject: [PATCH] add method VerifyInclusionWithRoot Signed-off-by: p4u --- trie_merkle_proof.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/trie_merkle_proof.go b/trie_merkle_proof.go index cb3c590..b427a97 100644 --- a/trie_merkle_proof.go +++ b/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)) } +// 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) {