core

package
v0.0.0-...-f498596 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChainContext

type ChainContext struct {
	Coinbase ethcmn.Address
	// contains filtered or unexported fields
}

ChainContext implements Ethereum's core.ChainContext and consensus.Engine interfaces. It is needed in order to apply and process Ethereum transactions. There should only be a single implementation in FBChain. For the purposes of FBchain, it should be support retrieving headers and consensus parameters from the current blockchain to be used during transaction processing.

NOTE: FBchain will distribute the fees out to validators, so the structure and functionality of this is a WIP and subject to change.

func NewChainContext

func NewChainContext() *ChainContext

NewChainContext generates new ChainContext based on Ethereum's core.ChainContext and consensus.Engine interfaces in order to process Ethereum transactions.

func (*ChainContext) APIs

APIs implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Do we need to support such RPC APIs? This will tie into a bigger discussion on if we want to support web3.

func (*ChainContext) Author

func (cc *ChainContext) Author(_ *ethtypes.Header) (ethcmn.Address, error)

Author implements Ethereum's consensus.Engine interface. It is responsible for returned the address of the validtor to receive any fees. This function is only invoked if the given author in the ApplyTransaction call is nil.

NOTE: FBchain will distribute the fees out to validators, so the structure and functionality of this is a WIP and subject to change.

func (*ChainContext) CalcDifficulty

func (cc *ChainContext) CalcDifficulty(_ ethcons.ChainHeaderReader, _ uint64, _ *ethtypes.Header) *big.Int

CalcDifficulty implements Ethereum's consensus.Engine interface. It currently performs a no-op.

func (*ChainContext) Close

func (cc *ChainContext) Close() error

Close implements Ethereum's consensus.Engine interface. It terminates any background threads maintained by the consensus engine. It currently performs a no-op.

func (*ChainContext) Engine

func (cc *ChainContext) Engine() ethcons.Engine

Engine implements Ethereum's core.ChainContext interface. As a ChainContext implements the consensus.Engine interface, it is simply returned.

func (*ChainContext) Finalize

Finalize implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the ABCI?

func (*ChainContext) FinalizeAndAssemble

FinalizeAndAssemble runs any post-transaction state modifications (e.g. block rewards) and assembles the final block.

Note: The block header and state database might be updated to reflect any consensus rules that happen at finalization (e.g. block rewards). TODO: Figure out if this needs to be hooked up to any part of the ABCI?

func (*ChainContext) GetHeader

func (cc *ChainContext) GetHeader(_ ethcmn.Hash, number uint64) *ethtypes.Header

GetHeader implements Ethereum's core.ChainContext interface.

TODO: The Cosmos SDK supports retreiving such information in contexts and multi-store, so this will be need to be integrated.

func (*ChainContext) Prepare

Prepare implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the ABCI?

func (*ChainContext) Seal

func (cc *ChainContext) Seal(_ ethcons.ChainHeaderReader, _ *ethtypes.Block, _ chan<- *ethtypes.Block, _ <-chan struct{}) error

Seal implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the ABCI?

func (*ChainContext) SealHash

func (cc *ChainContext) SealHash(header *ethtypes.Header) ethcmn.Hash

SealHash implements Ethereum's consensus.Engine interface. It returns the hash of a block prior to it being sealed.

func (*ChainContext) SetHeader

func (cc *ChainContext) SetHeader(number uint64, header *ethtypes.Header)

SetHeader implements Ethereum's core.ChainContext interface. It sets the header for the given block number.

func (*ChainContext) VerifyHeader

func (cc *ChainContext) VerifyHeader(_ ethcons.ChainHeaderReader, _ *ethtypes.Header, _ bool) error

VerifyHeader implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK handlers?

func (*ChainContext) VerifyHeaders

func (cc *ChainContext) VerifyHeaders(_ ethcons.ChainHeaderReader, _ []*ethtypes.Header, _ []bool) (chan<- struct{}, <-chan error)

VerifyHeaders implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK handlers?

func (*ChainContext) VerifySeal

VerifySeal implements Ethereum's consensus.Engine interface. It currently performs a no-op.

TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK handlers?

func (*ChainContext) VerifyUncles

func (cc *ChainContext) VerifyUncles(_ ethcons.ChainReader, _ *ethtypes.Block) error

VerifyUncles implements Ethereum's consensus.Engine interface. It currently performs a no-op.

Jump to

Keyboard shortcuts

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