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) 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)
- func (r *Repository) SetBestBlockID(id thor.Bytes32) (err error)
- func (r *Repository) SetSteadyBlockID(id thor.Bytes32) error
- func (r *Repository) SteadyBlockID() thor.Bytes32
- 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 ¶
type BlockSummary struct { Header *block.Header Txs []thor.Bytes32 Size uint64 Conflicts uint32 SteadyNum uint32 }
BlockSummary presents block summary.
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) 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.
func (*Repository) SetBestBlockID ¶
func (r *Repository) SetBestBlockID(id thor.Bytes32) (err error)
SetBestBlockID set the given block id as best block id.
func (*Repository) SetSteadyBlockID ¶
func (r *Repository) SetSteadyBlockID(id thor.Bytes32) error
SetSteadyBlockID set the given block id as the head block id of the steady chain.
func (*Repository) SteadyBlockID ¶
func (r *Repository) SteadyBlockID() thor.Bytes32
SteadyBlockID return the head block id of the steady chain.