OSDN Git Service

bfb9bbda15d8cb106fbc8313ae7d2ec176f09a71
[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         CheckpointsFromNode(height uint64, hash *bc.Hash) ([]*state.Checkpoint, error)
23         GetCheckpointsByHeight(uint64) ([]*state.Checkpoint, error)
24         SaveCheckpoints([]*state.Checkpoint) error
25
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
30 }
31
32 // BlockStoreState represents the core's db status
33 type BlockStoreState struct {
34         Height          uint64
35         Hash            *bc.Hash
36         FinalizedHeight uint64
37         FinalizedHash   *bc.Hash
38 }