[NOD-1461] Make further design changes (#959)

* [NOD-1461] Split blockValidator and TransactionValidator.

* [NOD-1461] Remove feeDataStore.

* [NOD-1461] Move tips out of ConsensusStateManager and into DAGTopologyManager.

* [NOD-1461] Add UTXODiffManager.

* [NOD-1461] Add RestoreDiffFromVirtual.

* [NOD-1461] Add AcceptanceManager.

* [NOD-1461] Replace SetTips with AddTip.

* [NOD-1461] Fix merge errors.

* [NOD-1461] Rename CoinbaseData to DomainCoinbaseData.
This commit is contained in:
stasatdaglabs 2020-10-20 09:35:58 +03:00 committed by GitHub
parent a96a5fd2ef
commit 8c63835971
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 219 additions and 151 deletions

View File

@ -7,7 +7,7 @@ import (
// Consensus maintains the current core state of the node // Consensus maintains the current core state of the node
type Consensus interface { 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 ValidateAndInsertBlock(block *externalapi.DomainBlock) error
ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error
} }
@ -20,7 +20,7 @@ type consensus struct {
// BuildBlock builds a block over the current state, with the transactions // BuildBlock builds a block over the current state, with the transactions
// selected by the given transactionSelector // 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) { transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) {
return s.blockProcessor.BuildBlock(coinbaseData, transactions) return s.blockProcessor.BuildBlock(coinbaseData, transactions)

View File

@ -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
}

View File

@ -7,14 +7,15 @@ import (
"github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstatusstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstatusstore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/blockstore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/consensusstatestore" "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/ghostdagdatastore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/multisetstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/multisetstore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/pruningstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/pruningstore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/reachabilitydatastore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/reachabilitydatastore"
"github.com/kaspanet/kaspad/domain/consensus/datastructures/utxodiffstore" "github.com/kaspanet/kaspad/domain/consensus/datastructures/utxodiffstore"
"github.com/kaspanet/kaspad/domain/consensus/model" "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/blockprocessor"
"github.com/kaspanet/kaspad/domain/consensus/processes/blockvalidator"
"github.com/kaspanet/kaspad/domain/consensus/processes/consensusstatemanager" "github.com/kaspanet/kaspad/domain/consensus/processes/consensusstatemanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/dagtopologymanager" "github.com/kaspanet/kaspad/domain/consensus/processes/dagtopologymanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/dagtraversalmanager" "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/pastmediantimemanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/pruningmanager" "github.com/kaspanet/kaspad/domain/consensus/processes/pruningmanager"
"github.com/kaspanet/kaspad/domain/consensus/processes/reachabilitytree" "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/domain/dagconfig"
"github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
) )
@ -48,7 +50,6 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
utxoDiffStore := utxodiffstore.New() utxoDiffStore := utxodiffstore.New()
consensusStateStore := consensusstatestore.New() consensusStateStore := consensusstatestore.New()
ghostdagDataStore := ghostdagdatastore.New() ghostdagDataStore := ghostdagdatastore.New()
feeDataStore := feedatastore.New()
domainDBContext := database.NewDomainDBContext(databaseContext) domainDBContext := database.NewDomainDBContext(databaseContext)
@ -68,6 +69,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
dagTraversalManager := dagtraversalmanager.New( dagTraversalManager := dagtraversalmanager.New(
dagTopologyManager, dagTopologyManager,
ghostdagManager) ghostdagManager)
utxoDiffManager := utxodiffmanager.New()
acceptanceManager := acceptancemanager.New(utxoDiffManager)
consensusStateManager := consensusstatemanager.New( consensusStateManager := consensusstatemanager.New(
domainDBContext, domainDBContext,
dagParams, dagParams,
@ -75,7 +78,8 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
multisetStore, multisetStore,
utxoDiffStore, utxoDiffStore,
blockStore, blockStore,
ghostdagManager) ghostdagManager,
acceptanceManager)
pruningManager := pruningmanager.New( pruningManager := pruningmanager.New(
dagTraversalManager, dagTraversalManager,
pruningStore, pruningStore,
@ -86,16 +90,20 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
ghostdagManager) ghostdagManager)
pastMedianTimeManager := pastmediantimemanager.New( pastMedianTimeManager := pastmediantimemanager.New(
ghostdagManager) ghostdagManager)
validator := validatorpkg.New( transactionValidator := transactionvalidator.New()
blockValidator := blockvalidator.New(
consensusStateManager, consensusStateManager,
difficultyManager, difficultyManager,
pastMedianTimeManager) pastMedianTimeManager,
transactionValidator,
utxoDiffManager,
acceptanceManager)
blockProcessor := blockprocessor.New( blockProcessor := blockprocessor.New(
dagParams, dagParams,
domainDBContext, domainDBContext,
consensusStateManager, consensusStateManager,
pruningManager, pruningManager,
validator, blockValidator,
dagTopologyManager, dagTopologyManager,
reachabilityTree, reachabilityTree,
difficultyManager, difficultyManager,
@ -103,13 +111,12 @@ func (f *factory) NewConsensus(dagParams *dagconfig.Params, databaseContext *dba
ghostdagManager, ghostdagManager,
acceptanceDataStore, acceptanceDataStore,
blockStore, blockStore,
blockStatusStore, blockStatusStore)
feeDataStore)
return &consensus{ return &consensus{
consensusStateManager: consensusStateManager, consensusStateManager: consensusStateManager,
blockProcessor: blockProcessor, blockProcessor: blockProcessor,
transactionValidator: validator, transactionValidator: transactionValidator,
} }
} }

