kaspad/domain/miningmanager/miningmanager.go
stasatdaglabs 8c63835971
[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.
2020-10-20 09:35:58 +03:00

37 lines
1.5 KiB
Go

package miningmanager
import (
consensusexternalapi "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
miningmanagermodel "github.com/kaspanet/kaspad/domain/miningmanager/model"
)
// 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.DomainCoinbaseData) *consensusexternalapi.DomainBlock
HandleNewBlock(block *consensusexternalapi.DomainBlock)
ValidateAndInsertTransaction(transaction *consensusexternalapi.DomainTransaction) error
}
type miningManager struct {
mempool miningmanagermodel.Mempool
blockTemplateBuilder miningmanagermodel.BlockTemplateBuilder
}
// GetBlockTemplate creates a block template for a miner to consume
func (mm *miningManager) GetBlockTemplate(coinbaseData *consensusexternalapi.DomainCoinbaseData) *consensusexternalapi.DomainBlock {
return mm.blockTemplateBuilder.GetBlockTemplate(coinbaseData)
}
// HandleNewBlock handles a new block that was just added to the DAG
func (mm *miningManager) HandleNewBlock(block *consensusexternalapi.DomainBlock) {
mm.mempool.HandleNewBlock(block)
}
// ValidateAndInsertTransaction validates the given transaction, and
// adds it to the set of known transactions that have not yet been
// added to any block
func (mm *miningManager) ValidateAndInsertTransaction(transaction *consensusexternalapi.DomainTransaction) error {
return mm.mempool.ValidateAndInsertTransaction(transaction)
}