mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-29 02:06:43 +00:00

* [NOD-1414] Add interfaces for Factory and State. * [NOD-1414] Create interfaces for algorithms and data stores. * [NOD-1414] Create empty implementations for algorithms and data stores. * [NOD-1414] Add new functions for all the implementations. * [NOD-1414] Begin filling in the interfaces. * [NOD-1414] Fill in the interfaces for the data structures. * [NOD-1414] Fill in the interfaces for the algorithms. * [NOD-1414] Fix a bug in package names. * [NOD-1414] Connect up the various interfaces. * [NOD-1414] Add stubs to all the implementations. * [NOD-1414] Create MiningManager and its Factory. * [NOD-1414] Add interfaces for mempool and blockTemplateBuilder. * [NOD-1414] Add implementation structs for miningManager. * [NOD-1414] Add stub implementations for mempool and blockTemplateBuilder. * [NOD-1414] Rename state to kaspadState. * [NOD-1414] Restructure where interfaces sit. * [NOD-1414] Restructure where interfaces sit in the algorithms package as well. * [NOD-1414] Move remaining models out of models.go. * [NOD-1414] Modified some interfaces. * [NOD-1414] Make go vet happy. * [NOD-1414] Move SerializedUTXOSet into PruningManager. * [NOD-1414] Modify FindNextPruningPoint to return found and nextPruningPointUTXOSet. * [NOD-1414] Add IsDAGAncestorOf. * [NOD-1414] Add PruningPoint(). * [NOD-1414] Add Entry() to ReadOnlyUTXOSet. * [NOD-1414] Add MergeSet() to BlockGHOSTDAGData. * [NOD-1414] Write comments for all the exported types and functions in miningmanager. * [NOD-1414] Add comments to the upper levels of KaspadState. * [NOD-1414] Replace AddNode with ReachabilityChangeset. * [NOD-1414] Add payAddress and extraData to GetBlockTemplate. * [NOD-1414] Add scriptPublicKey and extraData to BuildBlock. * [NOD-1414] Rename algorithms to processes. * [NOD-1414] Rename kaspadState to consensus. * [NOD-1414] Add ValidateAgainstPastUTXO and ValidateFinality. * [NOD-1414] Add BlockGHOSTDAGData to ReachabilityChangeset. * [NOD-1414] Fix the comment over Mempool. * [NOD-1414] Fix the comment over ValidateTransaction. * [NOD-1414] Fill up the data structures. * [NOD-1414] Add comments to remaining uncommented items in miningmanager. * [NOD-1414] Add comments to structs and constructors. * [NOD-1414] Rename Set to Insert. * [NOD-1414] Add comments to everything inside datastructures. * [NOD-1414] Add comments to everything inside models. * [NOD-1414] Add comments to the interfaces in processes. * [NOD-1414] Add comments to everything in processes. * [NOD-1414] Make go vet happy. * [NOD-1414] Rename scriptPublicKey to coinbaseScriptPublicKey. * [NOD-1414] Add handlers to the consensus. * [NOD-1414] Add highHash to blockAtDepth. * [NOD-1414] Add resolveFinalityConflict. * [NOD-1414] Reorg BlockValidator. * [NOD-1414] In ResolveFinalityConflicts, rename blockHash to newFinalityBlockHash. * [NOD-1414] Fix a comment. * [NOD-1414] Make reachability structs public. * [NOD-1414] Make UTXO structs public.
76 lines
3.0 KiB
Go
76 lines
3.0 KiB
Go
package datastructures
|
|
|
|
import (
|
|
"github.com/kaspanet/go-secp256k1"
|
|
"github.com/kaspanet/kaspad/app/appmessage"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
|
|
"github.com/kaspanet/kaspad/util/daghash"
|
|
)
|
|
|
|
// AcceptanceDataStore represents a store of AcceptanceData
|
|
type AcceptanceDataStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, acceptanceData *model.BlockAcceptanceData)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *model.BlockAcceptanceData
|
|
}
|
|
|
|
// BlockIndex represents a store of known block hashes
|
|
type BlockIndex interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash)
|
|
Exists(dbContext dbaccess.Context, blockHash *daghash.Hash) bool
|
|
}
|
|
|
|
// BlockMessageStore represents a store of MsgBlock
|
|
type BlockMessageStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, msgBlock *appmessage.MsgBlock)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *appmessage.MsgBlock
|
|
}
|
|
|
|
// BlockRelationStore represents a store of BlockRelations
|
|
type BlockRelationStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, blockRelationData *model.BlockRelations)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *model.BlockRelations
|
|
}
|
|
|
|
// BlockStatusStore represents a store of BlockStatuses
|
|
type BlockStatusStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, blockStatus model.BlockStatus)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) model.BlockStatus
|
|
}
|
|
|
|
// ConsensusStateStore represents a store for the current consensus state
|
|
type ConsensusStateStore interface {
|
|
Update(dbTx *dbaccess.TxContext, utxoDiff *model.UTXODiff)
|
|
UTXOByOutpoint(dbContext dbaccess.Context, outpoint *appmessage.Outpoint) *model.UTXOEntry
|
|
}
|
|
|
|
// GHOSTDAGDataStore represents a store of BlockGHOSTDAGData
|
|
type GHOSTDAGDataStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, blockGHOSTDAGData *model.BlockGHOSTDAGData)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *model.BlockGHOSTDAGData
|
|
}
|
|
|
|
// MultisetStore represents a store of Multisets
|
|
type MultisetStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, multiset *secp256k1.MultiSet)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *secp256k1.MultiSet
|
|
}
|
|
|
|
// PruningPointStore represents a store for the current pruning point
|
|
type PruningPointStore interface {
|
|
Update(dbTx *dbaccess.TxContext, blockHash *daghash.Hash)
|
|
Get(dbContext dbaccess.Context) *daghash.Hash
|
|
}
|
|
|
|
// ReachabilityDataStore represents a store of ReachabilityData
|
|
type ReachabilityDataStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, reachabilityData *model.ReachabilityData)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *model.ReachabilityData
|
|
}
|
|
|
|
// UTXODiffStore represents a store of UTXODiffs
|
|
type UTXODiffStore interface {
|
|
Insert(dbTx *dbaccess.TxContext, blockHash *daghash.Hash, utxoDiff *model.UTXODiff)
|
|
Get(dbContext dbaccess.Context, blockHash *daghash.Hash) *model.UTXODiff
|
|
}
|