OSDN Git Service

feat(bcrp): add control contract action (#1909)
[bytom/bytom.git] / protocol / store.go
1 package protocol
2
3 import (
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"
8 )
9
10 // Store provides storage interface for blockchain data
11 type Store interface {
12         BlockExist(*bc.Hash) bool
13
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)
20
21         GetCheckpoint(*bc.Hash) (*state.Checkpoint, error)
22         GetCheckpointsByHeight(uint64) ([]*state.Checkpoint, error)
23         SaveCheckpoints(...*state.Checkpoint) error
24
25         LoadBlockIndex(uint64) (*state.BlockIndex, error)
26         SaveBlock(*types.Block) error
27         SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint, *state.ContractViewpoint) error
28 }
29
30 // BlockStoreState represents the core's db status
31 type BlockStoreState struct {
32         Height uint64
33         Hash   *bc.Hash
34 }