View File

@ -0,0 +1,8 @@
package externalapi
// DomainCoinbaseData contains data by which a coinbase transaction
// is built
type DomainCoinbaseData struct {
scriptPublicKey []byte
extraData []byte
}

View File

@ -1,8 +0,0 @@
package externalapi
// CoinbaseData contains data by which a coinbase transaction
// is built
type CoinbaseData struct {
scriptPublicKey []byte
extraData []byte
}

View File

@ -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)
}

View File

@ -0,0 +1,7 @@
package model
// AcceptanceManager manages transaction acceptance
// and related data
type AcceptanceManager interface {
CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *BlockGHOSTDAGData) (*BlockAcceptanceData, Multiset, error)
}

View File

@ -5,6 +5,6 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
// BlockProcessor is responsible for processing incoming blocks // BlockProcessor is responsible for processing incoming blocks
// and creating blocks from the current state // and creating blocks from the current state
type BlockProcessor interface { 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 ValidateAndInsertBlock(block *externalapi.DomainBlock) error
} }

View File

@ -7,8 +7,7 @@ type ConsensusStateManager interface {
UTXOByOutpoint(outpoint *externalapi.DomainOutpoint) (*externalapi.UTXOEntry, error) UTXOByOutpoint(outpoint *externalapi.DomainOutpoint) (*externalapi.UTXOEntry, error)
CalculateConsensusStateChanges(block *externalapi.DomainBlock, isDisqualified bool) (stateChanges *ConsensusStateChanges, CalculateConsensusStateChanges(block *externalapi.DomainBlock, isDisqualified bool) (stateChanges *ConsensusStateChanges,
utxoDiffChanges *UTXODiffChanges, virtualGHOSTDAGData *BlockGHOSTDAGData, err error) utxoDiffChanges *UTXODiffChanges, virtualGHOSTDAGData *BlockGHOSTDAGData, err error)
CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *BlockGHOSTDAGData) (*BlockAcceptanceData, Multiset, error)
Tips() ([]*externalapi.DomainHash, error)
VirtualData() (medianTime int64, blueScore uint64, err error) VirtualData() (medianTime int64, blueScore uint64, err error)
RestorePastUTXOSet(blockHash *externalapi.DomainHash) (ReadOnlyUTXOSet, error) RestorePastUTXOSet(blockHash *externalapi.DomainHash) (ReadOnlyUTXOSet, error)
RestoreDiffFromVirtual(utxoDiff *UTXODiff, virtualDiffParentHash *externalapi.DomainHash) (*UTXODiff, error)
} }

View File

@ -13,4 +13,7 @@ type DAGTopologyManager interface {
IsDescendantOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error) IsDescendantOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error)
IsAncestorOfAny(blockHash *externalapi.DomainHash, potentialDescendants []*externalapi.DomainHash) (bool, error) IsAncestorOfAny(blockHash *externalapi.DomainHash, potentialDescendants []*externalapi.DomainHash) (bool, error)
IsInSelectedParentChainOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error) IsInSelectedParentChainOf(blockHashA *externalapi.DomainHash, blockHashB *externalapi.DomainHash) (bool, error)
Tips() ([]*externalapi.DomainHash, error)
AddTip(tipHash *externalapi.DomainHash) error
} }

View File

@ -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)
}

View File

@ -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")
}

View File

