packagel1import("context""errors""github.com/ethereum-optimism/optimism/op-node/rollup/derive""github.com/ethereum-optimism/optimism/op-service/eth""github.com/ethereum/go-ethereum/log")varInvalidHashesLengthError=errors.New("invalid hashes length")typeBlobFetcherstruct{loggerlog.LoggeroracleOracle}var_=(*derive.L1BlobsFetcher)(nil)funcNewBlobFetcher(loggerlog.Logger,oracleOracle)*BlobFetcher{return&BlobFetcher{logger:logger,oracle:oracle,}}// GetBlobs fetches blobs that were confirmed in the given L1 block with the given indexed blob hashes.func(b*BlobFetcher)GetBlobs(ctxcontext.Context,refeth.L1BlockRef,hashes[]eth.IndexedBlobHash)([]*eth.Blob,error){blobs:=make([]*eth.Blob,len(hashes))fori:=0;i<len(hashes);i++{b.logger.Info("Fetching blob","l1_ref",ref.Hash,"blob_versioned_hash",hashes[i].Hash,"index",hashes[i].Index)blobs[i]=b.oracle.GetBlob(ref,hashes[i])}returnblobs,nil}