package protocol
import (
+ "errors"
+
"github.com/vapor/database/storage"
"github.com/vapor/protocol/bc"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/state"
)
+var (
+ ErrNotFoundVoteResult = errors.New("can't find the vote result by given sequence")
+)
+
// Store provides storage interface for blockchain data
type Store interface {
BlockExist(*bc.Hash) bool
GetTransactionStatus(*bc.Hash) (*bc.TransactionStatus, error)
GetTransactionsUtxo(*state.UtxoViewpoint, []*bc.Tx) error
GetUtxo(*bc.Hash) (*storage.UtxoEntry, error)
+ GetVoteResult(uint64) (*state.VoteResult, error)
LoadBlockIndex(uint64) (*state.BlockIndex, error)
SaveBlock(*types.Block, *bc.TransactionStatus) error
- SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint) error
-
- IsWithdrawSpent(hash *bc.Hash) bool
- SetWithdrawSpent(hash *bc.Hash)
-
- Set(hash *bc.Hash, data []byte) error
- Get(hash *bc.Hash) ([]byte, error)
+ SaveChainStatus(*state.BlockNode, *state.BlockNode, *state.UtxoViewpoint, map[uint64]*state.VoteResult) error
+ SaveChainNodeStatus(*state.BlockNode, *state.BlockNode) error
}
// BlockStoreState represents the core's db status
type BlockStoreState struct {
- Height uint64
- Hash *bc.Hash
+ Height uint64
+ Hash *bc.Hash
+ IrreversibleHeight uint64
+ IrreversibleHash *bc.Hash
}