diff --git a/disperser/dataapi/nonsigner_handler.go b/disperser/dataapi/nonsigner_handler.go index 7eac596ab..609c629dd 100644 --- a/disperser/dataapi/nonsigner_handler.go +++ b/disperser/dataapi/nonsigner_handler.go @@ -200,7 +200,7 @@ func computeNumFailed(batches []*BatchNonSigningInfo, operatorQuorumIntervals Op func computeNumResponsible(batches []*BatchNonSigningInfo, operatorQuorumIntervals OperatorQuorumIntervals) map[string]map[uint8]int { // Create quorumBatches, where quorumBatches[q].AccuBatches is the total number of // batches in block interval [startBlock, b] for quorum "q". - quorumBatches := CreatQuorumBatches(batches) + quorumBatches := CreatQuorumBatches(CreateQuorumBatchMap(batches)) numResponsible := make(map[string]map[uint8]int) for op, val := range operatorQuorumIntervals { diff --git a/disperser/dataapi/nonsigner_utils.go b/disperser/dataapi/nonsigner_utils.go index 0fcf020f0..0a8ef2217 100644 --- a/disperser/dataapi/nonsigner_utils.go +++ b/disperser/dataapi/nonsigner_utils.go @@ -209,9 +209,9 @@ func ComputeNumBatches(quorumBatches *QuorumBatches, startBlock, endBlock uint32 return num } -// CreatQuorumBatches returns quorumBatches, where quorumBatches[q] is a list of -// QuorumBatches in ascending order by block number. -func CreatQuorumBatches(batches []*BatchNonSigningInfo) map[uint8]*QuorumBatches { +// CreateQuorumBatchMap returns quorumBatchMap, where quorumBatchMap[q][b] means the number of +// batches at block b that have dispersed to quorum q. +func CreateQuorumBatchMap(batches []*BatchNonSigningInfo) map[uint8]map[uint32]int { quorumBatchMap := make(map[uint8]map[uint32]int) for _, batch := range batches { for _, q := range batch.QuorumNumbers { @@ -221,6 +221,12 @@ func CreatQuorumBatches(batches []*BatchNonSigningInfo) map[uint8]*QuorumBatches quorumBatchMap[q][batch.ReferenceBlockNumber]++ } } + return quorumBatchMap +} + +// CreatQuorumBatches returns quorumBatches, where quorumBatches[q] is a list of +// QuorumBatches in ascending order by block number. +func CreatQuorumBatches(quorumBatchMap map[uint8]map[uint32]int) map[uint8]*QuorumBatches { quorumBatches := make(map[uint8]*QuorumBatches) for q, s := range quorumBatchMap { numBatches := make([]*NumBatchesAtBlock, 0) diff --git a/disperser/dataapi/nonsigner_utils_test.go b/disperser/dataapi/nonsigner_utils_test.go index 0a0283628..cad6d5a33 100644 --- a/disperser/dataapi/nonsigner_utils_test.go +++ b/disperser/dataapi/nonsigner_utils_test.go @@ -461,7 +461,7 @@ func TestCreatQuorumBatches(t *testing.T) { }, } - quorumBatches := dataapi.CreatQuorumBatches(batchNonSigningInfo) + quorumBatches := dataapi.CreatQuorumBatches(dataapi.CreateQuorumBatchMap(batchNonSigningInfo)) assert.Equal(t, 3, len(quorumBatches))