diff --git a/lib/trie/database.go b/lib/trie/database.go index 273ce9f8d1..cf8d7c2faf 100644 --- a/lib/trie/database.go +++ b/lib/trie/database.go @@ -78,15 +78,17 @@ func (t *Trie) store(db chaindb.Batch, n Node) error { return nil } -// loadFromProof create a partial trie based on the proof slice, as it only contains nodes that are in the proof afaik. -func (t *Trie) loadFromProof(rawProof [][]byte, rootHash []byte) error { - if len(rawProof) == 0 { +// LoadFromProof sets a partial trie based on the proof slice of encoded nodes. +// Note this is exported because it is imported is used by: +// https://github.com/ComposableFi/ibc-go/blob/6d62edaa1a3cb0768c430dab81bb195e0b0c72db/modules/light-clients/11-beefy/types/client_state.go#L78 +func (t *Trie) LoadFromProof(proofEncodedNodes [][]byte, rootHash []byte) error { + if len(proofEncodedNodes) == 0 { return ErrEmptyProof } - proofHashToNode := make(map[string]Node, len(rawProof)) + proofHashToNode := make(map[string]Node, len(proofEncodedNodes)) - for i, rawNode := range rawProof { + for i, rawNode := range proofEncodedNodes { decodedNode, err := node.Decode(bytes.NewReader(rawNode)) if err != nil { return fmt.Errorf("%w: at index %d: 0x%x", diff --git a/lib/trie/proof.go b/lib/trie/proof.go index 4bd2b0c066..2d8444d2db 100644 --- a/lib/trie/proof.go +++ b/lib/trie/proof.go @@ -84,7 +84,7 @@ func VerifyProof(proof [][]byte, root []byte, items []Pair) (bool, error) { } proofTrie := NewEmptyTrie() - if err := proofTrie.loadFromProof(proof, root); err != nil { + if err := proofTrie.LoadFromProof(proof, root); err != nil { return false, fmt.Errorf("%w: %s", ErrLoadFromProof, err) } diff --git a/lib/trie/proof_test.go b/lib/trie/proof_test.go index 2951abfee8..f00d97abcb 100644 --- a/lib/trie/proof_test.go +++ b/lib/trie/proof_test.go @@ -161,7 +161,7 @@ func TestVerifyProof_ShouldReturnTrueWithouCompareValues(t *testing.T) { require.NoError(t, err) } -func TestBranchNodes_SameHash_DiferentPaths_GenerateAndVerifyProof(t *testing.T) { +func TestBranchNodes_SameHash_DifferentPaths_GenerateAndVerifyProof(t *testing.T) { value := []byte("somevalue") entries := []Pair{ {Key: []byte("d"), Value: value},