@@ -15,6 +15,7 @@ import (
1515 "github.com/ethereum/go-ethereum/core/types"
1616 "github.com/ethereum/go-ethereum/ethclient"
1717 "github.com/ipfs/go-cid"
18+ pool "github.com/libp2p/go-buffer-pool"
1819 "github.com/minio/sha256-simd"
1920 "github.com/oklog/ulid"
2021 "github.com/samber/lo"
@@ -435,6 +436,7 @@ func (p *ProveTask) proveRoot(ctx context.Context, dataSetID int64, pieceID int6
435436 if err != nil {
436437 return contract.IPDPTypesProof {}, xerrors .Errorf ("failed to build memtree: %w" , err )
437438 }
439+ defer pool .Put (memTree )
438440 log .Debugw ("provePiece" , "rootChallengeOffset" , rootChallengeOffset , "challengedLeaf" , challengedLeaf )
439441
440442 mProof , err := proof .MemtreeProof (memTree , challengedLeaf )
@@ -519,6 +521,7 @@ func (p *ProveTask) proveRoot(ctx context.Context, dataSetID int64, pieceID int6
519521 if err != nil {
520522 return contract.IPDPTypesProof {}, xerrors .Errorf ("failed to build memtree: %w" , err )
521523 }
524+ defer pool .Put (memtree )
522525
523526 // Get challenge leaf in subTree
524527 subTreeChallenge := challengedLeaf - startLeaf
@@ -552,6 +555,7 @@ func (p *ProveTask) proveRoot(ctx context.Context, dataSetID int64, pieceID int6
552555 if err != nil {
553556 return contract.IPDPTypesProof {}, xerrors .Errorf ("failed to build memtree from snapshot: %w" , err )
554557 }
558+ defer pool .Put (mtree )
555559
556560 // Generate merkle proof from snapShot node to commP
557561 proofs , err := proof .MemtreeProof (mtree , snapshotNodeIndex )
0 commit comments