trie: remove parameter 'fromLevel' in Prove (#27512)
This removes the feature where top nodes of the proof can be elided. It was intended to be used by the LES server, to save bandwidth when the client had already fetched parts of the state and only needed some extra nodes to complete the proof. Alas, it never got implemented in the client.
This commit is contained in:
@@ -322,12 +322,12 @@ func ServiceGetAccountRangeQuery(chain *core.BlockChain, req *GetAccountRangePac
|
||||
|
||||
// Generate the Merkle proofs for the first and last account
|
||||
proof := light.NewNodeSet()
|
||||
if err := tr.Prove(req.Origin[:], 0, proof); err != nil {
|
||||
if err := tr.Prove(req.Origin[:], proof); err != nil {
|
||||
log.Warn("Failed to prove account range", "origin", req.Origin, "err", err)
|
||||
return nil, nil
|
||||
}
|
||||
if last != (common.Hash{}) {
|
||||
if err := tr.Prove(last[:], 0, proof); err != nil {
|
||||
if err := tr.Prove(last[:], proof); err != nil {
|
||||
log.Warn("Failed to prove account range", "last", last, "err", err)
|
||||
return nil, nil
|
||||
}
|
||||
@@ -428,12 +428,12 @@ func ServiceGetStorageRangesQuery(chain *core.BlockChain, req *GetStorageRangesP
|
||||
return nil, nil
|
||||
}
|
||||
proof := light.NewNodeSet()
|
||||
if err := stTrie.Prove(origin[:], 0, proof); err != nil {
|
||||
if err := stTrie.Prove(origin[:], proof); err != nil {
|
||||
log.Warn("Failed to prove storage range", "origin", req.Origin, "err", err)
|
||||
return nil, nil
|
||||
}
|
||||
if last != (common.Hash{}) {
|
||||
if err := stTrie.Prove(last[:], 0, proof); err != nil {
|
||||
if err := stTrie.Prove(last[:], proof); err != nil {
|
||||
log.Warn("Failed to prove storage range", "last", last, "err", err)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@@ -273,12 +273,12 @@ func createAccountRequestResponse(t *testPeer, root common.Hash, origin common.H
|
||||
// Actually, we need to supply proofs either way! This seems to be an implementation
|
||||
// quirk in go-ethereum
|
||||
proof := light.NewNodeSet()
|
||||
if err := t.accountTrie.Prove(origin[:], 0, proof); err != nil {
|
||||
if err := t.accountTrie.Prove(origin[:], proof); err != nil {
|
||||
t.logger.Error("Could not prove inexistence of origin", "origin", origin, "error", err)
|
||||
}
|
||||
if len(keys) > 0 {
|
||||
lastK := (keys[len(keys)-1])[:]
|
||||
if err := t.accountTrie.Prove(lastK, 0, proof); err != nil {
|
||||
if err := t.accountTrie.Prove(lastK, proof); err != nil {
|
||||
t.logger.Error("Could not prove last item", "error", err)
|
||||
}
|
||||
}
|
||||
@@ -358,12 +358,12 @@ func createStorageRequestResponse(t *testPeer, root common.Hash, accounts []comm
|
||||
// Here's a potential gotcha: when constructing the proof, we cannot
|
||||
// use the 'origin' slice directly, but must use the full 32-byte
|
||||
// hash form.
|
||||
if err := stTrie.Prove(originHash[:], 0, proof); err != nil {
|
||||
if err := stTrie.Prove(originHash[:], proof); err != nil {
|
||||
t.logger.Error("Could not prove inexistence of origin", "origin", originHash, "error", err)
|
||||
}
|
||||
if len(keys) > 0 {
|
||||
lastK := (keys[len(keys)-1])[:]
|
||||
if err := stTrie.Prove(lastK, 0, proof); err != nil {
|
||||
if err := stTrie.Prove(lastK, proof); err != nil {
|
||||
t.logger.Error("Could not prove last item", "error", err)
|
||||
}
|
||||
}
|
||||
@@ -416,13 +416,13 @@ func createStorageRequestResponseAlwaysProve(t *testPeer, root common.Hash, acco
|
||||
// Here's a potential gotcha: when constructing the proof, we cannot
|
||||
// use the 'origin' slice directly, but must use the full 32-byte
|
||||
// hash form.
|
||||
if err := stTrie.Prove(origin[:], 0, proof); err != nil {
|
||||
if err := stTrie.Prove(origin[:], proof); err != nil {
|
||||
t.logger.Error("Could not prove inexistence of origin", "origin", origin,
|
||||
"error", err)
|
||||
}
|
||||
if len(keys) > 0 {
|
||||
lastK := (keys[len(keys)-1])[:]
|
||||
if err := stTrie.Prove(lastK, 0, proof); err != nil {
|
||||
if err := stTrie.Prove(lastK, proof); err != nil {
|
||||
t.logger.Error("Could not prove last item", "error", err)
|
||||
}
|
||||
}
|
||||
@@ -594,12 +594,12 @@ func TestSyncBloatedProof(t *testing.T) {
|
||||
}
|
||||
// The proofs
|
||||
proof := light.NewNodeSet()
|
||||
if err := t.accountTrie.Prove(origin[:], 0, proof); err != nil {
|
||||
if err := t.accountTrie.Prove(origin[:], proof); err != nil {
|
||||
t.logger.Error("Could not prove origin", "origin", origin, "error", err)
|
||||
}
|
||||
// The bloat: add proof of every single element
|
||||
for _, entry := range t.accountValues {
|
||||
if err := t.accountTrie.Prove(entry.k, 0, proof); err != nil {
|
||||
if err := t.accountTrie.Prove(entry.k, proof); err != nil {
|
||||
t.logger.Error("Could not prove item", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user