diff --git a/app/protocol/flows/blockrelay/handle_request_pruning_point_utxo_set.go b/app/protocol/flows/blockrelay/handle_request_pruning_point_utxo_set.go index 76f92acaf..3f310959a 100644 --- a/app/protocol/flows/blockrelay/handle_request_pruning_point_utxo_set.go +++ b/app/protocol/flows/blockrelay/handle_request_pruning_point_utxo_set.go @@ -102,7 +102,7 @@ func (flow *handleRequestPruningPointUTXOSetFlow) sendPruningPointUTXOSet( return err } - if len(pruningPointUTXOs) < step { + if len(pruningPointUTXOs) < step && chunksSent%ibdBatchSize == 0 { log.Debugf("Finished sending UTXOs for pruning block %s", msgRequestPruningPointUTXOSet.PruningPointHash) diff --git a/domain/consensus/processes/pruningmanager/pruningmanager.go b/domain/consensus/processes/pruningmanager/pruningmanager.go index 28e108152..58a86e1a0 100644 --- a/domain/consensus/processes/pruningmanager/pruningmanager.go +++ b/domain/consensus/processes/pruningmanager/pruningmanager.go @@ -11,6 +11,7 @@ import ( "github.com/kaspanet/kaspad/infrastructure/logger" "github.com/kaspanet/kaspad/util/staging" "github.com/pkg/errors" + "sort" ) // pruningManager resolves and manages the current pruning point @@ -928,7 +929,6 @@ func (pm *pruningManager) PruningPointAndItsAnticoneWithTrustedData() ([]*extern return nil, err } - blocks = append(blocks, pruningPointWithTrustedData) for _, blockHash := range pruningPointAnticone { blockWithTrustedData, err := pm.blockWithTrustedData(stagingArea, blockHash) if err != nil { @@ -938,6 +938,14 @@ func (pm *pruningManager) PruningPointAndItsAnticoneWithTrustedData() ([]*extern blocks = append(blocks, blockWithTrustedData) } + // Sorting the blocks in topological order + sort.Slice(blocks, func(i, j int) bool { + return blocks[i].Block.Header.BlueWork().Cmp(blocks[j].Block.Header.BlueWork()) < 0 + }) + + // The pruning point should always come first + blocks = append([]*externalapi.BlockWithTrustedData{pruningPointWithTrustedData}, blocks...) + return blocks, nil } diff --git a/stability-tests/daa/daa_test.go b/stability-tests/daa/daa_test.go index e989b685f..e48669921 100644 --- a/stability-tests/daa/daa_test.go +++ b/stability-tests/daa/daa_test.go @@ -48,7 +48,7 @@ func TestDAA(t *testing.T) { }, { name: "sudden hash rate drop", - runDuration: 15 * time.Minute, + runDuration: 45 * time.Minute, targetHashNanosecondsFunction: func(totalElapsedDuration time.Duration) int64 { if totalElapsedDuration < 5*time.Minute { return machineHashNanoseconds * 2 @@ -130,7 +130,7 @@ func TestDAA(t *testing.T) { }, { name: "constant exponential hash rate decrease", - runDuration: 15 * time.Minute, + runDuration: 45 * time.Minute, targetHashNanosecondsFunction: func(totalElapsedDuration time.Duration) int64 { fromHashNanoseconds := machineHashNanoseconds * 2 toHashNanoseconds := machineHashNanoseconds * 10