From b5e3c8b051bc335ae171460fff3067fb7568c429 Mon Sep 17 00:00:00 2001 From: Jian Xiao <99709935+jianoaix@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:13:18 -0800 Subject: [PATCH] Refactor the quorum batches computing (#1191) --- disperser/dataapi/nonsigner_handler.go | 2 +- disperser/dataapi/nonsigner_utils.go | 12 +++++++++--- disperser/dataapi/nonsigner_utils_test.go | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/disperser/dataapi/nonsigner_handler.go b/disperser/dataapi/nonsigner_handler.go index 7eac596abb..609c629dd4 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 0fcf020f0f..0a8ef2217e 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 0a0283628e..cad6d5a330 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))