mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-29 10:16:45 +00:00

* [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.
40 lines
1.6 KiB
Go
40 lines
1.6 KiB
Go
package consensus
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
)
|
|
|
|
// Consensus maintains the current core state of the node
|
|
type Consensus interface {
|
|
BuildBlock(coinbaseData *externalapi.DomainCoinbaseData, transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error)
|
|
ValidateAndInsertBlock(block *externalapi.DomainBlock) error
|
|
ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error
|
|
}
|
|
|
|
type consensus struct {
|
|
blockProcessor model.BlockProcessor
|
|
consensusStateManager model.ConsensusStateManager
|
|
transactionValidator model.TransactionValidator
|
|
}
|
|
|
|
// BuildBlock builds a block over the current state, with the transactions
|
|
// selected by the given transactionSelector
|
|
func (s *consensus) BuildBlock(coinbaseData *externalapi.DomainCoinbaseData,
|
|
transactions []*externalapi.DomainTransaction) (*externalapi.DomainBlock, error) {
|
|
|
|
return s.blockProcessor.BuildBlock(coinbaseData, transactions)
|
|
}
|
|
|
|
// ValidateAndInsertBlock validates the given block and, if valid, applies it
|
|
// to the current state
|
|
func (s *consensus) ValidateAndInsertBlock(block *externalapi.DomainBlock) error {
|
|
return s.blockProcessor.ValidateAndInsertBlock(block)
|
|
}
|
|
|
|
// ValidateTransactionAndPopulateWithConsensusData validates the given transaction
|
|
// and populates it with any missing consensus data
|
|
func (s *consensus) ValidateTransactionAndPopulateWithConsensusData(transaction *externalapi.DomainTransaction) error {
|
|
return s.transactionValidator.ValidateTransactionAndPopulateWithConsensusData(transaction)
|
|
}
|