4 "github.com/bytom/bytom/database/storage"
5 "github.com/bytom/bytom/protocol/bc"
6 "github.com/bytom/bytom/protocol/bc/types"
7 "github.com/bytom/bytom/protocol/state"
10 // Store provides storage interface for blockchain data
11 type Store interface {
12 BlockExist(*bc.Hash) bool
14 GetBlock(*bc.Hash) (*types.Block, error)
15 GetBlockHeader(*bc.Hash) (*types.BlockHeader, error)
16 GetStoreStatus() *BlockStoreState
17 GetTransactionsUtxo(*state.UtxoViewpoint, []*bc.Tx) error
18 GetUtxo(*bc.Hash) (*storage.UtxoEntry, error)
19 GetContract(hash [32]byte) ([]byte, error)
21 GetCheckpoint(*bc.Hash) (*state.Checkpoint, error)
22 CheckpointsFromNode(height uint64, hash *bc.Hash) ([]*state.Checkpoint, error)
23 GetCheckpointsByHeight(uint64) ([]*state.Checkpoint, error)
24 SaveCheckpoints([]*state.Checkpoint) error
26 LoadBlockIndex(uint64) (*state.BlockIndex, error)
27 SaveBlock(*types.Block) error
28 SaveBlockHeader(*types.BlockHeader) error
29 SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint, *state.ContractViewpoint, []*state.Checkpoint, uint64, *bc.Hash) error
32 // BlockStoreState represents the core's db status
33 type BlockStoreState struct {
36 FinalizedHeight uint64
37 FinalizedHash *bc.Hash