backend

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2020 License: GPL-3.0, GPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnauthorizedAddress is returned when given address cannot be found in
	// current validator set.
	ErrUnauthorizedAddress = errors.New("unauthorized address")
	// ErrStoppedEngine is returned if the engine is stopped
	ErrStoppedEngine = errors.New("stopped engine")
)
View Source
var ErrStartedEngine = errors.New("started engine")

ErrStartedEngine is returned if the engine is already started

Functions

This section is empty.

Types

type API

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

API is a user facing RPC API to dump BFT state

func (*API) GetCommittee added in v0.4.0

func (api *API) GetCommittee(number *rpc.BlockNumber) (types.Committee, error)

GetCommittee retrieves the list of authorized committee at the specified block.

func (*API) GetCommitteeAtHash added in v0.4.0

func (api *API) GetCommitteeAtHash(hash common.Hash) (types.Committee, error)

GetCommitteeAtHash retrieves the state snapshot at a given block.

func (*API) GetContractABI added in v0.2.1

func (api *API) GetContractABI() string

Get Autonity contract ABI

func (*API) GetContractAddress added in v0.2.1

func (api *API) GetContractAddress() common.Address

Get Autonity contract address

func (*API) GetWhitelist

func (api *API) GetWhitelist() []string

Get current white list

type Backend

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

func New

func New(config *tendermintConfig.Config, privateKey *ecdsa.PrivateKey, db ethdb.Database, chainConfig *params.ChainConfig, vmConfig *vm.Config) *Backend

New creates an Ethereum Backend for BFT core engine.

func (*Backend) APIs

func (sb *Backend) APIs(chain consensus.ChainReader) []rpc.API

APIs returns the RPC APIs this consensus engine provides.

func (*Backend) AddSeal added in v0.4.0

func (sb *Backend) AddSeal(block *types.Block) (*types.Block, error)

update timestamp and signature of the block based on its number of transactions

func (*Backend) Address

func (sb *Backend) Address() common.Address

Address implements tendermint.Backend.Address

func (*Backend) AskSync added in v0.3.0

func (sb *Backend) AskSync(header *types.Header)

func (*Backend) Author

func (sb *Backend) Author(header *types.Header) (common.Address, error)

Author retrieves the Ethereum address of the account that minted the given block, which may be different from the header's coinbase if a consensus engine is based on signatures.

func (*Backend) AutonityContractFinalize added in v0.4.0

func (sb *Backend) AutonityContractFinalize(header *types.Header, chain consensus.ChainReader, state *state.StateDB,
	txs []*types.Transaction, receipts []*types.Receipt) (types.Committee, *types.Receipt, error)

AutonityContractFinalize is called to deploy the Autonity Contract at block #1. it returns as well the committee field containaining the list of committee members allowed to participate in consensus for the next block.

func (*Backend) BlockChain added in v0.5.0

func (sb *Backend) BlockChain() *core.BlockChain

func (*Backend) Broadcast

func (sb *Backend) Broadcast(ctx context.Context, committee types.Committee, payload []byte) error

Broadcast implements tendermint.Backend.Broadcast

func (*Backend) CalcDifficulty

func (sb *Backend) CalcDifficulty(chain consensus.ChainReader, time uint64, parent *types.Header) *big.Int

CalcDifficulty is the difficulty adjustment algorithm. It returns the difficulty that a new block should have based on the previous blocks in the blockchain and the current signer.

func (*Backend) CheckSignature

func (sb *Backend) CheckSignature(data []byte, address common.Address, sig []byte) error

CheckSignature implements tendermint.Backend.CheckSignature

func (*Backend) Close

func (sb *Backend) Close() error

Stop implements consensus.Stop

func (*Backend) Commit

func (sb *Backend) Commit(proposal *types.Block, round int64, seals [][]byte) error

Commit implements tendermint.Backend.Commit

func (*Backend) Finalize

func (sb *Backend) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction,
	uncles []*types.Header, receipts []*types.Receipt) (types.Committee, *types.Receipt, error)

Finalize runs any post-transaction state modifications (e.g. block rewards) Finaize doesn't modify the passed header.

func (*Backend) FinalizeAndAssemble added in v0.1.6

func (sb *Backend) FinalizeAndAssemble(chain consensus.ChainReader, header *types.Header, statedb *state.StateDB, txs []*types.Transaction,
	uncles []*types.Header, receipts *[]*types.Receipt) (*types.Block, error)

FinalizeAndAssemble call Finaize to compute post transacation state modifications and assembles the final block.

func (*Backend) GetContractABI added in v0.3.0

func (sb *Backend) GetContractABI() string

func (*Backend) Gossip

func (sb *Backend) Gossip(ctx context.Context, committee types.Committee, payload []byte)

Broadcast implements tendermint.Backend.Gossip

func (*Backend) HandleMsg

func (sb *Backend) HandleMsg(addr common.Address, msg p2p.Msg) (bool, error)

HandleMsg implements consensus.Handler.HandleMsg

func (*Backend) HandleUnhandledMsgs added in v0.3.0

func (sb *Backend) HandleUnhandledMsgs(ctx context.Context)

func (*Backend) HasBadProposal

func (sb *Backend) HasBadProposal(hash common.Hash) bool

