diff --git a/domain/consensus/consensus.go b/domain/consensus/consensus.go index 1bdad7eb7..66404a769 100644 --- a/domain/consensus/consensus.go +++ b/domain/consensus/consensus.go @@ -7,7 +7,7 @@ import ( // Consensus maintains the current core state of the node type Consensus interface { - BuildBlock(coinbaseData *externalapi.CoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) + BuildBlock(coinbaseData *externalapi.DomainCoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) ValidateAndInsertBlock(block *externalapi.DomainBlock) error ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error } @@ -20,7 +20,7 @@ type consensus struct { // BuildBlock builds a block over the current state, with the transactions // selected by the given transactionSelector -func (s *consensus) BuildBlock(coinbaseData *externalapi.CoinbaseData, +func (s *consensus) BuildBlock(coinbaseData *externalapi.DomainCoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) { return s.blockProcessor.BuildBlock(coinbaseData, transactions) diff --git a/domain/consensus/datastructures/feedatastore/feedatastore.go b/domain/consensus/datastructures/feedatastore/feedatastore.go deleted file mode 100644 index 6a01815d1..000000000 --- a/domain/consensus/datastructures/feedatastore/feedatastore.go +++ /dev/null @@ -1,25 +0,0 @@ -package feedatastore - -import ( - "github.com/kaspanet/kaspad/domain/consensus/model" - "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" -) - -// feeDataStore represents a store of fee data -type feeDataStore struct { -} - -// New instantiates a new FeeDataStore -func New() model.FeeDataStore { - return &feeDataStore{} -} - -// Insert inserts the given fee for the given blockHash -func (ads *feeDataStore) Insert(dbTx model.DBTxProxy, blockHash *externalapi.DomainHash, fee uint64) error { - return nil -} - -// Get gets the fee associated with the given blockHash -func (ads *feeDataStore) Get(dbContext model.DBContextProxy, blockHash *externalapi.DomainHash) (uint64, error) { - return 0, nil -} diff --git a/domain/consensus/factory.go b/domain/consensus/factory.go index 2fd621e81..483b07f06 100644 --- a/domain/consensus/factory.go +++ b/domain/consensus/factory.go @@ -7,14 +7,15 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstatusstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/consensusstatestore" - "github.com/kaspanet/kaspad/domain/consensus/datastructures/feedatastore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/ghostdagdatastore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/multisetstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/pruningstore" "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" "github.com/kaspanet/kaspad/domain/consensus/processes/dagtopologymanager" "github.com/kaspanet/kaspad/domain/consensus/processes/dagtraversalmanager" @@ -23,7 +24,8 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/processes/pastmediantimemanager" "github.com/kaspanet/kaspad/domain/consensus/processes/pruningmanager" "github.com/kaspanet/kaspad/domain/consensus/processes/reachabilitytree" - validatorpkg "github.com/kaspanet/kaspad/domain/consensus/processes/validator" + "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" ) @@ -48,7 +50,6 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba utxoDiffStore := utxodiffstore.New() consensusStateStore := consensusstatestore.New() ghostdagDataStore := ghostdagdatastore.New() - feeDataStore := feedatastore.New() domainDBContext := database.NewDomainDBContext(databaseContext) @@ -68,6 +69,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba dagTraversalManager := dagtraversalmanager.New( dagTopologyManager, ghostdagManager) + utxoDiffManager := utxodiffmanager.New() + acceptanceManager := acceptancemanager.New(utxoDiffManager) consensusStateManager := consensusstatemanager.New( domainDBContext, dagParams, @@ -75,7 +78,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba multisetStore, utxoDiffStore, blockStore, - ghostdagManager) + ghostdagManager, + acceptanceManager) pruningManager := pruningmanager.New( dagTraversalManager, pruningStore, @@ -86,16 +90,20 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba ghostdagManager) pastMedianTimeManager := pastmediantimemanager.New( ghostdagManager) - validator := validatorpkg.New( + transactionValidator := transactionvalidator.New() + blockValidator := blockvalidator.New( consensusStateManager, difficultyManager, - pastMedianTimeManager) + pastMedianTimeManager, + transactionValidator, + utxoDiffManager, + acceptanceManager) blockProcessor := blockprocessor.New( dagParams, domainDBContext, consensusStateManager, pruningManager, - validator, + blockValidator, dagTopologyManager, reachabilityTree, difficultyManager, @@ -103,13 +111,12 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba ghostdagManager, acceptanceDataStore, blockStore, - blockStatusStore, - feeDataStore) + blockStatusStore) return &consensus{ consensusStateManager: consensusStateManager, blockProcessor: blockProcessor, - transactionValidator: validator, + transactionValidator: transactionValidator, } } diff --git a/domain/consensus/model/externalapi/coinbase.go b/domain/consensus/model/externalapi/coinbase.go new file mode 100644 index 000000000..9e9962829 --- /dev/null +++ b/domain/consensus/model/externalapi/coinbase.go @@ -0,0 +1,8 @@ +package externalapi + +// DomainCoinbaseData contains data by which a coinbase transaction +// is built +type DomainCoinbaseData struct { + scriptPublicKey []byte + extraData []byte +} diff --git a/domain/consensus/model/externalapi/coinbasedata.go b/domain/consensus/model/externalapi/coinbasedata.go deleted file mode 100644 index 6f278a40d..000000000 --- a/domain/consensus/model/externalapi/coinbasedata.go +++ /dev/null @@ -1,8 +0,0 @@ -package externalapi - -// CoinbaseData contains data by which a coinbase transaction -// is built -type CoinbaseData struct { - scriptPublicKey []byte - extraData []byte -} diff --git a/domain/consensus/model/interface_datastructures_feedatastore.go b/domain/consensus/model/interface_datastructures_feedatastore.go deleted file mode 100644 index f5d38ad44..000000000 --- a/domain/consensus/model/interface_datastructures_feedatastore.go +++ /dev/null @@ -1,9 +0,0 @@ -package model - -import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" - -// FeeDataStore represents a store of fee data -type FeeDataStore interface { - Insert(dbTx DBTxProxy, blockHash *externalapi.DomainHash, fee uint64) error - Get(dbContext DBContextProxy, blockHash *externalapi.DomainHash) (uint64, error) -} diff --git a/domain/consensus/model/interface_processes_acceptancemanager.go b/domain/consensus/model/interface_processes_acceptancemanager.go new file mode 100644 index 000000000..6f87556b0 --- /dev/null +++ b/domain/consensus/model/interface_processes_acceptancemanager.go @@ -0,0 +1,7 @@ +package model + +// AcceptanceManager manages transaction acceptance +// and related data +type AcceptanceManager interface { + CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *BlockGHOSTDAGData) (*BlockAcceptanceData, Multiset, error) +} diff --git a/domain/consensus/model/interface_processes_blockprocessor.go b/domain/consensus/model/interface_processes_blockprocessor.go index 87abc889c..ee2c1dffb 100644 --- a/domain/consensus/model/interface_processes_blockprocessor.go +++ b/domain/consensus/model/interface_processes_blockprocessor.go @@ -5,6 +5,6 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" // BlockProcessor is responsible for processing incoming blocks // and creating blocks from the current state type BlockProcessor interface { - BuildBlock(coinbaseData *externalapi.CoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) + BuildBlock(coinbaseData *externalapi.DomainCoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) ValidateAndInsertBlock(block *externalapi.DomainBlock) error } diff --git a/domain/consensus/model/interface_processes_consensusstatemanager.go b/domain/consensus/model/interface_processes_consensusstatemanager.go index ca2bcf593..84937be51 100644 --- a/domain/consensus/model/interface_processes_consensusstatemanager.go +++ b/domain/consensus/model/interface_processes_consensusstatemanager.go @@ -7,8 +7,7 @@ type ConsensusStateManager interface { UTXOByOutpoint(outpoint *externalapi.DomainOutpoint) (*externalapi.UTXOEntry, error) CalculateConsensusStateChanges(block *externalapi.DomainBlock, isDisqualified bool) (stateChanges *ConsensusStateChanges, utxoDiffChanges *UTXODiffChanges, virtualGHOSTDAGData *BlockGHOSTDAGData, err error) - CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *BlockGHOSTDAGData) (*BlockAcceptanceData, Multiset, error) - Tips() ([]*externalapi.DomainHash, error) VirtualData() (medianTime int64, blueScore uint64, err error) RestorePastUTXOSet(blockHash *externalapi.DomainHash) (ReadOnlyUTXOSet, error) + RestoreDiffFromVirtual(utxoDiff *UTXODiff, virtualDiffParentHash *externalapi.DomainHash) (*UTXODiff, error) } diff --git a/domain/consensus/model/interface_processes_dagtopologymanager.go b/domain/consensus/model/interface_processes_dagtopologymanager.go index e0c0ca2ea..c084441d4 100644 --- a/domain/consensus/model/interface_processes_dagtopologymanager.go +++ b/domain/consensus/model/interface_processes_dagtopologymanager.go @@ -13,4 +13,7 @@ type DAGTopologyManager interface { IsDescendantOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error) IsAncestorOfAny(blockHash *externalapi.DomainHash, potentialDescendants []*externalapi.DomainHash) (bool, error) IsInSelectedParentChainOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error) + + Tips() ([]*externalapi.DomainHash, error) + AddTip(tipHash *externalapi.DomainHash) error } diff --git a/domain/consensus/model/interface_processes_utxodiffmanager.go b/domain/consensus/model/interface_processes_utxodiffmanager.go new file mode 100644 index 000000000..42f23d7d7 --- /dev/null +++ b/domain/consensus/model/interface_processes_utxodiffmanager.go @@ -0,0 +1,11 @@ +package model + +import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" + +// UTXODiffManager provides methods to access +// and store UTXO diffs +type UTXODiffManager interface { + StoreUTXODiff(blockHash *externalapi.DomainHash, utxoDiff *UTXODiff) error + RestoreBlockDiffFromVirtualDiffParent(blockHash *externalapi.DomainHash) (utxoDiff *UTXODiff, + virtualDiffParentHash *externalapi.DomainHash, err error) +} diff --git a/domain/consensus/processes/acceptancemanager/acceptancemanager.go b/domain/consensus/processes/acceptancemanager/acceptancemanager.go new file mode 100644 index 000000000..9419b8585 --- /dev/null +++ b/domain/consensus/processes/acceptancemanager/acceptancemanager.go @@ -0,0 +1,24 @@ +package acceptancemanager + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model" +) + +// AcceptanceManager manages transaction acceptance +// and related data +type acceptanceManager struct { + utxoDiffManager model.UTXODiffManager +} + +// New instantiates a new AcceptanceManager +func New(utxoDiffManager model.UTXODiffManager) model.AcceptanceManager { + return &acceptanceManager{ + utxoDiffManager: utxoDiffManager, + } +} + +func (a *acceptanceManager) CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *model.BlockGHOSTDAGData) ( + *model.BlockAcceptanceData, model.Multiset, error) { + + panic("implement me") +} diff --git a/domain/consensus/processes/blockprocessor/blockprocessor.go b/domain/consensus/processes/blockprocessor/blockprocessor.go index 30a0d718b..a343a542f 100644 --- a/domain/consensus/processes/blockprocessor/blockprocessor.go +++ b/domain/consensus/processes/blockprocessor/blockprocessor.go @@ -24,7 +24,6 @@ type blockProcessor struct { acceptanceDataStore model.AcceptanceDataStore blockMessageStore model.BlockStore blockStatusStore model.BlockStatusStore - feeDataStore model.FeeDataStore } // New instantiates a new BlockProcessor @@ -41,8 +40,7 @@ func New( ghostdagManager model.GHOSTDAGManager, acceptanceDataStore model.AcceptanceDataStore, blockMessageStore model.BlockStore, - blockStatusStore model.BlockStatusStore, - feeDataStore model.FeeDataStore) model.BlockProcessor { + blockStatusStore model.BlockStatusStore) model.BlockProcessor { return &blockProcessor{ dagParams: dagParams, @@ -59,13 +57,12 @@ func New( acceptanceDataStore: acceptanceDataStore, blockMessageStore: blockMessageStore, blockStatusStore: blockStatusStore, - feeDataStore: feeDataStore, } } // BuildBlock builds a block over the current state, with the transactions // selected by the given transactionSelector -func (bp *blockProcessor) BuildBlock(coinbaseData *externalapi.CoinbaseData, +func (bp *blockProcessor) BuildBlock(coinbaseData *externalapi.DomainCoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) { return nil, nil diff --git a/domain/consensus/processes/blockvalidator/blockvalidator.go b/domain/consensus/processes/blockvalidator/blockvalidator.go new file mode 100644 index 000000000..d14805c15 --- /dev/null +++ b/domain/consensus/processes/blockvalidator/blockvalidator.go @@ -0,0 +1,70 @@ +package blockvalidator + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model" + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" +) + +// blockValidator exposes a set of validation classes, after which +// it's possible to determine whether either a block is valid +type blockValidator struct { + consensusStateManager model.ConsensusStateManager + difficultyManager model.DifficultyManager + pastMedianTimeManager model.PastMedianTimeManager + transactionValidator model.TransactionValidator + utxoDiffManager model.UTXODiffManager + acceptanceManager model.AcceptanceManager +} + +// New instantiates a new BlockValidator +func New( + consensusStateManager model.ConsensusStateManager, + difficultyManager model.DifficultyManager, + pastMedianTimeManager model.PastMedianTimeManager, + transactionValidator model.TransactionValidator, + utxoDiffManager model.UTXODiffManager, + acceptanceManager model.AcceptanceManager) model.BlockValidator { + + return &blockValidator{ + consensusStateManager: consensusStateManager, + difficultyManager: difficultyManager, + pastMedianTimeManager: pastMedianTimeManager, + transactionValidator: transactionValidator, + utxoDiffManager: utxoDiffManager, + acceptanceManager: acceptanceManager, + } +} + +// ValidateHeaderInIsolation validates block headers in isolation from the current +// consensus state +func (v *blockValidator) ValidateHeaderInIsolation(block *externalapi.DomainBlock) error { + return nil +} + +// ValidateHeaderInContext validates block headers in the context of the current +// consensus state +func (v *blockValidator) ValidateHeaderInContext(block *externalapi.DomainBlock) error { + return nil +} + +// ValidateBodyInIsolation validates block bodies in isolation from the current +// consensus state +func (v *blockValidator) ValidateBodyInIsolation(block *externalapi.DomainBlock) error { + return nil +} + +// ValidateBodyInContext validates block bodies in the context of the current +// consensus state +func (v *blockValidator) ValidateBodyInContext(block *externalapi.DomainBlock) error { + return nil +} + +// ValidateAgainstPastUTXO validates the block against the UTXO of its past +func (v *blockValidator) ValidateAgainstPastUTXO(block *externalapi.DomainBlock) error { + return nil +} + +// ValidateFinality makes sure the block does not violate finality +func (v *blockValidator) ValidateFinality(block *externalapi.DomainBlock) error { + return nil +} diff --git a/domain/consensus/processes/consensusstatemanager/consensusstatemanager.go b/domain/consensus/processes/consensusstatemanager/consensusstatemanager.go index 89971b661..452d7a45c 100644 --- a/domain/consensus/processes/consensusstatemanager/consensusstatemanager.go +++ b/domain/consensus/processes/consensusstatemanager/consensusstatemanager.go @@ -17,6 +17,7 @@ type consensusStateManager struct { utxoDiffStore model.UTXODiffStore blockStore model.BlockStore ghostdagManager model.GHOSTDAGManager + acceptanceManager model.AcceptanceManager } // New instantiates a new ConsensusStateManager @@ -27,7 +28,8 @@ func New( multisetStore model.MultisetStore, utxoDiffStore model.UTXODiffStore, blockStore model.BlockStore, - ghostdagManager model.GHOSTDAGManager) model.ConsensusStateManager { + ghostdagManager model.GHOSTDAGManager, + acceptanceManager model.AcceptanceManager) model.ConsensusStateManager { return &consensusStateManager{ dagParams: dagParams, @@ -38,6 +40,7 @@ func New( utxoDiffStore: utxoDiffStore, blockStore: blockStore, ghostdagManager: ghostdagManager, + acceptanceManager: acceptanceManager, } } @@ -55,19 +58,6 @@ func (csm *consensusStateManager) CalculateConsensusStateChanges(block *external return nil, nil, nil, nil } -// CalculateAcceptanceDataAndUTXOMultiset calculates and returns the acceptance data and the -// multiset associated with the given blockHash -func (csm *consensusStateManager) CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *model.BlockGHOSTDAGData) ( - *model.BlockAcceptanceData, model.Multiset, error) { - - return nil, nil, nil -} - -// Tips returns the current DAG tips -func (csm *consensusStateManager) Tips() ([]*externalapi.DomainHash, error) { - return nil, 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 @@ -77,3 +67,9 @@ func (csm *consensusStateManager) VirtualData() (medianTime int64, blueScore uin 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") +} diff --git a/domain/consensus/processes/dagtopologymanager/dagtopologymanager.go b/domain/consensus/processes/dagtopologymanager/dagtopologymanager.go index 1f71f6935..d3fbb33ef 100644 --- a/domain/consensus/processes/dagtopologymanager/dagtopologymanager.go +++ b/domain/consensus/processes/dagtopologymanager/dagtopologymanager.go @@ -91,3 +91,13 @@ func isHashInSlice(hash *externalapi.DomainHash, hashes []*externalapi.DomainHas } return false } + +// Tips returns the current DAG tips +func (dtm *dagTopologyManager) Tips() ([]*externalapi.DomainHash, error) { + panic("implement me") +} + +// AddTip adds the given tip to the current DAG tips +func (dtm *dagTopologyManager) AddTip(tipHash *externalapi.DomainHash) error { + panic("implement me") +} diff --git a/domain/consensus/processes/transactionvalidator/transactionvalidator.go b/domain/consensus/processes/transactionvalidator/transactionvalidator.go new file mode 100644 index 000000000..93ed86c9d --- /dev/null +++ b/domain/consensus/processes/transactionvalidator/transactionvalidator.go @@ -0,0 +1,22 @@ +package transactionvalidator + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model" + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" +) + +// transactionValidator exposes a set of validation classes, after which +// it's possible to determine whether either a transaction is valid +type transactionValidator struct { +} + +// New instantiates a new TransactionValidator +func New() model.TransactionValidator { + return &transactionValidator{} +} + +// ValidateTransactionAndCalculateFee validates the given transaction +// and populates it with any missing consensus data +func (v *transactionValidator) ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error { + panic("implement me") +} diff --git a/domain/consensus/processes/utxodiffmanager/utxodiffmanager.go b/domain/consensus/processes/utxodiffmanager/utxodiffmanager.go new file mode 100644 index 000000000..705ca0cd6 --- /dev/null +++ b/domain/consensus/processes/utxodiffmanager/utxodiffmanager.go @@ -0,0 +1,27 @@ +package utxodiffmanager + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model" + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" +) + +// UTXODiffManager provides methods to access +// and store UTXO diffs +type utxoDiffManager struct { +} + +// New instantiates a new UTXODiffManager +func New() model.UTXODiffManager { + return &utxoDiffManager{} +} + +// StoreUTXODiff stores the given utxoDiff for the given blockHash +func (u *utxoDiffManager) StoreUTXODiff(blockHash *externalapi.DomainHash, utxoDiff *model.UTXODiff) error { + panic("implement me") +} + +// RestoreBlockDiffFromVirtualDiffParent restores the UTXO diff of +// the block for the given blockHash. +func (u *utxoDiffManager) RestoreBlockDiffFromVirtualDiffParent(blockHash *externalapi.DomainHash) (utxoDiff *model.UTXODiff, virtualDiffParentHash *externalapi.DomainHash, err error) { + panic("implement me") +} diff --git a/domain/consensus/processes/validator/validator.go b/domain/consensus/processes/validator/validator.go deleted file mode 100644 index d78fbd1b5..000000000 --- a/domain/consensus/processes/validator/validator.go +++ /dev/null @@ -1,71 +0,0 @@ -package validator - -import ( - "github.com/kaspanet/kaspad/domain/consensus/model" - "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" -) - -// validator exposes a set of validation classes, after which -// it's possible to determine whether either a block or a -// transaction is valid -type validator struct { - consensusStateManager model.ConsensusStateManager - difficultyManager model.DifficultyManager - pastMedianTimeManager model.PastMedianTimeManager -} - -// New instantiates a new BlockAndTransactionValidator -func New( - consensusStateManager model.ConsensusStateManager, - difficultyManager model.DifficultyManager, - pastMedianTimeManager model.PastMedianTimeManager) interface { - model.BlockValidator - model.TransactionValidator -} { - - return &validator{ - consensusStateManager: consensusStateManager, - difficultyManager: difficultyManager, - pastMedianTimeManager: pastMedianTimeManager, - } -} - -// ValidateHeaderInIsolation validates block headers in isolation from the current -// consensus state -func (v *validator) ValidateHeaderInIsolation(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateHeaderInContext validates block headers in the context of the current -// consensus state -func (v *validator) ValidateHeaderInContext(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateBodyInIsolation validates block bodies in isolation from the current -// consensus state -func (v *validator) ValidateBodyInIsolation(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateBodyInContext validates block bodies in the context of the current -// consensus state -func (v *validator) ValidateBodyInContext(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateAgainstPastUTXO validates the block against the UTXO of its past -func (v *validator) ValidateAgainstPastUTXO(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateFinality makes sure the block does not violate finality -func (v *validator) ValidateFinality(block *externalapi.DomainBlock) error { - return nil -} - -// ValidateTransactionAndPopulateWithConsensusData validates the given transaction -// and populates it with any missing consensus data -func (v *validator) ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error { - return nil -} diff --git a/domain/miningmanager/blocktemplatebuilder/blocktemplatebuilder.go b/domain/miningmanager/blocktemplatebuilder/blocktemplatebuilder.go index cdbe91e7e..d10b1ddfd 100644 --- a/domain/miningmanager/blocktemplatebuilder/blocktemplatebuilder.go +++ b/domain/miningmanager/blocktemplatebuilder/blocktemplatebuilder.go @@ -21,6 +21,6 @@ func New(consensus *consensus.Consensus, mempool miningmanagerapi.Mempool) minin } // GetBlockTemplate creates a block template for a miner to consume -func (btb *blockTemplateBuilder) GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock { +func (btb *blockTemplateBuilder) GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock { return nil } diff --git a/domain/miningmanager/miningmanager.go b/domain/miningmanager/miningmanager.go index d09912955..bdc3368b8 100644 --- a/domain/miningmanager/miningmanager.go +++ b/domain/miningmanager/miningmanager.go @@ -8,7 +8,7 @@ import ( // MiningManager creates block templates for mining as well as maintaining // known transactions that have no yet been added to any block type MiningManager interface { - GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock + GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock HandleNewBlock(block *consensusexternalapi.DomainBlock) ValidateAndInsertTransaction(transaction *consensusexternalapi.DomainTransaction) error } @@ -19,7 +19,7 @@ type miningManager struct { } // GetBlockTemplate creates a block template for a miner to consume -func (mm *miningManager) GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock { +func (mm *miningManager) GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock { return mm.blockTemplateBuilder.GetBlockTemplate(coinbaseData) } diff --git a/domain/miningmanager/model/interface_blocktemplatebuilder.go b/domain/miningmanager/model/interface_blocktemplatebuilder.go index 770d3ee13..efe7c668b 100644 --- a/domain/miningmanager/model/interface_blocktemplatebuilder.go +++ b/domain/miningmanager/model/interface_blocktemplatebuilder.go @@ -6,5 +6,5 @@ import ( // BlockTemplateBuilder builds block templates for miners to consume type BlockTemplateBuilder interface { - GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock + GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock }