mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-28 17:56:50 +00:00

* [NOD-1420] Start working on ConsensusStateManager. Might be redundant due to recent changes * [NOD-1420] Convert model to externalapi in utxo_algerbra helpers * [NOD-1420] Add UTXO-diff algebra * [NOD-1420] Prepare skeleton of calculateAcceptanceDataAndMultiset * [NOD-1420] Added skeleton for AddBlockToVirtual * [NOD-1420] Implement PopulateTransactionWithUTXOEntries * [NOD-1420] Implement restorePastUTXO * [NOD-1420] Implement finality check * [NOD-1420] Move handling of tips to consensusStateManager * [NOD-1420] Implement calculateAcceptanceDataAndMultiset * [NOD-1420] Start implementing resolveBlockStatus * [NOD-1420] Implement resolveBlockStatus * [NOD-1420] Update related fields in end of resolveSingleBlockStatus * [NOD-1420] Start working on selectVirtualParents * [NOD-1420] Implemented BlockHeap * [NOD-1420] Implement selectVirtualParents * [NOD-1420] Implement updateVirtual * [NOD-1420] Added comments where they were missing * [NOD-1420] Place all consensusStateManager functions in correct files * [NOD-1420] Return the missing outpoints from populateTransactionWithUTXOEntriesFromVirtualOrDiff * [NOD-1420] Outpoint.ID -> TransactionID * [NOD-1420] Fix Stringer tests * [NOD-1420] Copy hash.FromString into utils * [NOD-1420] SetParents should return an error * [NOD-1420] Remove all reachabilityManager references from consensusStateManager * [NOD-1420] Remove VirtualData. Get the info from the stores where needed * [NOD-1420] Invert parameters to IsAncestorOf * [NOD-1420] Use model.AcceptanceData * [NOD-1420] Don't return accumulatedMassBefore in error cases * [NOD-1420] Don't expect store functions to return nil when the requested data was found - instead add HasXXX functions * [NOD-1420] addTransactionToMultiset sets isCoinbase properly * [NOD-1420] expected hash string length is externalapi.DomainHashSize * 2 * [NOD-1420] Rename reachabilityTree -> reachabilityManager + updateReindexRoot if isNextVirtualSelectedParent * [NOD-1420] ValidateCoinbaseTransaction in csm.verifyAndBuildUTXO * [NOD-1420] Re-write HAsUTXODiffChild * [NOD-1420] delete past_utxo.go.bak * [NOD-1420] Implement validateCoinbaseTransaction in CSM * [NOD-1420] Imlemented missing functionality in ValidateTransactionAndPopulateWithConsensusData * [NOD-1420] Moved merge depth logic to MergeDepthManager * [NOD-1420] Add logs
92 lines
3.2 KiB
Go
92 lines
3.2 KiB
Go
package consensusstatemanager
|
|
|
|
import (
|
|
"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 model.DBReader
|
|
|
|
ghostdagManager model.GHOSTDAGManager
|
|
dagTopologyManager model.DAGTopologyManager
|
|
dagTraversalManager model.DAGTraversalManager
|
|
pruningManager model.PruningManager
|
|
pastMedianTimeManager model.PastMedianTimeManager
|
|
transactionValidator model.TransactionValidator
|
|
blockValidator model.BlockValidator
|
|
reachabilityManager model.ReachabilityManager
|
|
coinbaseManager model.CoinbaseManager
|
|
mergeDepthManager model.MergeDepthManager
|
|
|
|
blockStatusStore model.BlockStatusStore
|
|
ghostdagDataStore model.GHOSTDAGDataStore
|
|
consensusStateStore model.ConsensusStateStore
|
|
multisetStore model.MultisetStore
|
|
blockStore model.BlockStore
|
|
utxoDiffStore model.UTXODiffStore
|
|
blockRelationStore model.BlockRelationStore
|
|
acceptanceDataStore model.AcceptanceDataStore
|
|
blockHeaderStore model.BlockHeaderStore
|
|
}
|
|
|
|
// New instantiates a new ConsensusStateManager
|
|
func New(
|
|
databaseContext model.DBReader,
|
|
dagParams *dagconfig.Params,
|
|
ghostdagManager model.GHOSTDAGManager,
|
|
dagTopologyManager model.DAGTopologyManager,
|
|
dagTraversalManager model.DAGTraversalManager,
|
|
pruningManager model.PruningManager,
|
|
pastMedianTimeManager model.PastMedianTimeManager,
|
|
transactionValidator model.TransactionValidator,
|
|
blockValidator model.BlockValidator,
|
|
reachabilityManager model.ReachabilityManager,
|
|
coinbaseManager model.CoinbaseManager,
|
|
mergeDepthManager model.MergeDepthManager,
|
|
blockStatusStore model.BlockStatusStore,
|
|
ghostdagDataStore model.GHOSTDAGDataStore,
|
|
consensusStateStore model.ConsensusStateStore,
|
|
multisetStore model.MultisetStore,
|
|
blockStore model.BlockStore,
|
|
utxoDiffStore model.UTXODiffStore,
|
|
blockRelationStore model.BlockRelationStore,
|
|
acceptanceDataStore model.AcceptanceDataStore,
|
|
blockHeaderStore model.BlockHeaderStore) (model.ConsensusStateManager, error) {
|
|
|
|
csm := &consensusStateManager{
|
|
dagParams: dagParams,
|
|
databaseContext: databaseContext,
|
|
|
|
ghostdagManager: ghostdagManager,
|
|
dagTopologyManager: dagTopologyManager,
|
|
dagTraversalManager: dagTraversalManager,
|
|
pruningManager: pruningManager,
|
|
pastMedianTimeManager: pastMedianTimeManager,
|
|
transactionValidator: transactionValidator,
|
|
blockValidator: blockValidator,
|
|
reachabilityManager: reachabilityManager,
|
|
coinbaseManager: coinbaseManager,
|
|
mergeDepthManager: mergeDepthManager,
|
|
|
|
multisetStore: multisetStore,
|
|
blockStore: blockStore,
|
|
blockStatusStore: blockStatusStore,
|
|
ghostdagDataStore: ghostdagDataStore,
|
|
consensusStateStore: consensusStateStore,
|
|
utxoDiffStore: utxoDiffStore,
|
|
blockRelationStore: blockRelationStore,
|
|
acceptanceDataStore: acceptanceDataStore,
|
|
blockHeaderStore: blockHeaderStore,
|
|
}
|
|
|
|
return csm, nil
|
|
}
|
|
|
|
func (csm *consensusStateManager) SetPruningPointUTXOSet(pruningPoint *externalapi.DomainHash, serializedUTXOSet []byte) error {
|
|
panic("implement me")
|
|
}
|