mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-05 13:46:42 +00:00

* [NOD-1517] Properly initialize consensus with Genesis block * [NOD-1517] Remove redundant AddHeaderTip * [NOD-1517] Don't return nil from dbHash<->DomainHash converters * [NOD-1517] Use pointer receivers * [NOD-1517] Use domain block in dagParams * [NOD-1517] Remove boolean from SelectedTip * [NOD-1517] Rename hasHeader to isHeadersOnlyBlock * [NOD-1517] Add comment * [NOD-1517] Change genesis version * [NOD-1517] Rename TestNewFactory->TestNewConsensus
39 lines
943 B
Go
39 lines
943 B
Go
package consensusstatestore
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/dbkeys"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/hashes"
|
|
)
|
|
|
|
var tipsKey = dbkeys.MakeBucket().Key([]byte("tips"))
|
|
|
|
func (c *consensusStateStore) Tips(dbContext model.DBReader) ([]*externalapi.DomainHash, error) {
|
|
if c.stagedTips != nil {
|
|
return c.stagedTips, nil
|
|
}
|
|
|
|
tipsBytes, err := dbContext.Get(tipsKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return hashes.DeserializeHashSlice(tipsBytes)
|
|
}
|
|
|
|
func (c *consensusStateStore) StageTips(tipHashes []*externalapi.DomainHash) {
|
|
c.stagedTips = tipHashes
|
|
}
|
|
|
|
func (c *consensusStateStore) commitTips(dbTx model.DBTransaction) error {
|
|
tipsBytes := hashes.SerializeHashSlice(c.stagedTips)
|
|
|
|
err := dbTx.Put(tipsKey, tipsBytes)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|