Version: v1.0.6 Latest Latest

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

Go to latest
Published: Jun 16, 2021 License: GPL-3.0 Imports: 11 Imported by: 0



Package forkid implements EIP-2124 (



This section is empty.


View Source
var (
	// ErrRemoteStale is returned by the validator if a remote fork checksum is a
	// subset of our already applied forks, but the announced next fork block is
	// not on our already passed chain.
	ErrRemoteStale = errors.New("remote needs update")

	// ErrLocalIncompatibleOrStale is returned by the validator if a remote fork
	// checksum does not match any local checksum variation, signalling that the
	// two chains have diverged in the past at some point (possibly at genesis).
	ErrLocalIncompatibleOrStale = errors.New("local incompatible or needs update")


This section is empty.


type Blockchain

type Blockchain interface {
	// Config retrieves the chain's fork configuration.
	Config() *params.ChainConfig

	// Genesis retrieves the chain's genesis block.
	Genesis() *types.Block

	// CurrentHeader retrieves the current head header of the canonical chain.
	CurrentHeader() *types.Header

Blockchain defines all necessary method to build a forkID.

type Filter

type Filter func(id ID) error

Filter is a fork id filter to validate a remotely advertised ID.

func NewFilter

func NewFilter(chain Blockchain) Filter

NewFilter creates a filter that returns if a fork ID should be rejected or not based on the local chain's status.

func NewStaticFilter

func NewStaticFilter(config *params.ChainConfig, genesis common.Hash) Filter

NewStaticFilter creates a filter at block zero.

type ID

type ID struct {
	Hash [4]byte // CRC32 checksum of the genesis block and passed fork block numbers
	Next uint64  // Block number of the next upcoming fork, or 0 if no forks are known

ID is a fork identifier as defined by EIP-2124.

func NewID

func NewID(config *params.ChainConfig, genesis common.Hash, head uint64) ID

NewID calculates the Ethereum fork ID from the chain config, genesis hash, and head.

func NewIDWithChain

func NewIDWithChain(chain Blockchain) ID

NewIDWithChain calculates the Ethereum fork ID from an existing chain instance.

Source Files

Jump to

Keyboard shortcuts

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