packer

package
v1.7.4 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2022 License: LGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsBadTx

func IsBadTx(err error) bool

IsBadTx not a valid tx.

func IsGasLimitReached

func IsGasLimitReached(err error) bool

IsGasLimitReached block if full of txs.

func IsKnownTx

func IsKnownTx(err error) bool

IsKnownTx tx is already adopted, or in the chain.

func IsTxNotAdoptableNow

func IsTxNotAdoptableNow(err error) bool

IsTxNotAdoptableNow tx can not be adopted now.

Types

type Flow

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

Flow the flow of packing a new block.

func (*Flow) Adopt

func (f *Flow) Adopt(tx *tx.Transaction) error

Adopt try to execute the given transaction. If the tx is valid and can be executed on current state (regardless of VM error), it will be adopted by the new block.

func (*Flow) Pack

func (f *Flow) Pack(privateKey *ecdsa.PrivateKey, newBlockConflicts uint32) (*block.Block, *state.Stage, tx.Receipts, error)

Pack build and sign the new block.

func (*Flow) ParentHeader

func (f *Flow) ParentHeader() *block.Header

ParentHeader returns parent block header.

func (*Flow) TotalScore added in v1.3.0

func (f *Flow) TotalScore() uint64

TotalScore returns total score of new block.

func (*Flow) When

func (f *Flow) When() uint64

When the target time to do packing.

type Packer

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

Packer to pack txs and build new blocks.

func New

func New(
	repo *chain.Repository,
	stater *state.Stater,
	nodeMaster thor.Address,
	beneficiary *thor.Address,
	forkConfig thor.ForkConfig) *Packer

New create a new Packer instance. The beneficiary is optional, it defaults to endorsor if not set.

func (*Packer) Mock

func (p *Packer) Mock(parent *chain.BlockSummary, targetTime uint64, gasLimit uint64) (*Flow, error)

Mock create a packing flow upon given parent, but with a designated timestamp. It will skip the PoA verification and scheduling, and the block produced by the returned flow is not in consensus.

func (*Packer) Schedule

func (p *Packer) Schedule(parent *chain.BlockSummary, nowTimestamp uint64) (flow *Flow, err error)

Schedule schedule a packing flow to pack new block upon given parent and clock time.

func (*Packer) SetTargetGasLimit

func (p *Packer) SetTargetGasLimit(gl uint64)

SetTargetGasLimit set target gas limit, the Packer will adjust block gas limit close to it as it can.

Jump to

Keyboard shortcuts

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