trie: clarify why verifyProof doesn't check hashes (#19530)
* trie: fix merkle proof * trie: use hasher instead of allocate keccack256 every time * trie: add comments
This commit is contained in:
parent
abeba0a1de
commit
14868a37fb
|
@ -21,7 +21,6 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/ethdb"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/rlp"
|
||||
|
@ -81,7 +80,7 @@ func (t *Trie) Prove(key []byte, fromLevel uint, proofDb ethdb.Writer) error {
|
|||
} else {
|
||||
enc, _ := rlp.EncodeToBytes(n)
|
||||
if !ok {
|
||||
hash = crypto.Keccak256(enc)
|
||||
hash = hasher.makeHashNode(enc)
|
||||
}
|
||||
proofDb.Put(hash, enc)
|
||||
}
|
||||
|
@ -104,6 +103,8 @@ func (t *SecureTrie) Prove(key []byte, fromLevel uint, proofDb ethdb.Writer) err
|
|||
// VerifyProof checks merkle proofs. The given proof must contain the value for
|
||||
// key in a trie with the given root hash. VerifyProof returns an error if the
|
||||
// proof contains invalid trie nodes or the wrong value.
|
||||
//
|
||||
// Note, the method assumes that all key-values in proofDb satisfy key = hash(value).
|
||||
func VerifyProof(rootHash common.Hash, key []byte, proofDb ethdb.Reader) (value []byte, nodes int, err error) {
|
||||
key = keybytesToHex(key)
|
||||
wantHash := rootHash
|
||||
|
|
Loading…
Reference in New Issue