Ori Newman 2eb0d946e5
[NOD-1509] Implement StageVirtualUTXOSet (#999)
* [NOD-1509] Implement StageVirtualUTXODiff

* [NOD-1509] Fix HasUTXOByOutpoint, get rid of database.ErrNotFound, and fix errors
2020-11-04 16:30:08 +02:00

58 lines
1.2 KiB
Go

package consensusstatestore
import (
"github.com/kaspanet/kaspad/domain/consensus/model"
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
)
// consensusStateStore represents a store for the current consensus state
type consensusStateStore struct {
stagedTips []*externalapi.DomainHash
stagedVirtualDiffParents []*externalapi.DomainHash
stagedVirtualUTXODiff *model.UTXODiff
stagedVirtualUTXOSet model.UTXOCollection
}
// New instantiates a new ConsensusStateStore
func New() model.ConsensusStateStore {
return &consensusStateStore{}
}
func (c consensusStateStore) Discard() {
c.stagedTips = nil
c.stagedVirtualUTXODiff = nil
c.stagedVirtualDiffParents = nil
c.stagedVirtualUTXOSet = nil
}
func (c consensusStateStore) Commit(dbTx model.DBTransaction) error {
err := c.commitTips(dbTx)
if err != nil {
return err
}
err = c.commitVirtualDiffParents(dbTx)
if err != nil {
return err
}
err = c.commitVirtualUTXODiff(dbTx)
if err != nil {
return err
}
err = c.commitVirtualUTXOSet(dbTx)
if err != nil {
return err
}
c.Discard()
return nil
}
func (c consensusStateStore) IsStaged() bool {
return c.stagedTips != nil ||
c.stagedVirtualDiffParents != nil ||
c.stagedVirtualUTXODiff != nil
}