chain

package
v0.0.0-...-75aef46 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2019 License: GPL-3.0 Imports: 13 Imported by: 15

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Block

type Block struct {
	*block.Block
	Obsolete bool
}

Block expanded block.Block to indicate whether it is obsolete

type BlockReader

type BlockReader interface {
	Read() ([]*Block, error)
}

BlockReader defines the interface to read Block

type Chain

type Chain struct {
	// contains filtered or unexported fields
}

Chain describes a persistent block chain. It's thread-safe.

func New

func New(kv kv.GetPutter, genesisBlock *block.Block) (*Chain, error)

New create an instance of Chain.

func (*Chain) AddBlock

func (c *Chain) AddBlock(newBlock *block.Block, receipts tx.Receipts) (*Fork, error)

AddBlock add a new block into block chain. Once reorg happened (len(Trunk) > 0 && len(Branch) >0), Fork.Branch will be the chain transitted from trunk to branch. Reorg happens when isTrunk is true.

func (*Chain) BestBlock

func (c *Chain) BestBlock() *block.Block

BestBlock returns the newest block on trunk.

func (*Chain) GenesisBlock

func (c *Chain) GenesisBlock() *block.Block

GenesisBlock returns genesis block.

func (*Chain) GetAncestorBlockID

func (c *Chain) GetAncestorBlockID(descendantID powerplay.Bytes32, ancestorNum uint32) (powerplay.Bytes32, error)

GetAncestorBlockID get ancestor block ID of descendant for given ancestor block.

func (*Chain) GetBlock

func (c *Chain) GetBlock(id powerplay.Bytes32) (*block.Block, error)

GetBlock get block by id.

func (*Chain) GetBlockBody

func (c *Chain) GetBlockBody(id powerplay.Bytes32) (*block.Body, error)

GetBlockBody get block body by block id.

func (*Chain) GetBlockHeader

func (c *Chain) GetBlockHeader(id powerplay.Bytes32) (*block.Header, error)

GetBlockHeader get block header by block id.

func (*Chain) GetBlockRaw

func (c *Chain) GetBlockRaw(id powerplay.Bytes32) (block.Raw, error)

GetBlockRaw get block rlp encoded bytes for given id. Never modify the returned raw block.

func (*Chain) GetBlockReceipts

func (c *Chain) GetBlockReceipts(id powerplay.Bytes32) (tx.Receipts, error)

GetBlockReceipts get all tx receipts in the block for given block id.

func (*Chain) GetTransaction

func (c *Chain) GetTransaction(blockID powerplay.Bytes32, index uint64) (*tx.Transaction, error)

GetTransaction get transaction for given block and index.

func (*Chain) GetTransactionMeta

func (c *Chain) GetTransactionMeta(txID powerplay.Bytes32, headBlockID powerplay.Bytes32) (*TxMeta, error)

GetTransactionMeta get transaction meta info, on the chain defined by head block ID.

func (*Chain) GetTransactionReceipt

func (c *Chain) GetTransactionReceipt(blockID powerplay.Bytes32, index uint64) (*tx.Receipt, error)

GetTransactionReceipt get tx receipt for given block and index.

func (*Chain) GetTrunkBlock

func (c *Chain) GetTrunkBlock(num uint32) (*block.Block, error)

GetTrunkBlock get block on trunk by given block number.

func (*Chain) GetTrunkBlockHeader

func (c *Chain) GetTrunkBlockHeader(num uint32) (*block.Header, error)

GetTrunkBlockHeader get block header on trunk by given block number.

func (*Chain) GetTrunkBlockID

func (c *Chain) GetTrunkBlockID(num uint32) (powerplay.Bytes32, error)

GetTrunkBlockID get block id on trunk by given block number.

func (*Chain) GetTrunkBlockRaw

func (c *Chain) GetTrunkBlockRaw(num uint32) (block.Raw, error)

GetTrunkBlockRaw get block raw on trunk by given block number.

func (*Chain) GetTrunkTransaction

func (c *Chain) GetTrunkTransaction(txID powerplay.Bytes32) (*tx.Transaction, *TxMeta, error)

GetTrunkTransaction get transaction on trunk by given tx id.

func (*Chain) GetTrunkTransactionMeta

func (c *Chain) GetTrunkTransactionMeta(txID powerplay.Bytes32) (*TxMeta, error)

GetTrunkTransactionMeta get transaction meta info on trunk by given tx id.

func (*Chain) IsBlockExist

func (c *Chain) IsBlockExist(err error) bool

IsBlockExist returns if the error means block was already in the chain.

func (*Chain) IsNotFound

func (c *Chain) IsNotFound(err error) bool

IsNotFound returns if an error means not found.

func (*Chain) NewBlockReader

func (c *Chain) NewBlockReader(position powerplay.Bytes32) BlockReader

NewBlockReader generate an object that implements the BlockReader interface

func (*Chain) NewSeeker

func (c *Chain) NewSeeker(headBlockID powerplay.Bytes32) *Seeker

NewSeeker returns a new seeker instance.

func (*Chain) NewTicker

func (c *Chain) NewTicker() co.Waiter

NewTicker create a signal Waiter to receive event of head block change.

func (*Chain) Tag

func (c *Chain) Tag() byte

Tag returns chain tag, which is the last byte of genesis id.

type Fork

type Fork struct {
	Ancestor *block.Header
	Trunk    []*block.Header
	Branch   []*block.Header
}

Fork describes forked chain.

type Seeker

type Seeker struct {
	// contains filtered or unexported fields
}

Seeker to seek block by given number on the chain defined by head block ID.

func (*Seeker) Err

func (s *Seeker) Err() error

Err returns error occurred.

func (*Seeker) GenesisID

func (s *Seeker) GenesisID() powerplay.Bytes32

GenesisID get genesis block ID.

func (*Seeker) GetHeader

func (s *Seeker) GetHeader(id powerplay.Bytes32) *block.Header

GetHeader returns block header by the given number.

func (*Seeker) GetID

func (s *Seeker) GetID(num uint32) powerplay.Bytes32

GetID returns block ID by the given number.

type TxMeta

type TxMeta struct {
	BlockID powerplay.Bytes32

	// Index the position of the tx in block's txs.
	Index uint64 // rlp require uint64.

	Reverted bool
}

TxMeta contains information about a tx is settled.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL