mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-25 16:26:48 +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.
46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
package reachabilitytree
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/datastructures"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/util/daghash"
|
|
)
|
|
|
|
// ReachabilityTree maintains a structure that allows to answer
|
|
// reachability queries in sub-linear time
|
|
type ReachabilityTree struct {
|
|
blockRelationStore datastructures.BlockRelationStore
|
|
reachabilityDataStore datastructures.ReachabilityDataStore
|
|
}
|
|
|
|
// New instantiates a new ReachabilityTree
|
|
func New(
|
|
blockRelationStore datastructures.BlockRelationStore,
|
|
reachabilityDataStore datastructures.ReachabilityDataStore) *ReachabilityTree {
|
|
return &ReachabilityTree{
|
|
blockRelationStore: blockRelationStore,
|
|
reachabilityDataStore: reachabilityDataStore,
|
|
}
|
|
}
|
|
|
|
// IsReachabilityTreeAncestorOf returns true if blockHashA is an
|
|
// ancestor of blockHashB in the reachability tree. Note that this
|
|
// does not necessarily mean that it isn't its ancestor in the DAG.
|
|
func (rt *ReachabilityTree) IsReachabilityTreeAncestorOf(blockHashA *daghash.Hash, blockHashB *daghash.Hash) bool {
|
|
return false
|
|
}
|
|
|
|
// IsDAGAncestorOf returns true if blockHashA is an ancestor of
|
|
// blockHashB in the DAG.
|
|
func (rt *ReachabilityTree) IsDAGAncestorOf(blockHashA *daghash.Hash, blockHashB *daghash.Hash) bool {
|
|
return false
|
|
}
|
|
|
|
// ReachabilityChangeset returns a set of changes that need to occur
|
|
// in order to add the given blockHash into the reachability tree.
|
|
func (rt *ReachabilityTree) ReachabilityChangeset(blockHash *daghash.Hash,
|
|
blockGHOSTDAGData *model.BlockGHOSTDAGData) *model.ReachabilityChangeset {
|
|
|
|
return nil
|
|
}
|