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

* [NOD-1451] Implement block validator * [NOD-1451] Implement block validator * [NOD-1451] Fix merge errors * [NOD-1451] Implement block validator * [NOD-1451] Implement checkTransactionInIsolation * [NOD-1451] Copy txscript to validator * [NOD-1451] Change txscript to new design * [NOD-1451] Add checkTransactionInContext * [NOD-1451] Add checkBlockSize * [NOD-1451] Add error handling * [NOD-1451] Implement checkTransactionInContext * [NOD-1451] Add checkTransactionMass placeholder * [NOD-1451] Finish validators * [NOD-1451] Add comments and stringers * [NOD-1451] Return model.TransactionValidator interface * [NOD-1451] Premake rule errors for each "code" * [NOD-1451] Populate transaction mass * [NOD-1451] Renmae functions * [NOD-1451] Always use skipPow=false * [NOD-1451] Renames * [NOD-1451] Remove redundant types from WriteElement * [NOD-1451] Fix error message * [NOD-1451] Add checkTransactionPayload * [NOD-1451] Add ValidateProofOfWorkAndDifficulty to block validator interface * [NOD-1451] Move stringers to model * [NOD-1451] Fix error message
80 lines
2.7 KiB
Go
80 lines
2.7 KiB
Go
package consensusstatemanager
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/database"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/dagconfig"
|
|
)
|
|
|
|
// consensusStateManager manages the node's consensus state
|
|
type consensusStateManager struct {
|
|
dagParams *dagconfig.Params
|
|
databaseContext *database.DomainDBContext
|
|
|
|
ghostdagManager model.GHOSTDAGManager
|
|
dagTopologyManager model.DAGTopologyManager
|
|
pruningManager model.PruningManager
|
|
|
|
blockStatusStore model.BlockStatusStore
|
|
ghostdagDataStore model.GHOSTDAGDataStore
|
|
consensusStateStore model.ConsensusStateStore
|
|
multisetStore model.MultisetStore
|
|
blockStore model.BlockStore
|
|
utxoDiffStore model.UTXODiffStore
|
|
blockRelationStore model.BlockRelationStore
|
|
acceptanceDataStore model.AcceptanceDataStore
|
|
}
|
|
|
|
// New instantiates a new ConsensusStateManager
|
|
func New(
|
|
databaseContext *database.DomainDBContext,
|
|
dagParams *dagconfig.Params,
|
|
ghostdagManager model.GHOSTDAGManager,
|
|
dagTopologyManager model.DAGTopologyManager,
|
|
pruningManager model.PruningManager,
|
|
blockStatusStore model.BlockStatusStore,
|
|
ghostdagDataStore model.GHOSTDAGDataStore,
|
|
consensusStateStore model.ConsensusStateStore,
|
|
multisetStore model.MultisetStore,
|
|
blockStore model.BlockStore,
|
|
utxoDiffStore model.UTXODiffStore,
|
|
blockRelationStore model.BlockRelationStore,
|
|
acceptanceDataStore model.AcceptanceDataStore) model.ConsensusStateManager {
|
|
|
|
return &consensusStateManager{
|
|
dagParams: dagParams,
|
|
databaseContext: databaseContext,
|
|
|
|
ghostdagManager: ghostdagManager,
|
|
dagTopologyManager: dagTopologyManager,
|
|
pruningManager: pruningManager,
|
|
|
|
multisetStore: multisetStore,
|
|
blockStore: blockStore,
|
|
blockStatusStore: blockStatusStore,
|
|
ghostdagDataStore: ghostdagDataStore,
|
|
consensusStateStore: consensusStateStore,
|
|
utxoDiffStore: utxoDiffStore,
|
|
blockRelationStore: blockRelationStore,
|
|
acceptanceDataStore: acceptanceDataStore,
|
|
}
|
|
}
|
|
|
|
// AddBlockToVirtual submits the given block to be added to the
|
|
// current virtual. This process may result in a new virtual block
|
|
// getting created
|
|
func (csm *consensusStateManager) AddBlockToVirtual(blockHash *externalapi.DomainHash) error {
|
|
return 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
|
|
}
|
|
|
|
// PopulateTransactionWithUTXOEntries populates the transaction UTXO entries with data from the virtual.
|
|
func (csm *consensusStateManager) PopulateTransactionWithUTXOEntries(transaction *externalapi.DomainTransaction) error {
|
|
panic("implement me")
|
|
}
|