getMiningData retrieves data needed to generate proof and verify against the contract.
(t *task, sampleIdx []uint64)
| 720 | |
| 721 | // getMiningData retrieves data needed to generate proof and verify against the contract. |
| 722 | func (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 | } |
no test coverage detected