diff --git a/app/component_manager.go b/app/component_manager.go index f3efe34e9..e2f20beae 100644 --- a/app/component_manager.go +++ b/app/component_manager.go @@ -2,9 +2,10 @@ package app import ( "fmt" - "github.com/kaspanet/kaspad/domain/utxoindex" "sync/atomic" + "github.com/kaspanet/kaspad/domain/utxoindex" + infrastructuredatabase "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/domain" @@ -79,7 +80,7 @@ func (a *ComponentManager) Stop() { func NewComponentManager(cfg *config.Config, db infrastructuredatabase.Database, interrupt chan<- struct{}) ( *ComponentManager, error) { - domain, err := domain.New(cfg.ActiveNetParams, db) + domain, err := domain.New(cfg.ActiveNetParams, db, cfg.IsArchivalNode) if err != nil { return nil, err } diff --git a/domain/consensus/consensus_test.go b/domain/consensus/consensus_test.go index cc38ca06e..9b423c455 100644 --- a/domain/consensus/consensus_test.go +++ b/domain/consensus/consensus_test.go @@ -14,7 +14,7 @@ import ( func TestConsensus_GetBlockInfo(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestConsensus_GetBlockInfo") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestConsensus_GetBlockInfo") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/factory.go b/domain/consensus/factory.go index 807455522..cf9da3f95 100644 --- a/domain/consensus/factory.go +++ b/domain/consensus/factory.go @@ -46,10 +46,11 @@ import ( // Factory instantiates new Consensuses type Factory interface { - NewConsensus(dagParams *dagconfig.Params, db infrastructuredatabase.Database) (externalapi.Consensus, error) - NewTestConsensus(dagParams *dagconfig.Params, testName string) ( + NewConsensus(dagParams *dagconfig.Params, db infrastructuredatabase.Database, isArchivalNode bool) ( + externalapi.Consensus, error) + NewTestConsensus(dagParams *dagconfig.Params, isArchivalNode bool, testName string) ( tc testapi.TestConsensus, teardown func(keepDataDir bool), err error) - NewTestConsensusWithDataDir(dagParams *dagconfig.Params, dataDir string) ( + NewTestConsensusWithDataDir(dagParams *dagconfig.Params, dataDir string, isArchivalNode bool) ( tc testapi.TestConsensus, teardown func(keepDataDir bool), err error) } @@ -61,7 +62,9 @@ func NewFactory() Factory { } // NewConsensus instantiates a new Consensus -func (f *factory) NewConsensus(dagParams *dagconfig.Params, db infrastructuredatabase.Database) (externalapi.Consensus, error) { +func (f *factory) NewConsensus(dagParams *dagconfig.Params, db infrastructuredatabase.Database, isArchivalNode bool) ( + externalapi.Consensus, error) { + dbManager := consensusdatabase.New(db) pruningWindowSizeForCaches := int(dagParams.PruningDepth()) @@ -236,6 +239,7 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, db infrastructuredat blockStore, blockHeaderStore, utxoDiffStore, + isArchivalNode, genesisHash, dagParams.FinalityDepth(), dagParams.PruningDepth()) @@ -348,7 +352,7 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, db infrastructuredat return c, nil } -func (f *factory) NewTestConsensus(dagParams *dagconfig.Params, testName string) ( +func (f *factory) NewTestConsensus(dagParams *dagconfig.Params, isArchivalNode bool, testName string) ( tc testapi.TestConsensus, teardown func(keepDataDir bool), err error) { dataDir, err := ioutil.TempDir("", testName) @@ -356,17 +360,17 @@ func (f *factory) NewTestConsensus(dagParams *dagconfig.Params, testName string) return nil, nil, err } - return f.NewTestConsensusWithDataDir(dagParams, dataDir) + return f.NewTestConsensusWithDataDir(dagParams, dataDir, isArchivalNode) } -func (f *factory) NewTestConsensusWithDataDir(dagParams *dagconfig.Params, dataDir string) ( +func (f *factory) NewTestConsensusWithDataDir(dagParams *dagconfig.Params, dataDir string, isArchivalNode bool) ( tc testapi.TestConsensus, teardown func(keepDataDir bool), err error) { db, err := ldb.NewLevelDB(dataDir) if err != nil { return nil, nil, err } - consensusAsInterface, err := f.NewConsensus(dagParams, db) + consensusAsInterface, err := f.NewConsensus(dagParams, db, isArchivalNode) if err != nil { return nil, nil, err } diff --git a/domain/consensus/factory_test.go b/domain/consensus/factory_test.go index 9db43b9a9..e352e15ee 100644 --- a/domain/consensus/factory_test.go +++ b/domain/consensus/factory_test.go @@ -1,10 +1,11 @@ package consensus import ( - "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/infrastructure/db/database/ldb" "io/ioutil" "testing" + + "github.com/kaspanet/kaspad/domain/dagconfig" + "github.com/kaspanet/kaspad/infrastructure/db/database/ldb" ) func TestNewConsensus(t *testing.T) { @@ -22,7 +23,7 @@ func TestNewConsensus(t *testing.T) { t.Fatalf("error in NewLevelDB: %s", err) } - _, err = f.NewConsensus(dagParams, db) + _, err = f.NewConsensus(dagParams, db, false) if err != nil { t.Fatalf("error in NewConsensus: %+v", err) } diff --git a/domain/consensus/finality_test.go b/domain/consensus/finality_test.go index e267c5380..ff1547e59 100644 --- a/domain/consensus/finality_test.go +++ b/domain/consensus/finality_test.go @@ -20,7 +20,7 @@ func TestFinality(t *testing.T) { params.FinalityDuration = 50 * params.TargetTimePerBlock factory := NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestFinality") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestFinality") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } @@ -232,12 +232,12 @@ func TestBoundedMergeDepth(t *testing.T) { } factory := NewFactory() - consensusBuild, teardownFunc1, err := factory.NewTestConsensus(params, "BoundedMergeTestBuild") + consensusBuild, teardownFunc1, err := factory.NewTestConsensus(params, false, "BoundedMergeTestBuild") if err != nil { t.Fatalf("TestBoundedMergeDepth: Error setting up consensus: %+v", err) } - consensusReal, teardownFunc2, err := factory.NewTestConsensus(params, "BoundedMergeTestReal") + consensusReal, teardownFunc2, err := factory.NewTestConsensus(params, false, "BoundedMergeTestReal") if err != nil { t.Fatalf("TestBoundedMergeDepth: Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/blockprocessor/validateandinsertblock_test.go b/domain/consensus/processes/blockprocessor/validateandinsertblock_test.go index 8f59baffe..6cfc26ea4 100644 --- a/domain/consensus/processes/blockprocessor/validateandinsertblock_test.go +++ b/domain/consensus/processes/blockprocessor/validateandinsertblock_test.go @@ -1,6 +1,8 @@ package blockprocessor_test import ( + "testing" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/ruleerrors" @@ -9,13 +11,12 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/utils/testutils" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/pkg/errors" - "testing" ) func TestBlockStatus(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestBlockStatus") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestBlockStatus") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go b/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go index 53f47191f..5906b8f30 100644 --- a/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go +++ b/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go @@ -1,10 +1,11 @@ package blockvalidator_test import ( - "github.com/kaspanet/kaspad/domain/consensus/utils/blockheader" "math" "testing" + "github.com/kaspanet/kaspad/domain/consensus/utils/blockheader" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/ruleerrors" @@ -21,7 +22,7 @@ func TestChainedTransactions(t *testing.T) { factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestChainedTransactions") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestChainedTransactions") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } @@ -83,7 +84,7 @@ func TestChainedTransactions(t *testing.T) { func TestCheckBlockSanity(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestCheckBlockSanity") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestCheckBlockSanity") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/blockvalidator/block_header_in_context_test.go b/domain/consensus/processes/blockvalidator/block_header_in_context_test.go index 4791e7e11..5e2f77c46 100644 --- a/domain/consensus/processes/blockvalidator/block_header_in_context_test.go +++ b/domain/consensus/processes/blockvalidator/block_header_in_context_test.go @@ -2,9 +2,10 @@ package blockvalidator_test import ( "errors" - "github.com/kaspanet/kaspad/domain/consensus/utils/blockheader" "testing" + "github.com/kaspanet/kaspad/domain/consensus/utils/blockheader" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" @@ -17,7 +18,7 @@ import ( func TestValidateMedianTime(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestValidateMedianTime") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestValidateMedianTime") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } @@ -86,7 +87,7 @@ func TestValidateMedianTime(t *testing.T) { func TestCheckParentsIncest(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestCheckParentsIncest") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestCheckParentsIncest") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/consensusstatemanager/calculate_past_utxo_test.go b/domain/consensus/processes/consensusstatemanager/calculate_past_utxo_test.go index db0b64817..ad94de971 100644 --- a/domain/consensus/processes/consensusstatemanager/calculate_past_utxo_test.go +++ b/domain/consensus/processes/consensusstatemanager/calculate_past_utxo_test.go @@ -19,7 +19,7 @@ func TestUTXOCommitment(t *testing.T) { params.BlockCoinbaseMaturity = 0 factory := consensus.NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestUTXOCommitment") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestUTXOCommitment") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } @@ -115,7 +115,7 @@ func TestPastUTXOMultiset(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestUTXOCommitment") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestUTXOCommitment") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/consensusstatemanager/find_selected_parent_chain_changes_test.go b/domain/consensus/processes/consensusstatemanager/find_selected_parent_chain_changes_test.go index c90ef0680..cbeb6ea87 100644 --- a/domain/consensus/processes/consensusstatemanager/find_selected_parent_chain_changes_test.go +++ b/domain/consensus/processes/consensusstatemanager/find_selected_parent_chain_changes_test.go @@ -1,18 +1,19 @@ package consensusstatemanager_test import ( + "testing" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/utils/testutils" "github.com/kaspanet/kaspad/domain/dagconfig" - "testing" ) func TestCalculateSelectedParentChainChanges(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestCalculateSelectedParentChainChanges") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestCalculateSelectedParentChainChanges") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/consensusstatemanager/resolve_block_status_test.go b/domain/consensus/processes/consensusstatemanager/resolve_block_status_test.go index 119b931bf..f1b289f24 100644 --- a/domain/consensus/processes/consensusstatemanager/resolve_block_status_test.go +++ b/domain/consensus/processes/consensusstatemanager/resolve_block_status_test.go @@ -2,10 +2,11 @@ package consensusstatemanager_test import ( "errors" + "testing" + "github.com/kaspanet/kaspad/domain/consensus/model" "github.com/kaspanet/kaspad/domain/consensus/utils/constants" "github.com/kaspanet/kaspad/domain/consensus/utils/subnetworks" - "testing" "github.com/kaspanet/kaspad/domain/consensus/ruleerrors" @@ -24,7 +25,7 @@ func TestDoubleSpends(t *testing.T) { factory := consensus.NewFactory() - consensus, teardown, err := factory.NewTestConsensus(params, "TestUTXOCommitment") + consensus, teardown, err := factory.NewTestConsensus(params, false, "TestUTXOCommitment") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } @@ -161,7 +162,7 @@ func TestTransactionAcceptance(t *testing.T) { params.BlockCoinbaseMaturity = 0 factory := consensus.NewFactory() - testConsensus, teardown, err := factory.NewTestConsensus(params, "TestTransactionAcceptance") + testConsensus, teardown, err := factory.NewTestConsensus(params, false, "TestTransactionAcceptance") if err != nil { t.Fatalf("Error setting up testConsensus: %+v", err) } @@ -381,7 +382,7 @@ func TestTransactionAcceptance(t *testing.T) { func TestResolveBlockStatusSanity(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { - consensus, teardown, err := consensus.NewFactory().NewTestConsensus(params, "TestResolveBlockStatusSanity") + consensus, teardown, err := consensus.NewFactory().NewTestConsensus(params, false, "TestResolveBlockStatusSanity") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go b/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go index 56a95b2ca..dfaa9c990 100644 --- a/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go +++ b/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go @@ -1,6 +1,9 @@ package consensusstatemanager_test import ( + "sort" + "testing" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" @@ -8,13 +11,11 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/utils/consensushashing" "github.com/kaspanet/kaspad/domain/consensus/utils/testutils" "github.com/kaspanet/kaspad/domain/dagconfig" - "sort" - "testing" ) func TestConsensusStateManager_pickVirtualParents(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { - tc, teardown, err := consensus.NewFactory().NewTestConsensus(params, "TestConsensusStateManager_pickVirtualParents") + tc, teardown, err := consensus.NewFactory().NewTestConsensus(params, false, "TestConsensusStateManager_pickVirtualParents") if err != nil { t.Fatalf("Error setting up tc: %+v", err) } diff --git a/domain/consensus/processes/dagtopologymanager/dagtopologymanager_external_test.go b/domain/consensus/processes/dagtopologymanager/dagtopologymanager_external_test.go index ab0e713d4..d2bab7172 100644 --- a/domain/consensus/processes/dagtopologymanager/dagtopologymanager_external_test.go +++ b/domain/consensus/processes/dagtopologymanager/dagtopologymanager_external_test.go @@ -12,7 +12,7 @@ import ( func TestIsAncestorOf(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestIsAncestorOf") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestIsAncestorOf") if err != nil { t.Fatalf("NewTestConsensus: %s", err) } diff --git a/domain/consensus/processes/dagtraversalmanager/window_test.go b/domain/consensus/processes/dagtraversalmanager/window_test.go index cabcfde43..0d0016aee 100644 --- a/domain/consensus/processes/dagtraversalmanager/window_test.go +++ b/domain/consensus/processes/dagtraversalmanager/window_test.go @@ -311,7 +311,7 @@ func TestBlueBlockWindow(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { params.K = 1 factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestBlueBlockWindow") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestBlueBlockWindow") if err != nil { t.Fatalf("NewTestConsensus: %s", err) } diff --git a/domain/consensus/processes/difficultymanager/difficultymanager_test.go b/domain/consensus/processes/difficultymanager/difficultymanager_test.go index 46e9b8cfd..77a3be908 100644 --- a/domain/consensus/processes/difficultymanager/difficultymanager_test.go +++ b/domain/consensus/processes/difficultymanager/difficultymanager_test.go @@ -33,7 +33,7 @@ func TestDifficulty(t *testing.T) { params.DifficultyAdjustmentWindowSize = 264 factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestDifficulty") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestDifficulty") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/pastmediantimemanager/pastmediantimemanager_test.go b/domain/consensus/processes/pastmediantimemanager/pastmediantimemanager_test.go index c7769750f..7227e2270 100644 --- a/domain/consensus/processes/pastmediantimemanager/pastmediantimemanager_test.go +++ b/domain/consensus/processes/pastmediantimemanager/pastmediantimemanager_test.go @@ -13,7 +13,7 @@ import ( func TestPastMedianTime(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestUpdateReindexRoot") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestUpdateReindexRoot") if err != nil { t.Fatalf("NewTestConsensus: %s", err) } diff --git a/domain/consensus/processes/pruningmanager/pruning_test.go b/domain/consensus/processes/pruningmanager/pruning_test.go index fd25d69c0..99770c47a 100644 --- a/domain/consensus/processes/pruningmanager/pruning_test.go +++ b/domain/consensus/processes/pruningmanager/pruning_test.go @@ -67,7 +67,7 @@ func TestPruning(t *testing.T) { params.MergeSetSizeLimit = test.MergeSetSizeLimit factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestPruning") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestPruning") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/consensus/processes/pruningmanager/pruningmanager.go b/domain/consensus/processes/pruningmanager/pruningmanager.go index 7fb43d826..1149bcfa3 100644 --- a/domain/consensus/processes/pruningmanager/pruningmanager.go +++ b/domain/consensus/processes/pruningmanager/pruningmanager.go @@ -28,6 +28,7 @@ type pruningManager struct { blockHeaderStore model.BlockHeaderStore utxoDiffStore model.UTXODiffStore + isArchivalNode bool genesisHash *externalapi.DomainHash finalityInterval uint64 pruningDepth uint64 @@ -52,6 +53,7 @@ func New( blockHeaderStore model.BlockHeaderStore, utxoDiffStore model.UTXODiffStore, + isArchivalNode bool, genesisHash *externalapi.DomainHash, finalityInterval uint64, pruningDepth uint64, @@ -72,6 +74,7 @@ func New( blockHeaderStore: blockHeaderStore, utxoDiffStore: utxoDiffStore, headerSelectedTipStore: headerSelectedTipStore, + isArchivalNode: isArchivalNode, genesisHash: genesisHash, pruningDepth: pruningDepth, finalityInterval: finalityInterval, @@ -328,12 +331,16 @@ func (pm *pruningManager) deleteBlock(blockHash *externalapi.DomainHash) (alread return true, nil } + pm.blockStatusStore.Stage(blockHash, externalapi.StatusHeaderOnly) + if pm.isArchivalNode { + return false, nil + } + pm.multiSetStore.Delete(blockHash) pm.acceptanceDataStore.Delete(blockHash) pm.blocksStore.Delete(blockHash) pm.utxoDiffStore.Delete(blockHash) - pm.blockStatusStore.Stage(blockHash, externalapi.StatusHeaderOnly) return false, nil } diff --git a/domain/consensus/processes/reachabilitymanager/reachability_external_test.go b/domain/consensus/processes/reachabilitymanager/reachability_external_test.go index f35b85a15..ad8519179 100644 --- a/domain/consensus/processes/reachabilitymanager/reachability_external_test.go +++ b/domain/consensus/processes/reachabilitymanager/reachability_external_test.go @@ -13,7 +13,8 @@ func TestAddChildThatPointsDirectlyToTheSelectedParentChainBelowReindexRoot(t *t reachabilityReindexWindow := uint64(10) testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestAddChildThatPointsDirectlyToTheSelectedParentChainBelowReindexRoot") + tc, tearDown, err := factory.NewTestConsensus(params, false, + "TestAddChildThatPointsDirectlyToTheSelectedParentChainBelowReindexRoot") if err != nil { t.Fatalf("NewTestConsensus: %+v", err) } @@ -68,7 +69,7 @@ func TestUpdateReindexRoot(t *testing.T) { reachabilityReindexWindow := uint64(10) testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestUpdateReindexRoot") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestUpdateReindexRoot") if err != nil { t.Fatalf("NewTestConsensus: %s", err) } @@ -158,7 +159,7 @@ func TestReindexIntervalsEarlierThanReindexRoot(t *testing.T) { reachabilityReindexWindow := uint64(10) testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestUpdateReindexRoot") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestUpdateReindexRoot") if err != nil { t.Fatalf("NewTestConsensus: %+v", err) } @@ -292,7 +293,7 @@ func TestTipsAfterReindexIntervalsEarlierThanReindexRoot(t *testing.T) { reachabilityReindexWindow := uint64(10) testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, tearDown, err := factory.NewTestConsensus(params, "TestUpdateReindexRoot") + tc, tearDown, err := factory.NewTestConsensus(params, false, "TestUpdateReindexRoot") if err != nil { t.Fatalf("NewTestConsensus: %s", err) } diff --git a/domain/consensus/processes/transactionvalidator/transaction_in_isolation_test.go b/domain/consensus/processes/transactionvalidator/transaction_in_isolation_test.go index f0fcb2afb..946f2ae6c 100644 --- a/domain/consensus/processes/transactionvalidator/transaction_in_isolation_test.go +++ b/domain/consensus/processes/transactionvalidator/transaction_in_isolation_test.go @@ -1,9 +1,10 @@ package transactionvalidator_test import ( - "github.com/kaspanet/kaspad/domain/consensus/utils/hashes" "testing" + "github.com/kaspanet/kaspad/domain/consensus/utils/hashes" + "github.com/kaspanet/kaspad/domain/consensus" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/ruleerrors" @@ -25,7 +26,7 @@ type txSubnetworkData struct { func TestValidateTransactionInIsolation(t *testing.T) { testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) { factory := consensus.NewFactory() - tc, teardown, err := factory.NewTestConsensus(params, "TestValidateTransactionInIsolation") + tc, teardown, err := factory.NewTestConsensus(params, false, "TestValidateTransactionInIsolation") if err != nil { t.Fatalf("Error setting up consensus: %+v", err) } diff --git a/domain/domain.go b/domain/domain.go index 844a96fee..84a50b98c 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -28,9 +28,9 @@ func (d domain) MiningManager() miningmanager.MiningManager { } // New instantiates a new instance of a Domain object -func New(dagParams *dagconfig.Params, db infrastructuredatabase.Database) (Domain, error) { +func New(dagParams *dagconfig.Params, db infrastructuredatabase.Database, isArchivalNode bool) (Domain, error) { consensusFactory := consensus.NewFactory() - consensusInstance, err := consensusFactory.NewConsensus(dagParams, db) + consensusInstance, err := consensusFactory.NewConsensus(dagParams, db, isArchivalNode) if err != nil { return nil, err } diff --git a/infrastructure/config/config.go b/infrastructure/config/config.go index fe2dae758..243c76ae2 100644 --- a/infrastructure/config/config.go +++ b/infrastructure/config/config.go @@ -121,6 +121,7 @@ type Flags struct { ResetDatabase bool `long:"reset-db" description:"Reset database before starting node. It's needed when switching between subnetworks."` MaxUTXOCacheSize uint64 `long:"maxutxocachesize" description:"Max size of loaded UTXO into ram from the disk in bytes"` UTXOIndex bool `long:"utxoindex" description:"Enable the UTXO index"` + IsArchivalNode bool `long:"archival" description:"Run as an archival node: don't delete old block data when moving the pruning point (Warning: heavy disk usage)'"` NetworkFlags ServiceOptions *ServiceOptions }