Skip to content

Commit

Permalink
[NOD-1476] Make further design changes (#965)
Browse files Browse the repository at this point in the history
* [NOD-1476] Add dependency to BlockRelationStore in BlockProcessor.

* [NOD-1476] Add dependency to BlockStatusStore in BlockValidator.

* [NOD-1476] Add dependency to GHOSTDAGManager in BlockValidator.

* [NOD-1476] Rename CalculateConsensusStateChanges to AddBlockToVirtual.

* [NOD-1476] Remove RestoreDiffFromVirtual.

* [NOD-1476] Remove RestorePastUTXOSet.

* [NOD-1476] Add dependency to GHOSTDAGDataStore in ConsensusStateManager.

* [NOD-1476] Rename CalculateAcceptanceDataAndUTXOMultiset to just CalculateAcceptanceData.

* [NOD-1476] Remove UTXODiffManager and add dependencies to AcceptanceManager.

* [NOD-1476] Rename CalculateAcceptanceData to CalculateAcceptanceDataAndMultiset.

* [NOD-1476] Add dependency to DAGTopologyManager from ConsensusStateManager.

* [NOD-1476] Add dependency to BlockStore from ConsensusStateManager.

* [NOD-1476] Add dependency to PruningManager from ConsensusStateManager.

* [NOD-1476] Remove unnecessary stuff from ConsensusStateChanges.

* [NOD-1476] Add dependency to UTXODiffStore from ConsensusStateManager.

* [NOD-1476] Add tips to BlockRelationsStore.

* [NOD-1476] Add dependency to BlockRelationsStore from ConsensusStateManager.

* [NOD-1476] Remove Tips() from ConsensusStateStore.

* [NOD-1476] Remove acceptanceManager.

* [NOD-1476] Remove irrelevant functions out of ConsensusStateManager.
  • Loading branch information
stasatdaglabs committed Oct 25, 2020
1 parent 4588234 commit b413760
Show file tree
Hide file tree
Showing 16 changed files with 106 additions and 161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@ func New() model.BlockRelationStore {
return &blockRelationStore{}
}

// Stage stages the given blockRelationData for the given blockHash
func (brs *blockRelationStore) Stage(blockHash *externalapi.DomainHash, parentHashes []*externalapi.DomainHash) {
func (brs *blockRelationStore) StageBlockRelation(blockHash *externalapi.DomainHash, parentHashes []*externalapi.DomainHash) {
panic("implement me")
}

func (brs *blockRelationStore) IsStaged() bool {
func (brs *blockRelationStore) StageTips(tipHashess []*externalapi.DomainHash) {
panic("implement me")
}

func (brs *blockRelationStore) IsAnythingStaged() bool {
panic("implement me")
}

Expand All @@ -31,7 +34,10 @@ func (brs *blockRelationStore) Commit(dbTx model.DBTxProxy) error {
panic("implement me")
}

// Get gets the blockRelationData associated with the given blockHash
func (brs *blockRelationStore) Get(dbContext model.DBContextProxy, blockHash *externalapi.DomainHash) (*model.BlockRelations, error) {
return nil, nil
func (brs *blockRelationStore) BlockRelation(dbContext model.DBContextProxy, blockHash *externalapi.DomainHash) (*model.BlockRelations, error) {
panic("implement me")
}

func (brs *blockRelationStore) Tips(dbContext model.DBContextProxy) ([]*externalapi.DomainHash, error) {
panic("implement me")
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,3 @@ func (css *consensusStateStore) Commit(dbTx model.DBTxProxy) error {
func (css *consensusStateStore) UTXOByOutpoint(dbContext model.DBContextProxy, outpoint *externalapi.DomainOutpoint) (*externalapi.UTXOEntry, error) {
return nil, nil
}

// Tips returns the current tips
func (css *consensusStateStore) Tips(dbContext model.DBContextProxy) ([]*externalapi.DomainHash, error) {
return nil, nil
}
34 changes: 18 additions & 16 deletions domain/consensus/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
"github.com/kaspanet/kaspad/domain/consensus/datastructures/reachabilitydatastore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/utxodiffstore"
"github.com/kaspanet/kaspad/domain/consensus/model"
"github.com/kaspanet/kaspad/domain/consensus/processes/acceptancemanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/blockprocessor"
"github.com/kaspanet/kaspad/domain/consensus/processes/blockvalidator"
"github.com/kaspanet/kaspad/domain/consensus/processes/consensusstatemanager"
Expand All @@ -25,7 +24,6 @@ import (
"github.com/kaspanet/kaspad/domain/consensus/processes/pruningmanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/reachabilitytree"
"github.com/kaspanet/kaspad/domain/consensus/processes/transactionvalidator"
"github.com/kaspanet/kaspad/domain/consensus/processes/utxodiffmanager"
"github.com/kaspanet/kaspad/domain/dagconfig"
"github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
)
Expand Down Expand Up @@ -69,23 +67,26 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
dagTraversalManager := dagtraversalmanager.New(
dagTopologyManager,
ghostdagManager)
utxoDiffManager := utxodiffmanager.New(utxoDiffStore)
acceptanceManager := acceptancemanager.New(utxoDiffManager)
pruningManager := pruningmanager.New(
dagTraversalManager,
dagTopologyManager,
pruningStore,
blockStatusStore,
consensusStateStore)
consensusStateManager := consensusstatemanager.New(
domainDBContext,
dagParams,
consensusStateStore,
multisetStore,
blockStore,
ghostdagManager,
acceptanceManager,
blockStatusStore)
pruningManager := pruningmanager.New(
dagTraversalManager,
pruningStore,
dagTopologyManager,
pruningManager,
blockStatusStore,
consensusStateManager)
ghostdagDataStore,
consensusStateStore,
multisetStore,
blockStore,
utxoDiffStore,
blockRelationStore,
acceptanceDataStore)
difficultyManager := difficultymanager.New(
ghostdagManager)
pastMedianTimeManager := pastmediantimemanager.New(
Expand All @@ -96,8 +97,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
difficultyManager,
pastMedianTimeManager,
transactionValidator,
utxoDiffManager,
acceptanceManager)
ghostdagManager,
blockStatusStore)
blockProcessor := blockprocessor.New(
dagParams,
domainDBContext,
Expand All @@ -111,7 +112,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
ghostdagManager,
acceptanceDataStore,
blockStore,
blockStatusStore)
blockStatusStore,
blockRelationStore)

return &consensus{
consensusStateManager: consensusStateManager,
Expand Down
9 changes: 2 additions & 7 deletions domain/consensus/model/consensusstatechanges.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
// ConsensusStateChanges represents a set of changes that need to be made
// to transition the current consensus state to a new one
type ConsensusStateChanges struct {
AcceptanceData *BlockAcceptanceData
VirtualUTXODiff *UTXODiff
NewTips []*externalapi.DomainHash

NewBlockUTXODiff *UTXODiff
NewBlockMultiset Multiset
ParentDiffChanges *map[*externalapi.DomainHash]UTXODiff
VirtualUTXODiff *UTXODiff
VirtualDiffParents []*externalapi.DomainHash
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"

// BlockRelationStore represents a store of BlockRelations
type BlockRelationStore interface {
Stage(blockHash *externalapi.DomainHash, parentHashes []*externalapi.DomainHash)
IsStaged() bool
StageBlockRelation(blockHash *externalapi.DomainHash, parentHashes []*externalapi.DomainHash)
StageTips(tipHashess []*externalapi.DomainHash)
IsAnythingStaged() bool
Discard()
Commit(dbTx DBTxProxy) error
Get(dbContext DBContextProxy, blockHash *externalapi.DomainHash) (*BlockRelations, error)
BlockRelation(dbContext DBContextProxy, blockHash *externalapi.DomainHash) (*BlockRelations, error)
Tips(dbContext DBContextProxy) ([]*externalapi.DomainHash, error)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,4 @@ type ConsensusStateStore interface {
Discard()
Commit(dbTx DBTxProxy) error
UTXOByOutpoint(dbContext DBContextProxy, outpoint *externalapi.DomainOutpoint) (*externalapi.UTXOEntry, error)
Tips(dbContext DBContextProxy) ([]*externalapi.DomainHash, error)
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"

// ConsensusStateManager manages the node's consensus state
type ConsensusStateManager interface {
CalculateConsensusStateChanges(blockHash *externalapi.DomainHash) error
AddBlockToVirtual(blockHash *externalapi.DomainHash) error
VirtualData() (medianTime int64, blueScore uint64, err error)
RestorePastUTXOSet(blockHash *externalapi.DomainHash) (ReadOnlyUTXOSet, error)
RestoreDiffFromVirtual(utxoDiff *UTXODiff, virtualDiffParentHash *externalapi.DomainHash) (*UTXODiff, error)
}
10 changes: 0 additions & 10 deletions domain/consensus/model/interface_processes_utxodiffmanager.go

This file was deleted.

23 changes: 0 additions & 23 deletions domain/consensus/processes/acceptancemanager/acceptancemanager.go

This file was deleted.

11 changes: 7 additions & 4 deletions domain/consensus/processes/blockprocessor/blockprocessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ type blockProcessor struct {
ghostdagManager model.GHOSTDAGManager
pastMedianTimeManager model.PastMedianTimeManager
acceptanceDataStore model.AcceptanceDataStore
blockMessageStore model.BlockStore
blockStore model.BlockStore
blockStatusStore model.BlockStatusStore
blockRelationStore model.BlockRelationStore
}

// New instantiates a new BlockProcessor
Expand All @@ -39,8 +40,9 @@ func New(
pastMedianTimeManager model.PastMedianTimeManager,
ghostdagManager model.GHOSTDAGManager,
acceptanceDataStore model.AcceptanceDataStore,
blockMessageStore model.BlockStore,
blockStatusStore model.BlockStatusStore) model.BlockProcessor {
blockStore model.BlockStore,
blockStatusStore model.BlockStatusStore,
blockRelationStore model.BlockRelationStore) model.BlockProcessor {

return &blockProcessor{
dagParams: dagParams,
Expand All @@ -55,8 +57,9 @@ func New(

consensusStateManager: consensusStateManager,
acceptanceDataStore: acceptanceDataStore,
blockMessageStore: blockMessageStore,
blockStore: blockStore,
blockStatusStore: blockStatusStore,
blockRelationStore: blockRelationStore,
}
}

Expand Down
14 changes: 8 additions & 6 deletions domain/consensus/processes/blockvalidator/blockvalidator.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ type blockValidator struct {
difficultyManager model.DifficultyManager
pastMedianTimeManager model.PastMedianTimeManager
transactionValidator model.TransactionValidator
utxoDiffManager model.UTXODiffManager
acceptanceManager model.AcceptanceManager
ghostdagManager model.GHOSTDAGManager

blockStatusStore model.BlockStatusStore
}

// New instantiates a new BlockValidator
Expand All @@ -22,16 +23,17 @@ func New(
difficultyManager model.DifficultyManager,
pastMedianTimeManager model.PastMedianTimeManager,
transactionValidator model.TransactionValidator,
utxoDiffManager model.UTXODiffManager,
acceptanceManager model.AcceptanceManager) model.BlockValidator {
ghostdagManager model.GHOSTDAGManager,
blockStatusStore model.BlockStatusStore) model.BlockValidator {

return &blockValidator{
consensusStateManager: consensusStateManager,
difficultyManager: difficultyManager,
pastMedianTimeManager: pastMedianTimeManager,
transactionValidator: transactionValidator,
utxoDiffManager: utxoDiffManager,
acceptanceManager: acceptanceManager,
ghostdagManager: ghostdagManager,

blockStatusStore: blockStatusStore,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,59 +9,66 @@ import (

// consensusStateManager manages the node's consensus state
type consensusStateManager struct {
dagParams *dagconfig.Params
dagParams *dagconfig.Params
databaseContext *database.DomainDBContext

databaseContext *database.DomainDBContext
ghostdagManager model.GHOSTDAGManager
dagTopologyManager model.DAGTopologyManager
pruningManager model.PruningManager

blockStatusStore model.BlockStatusStore
ghostdagDataStore model.GHOSTDAGDataStore
consensusStateStore model.ConsensusStateStore
multisetStore model.MultisetStore
blockStore model.BlockStore
ghostdagManager model.GHOSTDAGManager
acceptanceManager model.AcceptanceManager
blockStatusStore model.BlockStatusStore
utxoDiffStore model.UTXODiffStore
blockRelationStore model.BlockRelationStore
acceptanceDataStore model.AcceptanceDataStore
}

// New instantiates a new ConsensusStateManager
func New(
databaseContext *database.DomainDBContext,
dagParams *dagconfig.Params,
ghostdagManager model.GHOSTDAGManager,
dagTopologyManager model.DAGTopologyManager,
pruningManager model.PruningManager,
blockStatusStore model.BlockStatusStore,
ghostdagDataStore model.GHOSTDAGDataStore,
consensusStateStore model.ConsensusStateStore,
multisetStore model.MultisetStore,
blockStore model.BlockStore,
ghostdagManager model.GHOSTDAGManager,
acceptanceManager model.AcceptanceManager,
blockStatusStore model.BlockStatusStore) model.ConsensusStateManager {
utxoDiffStore model.UTXODiffStore,
blockRelationStore model.BlockRelationStore,
acceptanceDataStore model.AcceptanceDataStore) model.ConsensusStateManager {

return &consensusStateManager{
dagParams: dagParams,
dagParams: dagParams,
databaseContext: databaseContext,

ghostdagManager: ghostdagManager,
dagTopologyManager: dagTopologyManager,
pruningManager: pruningManager,

databaseContext: databaseContext,
consensusStateStore: consensusStateStore,
multisetStore: multisetStore,
blockStore: blockStore,
ghostdagManager: ghostdagManager,
acceptanceManager: acceptanceManager,
blockStatusStore: blockStatusStore,
ghostdagDataStore: ghostdagDataStore,
consensusStateStore: consensusStateStore,
utxoDiffStore: utxoDiffStore,
blockRelationStore: blockRelationStore,
acceptanceDataStore: acceptanceDataStore,
}
}

// CalculateConsensusStateChanges returns a set of changes that must occur in order
// to transition the current consensus state into the one including the given block
func (csm *consensusStateManager) CalculateConsensusStateChanges(blockHash *externalapi.DomainHash) error {
// AddBlockToVirtual submits the given block to be added to the
// current virtual. This process may result in a new virtual block
// getting created
func (csm *consensusStateManager) AddBlockToVirtual(blockHash *externalapi.DomainHash) error {
return nil
}

// VirtualData returns the medianTime and blueScore of the current virtual block
func (csm *consensusStateManager) VirtualData() (medianTime int64, blueScore uint64, err error) {
return 0, 0, nil
}

// RestoreUTXOSet calculates and returns the UTXOSet of the given blockHash
func (csm *consensusStateManager) RestorePastUTXOSet(blockHash *externalapi.DomainHash) (model.ReadOnlyUTXOSet, error) {
return nil, nil
}

// RestoreDiffFromVirtual restores the diff between the given virtualDiffParentHash
// and the virtual
func (csm *consensusStateManager) RestoreDiffFromVirtual(utxoDiff *model.UTXODiff, virtualDiffParentHash *externalapi.DomainHash) (*model.UTXODiff, error) {
panic("implement me")
}
Loading

0 comments on commit b413760

Please sign in to comment.