mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-19 13:26:47 +00:00
[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:
parent
a96a5fd2ef
commit
8c63835971
@ -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)
|
||||
|
@ -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
|
||||
}
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
8
domain/consensus/model/externalapi/coinbase.go
Normal file
8
domain/consensus/model/externalapi/coinbase.go
Normal file
@ -0,0 +1,8 @@
|
||||
package externalapi
|
||||
|
||||
// DomainCoinbaseData contains data by which a coinbase transaction
|
||||
// is built
|
||||
type DomainCoinbaseData struct {
|
||||
scriptPublicKey []byte
|
||||
extraData []byte
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package externalapi
|
||||
|
||||
// CoinbaseData contains data by which a coinbase transaction
|
||||
// is built
|
||||
type CoinbaseData struct {
|
||||
scriptPublicKey []byte
|
||||
extraData []byte
|
||||
}
|
@ -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)
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package model
|
||||
|
||||
// AcceptanceManager manages transaction acceptance
|
||||
// and related data
|
||||
type AcceptanceManager interface {
|
||||
CalculateAcceptanceDataAndUTXOMultiset(blockGHOSTDAGData *BlockGHOSTDAGData) (*BlockAcceptanceData, Multiset, error)
|
||||
}
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
@ -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")
|
||||
}
|
@ -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
|
||||
|
70
domain/consensus/processes/blockvalidator/blockvalidator.go
Normal file
70
domain/consensus/processes/blockvalidator/blockvalidator.go
Normal 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
|
||||
}
|
@ -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")
|
||||
}
|
||||
|
@ -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")
|
||||
}
|
||||
|
@ -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")
|
||||
}
|
@ -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")
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user