@ -24,7 +24,6 @@ type blockProcessor struct {
acceptanceDataStore model.AcceptanceDataStore acceptanceDataStore model.AcceptanceDataStore
blockMessageStore model.BlockStore blockMessageStore model.BlockStore
blockStatusStore model.BlockStatusStore blockStatusStore model.BlockStatusStore
feeDataStore model.FeeDataStore
} }
// New instantiates a new BlockProcessor // New instantiates a new BlockProcessor
@ -41,8 +40,7 @@ func New(
ghostdagManager model.GHOSTDAGManager, ghostdagManager model.GHOSTDAGManager,
acceptanceDataStore model.AcceptanceDataStore, acceptanceDataStore model.AcceptanceDataStore,
blockMessageStore model.BlockStore, blockMessageStore model.BlockStore,
blockStatusStore model.BlockStatusStore, blockStatusStore model.BlockStatusStore) model.BlockProcessor {
feeDataStore model.FeeDataStore) model.BlockProcessor {
return &blockProcessor{ return &blockProcessor{
dagParams: dagParams, dagParams: dagParams,
@ -59,13 +57,12 @@ func New(
acceptanceDataStore: acceptanceDataStore, acceptanceDataStore: acceptanceDataStore,
blockMessageStore: blockMessageStore, blockMessageStore: blockMessageStore,
blockStatusStore: blockStatusStore, blockStatusStore: blockStatusStore,
feeDataStore: feeDataStore,
} }
} }
// BuildBlock builds a block over the current state, with the transactions // BuildBlock builds a block over the current state, with the transactions
// selected by the given transactionSelector // 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) { transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) {
return nil, nil return nil, nil

View File

@ -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
}

View File

@ -17,6 +17,7 @@ type consensusStateManager struct {
utxoDiffStore model.UTXODiffStore utxoDiffStore model.UTXODiffStore
blockStore model.BlockStore blockStore model.BlockStore
ghostdagManager model.GHOSTDAGManager ghostdagManager model.GHOSTDAGManager
acceptanceManager model.AcceptanceManager
} }
// New instantiates a new ConsensusStateManager // New instantiates a new ConsensusStateManager
@ -27,7 +28,8 @@ func New(
multisetStore model.MultisetStore, multisetStore model.MultisetStore,
utxoDiffStore model.UTXODiffStore, utxoDiffStore model.UTXODiffStore,
blockStore model.BlockStore, blockStore model.BlockStore,
ghostdagManager model.GHOSTDAGManager) model.ConsensusStateManager { ghostdagManager model.GHOSTDAGManager,
acceptanceManager model.AcceptanceManager) model.ConsensusStateManager {
return &consensusStateManager{ return &consensusStateManager{
dagParams: dagParams, dagParams: dagParams,
@ -38,6 +40,7 @@ func New(
utxoDiffStore: utxoDiffStore, utxoDiffStore: utxoDiffStore,
blockStore: blockStore, blockStore: blockStore,
ghostdagManager: ghostdagManager, ghostdagManager: ghostdagManager,
acceptanceManager: acceptanceManager,
} }
} }
@ -55,19 +58,6 @@ func (csm *consensusStateManager) CalculateConsensusStateChanges(block *external
return nil, nil, nil, nil 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 // VirtualData returns the medianTime and blueScore of the current virtual block
func (csm *consensusStateManager) VirtualData() (medianTime int64, blueScore uint64, err error) { func (csm *consensusStateManager) VirtualData() (medianTime int64, blueScore uint64, err error) {
return 0, 0, nil 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) { func (csm *consensusStateManager) RestorePastUTXOSet(blockHash *externalapi.DomainHash) (model.ReadOnlyUTXOSet, error) {
return nil, nil 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")
}

View File

@ -91,3 +91,13 @@ func isHashInSlice(hash *externalapi.DomainHash, hashes []*externalapi.DomainHas
} }
return false 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")
}

View File

@ -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")
}

View File

@ -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")
}

View File

@ -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
}

View File

@ -21,6 +21,6 @@ func New(consensus *consensus.Consensus, mempool miningmanagerapi.Mempool) minin
} }
// GetBlockTemplate creates a block template for a miner to consume // 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 return nil
} }

View File

@ -8,7 +8,7 @@ import (
// MiningManager creates block templates for mining as well as maintaining // MiningManager creates block templates for mining as well as maintaining
// known transactions that have no yet been added to any block // known transactions that have no yet been added to any block
type MiningManager interface { type MiningManager interface {
GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock
HandleNewBlock(block *consensusexternalapi.DomainBlock) HandleNewBlock(block *consensusexternalapi.DomainBlock)
ValidateAndInsertTransaction(transaction *consensusexternalapi.DomainTransaction) error ValidateAndInsertTransaction(transaction *consensusexternalapi.DomainTransaction) error
} }
@ -19,7 +19,7 @@ type miningManager struct {
} }
// GetBlockTemplate creates a block template for a miner to consume // 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) return mm.blockTemplateBuilder.GetBlockTemplate(coinbaseData)
} }

View File

@ -6,5 +6,5 @@ import (
// BlockTemplateBuilder builds block templates for miners to consume // BlockTemplateBuilder builds block templates for miners to consume
type BlockTemplateBuilder interface { type BlockTemplateBuilder interface {
GetBlockTemplate(coinbaseData *consensusexternalapi.CoinbaseData) *consensusexternalapi.DomainBlock GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock
} }