MCPcopy Create free account
hub / github.com/ethstorage/es-node / getMiningData

Method getMiningData

ethstorage/miner/worker.go:722–753  ·  view source on GitHub ↗

getMiningData retrieves data needed to generate proof and verify against the contract.

(t *task, sampleIdx []uint64)

Source from the content-addressed store, hash-verified

720
721// getMiningData retrieves data needed to generate proof and verify against the contract.
722func (w *worker) getMiningData(t *task, sampleIdx []uint64) ([][]byte, []uint64, []uint64, []common.Hash, []common.Hash, error) {
723 checksLen := w.config.RandomChecks
724 dataSet := make([][]byte, checksLen)
725 kvIdxs, sampleIdxsInKv := make([]uint64, checksLen), make([]uint64, checksLen)
726 encodingKeys, encodedSamples := make([]common.Hash, checksLen), make([]common.Hash, checksLen)
727 sampleLenBits := w.storageMgr.MaxKvSizeBits() - es.SampleSizeBits
728 for i := uint64(0); i < checksLen; i++ {
729 kvIdxs[i] = sampleIdx[i] >> sampleLenBits
730 }
731 kvHashes, err := w.l1API.GetDataHashes(context.Background(), w.storageMgr.ContractAddress(), kvIdxs)
732 if err != nil {
733 w.lg.Error("Get data hashes error", "kvIdxs", kvIdxs, "error", err.Error())
734 return nil, nil, nil, nil, nil, err
735 }
736 for i := uint64(0); i < checksLen; i++ {
737 kvData, err := w.dataReader.GetBlob(kvIdxs[i], kvHashes[i])
738 if err != nil {
739 w.lg.Error("Get data error", "index", kvIdxs[i], "error", err.Error())
740 return nil, nil, nil, nil, nil, err
741 }
742 dataSet[i] = kvData
743 sampleIdxsInKv[i] = sampleIdx[i] % (1 << sampleLenBits)
744 encodingKeys[i] = es.CalcEncodeKey(kvHashes[i], kvIdxs[i], t.miner)
745 encodedSample, err := w.dataReader.ReadSample(t.shardIdx, sampleIdx[i])
746 if err != nil {
747 w.lg.Error("Read sample error", "index", sampleIdx[i], "error", err.Error())
748 return nil, nil, nil, nil, nil, err
749 }
750 encodedSamples[i] = encodedSample
751 }
752 return dataSet, kvIdxs, sampleIdxsInKv, encodingKeys, encodedSamples, nil
753}

Callers 1

mineTaskMethod · 0.95

Calls 6

GetDataHashesMethod · 0.65
ContractAddressMethod · 0.65
GetBlobMethod · 0.65
ReadSampleMethod · 0.65
MaxKvSizeBitsMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected