mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-24 15:56:42 +00:00

* [NOD-1413] Remove /cmd/addblock * [NOD-1413] Define and implement TransactionValidator. * [NOD-1413] Make changes to ConsensusStateManager's interface. * [NOD-1413] Make changes to PruningManager's interface. * [NOD-1413] Make changes to DAGTraversalManager's interface. * [NOD-1413] Make changes to MultisetStore's interface. * [NOD-1413] Make changes to UTXODiffStore's interface. * [NOD-1413] Make changes to UTXODiffStore's interface harder. * [NOD-1413] Make changes to AcceptanceDataStore's interface harder. * [NOD-1413] Make changes to PruningStore's interface. * [NOD-1413] Delete BlockIndex. * [NOD-1413] Add FeeDataStore. * [NOD-1413] Update BlockMessageStore's interface. * [NOD-1413] Fix interface violations. * [NOD-1413] Add FeeDataStore to BlockProcessor. * [NOD-1413] Make go vet happy. * [NOD-1413] Add missing fields to ConsensusStateChanges. * [NOD-1413] Add another missing field to ConsensusStateChanges. * [NOD-1413] Add a reference to blockStore in consensusStateManager. * [NOD-1413] Add missing methods to UTXODiffStore. * [NOD-1413] Rename pruningPointStore to pruningStore everywhere. * [NOD-1413] Remove superfluous parameters from CalculateConsensusStateChanges. * [NOD-1413] Add missing dependencies to PruningManager. * [NOD-1413] Remove implementation-y functions from TransactionValidator's interface. * [NOD-1413] Make go vet happy. * [NOD-1413] Add a couple of methods to DAGTopologyManager. * [NOD-1413] Fix a typo in a file name. * [NOD-1413] Remove non-interface functions from Validator.
69 lines
2.3 KiB
Go
69 lines
2.3 KiB
Go
package blockprocessor
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/dagconfig"
|
|
"github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
|
|
)
|
|
|
|
// BlockProcessor is responsible for processing incoming blocks
|
|
// and creating blocks from the current state
|
|
type BlockProcessor struct {
|
|
dagParams *dagconfig.Params
|
|
databaseContext *dbaccess.DatabaseContext
|
|
|
|
consensusStateManager model.ConsensusStateManager
|
|
pruningManager model.PruningManager
|
|
blockValidator model.BlockValidator
|
|
dagTopologyManager model.DAGTopologyManager
|
|
reachabilityTree model.ReachabilityTree
|
|
acceptanceDataStore model.AcceptanceDataStore
|
|
blockMessageStore model.BlockStore
|
|
blockStatusStore model.BlockStatusStore
|
|
feeDataStore model.FeeDataStore
|
|
}
|
|
|
|
// New instantiates a new BlockProcessor
|
|
func New(
|
|
dagParams *dagconfig.Params,
|
|
databaseContext *dbaccess.DatabaseContext,
|
|
consensusStateManager model.ConsensusStateManager,
|
|
pruningManager model.PruningManager,
|
|
blockValidator model.BlockValidator,
|
|
dagTopologyManager model.DAGTopologyManager,
|
|
reachabilityTree model.ReachabilityTree,
|
|
acceptanceDataStore model.AcceptanceDataStore,
|
|
blockMessageStore model.BlockStore,
|
|
blockStatusStore model.BlockStatusStore,
|
|
feeDataStore model.FeeDataStore) *BlockProcessor {
|
|
|
|
return &BlockProcessor{
|
|
dagParams: dagParams,
|
|
databaseContext: databaseContext,
|
|
pruningManager: pruningManager,
|
|
blockValidator: blockValidator,
|
|
dagTopologyManager: dagTopologyManager,
|
|
reachabilityTree: reachabilityTree,
|
|
|
|
consensusStateManager: consensusStateManager,
|
|
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(coinbaseScriptPublicKey []byte, coinbaseExtraData []byte,
|
|
transactionSelector model.TransactionSelector) *model.DomainBlock {
|
|
|
|
return nil
|
|
}
|
|
|
|
// ValidateAndInsertBlock validates the given block and, if valid, applies it
|
|
// to the current state
|
|
func (bp *BlockProcessor) ValidateAndInsertBlock(block *model.DomainBlock) error {
|
|
return nil
|
|
}
|