Documentation
¶
Index ¶
- Constants
- type BlockReader
- type BlockSummary
- type Chain
- func (c *Chain) Exclude(other *Chain) ([]thor.Bytes32, error)
- func (c *Chain) FindBlockHeaderByTimestamp(ts uint64, flag int) (header *block.Header, err error)
- func (c *Chain) GenesisID() thor.Bytes32
- func (c *Chain) GetBlock(num uint32) (*block.Block, error)
- func (c *Chain) GetBlockHeader(num uint32) (*block.Header, error)
- func (c *Chain) GetBlockID(num uint32) (thor.Bytes32, error)
- func (c *Chain) GetBlockSummary(num uint32) (*BlockSummary, error)
- func (c *Chain) GetTransaction(id thor.Bytes32) (*tx.Transaction, *TxMeta, error)
- func (c *Chain) GetTransactionMeta(id thor.Bytes32) (*TxMeta, error)
- func (c *Chain) GetTransactionReceipt(txID thor.Bytes32) (*tx.Receipt, error)
- func (c *Chain) HasBlock(id thor.Bytes32) (bool, error)
- func (c *Chain) HasTransaction(txid thor.Bytes32, txBlockRef uint32) (bool, error)
- func (c *Chain) HeadID() thor.Bytes32
- func (c *Chain) IsNotFound(err error) bool
- type ExtendedBlock
- type Repository
- func (r *Repository) AddBlock(newBlock *block.Block, receipts tx.Receipts, conflicts uint32, asBest bool) error
- func (r *Repository) BestBlockSummary() *BlockSummary
- func (r *Repository) ChainTag() byte
- func (r *Repository) GenesisBlock() *block.Block
- func (r *Repository) GetBlock(id thor.Bytes32) (*block.Block, error)
- func (r *Repository) GetBlockReceipts(id thor.Bytes32) (tx.Receipts, error)
- func (r *Repository) GetBlockSummary(id thor.Bytes32) (*BlockSummary, error)
- func (r *Repository) GetBlockTransactions(id thor.Bytes32) (tx.Transactions, error)
- func (r *Repository) GetMaxBlockNum() (uint32, error)
- func (r *Repository) IsNotFound(err error) bool
- func (r *Repository) NewBestChain() *Chain
- func (r *Repository) NewBlockReader(position thor.Bytes32) BlockReader
- func (r *Repository) NewChain(headID thor.Bytes32) *Chain
- func (r *Repository) NewTicker() co.Waiter
- func (r *Repository) ScanConflicts(blockNum uint32) (uint32, error)
- func (r *Repository) ScanHeads(from uint32) ([]thor.Bytes32, error)
- type TxMeta
Constants ¶
const ( // IndexTrieName is the name of index trie. // The index tire is used to store mappings from block number to block id, and tx id to tx meta. IndexTrieName = "i" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockReader ¶
type BlockReader interface {
Read() ([]*ExtendedBlock, error)
}
BlockReader defines the interface to stream block activity.
type BlockSummary ¶
BlockSummary presents block summary.
func (*BlockSummary) IndexRoot ¶ added in v2.2.0
func (s *BlockSummary) IndexRoot() trie.Root
IndexRoot returns index root for accessing index trie.
func (*BlockSummary) Root ¶ added in v2.2.0
func (s *BlockSummary) Root() trie.Root
Root returns state root for accessing state trie.
type Chain ¶
type Chain struct {
// contains filtered or unexported fields
}
Chain presents the linked block chain, with the range from genesis to given head block.
It provides reliable methods to access block by number, tx by id, etc...
func (*Chain) Exclude ¶
Exclude returns ids of blocks belongs to this chain, but not belongs to other.
The returned ids are in ascending order.
func (*Chain) FindBlockHeaderByTimestamp ¶
FindBlockHeaderByTimestamp find the block whose timestamp matches the given timestamp.
When flag == 0, exact match is performed (may return error not found) flag > 0, matches the lowest block whose timestamp >= ts flag < 0, matches the highest block whose timestamp <= ts.
func (*Chain) GetBlockHeader ¶
GetBlockHeader returns block header by given block number.
func (*Chain) GetBlockID ¶
GetBlockID returns block id by given block number.
func (*Chain) GetBlockSummary ¶
func (c *Chain) GetBlockSummary(num uint32) (*BlockSummary, error)
GetBlockSummary returns block summary by given block number.
func (*Chain) GetTransaction ¶
GetTransaction returns tx along with meta by given tx id.
func (*Chain) GetTransactionMeta ¶
GetTransactionMeta returns tx meta by given tx id.
func (*Chain) GetTransactionReceipt ¶
GetTransactionReceipt returns tx receipt by given tx id.
func (*Chain) HasTransaction ¶
HasTransaction checks if a tx exists on the chain. It's usually much faster than GetTransactionMeta.
func (*Chain) IsNotFound ¶
IsNotFound returns if the given error means not found.
type ExtendedBlock ¶
ExtendedBlock extend block.Block with the obsolete flag.
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
Repository stores block headers, txs and receipts.
It's thread-safe.
func NewRepository ¶
NewRepository create an instance of repository.
func (*Repository) AddBlock ¶
func (r *Repository) AddBlock(newBlock *block.Block, receipts tx.Receipts, conflicts uint32, asBest bool) error
AddBlock add a new block with its receipts into repository.
func (*Repository) BestBlockSummary ¶
func (r *Repository) BestBlockSummary() *BlockSummary
BestBlockSummary returns the summary of the best block, which is the newest block of canonical chain.
func (*Repository) ChainTag ¶
func (r *Repository) ChainTag() byte
ChainTag returns chain tag, which is the last byte of genesis id.
func (*Repository) GenesisBlock ¶
func (r *Repository) GenesisBlock() *block.Block
GenesisBlock returns genesis block.
func (*Repository) GetBlockReceipts ¶
GetBlockReceipts get all tx receipts of the block for given block id.
func (*Repository) GetBlockSummary ¶
func (r *Repository) GetBlockSummary(id thor.Bytes32) (*BlockSummary, error)
GetBlockSummary get block summary by block id.
func (*Repository) GetBlockTransactions ¶
func (r *Repository) GetBlockTransactions(id thor.Bytes32) (tx.Transactions, error)
GetBlockTransactions get all transactions of the block for given block id.
func (*Repository) GetMaxBlockNum ¶
func (r *Repository) GetMaxBlockNum() (uint32, error)
GetMaxBlockNum returns the max committed block number.
func (*Repository) IsNotFound ¶
func (r *Repository) IsNotFound(err error) bool
IsNotFound returns if the given error means not found.
func (*Repository) NewBestChain ¶
func (r *Repository) NewBestChain() *Chain
NewBestChain create a chain with best block as head.
func (*Repository) NewBlockReader ¶
func (r *Repository) NewBlockReader(position thor.Bytes32) BlockReader
NewBlockReader create BlockReader instance.
func (*Repository) NewChain ¶
func (r *Repository) NewChain(headID thor.Bytes32) *Chain
NewChain create a chain with head block specified by headID.
func (*Repository) NewTicker ¶
func (r *Repository) NewTicker() co.Waiter
NewTicker create a signal Waiter to receive event that the best block changed.
func (*Repository) ScanConflicts ¶
func (r *Repository) ScanConflicts(blockNum uint32) (uint32, error)
ScanConflicts returns the count of saved blocks with the given blockNum.
func (*Repository) ScanHeads ¶
func (r *Repository) ScanHeads(from uint32) ([]thor.Bytes32, error)
ScanHeads returns all head blockIDs from the given blockNum(included) in descending order. It will return all fork's head block id stored in to local database after the given block number. The following example will return B' and C. A -> B -> C
\ -> B'