func (*Backend) LastCommittedProposal

func (sb *Backend) LastCommittedProposal() (*types.Block, common.Address)

func (*Backend) NewChainHead

func (sb *Backend) NewChainHead() error

func (*Backend) Post added in v0.1.6

func (sb *Backend) Post(ev interface{})

func (*Backend) Prepare

func (sb *Backend) Prepare(chain consensus.ChainReader, header *types.Header) error

Prepare initializes the consensus fields of a block header according to the rules of a particular engine. The changes are executed inline.

func (*Backend) Protocol

func (sb *Backend) Protocol() (protocolName string, extraMsgCodes uint64)

Protocol implements consensus.Handler.Protocol

func (*Backend) ResetPeerCache added in v0.1.6

func (sb *Backend) ResetPeerCache(address common.Address)

func (*Backend) Seal

func (sb *Backend) Seal(chain consensus.ChainReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error

Seal generates a new block for the given input block with the local miner's seal place on top.

func (*Backend) SealHash

func (sb *Backend) SealHash(header *types.Header) common.Hash

func (*Backend) SetBlockchain added in v0.5.0

func (sb *Backend) SetBlockchain(bc *core.BlockChain)

func (*Backend) SetBroadcaster

func (sb *Backend) SetBroadcaster(broadcaster consensus.Broadcaster)

SetBroadcaster implements consensus.Handler.SetBroadcaster

func (*Backend) SetProposedBlockHash

func (sb *Backend) SetProposedBlockHash(hash common.Hash)

func (*Backend) Sign

func (sb *Backend) Sign(data []byte) ([]byte, error)

Sign implements tendermint.Backend.Sign

func (*Backend) Start

func (sb *Backend) Start(ctx context.Context) error

Start implements consensus.Start

func (*Backend) Subscribe added in v0.1.6

func (sb *Backend) Subscribe(types ...interface{}) *event.TypeMuxSubscription

func (*Backend) SyncPeer added in v0.1.6

func (sb *Backend) SyncPeer(address common.Address)

Synchronize new connected peer with current height state

func (*Backend) VerifyHeader

func (sb *Backend) VerifyHeader(chain consensus.ChainReader, header *types.Header, _ bool) error

VerifyHeader checks whether a header conforms to the consensus rules of a given engine. Verifying the seal may be done optionally here, or explicitly via the VerifySeal method.

func (*Backend) VerifyHeaders

func (sb *Backend) VerifyHeaders(chain consensus.ChainReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error)

VerifyHeaders is similar to VerifyHeader, but verifies a batch of headers concurrently. The method returns a quit channel to abort the operations and a results channel to retrieve the async verifications (the order is that of the input slice).

func (*Backend) VerifyProposal

func (sb *Backend) VerifyProposal(proposal types.Block) (time.Duration, error)

VerifyProposal implements tendermint.Backend.VerifyProposal

func (*Backend) VerifySeal

func (sb *Backend) VerifySeal(chain consensus.ChainReader, header *types.Header) error

VerifySeal checks whether the crypto seal on a header is valid according to the consensus rules of the given engine.

func (*Backend) VerifyUncles

func (sb *Backend) VerifyUncles(chain consensus.ChainReader, block *types.Block) error

VerifyUncles verifies that the given block's uncles conform to the consensus rules of a given engine.

func (*Backend) WhiteList

func (sb *Backend) WhiteList() []string

Whitelist for the current block

type Changes added in v0.5.0

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

func NewChanges added in v0.5.0

func NewChanges() Changes

type Modifier added in v0.5.0

type Modifier interface {
	ModifyHeader(header *types.Header) *types.Header
}

type ModifyCommitteeEngine added in v0.5.0

type ModifyCommitteeEngine struct {
	*testing.T
	*Backend
	Modifier
	// contains filtered or unexported fields
}

func NewAddValidator added in v0.5.0

func NewAddValidator(t *testing.T, engine consensus.Engine, changedValidators Changes, blocksFromRemoved, blocksFromAdded map[common.Hash]uint64) *ModifyCommitteeEngine

func NewRemoveValidator added in v0.5.0

func NewRemoveValidator(t *testing.T, engine consensus.Engine, changedValidators Changes, blocksFromRemoved, blocksFromAdded map[common.Hash]uint64) *ModifyCommitteeEngine

func NewReplaceValidator added in v0.5.0

func NewReplaceValidator(t *testing.T, engine consensus.Engine, changedValidators Changes, blocksFromRemoved, blocksFromAdded map[common.Hash]uint64) *ModifyCommitteeEngine

func (*ModifyCommitteeEngine) FinalizeAndAssemble added in v0.5.0

func (m *ModifyCommitteeEngine) FinalizeAndAssemble(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts *[]*types.Receipt) (*types.Block, error)

func (*ModifyCommitteeEngine) VerifyHeader added in v0.5.0

func (m *ModifyCommitteeEngine) VerifyHeader(chain consensus.ChainReader, header *types.Header, seal bool) error

func (*ModifyCommitteeEngine) VerifyProposal added in v0.5.0

func (m *ModifyCommitteeEngine) VerifyProposal(block types.Block) (time.Duration, error)

type UnhandledMsg added in v0.3.0

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

Jump to

Keyboard shortcuts

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