Ori Newman eef5f27a87
[NOD-1422] Implement GHOSTDAG (#950)
* [NOD-1422] Implement GHOSTDAG

* [NOD-1422] Rename bluest->findSelectedParent

* [NOD-1422] Remove preallocations from MergeSetBlues and add preallocation in candidateBluesAnticoneSizes

* [NOD-1422] Rename blockghostdagdata.go to ghostdag.go
2020-10-14 16:47:04 +03:00

37 lines
1.1 KiB
Go

package ghostdagmanager
import (
"github.com/kaspanet/kaspad/domain/consensus/database"
"github.com/kaspanet/kaspad/domain/consensus/model"
"github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
)
// GHOSTDAGManager resolves and manages GHOSTDAG block data
type GHOSTDAGManager struct {
databaseContext *database.DomainDBContext
dagTopologyManager model.DAGTopologyManager
ghostdagDataStore model.GHOSTDAGDataStore
k model.KType
}
// New instantiates a new GHOSTDAGManager
func New(
databaseContext *dbaccess.DatabaseContext,
dagTopologyManager model.DAGTopologyManager,
ghostdagDataStore model.GHOSTDAGDataStore,
k model.KType) *GHOSTDAGManager {
return &GHOSTDAGManager{
databaseContext: database.NewDomainDBContext(databaseContext),
dagTopologyManager: dagTopologyManager,
ghostdagDataStore: ghostdagDataStore,
k: k,
}
}
// BlockData returns previously calculated GHOSTDAG data for
// the given blockHash
func (gm *GHOSTDAGManager) BlockData(blockHash *model.DomainHash) *model.BlockGHOSTDAGData {
return gm.ghostdagDataStore.Get(gm.databaseContext, blockHash)
}